From 7c9f9622425f3af6a4309a87dcbdb0b8bdded118 Mon Sep 17 00:00:00 2001 From: rcannood Date: Wed, 6 Sep 2023 15:33:21 +0000 Subject: [PATCH] =?UTF-8?q?Deploy=20preview=20for=20PR=2051=20=F0=9F=9B=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pr-preview/pr-51/.nojekyll | 0 pr-preview/pr-51/CHANGELOG.html | 512 ++ pr-preview/pr-51/components/index.html | 2744 ++++++ .../components/modules/annotate/popv.html | 1758 ++++ .../components/modules/cluster/leiden.html | 1652 ++++ .../modules/compression/compress_h5mu.html | 1623 ++++ .../modules/convert/from_10xh5_to_h5mu.html | 1689 ++++ .../modules/convert/from_10xmtx_to_h5mu.html | 1623 ++++ ...from_bd_to_10x_molecular_barcode_tags.html | 1629 ++++ .../modules/convert/from_bdrhap_to_h5mu.html | 1650 ++++ .../from_cellranger_multi_to_h5mu.html | 1632 ++++ .../modules/convert/from_h5ad_to_h5mu.html | 1629 ++++ .../modules/convert/from_h5mu_to_h5ad.html | 1629 ++++ .../modules/convert/velocyto_to_h5mu.html | 1677 ++++ .../cellbender_remove_background.html | 1893 ++++ .../cellbender_remove_background_v0_2.html | 1785 ++++ .../components/modules/dataflow/concat.html | 1641 ++++ .../components/modules/dataflow/merge.html | 1623 ++++ .../modules/dataflow/split_modalities.html | 1636 ++++ .../components/modules/demux/bcl2fastq.html | 1635 ++++ .../components/modules/demux/bcl_convert.html | 1637 ++++ .../modules/demux/cellranger_mkfastq.html | 1631 ++++ .../pr-51/components/modules/dimred/pca.html | 1672 ++++ .../pr-51/components/modules/dimred/umap.html | 1732 ++++ .../modules/download/download_file.html | 1623 ++++ .../modules/download/sync_test_resources.html | 1641 ++++ .../components/modules/files/make_params.html | 1654 ++++ .../components/modules/filter/do_filter.html | 1641 ++++ .../modules/filter/filter_with_counts.html | 1757 ++++ .../modules/filter/filter_with_hvg.html | 1712 ++++ .../modules/filter/filter_with_scrublet.html | 1687 ++++ .../modules/filter/remove_modality.html | 1629 ++++ .../modules/filter/subset_h5mu.html | 1635 ++++ .../pr-51/components/modules/index.html | 1482 ++++ .../modules/integrate/harmonypy.html | 1655 ++++ .../modules/integrate/scanorama.html | 1678 ++++ .../modules/integrate/scarches.html | 1764 ++++ .../components/modules/integrate/scvi.html | 1937 ++++ .../components/modules/integrate/totalvi.html | 1761 ++++ .../components/modules/interpret/lianapy.html | 1684 ++++ .../modules/labels_transfer/knn.html | 1718 ++++ .../modules/labels_transfer/xgboost.html | 1835 ++++ .../modules/mapping/bd_rhapsody.html | 1852 ++++ .../modules/mapping/cellranger_count.html | 1697 ++++ .../mapping/cellranger_count_split.html | 1649 ++++ .../modules/mapping/cellranger_multi.html | 1828 ++++ .../modules/mapping/htseq_count.html | 1758 ++++ .../modules/mapping/htseq_count_to_h5mu.html | 1657 ++++ .../modules/mapping/multi_star.html | 3064 +++++++ .../modules/mapping/multi_star_to_h5mu.html | 1624 ++++ .../modules/mapping/samtools_sort.html | 1711 ++++ .../modules/mapping/star_align.html | 2958 +++++++ .../modules/mapping/star_align_v273a.html | 2958 +++++++ .../modules/mapping/star_build_reference.html | 1650 ++++ .../components/modules/metadata/add_id.html | 1642 ++++ .../components/modules/metadata/join_csv.html | 1695 ++++ .../modules/metadata/join_uns_to_obs.html | 1627 ++++ .../modules/metadata/move_obsm_to_obs.html | 1657 ++++ .../components/modules/neighbors/bbknn.html | 1678 ++++ .../modules/neighbors/find_neighbors.html | 1673 ++++ .../modules/process_10xh5/filter_10xh5.html | 1641 ++++ .../modules/qc/calculate_qc_metrics.html | 1677 ++++ .../pr-51/components/modules/qc/fastqc.html | 1622 ++++ .../pr-51/components/modules/qc/multiqc.html | 1610 ++++ .../modules/query/cellxgene_census.html | 1705 ++++ .../reference/build_bdrhap_reference.html | 1624 ++++ .../reference/build_cellranger_reference.html | 1625 ++++ .../modules/reference/make_reference.html | 1643 ++++ .../components/modules/report/mermaid.html | 1641 ++++ .../components/modules/transfer/publish.html | 1612 ++++ .../components/modules/transform/clr.html | 1635 ++++ .../modules/transform/delete_layer.html | 1641 ++++ .../components/modules/transform/log1p.html | 1649 ++++ .../modules/transform/normalize_total.html | 1656 ++++ .../modules/transform/regress_out.html | 1636 ++++ .../components/modules/transform/scale.html | 1641 ++++ .../components/modules/velocity/scvelo.html | 1737 ++++ .../components/modules/velocity/velocyto.html | 1641 ++++ .../pr-51/components/workflows/index.html | 1482 ++++ .../workflows/ingestion/bd_rhapsody.html | 1897 ++++ .../ingestion/cellranger_mapping.html | 1760 ++++ .../workflows/ingestion/cellranger_multi.html | 1851 ++++ .../ingestion/cellranger_postprocessing.html | 1764 ++++ .../workflows/ingestion/conversion.html | 1729 ++++ .../components/workflows/ingestion/demux.html | 1705 ++++ .../workflows/ingestion/make_reference.html | 1776 ++++ .../integration/common/harmony_leiden.html | 1834 ++++ .../initialize_integration.html | 1785 ++++ .../scanorama_leiden/scanorama_leiden.html | 1859 ++++ .../workflows/integration/scvi/scvi.html | 1839 ++++ .../workflows/multiomics/full_pipeline.html | 2163 +++++ .../workflows/multiomics/integration.html | 1879 ++++ .../multiomics/integration/bbknn_leiden.html | 1830 ++++ .../integration/harmony_leiden.html | 1849 ++++ .../integration/initialize_integration.html | 1802 ++++ .../multiomics/integration/leiden_scvi.html | 1891 ++++ .../integration/scanorama_leiden.html | 1874 ++++ .../integration/totalvi_leiden.html | 2048 +++++ .../workflows/multiomics/multisample.html | 1905 ++++ .../multiomics/prot_multisample.html | 1709 ++++ .../multiomics/prot_singlesample.html | 1745 ++++ .../workflows/multiomics/rna_multisample.html | 1777 ++++ .../multiomics/rna_singlesample.html | 1787 ++++ .../contributing/creating_components.html | 729 ++ .../contributing/creating_pipelines.html | 545 ++ .../pr-51/contributing/getting_started.html | 612 ++ pr-preview/pr-51/contributing/index.html | 545 ++ .../pr-51/contributing/project_structure.html | 623 ++ .../pr-51/contributing/pull_requests.html | 597 ++ .../pr-51/contributing/running_tests.html | 609 ++ .../pr-51/fundamentals/architecture.html | 975 ++ pr-preview/pr-51/fundamentals/concepts.html | 614 ++ pr-preview/pr-51/fundamentals/index.html | 533 ++ pr-preview/pr-51/fundamentals/philosophy.html | 560 ++ pr-preview/pr-51/fundamentals/roadmap.html | 563 ++ pr-preview/pr-51/images/avatar.svg | 195 + pr-preview/pr-51/images/logo.svg | 142 + pr-preview/pr-51/index.html | 771 ++ pr-preview/pr-51/listings.json | 153 + .../pr-51/more_information/cheat_sheets.html | 481 + .../more_information/code_of_conduct.html | 481 + .../pr-51/more_information/data_api.html | 617 ++ pr-preview/pr-51/more_information/faq.html | 481 + pr-preview/pr-51/more_information/index.html | 481 + pr-preview/pr-51/robots.txt | 1 + pr-preview/pr-51/search.json | 3236 +++++++ .../site_libs/bootstrap/bootstrap-icons.css | 1981 +++++ .../site_libs/bootstrap/bootstrap-icons.woff | Bin 0 -> 164360 bytes .../site_libs/bootstrap/bootstrap.min.css | 10 + .../site_libs/bootstrap/bootstrap.min.js | 7 + .../site_libs/clipboard/clipboard.min.js | 7 + .../1e21o67/fa-brands-400.ttf | Bin 0 -> 181852 bytes .../1e21o67/fa-brands-400.woff2 | Bin 0 -> 105536 bytes .../1e21o67/fa-regular-400.ttf | Bin 0 -> 60520 bytes .../1e21o67/fa-regular-400.woff2 | Bin 0 -> 23940 bytes .../1e21o67/fa-solid-900.ttf | Bin 0 -> 388460 bytes .../1e21o67/fa-solid-900.woff2 | Bin 0 -> 154228 bytes .../1e21o67/fa-v4compatibility.ttf | Bin 0 -> 10556 bytes .../1e21o67/fa-v4compatibility.woff2 | Bin 0 -> 4960 bytes .../quarto-contrib/fontawesome6-0.1.0/all.css | 7831 +++++++++++++++++ .../fontawesome6-0.1.0/latex-fontsize.css | 30 + .../site_libs/quarto-diagram/mermaid-init.js | 266 + .../site_libs/quarto-diagram/mermaid.css | 13 + .../site_libs/quarto-diagram/mermaid.min.js | 1621 ++++ .../pr-51/site_libs/quarto-html/anchor.min.js | 9 + .../pr-51/site_libs/quarto-html/popper.min.js | 6 + .../quarto-syntax-highlighting.css | 203 + .../pr-51/site_libs/quarto-html/quarto.js | 902 ++ .../pr-51/site_libs/quarto-html/tippy.css | 1 + .../site_libs/quarto-html/tippy.umd.min.js | 2 + .../site_libs/quarto-listing/list.min.js | 2 + .../quarto-listing/quarto-listing.js | 243 + .../site_libs/quarto-nav/headroom.min.js | 7 + .../pr-51/site_libs/quarto-nav/quarto-nav.js | 277 + .../quarto-search/autocomplete.umd.js | 3 + .../pr-51/site_libs/quarto-search/fuse.min.js | 9 + .../site_libs/quarto-search/quarto-search.js | 1149 +++ pr-preview/pr-51/sitemap.xml | 559 ++ pr-preview/pr-51/styles.css | 57 + .../team/angela_oliveira_pisco/index.html | 463 + .../pr-51/team/dries_de_maeyer/index.html | 463 + .../pr-51/team/dries_schaumont/index.html | 463 + pr-preview/pr-51/team/index.html | 850 ++ .../pr-51/team/malte_d_luecken/index.html | 463 + .../team/marijke_van_moerbeke/index.html | 463 + .../pr-51/team/matthias_beyens/index.html | 463 + .../pr-51/team/mauro_saporita/index.html | 463 + .../pr-51/team/povilas_gibas/index.html | 463 + .../pr-51/team/robrecht_cannoodt/index.html | 463 + .../pr-51/team/samuel_dsouza/index.html | 463 + pr-preview/pr-51/team/team.css | 70 + .../pr-51/team/toni_verbeiren/index.html | 463 + .../pr-51/team/vladimir_shitov/index.html | 463 + pr-preview/pr-51/user_guide/bug_reports.html | 546 ++ pr-preview/pr-51/user_guide/downstream.html | 551 ++ .../pr-51/user_guide/getting_started.html | 545 ++ pr-preview/pr-51/user_guide/index.html | 572 ++ pr-preview/pr-51/user_guide/ingestion.html | 551 ++ pr-preview/pr-51/user_guide/processing.html | 551 ++ .../pr-51/user_guide/running_pipelines.html | 640 ++ 180 files changed, 218550 insertions(+) create mode 100644 pr-preview/pr-51/.nojekyll create mode 100644 pr-preview/pr-51/CHANGELOG.html create mode 100644 pr-preview/pr-51/components/index.html create mode 100644 pr-preview/pr-51/components/modules/annotate/popv.html create mode 100644 pr-preview/pr-51/components/modules/cluster/leiden.html create mode 100644 pr-preview/pr-51/components/modules/compression/compress_h5mu.html create mode 100644 pr-preview/pr-51/components/modules/convert/from_10xh5_to_h5mu.html create mode 100644 pr-preview/pr-51/components/modules/convert/from_10xmtx_to_h5mu.html create mode 100644 pr-preview/pr-51/components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html create mode 100644 pr-preview/pr-51/components/modules/convert/from_bdrhap_to_h5mu.html create mode 100644 pr-preview/pr-51/components/modules/convert/from_cellranger_multi_to_h5mu.html create mode 100644 pr-preview/pr-51/components/modules/convert/from_h5ad_to_h5mu.html create mode 100644 pr-preview/pr-51/components/modules/convert/from_h5mu_to_h5ad.html create mode 100644 pr-preview/pr-51/components/modules/convert/velocyto_to_h5mu.html create mode 100644 pr-preview/pr-51/components/modules/correction/cellbender_remove_background.html create mode 100644 pr-preview/pr-51/components/modules/correction/cellbender_remove_background_v0_2.html create mode 100644 pr-preview/pr-51/components/modules/dataflow/concat.html create mode 100644 pr-preview/pr-51/components/modules/dataflow/merge.html create mode 100644 pr-preview/pr-51/components/modules/dataflow/split_modalities.html create mode 100644 pr-preview/pr-51/components/modules/demux/bcl2fastq.html create mode 100644 pr-preview/pr-51/components/modules/demux/bcl_convert.html create mode 100644 pr-preview/pr-51/components/modules/demux/cellranger_mkfastq.html create mode 100644 pr-preview/pr-51/components/modules/dimred/pca.html create mode 100644 pr-preview/pr-51/components/modules/dimred/umap.html create mode 100644 pr-preview/pr-51/components/modules/download/download_file.html create mode 100644 pr-preview/pr-51/components/modules/download/sync_test_resources.html create mode 100644 pr-preview/pr-51/components/modules/files/make_params.html create mode 100644 pr-preview/pr-51/components/modules/filter/do_filter.html create mode 100644 pr-preview/pr-51/components/modules/filter/filter_with_counts.html create mode 100644 pr-preview/pr-51/components/modules/filter/filter_with_hvg.html create mode 100644 pr-preview/pr-51/components/modules/filter/filter_with_scrublet.html create mode 100644 pr-preview/pr-51/components/modules/filter/remove_modality.html create mode 100644 pr-preview/pr-51/components/modules/filter/subset_h5mu.html create mode 100644 pr-preview/pr-51/components/modules/index.html create mode 100644 pr-preview/pr-51/components/modules/integrate/harmonypy.html create mode 100644 pr-preview/pr-51/components/modules/integrate/scanorama.html create mode 100644 pr-preview/pr-51/components/modules/integrate/scarches.html create mode 100644 pr-preview/pr-51/components/modules/integrate/scvi.html create mode 100644 pr-preview/pr-51/components/modules/integrate/totalvi.html create mode 100644 pr-preview/pr-51/components/modules/interpret/lianapy.html create mode 100644 pr-preview/pr-51/components/modules/labels_transfer/knn.html create mode 100644 pr-preview/pr-51/components/modules/labels_transfer/xgboost.html create mode 100644 pr-preview/pr-51/components/modules/mapping/bd_rhapsody.html create mode 100644 pr-preview/pr-51/components/modules/mapping/cellranger_count.html create mode 100644 pr-preview/pr-51/components/modules/mapping/cellranger_count_split.html create mode 100644 pr-preview/pr-51/components/modules/mapping/cellranger_multi.html create mode 100644 pr-preview/pr-51/components/modules/mapping/htseq_count.html create mode 100644 pr-preview/pr-51/components/modules/mapping/htseq_count_to_h5mu.html create mode 100644 pr-preview/pr-51/components/modules/mapping/multi_star.html create mode 100644 pr-preview/pr-51/components/modules/mapping/multi_star_to_h5mu.html create mode 100644 pr-preview/pr-51/components/modules/mapping/samtools_sort.html create mode 100644 pr-preview/pr-51/components/modules/mapping/star_align.html create mode 100644 pr-preview/pr-51/components/modules/mapping/star_align_v273a.html create mode 100644 pr-preview/pr-51/components/modules/mapping/star_build_reference.html create mode 100644 pr-preview/pr-51/components/modules/metadata/add_id.html create mode 100644 pr-preview/pr-51/components/modules/metadata/join_csv.html create mode 100644 pr-preview/pr-51/components/modules/metadata/join_uns_to_obs.html create mode 100644 pr-preview/pr-51/components/modules/metadata/move_obsm_to_obs.html create mode 100644 pr-preview/pr-51/components/modules/neighbors/bbknn.html create mode 100644 pr-preview/pr-51/components/modules/neighbors/find_neighbors.html create mode 100644 pr-preview/pr-51/components/modules/process_10xh5/filter_10xh5.html create mode 100644 pr-preview/pr-51/components/modules/qc/calculate_qc_metrics.html create mode 100644 pr-preview/pr-51/components/modules/qc/fastqc.html create mode 100644 pr-preview/pr-51/components/modules/qc/multiqc.html create mode 100644 pr-preview/pr-51/components/modules/query/cellxgene_census.html create mode 100644 pr-preview/pr-51/components/modules/reference/build_bdrhap_reference.html create mode 100644 pr-preview/pr-51/components/modules/reference/build_cellranger_reference.html create mode 100644 pr-preview/pr-51/components/modules/reference/make_reference.html create mode 100644 pr-preview/pr-51/components/modules/report/mermaid.html create mode 100644 pr-preview/pr-51/components/modules/transfer/publish.html create mode 100644 pr-preview/pr-51/components/modules/transform/clr.html create mode 100644 pr-preview/pr-51/components/modules/transform/delete_layer.html create mode 100644 pr-preview/pr-51/components/modules/transform/log1p.html create mode 100644 pr-preview/pr-51/components/modules/transform/normalize_total.html create mode 100644 pr-preview/pr-51/components/modules/transform/regress_out.html create mode 100644 pr-preview/pr-51/components/modules/transform/scale.html create mode 100644 pr-preview/pr-51/components/modules/velocity/scvelo.html create mode 100644 pr-preview/pr-51/components/modules/velocity/velocyto.html create mode 100644 pr-preview/pr-51/components/workflows/index.html create mode 100644 pr-preview/pr-51/components/workflows/ingestion/bd_rhapsody.html create mode 100644 pr-preview/pr-51/components/workflows/ingestion/cellranger_mapping.html create mode 100644 pr-preview/pr-51/components/workflows/ingestion/cellranger_multi.html create mode 100644 pr-preview/pr-51/components/workflows/ingestion/cellranger_postprocessing.html create mode 100644 pr-preview/pr-51/components/workflows/ingestion/conversion.html create mode 100644 pr-preview/pr-51/components/workflows/ingestion/demux.html create mode 100644 pr-preview/pr-51/components/workflows/ingestion/make_reference.html create mode 100644 pr-preview/pr-51/components/workflows/integration/common/harmony_leiden.html create mode 100644 pr-preview/pr-51/components/workflows/integration/initialize_integration/initialize_integration.html create mode 100644 pr-preview/pr-51/components/workflows/integration/scanorama_leiden/scanorama_leiden.html create mode 100644 pr-preview/pr-51/components/workflows/integration/scvi/scvi.html create mode 100644 pr-preview/pr-51/components/workflows/multiomics/full_pipeline.html create mode 100644 pr-preview/pr-51/components/workflows/multiomics/integration.html create mode 100644 pr-preview/pr-51/components/workflows/multiomics/integration/bbknn_leiden.html create mode 100644 pr-preview/pr-51/components/workflows/multiomics/integration/harmony_leiden.html create mode 100644 pr-preview/pr-51/components/workflows/multiomics/integration/initialize_integration.html create mode 100644 pr-preview/pr-51/components/workflows/multiomics/integration/leiden_scvi.html create mode 100644 pr-preview/pr-51/components/workflows/multiomics/integration/scanorama_leiden.html create mode 100644 pr-preview/pr-51/components/workflows/multiomics/integration/totalvi_leiden.html create mode 100644 pr-preview/pr-51/components/workflows/multiomics/multisample.html create mode 100644 pr-preview/pr-51/components/workflows/multiomics/prot_multisample.html create mode 100644 pr-preview/pr-51/components/workflows/multiomics/prot_singlesample.html create mode 100644 pr-preview/pr-51/components/workflows/multiomics/rna_multisample.html create mode 100644 pr-preview/pr-51/components/workflows/multiomics/rna_singlesample.html create mode 100644 pr-preview/pr-51/contributing/creating_components.html create mode 100644 pr-preview/pr-51/contributing/creating_pipelines.html create mode 100644 pr-preview/pr-51/contributing/getting_started.html create mode 100644 pr-preview/pr-51/contributing/index.html create mode 100644 pr-preview/pr-51/contributing/project_structure.html create mode 100644 pr-preview/pr-51/contributing/pull_requests.html create mode 100644 pr-preview/pr-51/contributing/running_tests.html create mode 100644 pr-preview/pr-51/fundamentals/architecture.html create mode 100644 pr-preview/pr-51/fundamentals/concepts.html create mode 100644 pr-preview/pr-51/fundamentals/index.html create mode 100644 pr-preview/pr-51/fundamentals/philosophy.html create mode 100644 pr-preview/pr-51/fundamentals/roadmap.html create mode 100644 pr-preview/pr-51/images/avatar.svg create mode 100644 pr-preview/pr-51/images/logo.svg create mode 100644 pr-preview/pr-51/index.html create mode 100644 pr-preview/pr-51/listings.json create mode 100644 pr-preview/pr-51/more_information/cheat_sheets.html create mode 100644 pr-preview/pr-51/more_information/code_of_conduct.html create mode 100644 pr-preview/pr-51/more_information/data_api.html create mode 100644 pr-preview/pr-51/more_information/faq.html create mode 100644 pr-preview/pr-51/more_information/index.html create mode 100644 pr-preview/pr-51/robots.txt create mode 100644 pr-preview/pr-51/search.json create mode 100644 pr-preview/pr-51/site_libs/bootstrap/bootstrap-icons.css create mode 100644 pr-preview/pr-51/site_libs/bootstrap/bootstrap-icons.woff create mode 100644 pr-preview/pr-51/site_libs/bootstrap/bootstrap.min.css create mode 100644 pr-preview/pr-51/site_libs/bootstrap/bootstrap.min.js create mode 100644 pr-preview/pr-51/site_libs/clipboard/clipboard.min.js create mode 100644 pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-brands-400.ttf create mode 100644 pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-brands-400.woff2 create mode 100644 pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-regular-400.ttf create mode 100644 pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-regular-400.woff2 create mode 100644 pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-solid-900.ttf create mode 100644 pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-solid-900.woff2 create mode 100644 pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-v4compatibility.ttf create mode 100644 pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-v4compatibility.woff2 create mode 100644 pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/all.css create mode 100644 pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/latex-fontsize.css create mode 100644 pr-preview/pr-51/site_libs/quarto-diagram/mermaid-init.js create mode 100644 pr-preview/pr-51/site_libs/quarto-diagram/mermaid.css create mode 100644 pr-preview/pr-51/site_libs/quarto-diagram/mermaid.min.js create mode 100644 pr-preview/pr-51/site_libs/quarto-html/anchor.min.js create mode 100644 pr-preview/pr-51/site_libs/quarto-html/popper.min.js create mode 100644 pr-preview/pr-51/site_libs/quarto-html/quarto-syntax-highlighting.css create mode 100644 pr-preview/pr-51/site_libs/quarto-html/quarto.js create mode 100644 pr-preview/pr-51/site_libs/quarto-html/tippy.css create mode 100644 pr-preview/pr-51/site_libs/quarto-html/tippy.umd.min.js create mode 100644 pr-preview/pr-51/site_libs/quarto-listing/list.min.js create mode 100644 pr-preview/pr-51/site_libs/quarto-listing/quarto-listing.js create mode 100644 pr-preview/pr-51/site_libs/quarto-nav/headroom.min.js create mode 100644 pr-preview/pr-51/site_libs/quarto-nav/quarto-nav.js create mode 100644 pr-preview/pr-51/site_libs/quarto-search/autocomplete.umd.js create mode 100644 pr-preview/pr-51/site_libs/quarto-search/fuse.min.js create mode 100644 pr-preview/pr-51/site_libs/quarto-search/quarto-search.js create mode 100644 pr-preview/pr-51/sitemap.xml create mode 100644 pr-preview/pr-51/styles.css create mode 100644 pr-preview/pr-51/team/angela_oliveira_pisco/index.html create mode 100644 pr-preview/pr-51/team/dries_de_maeyer/index.html create mode 100644 pr-preview/pr-51/team/dries_schaumont/index.html create mode 100644 pr-preview/pr-51/team/index.html create mode 100644 pr-preview/pr-51/team/malte_d_luecken/index.html create mode 100644 pr-preview/pr-51/team/marijke_van_moerbeke/index.html create mode 100644 pr-preview/pr-51/team/matthias_beyens/index.html create mode 100644 pr-preview/pr-51/team/mauro_saporita/index.html create mode 100644 pr-preview/pr-51/team/povilas_gibas/index.html create mode 100644 pr-preview/pr-51/team/robrecht_cannoodt/index.html create mode 100644 pr-preview/pr-51/team/samuel_dsouza/index.html create mode 100644 pr-preview/pr-51/team/team.css create mode 100644 pr-preview/pr-51/team/toni_verbeiren/index.html create mode 100644 pr-preview/pr-51/team/vladimir_shitov/index.html create mode 100644 pr-preview/pr-51/user_guide/bug_reports.html create mode 100644 pr-preview/pr-51/user_guide/downstream.html create mode 100644 pr-preview/pr-51/user_guide/getting_started.html create mode 100644 pr-preview/pr-51/user_guide/index.html create mode 100644 pr-preview/pr-51/user_guide/ingestion.html create mode 100644 pr-preview/pr-51/user_guide/processing.html create mode 100644 pr-preview/pr-51/user_guide/running_pipelines.html diff --git a/pr-preview/pr-51/.nojekyll b/pr-preview/pr-51/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/pr-preview/pr-51/CHANGELOG.html b/pr-preview/pr-51/CHANGELOG.html new file mode 100644 index 00000000..5bd16d9d --- /dev/null +++ b/pr-preview/pr-51/CHANGELOG.html @@ -0,0 +1,512 @@ + + + + + + + + + +OpenPipelines – changelog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ + + +
+

OpenPipelines.bio v0.9.0

+
+

MAJOR CHANGES

+
    +
  • Update component documentation to v0.9.0 release.
  • +
+
+
+

MINOR CHANGES

+
    +
  • Update to Viash actions 0.4.0.
  • +
+
+
+
+

OpenPipelines.bio v0.8.0

+
+

MAJOR CHANGES

+
    +
  • Update component documentation to v0.8.0 release.

  • +
  • Use git submodule to access openpipeline repo

  • +
  • Propose new website structure

  • +
  • Update author page

  • +
+
+
+
+

OpenPipelines.bio v0.7.2

+

First versioned release of the website.

+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/index.html b/pr-preview/pr-51/components/index.html new file mode 100644 index 00000000..4b887696 --- /dev/null +++ b/pr-preview/pr-51/components/index.html @@ -0,0 +1,2744 @@ + + + + + + + + + + +OpenPipelines - Components + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ + + + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/annotate/popv.html b/pr-preview/pr-51/components/modules/annotate/popv.html new file mode 100644 index 00000000..79672cd0 --- /dev/null +++ b/pr-preview/pr-51/components/modules/annotate/popv.html @@ -0,0 +1,1758 @@ + + + + + + + + + + +OpenPipelines - Popv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Popv

+
+ +
+
+ Performs popular major vote cell typing on single cell sequence data using multiple algorithms. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: popv
+Namespace: annotate

+
+ +

Note that this is a one-shot version of PopV.

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/annotate/popv/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+# input_layer: "foo"
+# input_obs_batch: "foo"
+# input_var_subset: "foo"
+# input_obs_label: "foo"
+unknown_celltype_label: "unknown"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Arguments
+methods: # please fill in - example: ["knn_on_scvi", "scanvi"]
+
+# Reference
+reference: # please fill in - example: "TS_Bladder_filtered.h5ad"
+# reference_layer: "foo"
+reference_obs_label: "cell_ontology_class"
+reference_obs_batch: "donor_assay"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/annotate/popv/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+

Arguments related to the input (aka query) dataset.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu file.file, required, example: "input.h5mu"
--modalityWhich modality to process.string, default: "rna"
--input_layerWhich layer to use. If no value is provided, the counts are assumed to be in the .X slot. Otherwise, count data is expected to be in .layers[input_layer].string
--input_obs_batchKey in obs field of input adata for batch information. If no value is provided, batch label is assumed to be unknown.string
--input_var_subsetSubset the input object with this column.string
--input_obs_labelKey in obs field of input adata for label information. This is only used for training scANVI. Unlabelled cells should be set to "unknown_celltype_label".string
--unknown_celltype_labelIf input_obs_label is specified, cells with this value will be treated as unknown and will be predicted by the model.string, default: "unknown"
+
+
+

Reference

+

Arguments related to the reference dataset.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--referenceUser-provided reference tissue. The data that will be used as reference to call cell types.file, required, example: "TS_Bladder_filtered.h5ad"
--reference_layerWhich layer to use. If no value is provided, the counts are assumed to be in the .X slot. Otherwise, count data is expected to be in .layers[reference_layer].string
--reference_obs_labelKey in obs field of reference AnnData with cell-type information.string, default: "cell_ontology_class"
--reference_obs_batchKey in obs field of input adata for batch information.string, default: "donor_assay"
+
+
+

Outputs

+

Output arguments.

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput h5mu file.file, required, example: "output.h5mu"
--output_compressionstring, example: "gzip"
+
+
+

Arguments

+

Other arguments.

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--methodsMethods to call cell types. By default, runs to knn_on_scvi and scanvi.string, required, example: "knn_on_scvi", example: "scanvi"
+
+
+
+

Authors

+
    +
  • Matthias Beyens (author)

  • +
  • Robrecht Cannoodt (author)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/cluster/leiden.html b/pr-preview/pr-51/components/modules/cluster/leiden.html new file mode 100644 index 00000000..0a96faba --- /dev/null +++ b/pr-preview/pr-51/components/modules/cluster/leiden.html @@ -0,0 +1,1652 @@ + + + + + + + + + + +OpenPipelines - Leiden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Leiden

+
+ +
+
+ Cluster cells using the Leiden algorithm [Traag18] implemented in the Scanpy framework [Wolf18]. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: leiden
+Namespace: cluster

+
+ +

Leiden is an improved version of the Louvain algorithm [Blondel08]. It has been proposed for single-cell analysis by [Levine15]. This requires having ran neighbors/find_neighbors or neighbors/bbknn first.

+

Blondel08: Blondel et al. (2008), Fast unfolding of communities in large networks, J. Stat. Mech.
+Levine15: Levine et al. (2015), Data-Driven Phenotypic Dissection of AML Reveals Progenitor-like Cells that Correlate with Prognosis, Cell.
+Traag18: Traag et al. (2018), From Louvain to Leiden: guaranteeing well-connected communities arXiv.
+Wolf18: Wolf et al. (2018), Scanpy: large-scale single-cell gene expression data analysis, Genome Biology.

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/cluster/leiden/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+obsp_connectivities: "connectivities"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+obsm_name: "leiden"
+resolution: [1]
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/cluster/leiden/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput file.file, required, example: "input.h5mu"
--modalitystring, default: "rna"
--obsp_connectivitiesIn which .obsp slot the neighbor connectivities can be found.string, default: "connectivities"
--outputOutput file.file, required, example: "output.h5mu"
--output_compressionstring, example: "gzip"
--obsm_nameName of the .obsm key under which to add the cluster labels. The name of the columns in the matrix will correspond to the resolutions.string, default: "leiden"
--resolutionA parameter value controlling the coarseness of the clustering. Higher values lead to more clusters. Multiple values will result in clustering being performed multiple times.double, default: 1
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/compression/compress_h5mu.html b/pr-preview/pr-51/components/modules/compression/compress_h5mu.html new file mode 100644 index 00000000..b6d5f7a4 --- /dev/null +++ b/pr-preview/pr-51/components/modules/compression/compress_h5mu.html @@ -0,0 +1,1623 @@ + + + + + + + + + + +OpenPipelines - Compress h5mu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Compress h5mu

+
+ +
+
+ Compress a MuData file. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: compress_h5mu
+Namespace: compression

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/compression/compress_h5mu/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "sample_path"
+# output: "$id.$key.output.output"
+compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/compression/compress_h5mu/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputPath to the input .h5mu.file, required, example: "sample_path"
--outputlocation of output file.file, required
--compressionCompression type.string, default: "gzip"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/convert/from_10xh5_to_h5mu.html b/pr-preview/pr-51/components/modules/convert/from_10xh5_to_h5mu.html new file mode 100644 index 00000000..c9b8d904 --- /dev/null +++ b/pr-preview/pr-51/components/modules/convert/from_10xh5_to_h5mu.html @@ -0,0 +1,1689 @@ + + + + + + + + + + +OpenPipelines - From 10xh5 to h5mu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

From 10xh5 to h5mu

+
+ +
+
+ Converts a 10x h5 into an h5mu file +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: from_10xh5_to_h5mu
+Namespace: convert

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/convert/from_10xh5_to_h5mu/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input: # please fill in - example: "raw_feature_bc_matrix.h5"
+# input_metrics_summary: "metrics_cellranger.h5"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+uns_metrics: "metrics_cellranger"
+
+# Arguments
+# min_genes: 100
+# min_counts: 1000
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/convert/from_10xh5_to_h5mu/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputA 10x h5 file as generated by Cell Ranger.file, required, example: "raw_feature_bc_matrix.h5"
--input_metrics_summaryA metrics summary csv file as generated by Cell Ranger.file, example: "metrics_cellranger.h5"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput h5mu file.file, example: "output.h5mu"
--output_compressionstring, example: "gzip"
--uns_metricsName of the .uns slot under which to QC metrics (if any).string, default: "metrics_cellranger"
+
+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--min_genesMinimum number of counts required for a cell to pass filtering.integer, example: 100
--min_countsMinimum number of genes expressed required for a cell to pass filtering.integer, example: 1000
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/convert/from_10xmtx_to_h5mu.html b/pr-preview/pr-51/components/modules/convert/from_10xmtx_to_h5mu.html new file mode 100644 index 00000000..03fba7b8 --- /dev/null +++ b/pr-preview/pr-51/components/modules/convert/from_10xmtx_to_h5mu.html @@ -0,0 +1,1623 @@ + + + + + + + + + + +OpenPipelines - From 10xmtx to h5mu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

From 10xmtx to h5mu

+
+ +
+
+ Converts a 10x mtx into an h5mu file +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: from_10xmtx_to_h5mu
+Namespace: convert

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/convert/from_10xmtx_to_h5mu/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input_dir_containing_gz_files"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/convert/from_10xmtx_to_h5mu/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput mtx folderfile, required, example: "input_dir_containing_gz_files"
--outputOutput h5mu file.file, example: "output.h5mu"
--output_compressionstring, example: "gzip"
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html b/pr-preview/pr-51/components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html new file mode 100644 index 00000000..ace767c2 --- /dev/null +++ b/pr-preview/pr-51/components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html @@ -0,0 +1,1629 @@ + + + + + + + + + + +OpenPipelines - From bd to 10x molecular barcode tags + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

From bd to 10x molecular barcode tags

+
+ +
+
+ Convert the molecular barcode sequence SAM tag from BD format (MA) to 10X format (UB) +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: from_bd_to_10x_molecular_barcode_tags
+Namespace: convert

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/convert/from_bd_to_10x_molecular_barcode_tags/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.bam"
+# output: "$id.$key.output.sam"
+bam: false
+# threads: 123
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/convert/from_bd_to_10x_molecular_barcode_tags/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput SAM or BAM file.file, required, example: "input.bam"
--outputOutput alignment file.file, example: "output.sam"
--bamOutput a BAM file.boolean_true
--threadsNumber of threadsinteger
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/convert/from_bdrhap_to_h5mu.html b/pr-preview/pr-51/components/modules/convert/from_bdrhap_to_h5mu.html new file mode 100644 index 00000000..855d308f --- /dev/null +++ b/pr-preview/pr-51/components/modules/convert/from_bdrhap_to_h5mu.html @@ -0,0 +1,1650 @@ + + + + + + + + + + +OpenPipelines - From bdrhap to h5mu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

From bdrhap to h5mu

+
+ +
+
+ Convert the output of a BD Rhapsody WTA pipeline to a MuData h5 file +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: from_bdrhap_to_h5mu
+Namespace: convert

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/convert/from_bdrhap_to_h5mu/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "my_id"
+input: # please fill in - example: "input_dir/"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/convert/from_bdrhap_to_h5mu/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idA sample ID.string, required, example: "my_id"
--inputThe output of a BD Rhapsody workflow.file, required, example: "input_dir"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput h5mu file.file, required, example: "output.h5mu"
--output_compressionstring, example: "gzip"
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/convert/from_cellranger_multi_to_h5mu.html b/pr-preview/pr-51/components/modules/convert/from_cellranger_multi_to_h5mu.html new file mode 100644 index 00000000..11358287 --- /dev/null +++ b/pr-preview/pr-51/components/modules/convert/from_cellranger_multi_to_h5mu.html @@ -0,0 +1,1632 @@ + + + + + + + + + + +OpenPipelines - From cellranger multi to h5mu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

From cellranger multi to h5mu

+
+ +
+
+ Converts the output from cellranger multi to a single .h5mu file. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: from_cellranger_multi_to_h5mu
+Namespace: convert

+
+ +

By default, will map the following library type names to modality names: - Gene Expression: rna - Peaks: atac - Antibody Capture: prot - VDJ: vdj - VDJ-T: vdj_t - VDJ-B: vdj_b - CRISPR Guide Capture: crispr - Multiplexing Capture: hashing

+

Other library types have their whitepace removed and dashes replaced by underscores to generate the modality name.

+

Currently does not allow parsing the output from cell barcode demultiplexing.

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/convert/from_cellranger_multi_to_h5mu/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input_dir_containing_modalities"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+uns_metrics: "metrics_cellranger"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/convert/from_cellranger_multi_to_h5mu/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput folder. Must contain the output from a cellranger multi run.file, required, example: "input_dir_containing_modalities"
--outputOutput h5mu file.file, example: "output.h5mu"
--output_compressionstring, example: "gzip"
--uns_metricsName of the .uns slot under which to QC metrics (if any).string, default: "metrics_cellranger"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/convert/from_h5ad_to_h5mu.html b/pr-preview/pr-51/components/modules/convert/from_h5ad_to_h5mu.html new file mode 100644 index 00000000..33808506 --- /dev/null +++ b/pr-preview/pr-51/components/modules/convert/from_h5ad_to_h5mu.html @@ -0,0 +1,1629 @@ + + + + + + + + + + +OpenPipelines - From h5ad to h5mu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

From h5ad to h5mu

+
+ +
+
+ Converts a single layer h5ad file into a single MuData object +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: from_h5ad_to_h5mu
+Namespace: convert

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/convert/from_h5ad_to_h5mu/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: ["input.h5ad"]
+modality: ["rna"]
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/convert/from_h5ad_to_h5mu/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5ad filesfile, required, default: "input.h5ad"
--modalitystring, default: "rna"
--outputOutput MuData file.file, default: "output.h5mu"
--output_compressionstring, example: "gzip"
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/convert/from_h5mu_to_h5ad.html b/pr-preview/pr-51/components/modules/convert/from_h5mu_to_h5ad.html new file mode 100644 index 00000000..8be9ed7f --- /dev/null +++ b/pr-preview/pr-51/components/modules/convert/from_h5mu_to_h5ad.html @@ -0,0 +1,1629 @@ + + + + + + + + + + +OpenPipelines - From h5mu to h5ad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

From h5mu to h5ad

+
+ +
+
+ Converts a h5mu file into a h5ad file +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: from_h5mu_to_h5ad
+Namespace: convert

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/convert/from_h5mu_to_h5ad/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+# output: "$id.$key.output.h5ad"
+output_compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/convert/from_h5mu_to_h5ad/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput MuData filefile, required, default: "input.h5mu"
--modalitystring, default: "rna"
--outputOutput AnnData file.file, default: "output.h5ad"
--output_compressionThe compression format to be used on the final h5ad object.string, default: "gzip"
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/convert/velocyto_to_h5mu.html b/pr-preview/pr-51/components/modules/convert/velocyto_to_h5mu.html new file mode 100644 index 00000000..93f2261c --- /dev/null +++ b/pr-preview/pr-51/components/modules/convert/velocyto_to_h5mu.html @@ -0,0 +1,1677 @@ + + + + + + + + + + +OpenPipelines - Velocyto to h5mu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Velocyto to h5mu

+
+ +
+
+ Convert a velocyto loom file to a h5mu file. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: velocyto_to_h5mu
+Namespace: convert

+
+ +

If an input h5mu file is also provided, the velocity h5ad object will get added to that h5mu instead.

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/convert/velocyto_to_h5mu/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input_loom: # please fill in - example: "input.loom"
+# input_h5mu: "input.h5mu"
+modality: "rna_velocity"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+layer_spliced: "velo_spliced"
+layer_unspliced: "velo_unspliced"
+layer_ambiguous: "velo_ambiguous"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/convert/velocyto_to_h5mu/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--input_loomPath to the input loom file.file, required, example: "input.loom"
--input_h5muIf a MuData file is provided,file, example: "input.h5mu"
--modalityThe name of the modality to operate on.string, default: "rna_velocity"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputPath to the output MuData file.file, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--layer_splicedOutput layer for the spliced reads.string, default: "velo_spliced"
--layer_unsplicedOutput layer for the unspliced reads.string, default: "velo_unspliced"
--layer_ambiguousOutput layer for the ambiguous reads.string, default: "velo_ambiguous"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer, author)

  • +
  • Robrecht Cannoodt (author)

  • +
  • Angela Oliveira Pisco (contributor)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/correction/cellbender_remove_background.html b/pr-preview/pr-51/components/modules/correction/cellbender_remove_background.html new file mode 100644 index 00000000..21905ca3 --- /dev/null +++ b/pr-preview/pr-51/components/modules/correction/cellbender_remove_background.html @@ -0,0 +1,1893 @@ + + + + + + + + + + +OpenPipelines - Cellbender remove background + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Cellbender remove background

+
+ +
+
+ Eliminating technical artifacts from high-throughput single-cell RNA sequencing data. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: cellbender_remove_background
+Namespace: correction

+
+ +

This module removes counts due to ambient RNA molecules and random barcode swapping from (raw) UMI-based scRNA-seq count matrices. At the moment, only the count matrices produced by the CellRanger count pipeline is supported. Support for additional tools and protocols will be added in the future. A quick start tutorial can be found here.

+

Fleming et al. 2022, bioRxiv.

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/correction/cellbender_remove_background/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+layer_output: "cellbender_corrected"
+obs_background_fraction: "cellbender_background_fraction"
+obs_cell_probability: "cellbender_cell_probability"
+obs_cell_size: "cellbender_cell_size"
+obs_droplet_efficiency: "cellbender_droplet_efficiency"
+obs_latent_scale: "cellbender_latent_scale"
+var_ambient_expression: "cellbender_ambient_expression"
+obsm_gene_expression_encoding: "cellbender_gene_expression_encoding"
+
+# Arguments
+expected_cells_from_qc: false
+# expected_cells: 1000
+# total_droplets_included: 25000
+# force_cell_umi_prior: 123
+# force_empty_umi_prior: 123
+model: "full"
+epochs: 150
+low_count_threshold: 5
+z_dim: 64
+z_layers: [512]
+training_fraction: 0.9
+empty_drop_training_fraction: 0.2
+# ignore_features: [123]
+fpr: [0.01]
+# exclude_feature_types: ["foo"]
+projected_ambient_count_threshold: 0.1
+learning_rate: 1.0E-4
+# final_elbo_fail_fraction: 123.0
+# epoch_elbo_fail_fraction: 123.0
+num_training_tries: 1
+learning_rate_retry_mult: 0.2
+posterior_batch_size: 128
+# posterior_regulation: "foo"
+# alpha: 123.0
+# q: 123.0
+estimator: "mckp"
+estimator_multiple_cpu: false
+# constant_learning_rate: true
+debug: false
+cuda: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/correction/cellbender_remove_background/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu file. Data file on which to run tool. Data must be un-filtered: it should include empty droplets.file, required, example: "input.h5mu"
--modalityList of modalities to process.string, default: "rna"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputFull count matrix as an h5mu file, with background RNA removed. This file contains all the original droplet barcodes.file, required, example: "output.h5mu"
--output_compressionstring, example: "gzip"
--layer_outputOutput layerstring, default: "cellbender_corrected"
--obs_background_fractionstring, default: "cellbender_background_fraction"
--obs_cell_probabilitystring, default: "cellbender_cell_probability"
--obs_cell_sizestring, default: "cellbender_cell_size"
--obs_droplet_efficiencystring, default: "cellbender_droplet_efficiency"
--obs_latent_scalestring, default: "cellbender_latent_scale"
--var_ambient_expressionstring, default: "cellbender_ambient_expression"
--obsm_gene_expression_encodingstring, default: "cellbender_gene_expression_encoding"
+
+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--expected_cells_from_qcWill use the Cell Ranger QC to determine the estimated number of cellsboolean, default: FALSE
--expected_cellsNumber of cells expected in the dataset (a rough estimate within a factor of 2 is sufficient).integer, example: 1000
--total_droplets_includedThe number of droplets from the rank-ordered UMI plot that will have their cell probabilities inferred as an output. Include the droplets which might contain cells. Droplets beyond TOTAL_DROPLETS_INCLUDED should be ‘surely empty’ droplets.integer, example: 25000
--force_cell_umi_priorIgnore CellBender’s heuristic prior estimation, and use this prior for UMI counts in cells.integer
--force_empty_umi_priorIgnore CellBender’s heuristic prior estimation, and use this prior for UMI counts in empty droplets.integer
--modelWhich model is being used for count data. * ‘naive’ subtracts the estimated ambient profile. * ‘simple’ does not model either ambient RNA or random barcode swapping (for debugging purposes – not recommended). * ‘ambient’ assumes background RNA is incorporated into droplets. * ‘swapping’ assumes background RNA comes from random barcode swapping (via PCR chimeras). * ‘full’ uses a combined ambient and swapping model.string, default: "full"
--epochsNumber of epochs to train.integer, default: 150
--low_count_thresholdDroplets with UMI counts below this number are completely excluded from the analysis. This can help identify the correct prior for empty droplet counts in the rare case where empty counts are extremely high (over 200).integer, default: 5
--z_dimDimension of latent variable z.integer, default: 64
--z_layersDimension of hidden layers in the encoder for z.integer, default: 512
--training_fractionTraining detail: the fraction of the data used for training. The rest is never seen by the inference algorithm. Speeds up learning.double, default: 0.9
--empty_drop_training_fractionTraining detail: the fraction of the training data each epoch that is drawn (randomly sampled) from surely empty droplets.double, default: 0.2
--ignore_featuresInteger indices of features to ignore entirely. In the output count matrix, the counts for these features will be unchanged.integer
--fprTarget ‘delta’ false positive rate in [0, 1). Use 0 for a cohort of samples which will be jointly analyzed for differential expression. A false positive is a true signal count that is erroneously removed. More background removal is accompanied by more signal removal at high values of FPR. You can specify multiple values, which will create multiple output files.double, default: 0.01
--exclude_feature_typesFeature types to ignore during the analysis. These features will be left unchanged in the output file.string
--projected_ambient_count_thresholdControls how many features are included in the analysis, which can lead to a large speedup. If a feature is expected to have less than PROJECTED_AMBIENT_COUNT_THRESHOLD counts total in all cells (summed), then that gene is excluded, and it will be unchanged in the output count matrix. For example, PROJECTED_AMBIENT_COUNT_THRESHOLD = 0 will include all features which have even a single count in any empty droplet.double, default: 0.1
--learning_rateTraining detail: lower learning rate for inference. A OneCycle learning rate schedule is used, where the upper learning rate is ten times this value. (For this value, probably do not exceed 1e-3).double, default: 1e-04
--final_elbo_fail_fractionTraining is considered to have failed if (best_test_ELBO - final_test_ELBO)/(best_test_ELBO - initial_test_ELBO) > FINAL_ELBO_FAIL_FRACTION. Training will automatically re-run if –num-training-tries > 1. By default, will not fail training based on final_training_ELBO.double
--epoch_elbo_fail_fractionTraining is considered to have failed if (previous_epoch_test_ELBO - current_epoch_test_ELBO)/(previous_epoch_test_ELBO - initial_train_ELBO) > EPOCH_ELBO_FAIL_FRACTION. Training will automatically re-run if –num-training-tries > 1. By default, will not fail training based on epoch_training_ELBO.double
--num_training_triesNumber of times to attempt to train the model. At each subsequent attempt, the learning rate is multiplied by LEARNING_RATE_RETRY_MULT.integer, default: 1
--learning_rate_retry_multLearning rate is multiplied by this amount each time a new training attempt is made. (This parameter is only used if training fails based on EPOCH_ELBO_FAIL_FRACTION or FINAL_ELBO_FAIL_FRACTION and NUM_TRAINING_TRIES is > 1.)double, default: 0.2
--posterior_batch_sizeTraining detail: size of batches when creating the posterior. Reduce this to avoid running out of GPU memory creating the posterior (will be slower).integer, default: 128
--posterior_regulationPosterior regularization method. (For experts: not required for normal usage, see documentation). * PRq is approximate quantile-targeting. * PRmu is approximate mean-targeting aggregated over genes (behavior of v0.2.0). * PRmu_gene is approximate mean-targeting per gene.string
--alphaTunable parameter alpha for the PRq posterior regularization method (not normally used: see documentation).double
--qTunable parameter q for the CDF threshold estimation method (not normally used: see documentation).double
--estimatorOutput denoised count estimation method. (For experts: not required for normal usage, see documentation).string, default: "mckp"
--estimator_multiple_cpuIncluding the flag –estimator-multiple-cpu will use more than one CPU to compute the MCKP output count estimator in parallel (does nothing for other estimators).boolean_true
--constant_learning_rateIncluding the flag –constant-learning-rate will use the ClippedAdam optimizer instead of the OneCycleLR learning rate schedule, which is the default. Learning is faster with the OneCycleLR schedule. However, training can easily be continued from a checkpoint for more epochs than the initial command specified when using ClippedAdam. On the other hand, if using the OneCycleLR schedule with 150 epochs specified, it is not possible to pick up from that final checkpoint and continue training until 250 epochs.boolean
--debugIncluding the flag –debug will log extra messages useful for debugging.boolean_true
--cudaIncluding the flag –cuda will run the inference on a GPU.boolean_true
+ + +
+
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/correction/cellbender_remove_background_v0_2.html b/pr-preview/pr-51/components/modules/correction/cellbender_remove_background_v0_2.html new file mode 100644 index 00000000..2d507bf9 --- /dev/null +++ b/pr-preview/pr-51/components/modules/correction/cellbender_remove_background_v0_2.html @@ -0,0 +1,1785 @@ + + + + + + + + + + +OpenPipelines - Cellbender remove background v0 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Cellbender remove background v0 2

+
+ +
+
+ Eliminating technical artifacts from high-throughput single-cell RNA sequencing data. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: cellbender_remove_background_v0_2
+Namespace: correction

+
+ +

This module removes counts due to ambient RNA molecules and random barcode swapping from (raw) UMI-based scRNA-seq count matrices. At the moment, only the count matrices produced by the CellRanger count pipeline is supported. Support for additional tools and protocols will be added in the future. A quick start tutorial can be found here.

+

Fleming et al. 2022, bioRxiv.

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/correction/cellbender_remove_background_v0_2/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+layer_output: "corrected"
+obs_latent_rt_efficiency: "latent_rt_efficiency"
+obs_latent_cell_probability: "latent_cell_probability"
+obs_latent_scale: "latent_scale"
+var_ambient_expression: "ambient_expression"
+obsm_latent_gene_encoding: "cellbender_latent_gene_encoding"
+
+# Arguments
+# expected_cells: 1000
+# total_droplets_included: 25000
+expected_cells_from_qc: true
+model: "full"
+epochs: 150
+low_count_threshold: 15
+z_dim: 100
+z_layers: [500]
+training_fraction: 0.9
+empty_drop_training_fraction: 0.5
+fpr: [0.01]
+exclude_antibody_capture: false
+# learning_rate: 1.0E-4
+cuda: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/correction/cellbender_remove_background_v0_2/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu file.file, required, example: "input.h5mu"
--modalityList of modalities to process.string, default: "rna"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputFull count matrix as an h5mu file, with background RNA removed. This file contains all the original droplet barcodes.file, required, example: "output.h5mu"
--output_compressionstring, example: "gzip"
--layer_outputOutput layerstring, default: "corrected"
--obs_latent_rt_efficiencystring, default: "latent_rt_efficiency"
--obs_latent_cell_probabilitystring, default: "latent_cell_probability"
--obs_latent_scalestring, default: "latent_scale"
--var_ambient_expressionstring, default: "ambient_expression"
--obsm_latent_gene_encodingstring, default: "cellbender_latent_gene_encoding"
+
+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--expected_cellsNumber of cells expected in the dataset (a rough estimate within a factor of 2 is sufficient).integer, example: 1000
--total_droplets_includedThe number of droplets from the rank-ordered UMI plot that will be analyzed. The largest ‘total_droplets’ droplets will have their cell probabilities inferred as an output.integer, example: 25000
--expected_cells_from_qcWill use the Cell Ranger QC to determine the estimated number of cellsboolean, default: TRUE
--modelWhich model is being used for count data. ‘simple’ does not model either ambient RNA or random barcode swapping (for debugging purposes – not recommended). ‘ambient’ assumes background RNA is incorporated into droplets. ‘swapping’ assumes background RNA comes from random barcode swapping. ‘full’ uses a combined ambient and swapping model.string, default: "full"
--epochsNumber of epochs to train.integer, default: 150
--low_count_thresholdDroplets with UMI counts below this number are completely excluded from the analysis. This can help identify the correct prior for empty droplet counts in the rare case where empty counts are extremely high (over 200).integer, default: 15
--z_dimDimension of latent variable z.integer, default: 100
--z_layersDimension of hidden layers in the encoder for z.integer, default: 500
--training_fractionTraining detail: the fraction of the data used for training. The rest is never seen by the inference algorithm. Speeds up learning.double, default: 0.9
--empty_drop_training_fractionTraining detail: the fraction of the training data each epoch that is drawn (randomly sampled) from surely empty droplets.double, default: 0.5
--fprTarget false positive rate in (0, 1). A false positive is a true signal count that is erroneously removed. More background removal is accompanied by more signal removal at high values of FPR. You can specify multiple values, which will create multiple output files.double, default: 0.01
--exclude_antibody_captureIncluding the flag –exclude-antibody-capture will cause remove-background to operate on gene counts only, ignoring other features.boolean_true
--learning_rateTraining detail: lower learning rate for inference. A OneCycle learning rate schedule is used, where the upper learning rate is ten times this value. (For this value, probably do not exceed 1e-3).double, example: 1e-04
--cudaIncluding the flag –cuda will run the inference on a GPU.boolean_true
+ + +
+
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/dataflow/concat.html b/pr-preview/pr-51/components/modules/dataflow/concat.html new file mode 100644 index 00000000..a81bec69 --- /dev/null +++ b/pr-preview/pr-51/components/modules/dataflow/concat.html @@ -0,0 +1,1641 @@ + + + + + + + + + + +OpenPipelines - Concat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Concat

+
+ +
+
+ Concatenates several uni-modal samples in .h5mu files into a single file +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: concat
+Namespace: dataflow

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/dataflow/concat/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: ["sample_paths"]
+# input_id: ["foo"]
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+obs_sample_name: "sample_id"
+other_axis_mode: "move"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/dataflow/concat/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputPaths to the different samples to be concatenated.file, required, example: "sample_paths"
--input_idNames of the different samples that have to be concatenated. Must be specified when using ‘–mode move’. In this case, the ids will be used for the columns names of the dataframes registring the conflicts. If specified, must be of same length as --input.string
--outputfile, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--obs_sample_nameName of the .obs key under which to add the sample names.string, default: "sample_id"
--other_axis_modeHow to handle the merging of other axis (var, obs, …). - None: keep no data - same: only keep elements of the matrices which are the same in each of the samples - unique: only keep elements for which there is only 1 possible value (1 value that can occur in multiple samples) - first: keep the annotation from the first sample - only: keep elements that show up in only one of the objects (1 unique element in only 1 sample) - move: identical to ‘same’, but moving the conflicting values to .varm or .obsmstring, default: "move"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/dataflow/merge.html b/pr-preview/pr-51/components/modules/dataflow/merge.html new file mode 100644 index 00000000..c983a365 --- /dev/null +++ b/pr-preview/pr-51/components/modules/dataflow/merge.html @@ -0,0 +1,1623 @@ + + + + + + + + + + +OpenPipelines - Merge + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Merge

+
+ +
+
+ Combine one or more single-modality .h5mu files together into one .h5mu file +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: merge
+Namespace: dataflow

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/dataflow/merge/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: ["sample_paths"]
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/dataflow/merge/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputPaths to the single-modality .h5mu files that need to be combinedfile, required, default: "sample_paths"
--outputPath to the output file.file, default: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/dataflow/split_modalities.html b/pr-preview/pr-51/components/modules/dataflow/split_modalities.html new file mode 100644 index 00000000..9f53c767 --- /dev/null +++ b/pr-preview/pr-51/components/modules/dataflow/split_modalities.html @@ -0,0 +1,1636 @@ + + + + + + + + + + +OpenPipelines - Split modalities + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Split modalities

+
+ +
+
+ Split the modalities from a single .h5mu multimodal sample into seperate .h5mu files. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: split_modalities
+Namespace: dataflow

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/dataflow/split_modalities/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "sample_path"
+# output: "$id.$key.output.output"
+# output_compression: "gzip"
+# output_types: "$id.$key.output_types.csv"
+compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/dataflow/split_modalities/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputPath to a single .h5mu file.file, required, default: "sample_path"
--outputOutput directory containing multiple h5mu files.file, required, example: "/path/to/output"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--output_typesA csv containing the base filename and modality type per output file.file, required, example: "types.csv"
--compressionThe compression format to be used on the final h5mu object.string, default: "gzip"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)

  • +
  • Robrecht Cannoodt (contributor)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/demux/bcl2fastq.html b/pr-preview/pr-51/components/modules/demux/bcl2fastq.html new file mode 100644 index 00000000..2b952e08 --- /dev/null +++ b/pr-preview/pr-51/components/modules/demux/bcl2fastq.html @@ -0,0 +1,1635 @@ + + + + + + + + + + +OpenPipelines - Bcl2fastq + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Bcl2fastq

+
+ +
+
+ Convert bcl files to fastq files using bcl2fastq +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: bcl2fastq
+Namespace: demux

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/demux/bcl2fastq/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "bcl_dir"
+sample_sheet: # please fill in - example: "SampleSheet.csv"
+# output: "$id.$key.output.output"
+# reports: "$id.$key.reports.reports"
+ignore_missing: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/demux/bcl2fastq/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput run directoryfile, required, example: "bcl_dir"
--sample_sheetPointer to the sample sheetfile, required, example: "SampleSheet.csv"
--outputOutput directory containig fastq filesfile, required, example: "fastq_dir"
--reportsReports directoryfile, example: "reports_dir"
--ignore_missingboolean_true
+
+
+
+

Authors

+
    +
  • Toni Verbeiren (author, maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/demux/bcl_convert.html b/pr-preview/pr-51/components/modules/demux/bcl_convert.html new file mode 100644 index 00000000..cf6e17f6 --- /dev/null +++ b/pr-preview/pr-51/components/modules/demux/bcl_convert.html @@ -0,0 +1,1637 @@ + + + + + + + + + + +OpenPipelines - Bcl convert + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Bcl convert

+
+ +
+
+ Convert bcl files to fastq files using bcl-convert. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: bcl_convert
+Namespace: demux

+
+ +

Information about upgrading from bcl2fastq via https://emea.support.illumina.com/bulletins/2020/10/upgrading-from-bcl2fastq-to-bcl-convert.html and https://support.illumina.com/sequencing/sequencing_software/bcl-convert/compatibility.html

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/demux/bcl_convert/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "bcl_dir"
+sample_sheet: # please fill in - example: "bcl_dir"
+# output: "$id.$key.output.output"
+# reports: "$id.$key.reports.reports"
+test_mode: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/demux/bcl_convert/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput run directoryfile, required, example: "bcl_dir"
--sample_sheetPointer to the sample sheetfile, required, example: "bcl_dir"
--outputOutput directory containig fastq filesfile, required, example: "fastq_dir"
--reportsReports directoryfile, example: "reports_dir"
--test_modeShould bcl-convert be run in test mode (using –first-tile-only)?boolean, default: FALSE
+
+
+
+

Authors

+
    +
  • Toni Verbeiren (author, maintainer)

  • +
  • Marijke Van Moerbeke (author)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/demux/cellranger_mkfastq.html b/pr-preview/pr-51/components/modules/demux/cellranger_mkfastq.html new file mode 100644 index 00000000..1b31bb75 --- /dev/null +++ b/pr-preview/pr-51/components/modules/demux/cellranger_mkfastq.html @@ -0,0 +1,1631 @@ + + + + + + + + + + +OpenPipelines - Cellranger mkfastq + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Cellranger mkfastq

+
+ +
+
+ Demultiplex raw sequencing data +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: cellranger_mkfastq
+Namespace: demux

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/demux/cellranger_mkfastq/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "/path/to/bcl"
+sample_sheet: # please fill in - example: "SampleSheet.csv"
+# output: "$id.$key.output.output"
+# reports: "$id.$key.reports.reports"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/demux/cellranger_mkfastq/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputPath to the (untarred) BCL files. Expects ‘RunParameters.xml’ at ‘./’.file, required, example: "/path/to/bcl"
--sample_sheetThe path to the sample sheet.file, required, example: "SampleSheet.csv"
--outputThe folder to store the demux resultsfile, required, default: "fastqs", example: "/path/to/output"
--reportsReports directoryfile, example: "reports_dir"
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Samuel D’Souza (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/dimred/pca.html b/pr-preview/pr-51/components/modules/dimred/pca.html new file mode 100644 index 00000000..4ef3e583 --- /dev/null +++ b/pr-preview/pr-51/components/modules/dimred/pca.html @@ -0,0 +1,1672 @@ + + + + + + + + + + +OpenPipelines - Pca + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Pca

+
+ +
+
+ Computes PCA coordinates, loadings and variance decomposition. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: pca
+Namespace: dimred

+
+ +

Uses the implementation of scikit-learn [Pedregosa11]

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/dimred/pca/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+# layer: "foo"
+# var_input: "filter_with_hvg"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+obsm_output: "X_pca"
+varm_output: "pca_loadings"
+uns_output: "pca_variance"
+# num_components: 25
+overwrite: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/dimred/pca/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--layerUse specified layer for expression values instead of the .X object from the modality.string
--var_inputColumn name in .var matrix that will be used to select which genes to run the PCA on.string, example: "filter_with_hvg"
--outputOutput h5mu file.file, required, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--obsm_outputIn which .obsm slot to store the resulting embedding.string, default: "X_pca"
--varm_outputIn which .varm slot to store the resulting loadings matrix.string, default: "pca_loadings"
--uns_outputIn which .uns slot to store the resulting variance objects.string, default: "pca_variance"
--num_componentsNumber of principal components to compute. Defaults to 50, or 1 - minimum dimension size of selected representation.integer, example: 25
--overwriteAllow overwriting .obsm, .varm and .uns slots.boolean_true
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/dimred/umap.html b/pr-preview/pr-51/components/modules/dimred/umap.html new file mode 100644 index 00000000..db5ec53d --- /dev/null +++ b/pr-preview/pr-51/components/modules/dimred/umap.html @@ -0,0 +1,1732 @@ + + + + + + + + + + +OpenPipelines - Umap + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Umap

+
+ +
+
+ UMAP (Uniform Manifold Approximation and Projection) is a manifold learning technique suitable for visualizing high-dimensional data. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: umap
+Namespace: dimred

+
+ +

Besides tending to be faster than tSNE, it optimizes the embedding such that it best reflects the topology of the data, which we represent throughout Scanpy using a neighborhood graph. tSNE, by contrast, optimizes the distribution of nearest-neighbor distances in the embedding such that these best match the distribution of distances in the high-dimensional space. We use the implementation of umap-learn [McInnes18]. For a few comparisons of UMAP with tSNE, see this preprint

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/dimred/umap/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+uns_neighbors: "neighbors"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+obsm_output: "umap"
+
+# Arguments
+min_dist: 0.5
+spread: 1.0
+num_components: 2
+# max_iter: 123
+alpha: 1.0
+gamma: 1.0
+negative_sample_rate: 5
+init_pos: "spectral"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/dimred/umap/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--uns_neighborsThe .uns neighbors slot as output by the find_neighbors component.string, default: "neighbors"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput h5mu file.file, required, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--obsm_outputThe pre/postfix under which to store the UMAP results.string, default: "umap"
+
+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--min_distThe effective minimum distance between embedded points. Smaller values will result in a more clustered/clumped embedding where nearby points on the manifold are drawn closer together, while larger values will result on a more even dispersal of points. The value should be set relative to the spread value, which determines the scale at which embedded points will be spread out.double, default: 0.5
--spreadThe effective scale of embedded points. In combination with min_dist this determines how clustered/clumped the embedded points are.double, default: 1
--num_componentsThe number of dimensions of the embedding.integer, default: 2
--max_iterThe number of iterations (epochs) of the optimization. Called n_epochs in the original UMAP. Default is set to 500 if neighbors[‘connectivities’].shape[0] <= 10000, else 200.integer
--alphaThe initial learning rate for the embedding optimization.double, default: 1
--gammaWeighting applied to negative samples in low dimensional embedding optimization. Values higher than one will result in greater weight being given to negative samples.double, default: 1
--negative_sample_rateThe number of negative edge/1-simplex samples to use per positive edge/1-simplex sample in optimizing the low dimensional embedding.integer, default: 5
--init_posHow to initialize the low dimensional embedding. Called init in the original UMAP. Options are: * Any key from .obsm * 'paga': positions from paga() * 'spectral': use a spectral embedding of the graph * 'random': assign initial embedding positions at random.string, default: "spectral"
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/download/download_file.html b/pr-preview/pr-51/components/modules/download/download_file.html new file mode 100644 index 00000000..ed5759f6 --- /dev/null +++ b/pr-preview/pr-51/components/modules/download/download_file.html @@ -0,0 +1,1623 @@ + + + + + + + + + + +OpenPipelines - Download file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Download file

+
+ +
+
+ Download a file +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: download_file
+Namespace: download

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/download/download_file/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "https://cf.10xgenomics.com/samples/cell-exp/3.0.0/pbmc_1k_protein_v3/pbmc_1k_protein_v3_raw_feature_bc_matrix.h5"
+# output: "$id.$key.output.h5"
+verbose: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/download/download_file/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputURL to a file to download.string, required, example: "https://cf.10xgenomics.com/samples/cell-exp/3.0.0/pbmc_1k_protein_v3/pbmc_1k_protein_v3_raw_feature_bc_matrix.h5"
--outputPath where to store output.file, required, example: "pbmc_1k_protein_v3_raw_feature_bc_matrix.h5"
--verboseIncrease verbosityboolean_true
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/download/sync_test_resources.html b/pr-preview/pr-51/components/modules/download/sync_test_resources.html new file mode 100644 index 00000000..59c103ec --- /dev/null +++ b/pr-preview/pr-51/components/modules/download/sync_test_resources.html @@ -0,0 +1,1641 @@ + + + + + + + + + + +OpenPipelines - Sync test resources + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Sync test resources

+
+ +
+
+ Synchronise the test resources from s3://openpipelines-data to resources_test +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: sync_test_resources
+Namespace: download

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/download/sync_test_resources/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: "s3://openpipelines-data"
+# output: "$id.$key.output.output"
+quiet: false
+dryrun: false
+delete: false
+# exclude: ["foo"]
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/download/sync_test_resources/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputPath to the S3 bucket to sync from.string, default: "s3://openpipelines-data"
--outputPath to the test resource directory.file, default: "resources_test"
--quietDisplays the operations that would be performed using the specified command without actually running them.boolean_true
--dryrunDoes not display the operations performed from the specified command.boolean_true
--deleteFiles that exist in the destination but not in the source are deleted during sync.boolean_true
--excludeExclude all files or objects from the command that matches the specified pattern.string
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/files/make_params.html b/pr-preview/pr-51/components/modules/files/make_params.html new file mode 100644 index 00000000..e1cb2f77 --- /dev/null +++ b/pr-preview/pr-51/components/modules/files/make_params.html @@ -0,0 +1,1654 @@ + + + + + + + + + + +OpenPipelines - Make params + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Make params

+
+ +
+
+ Looks for files in a directory and turn it in a params file. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: make_params
+Namespace: files

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/files/make_params/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+base_dir: # please fill in - example: "/path/to/dir"
+pattern: # please fill in - example: "*.fastq.gz"
+n_dirname_drop: 0
+n_basename_id: 0
+id_name: "id"
+path_name: "path"
+# group_name: "param_list"
+# output: "$id.$key.output.yaml"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/files/make_params/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--base_dirBase directory to search recursivelyfile, required, example: "/path/to/dir"
--patternAn optional regular expression. Only file names which match the regular expression will be matched.string, required, example: "*.fastq.gz"
--n_dirname_dropFor every matched file, the parent directory will be traversed N times.integer, default: 0
--n_basename_idThe unique identifiers will consist of at least N dirnames.integer, default: 0
--id_nameThe name for storing the identifier field in the yaml.string, default: "id"
--path_nameThe name for storing the path field in the yaml.string, default: "path"
--group_nameTop level name for the group of entries.string, example: "param_list"
--outputOutput YAML file.file, required, example: "params.yaml"
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Robrecht Cannoodt (maintainer, author)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/filter/do_filter.html b/pr-preview/pr-51/components/modules/filter/do_filter.html new file mode 100644 index 00000000..27ed3dd1 --- /dev/null +++ b/pr-preview/pr-51/components/modules/filter/do_filter.html @@ -0,0 +1,1641 @@ + + + + + + + + + + +OpenPipelines - Do filter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Do filter

+
+ +
+
+ Remove observations and variables based on specified .obs and .var columns +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: do_filter
+Namespace: filter

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/filter/do_filter/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+# obs_filter: ["filter_with_x"]
+# var_filter: ["filter_with_x"]
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/filter/do_filter/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--obs_filterWhich .obs columns to use to filter the observations by.string, example: "filter_with_x"
--var_filterWhich .var columns to use to filter the observations by.string, example: "filter_with_x"
--outputOutput h5mu file.file, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (maintainer, contributor)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/filter/filter_with_counts.html b/pr-preview/pr-51/components/modules/filter/filter_with_counts.html new file mode 100644 index 00000000..a9a3f05c --- /dev/null +++ b/pr-preview/pr-51/components/modules/filter/filter_with_counts.html @@ -0,0 +1,1757 @@ + + + + + + + + + + +OpenPipelines - Filter with counts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Filter with counts

+
+ +
+
+ Filter scRNA-seq data based on the primary QC metrics. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: filter_with_counts
+Namespace: filter

+
+ +

This is based on both the UMI counts, the gene counts and the mitochondrial genes (genes starting with mt/MT)

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/filter/filter_with_counts/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+# layer: "raw_counts"
+# var_gene_names: "gene_symbol"
+mitochondrial_gene_regex: "^[mM][tT]-"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+do_subset: false
+obs_name_filter: "filter_with_counts"
+var_name_filter: "filter_with_counts"
+# var_name_mitochondrial_genes: "foo"
+
+# Arguments
+# min_counts: 200
+# max_counts: 5000000
+# min_genes_per_cell: 200
+# max_genes_per_cell: 1500000
+# min_cells_per_gene: 3
+# min_fraction_mito: 0
+# max_fraction_mito: 0.2
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/filter/filter_with_counts/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--layerstring, example: "raw_counts"
--var_gene_names.var column name to be used to detect mitochondrial genes instead of .var_names (default if not set). Gene names matching with the regex value from –mitochondrial_gene_regex will be identified as a mitochondrial gene.string, example: "gene_symbol"
--mitochondrial_gene_regexRegex string that identifies mitochondrial genes from –var_gene_names. By default will detect human and mouse mitochondrial genes from a gene symbol.string, default: "^[mM][tT]-"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput h5mu file.file, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--do_subsetWhether to subset before storing the output.boolean_true
--obs_name_filterIn which .obs slot to store a boolean array corresponding to which observations should be removed.string, default: "filter_with_counts"
--var_name_filterIn which .var slot to store a boolean array corresponding to which variables should be removed.string, default: "filter_with_counts"
--var_name_mitochondrial_genesIn which .var slot to store a boolean array corresponding the mitochondrial genes. Will only be used if –min_fraction_mito or –max_fraction_mito are specified.string
+
+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--min_countsMinimum number of counts captured per cell.integer, example: 200
--max_countsMaximum number of counts captured per cell.integer, example: 5000000
--min_genes_per_cellMinimum of non-zero values per cell.integer, example: 200
--max_genes_per_cellMaximum of non-zero values per cell.integer, example: 1500000
--min_cells_per_geneMinimum of non-zero values per gene.integer, example: 3
--min_fraction_mitoMinimum fraction of UMIs that are mitochondrial.double, example: 0
--max_fraction_mitoMaximum fraction of UMIs that are mitochondrial.double, example: 0.2
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (author)

  • +
  • Robrecht Cannoodt (maintainer, author)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/filter/filter_with_hvg.html b/pr-preview/pr-51/components/modules/filter/filter_with_hvg.html new file mode 100644 index 00000000..b960c3d3 --- /dev/null +++ b/pr-preview/pr-51/components/modules/filter/filter_with_hvg.html @@ -0,0 +1,1712 @@ + + + + + + + + + + +OpenPipelines - Filter with hvg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Filter with hvg

+
+ +
+
+ Annotate highly variable genes [Satija15] [Zheng17] [Stuart19]. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: filter_with_hvg
+Namespace: filter

+
+ +

Expects logarithmized data, except when flavor=‘seurat_v3’ in which count data is expected.

+

Depending on flavor, this reproduces the R-implementations of Seurat [Satija15], Cell Ranger [Zheng17], and Seurat v3 [Stuart19].

+

For the dispersion-based methods ([Satija15] and [Zheng17]), the normalized dispersion is obtained by scaling with the mean and standard deviation of the dispersions for genes falling into a given bin for mean expression of genes. This means that for each bin of mean expression, highly variable genes are selected.

+

For [Stuart19], a normalized variance for each gene is computed. First, the data are standardized (i.e., z-score normalization per feature) with a regularized standard deviation. Next, the normalized variance is computed as the variance of each gene after the transformation. Genes are ranked by the normalized variance.

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/filter/filter_with_hvg/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+# layer: "foo"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+var_name_filter: "filter_with_hvg"
+varm_name: "hvg"
+do_subset: false
+flavor: "seurat"
+# n_top_genes: 123
+min_mean: 0.0125
+max_mean: 3
+min_disp: 0.5
+# max_disp: 123.0
+span: 0.3
+n_bins: 20
+# obs_batch_key: "foo"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/filter/filter_with_hvg/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--layeruse adata.layers[layer] for expression values instead of adata.X.string
--outputOutput h5mu file.file, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--var_name_filterIn which .var slot to store a boolean array corresponding to which observations should be filtered out.string, default: "filter_with_hvg"
--varm_nameIn which .varm slot to store additional metadata.string, default: "hvg"
--do_subsetWhether to subset before storing the output.boolean_true
--flavorChoose the flavor for identifying highly variable genes. For the dispersion based methods in their default workflows, Seurat passes the cutoffs whereas Cell Ranger passes n_top_genes.string, default: "seurat"
--n_top_genesNumber of highly-variable genes to keep. Mandatory if flavor=‘seurat_v3’.integer
--min_meanIf n_top_genes is defined, this and all other cutoffs for the means and the normalized dispersions are ignored. Ignored if flavor=‘seurat_v3’.double, default: 0.0125
--max_meanIf n_top_genes is defined, this and all other cutoffs for the means and the normalized dispersions are ignored. Ignored if flavor=‘seurat_v3’.double, default: 3
--min_dispIf n_top_genes is defined, this and all other cutoffs for the means and the normalized dispersions are ignored. Ignored if flavor=‘seurat_v3’.double, default: 0.5
--max_dispIf n_top_genes is defined, this and all other cutoffs for the means and the normalized dispersions are ignored. Ignored if flavor=‘seurat_v3’. Default is +inf.double
--spanThe fraction of the data (cells) used when estimating the variance in the loess model fit if flavor=‘seurat_v3’.double, default: 0.3
--n_binsNumber of bins for binning the mean gene expression. Normalization is done with respect to each bin. If just a single gene falls into a bin, the normalized dispersion is artificially set to 1.integer, default: 20
--obs_batch_keyIf specified, highly-variable genes are selected within each batch separately and merged. This simple process avoids the selection of batch-specific genes and acts as a lightweight batch correction method. For all flavors, genes are first sorted by how many batches they are a HVG. For dispersion-based flavors ties are broken by normalized dispersion. If flavor = ‘seurat_v3’, ties are broken by the median (across batches) rank based on within-batch normalized variance.string
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (contributor)

  • +
  • Robrecht Cannoodt (maintainer, contributor)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/filter/filter_with_scrublet.html b/pr-preview/pr-51/components/modules/filter/filter_with_scrublet.html new file mode 100644 index 00000000..913056dd --- /dev/null +++ b/pr-preview/pr-51/components/modules/filter/filter_with_scrublet.html @@ -0,0 +1,1687 @@ + + + + + + + + + + +OpenPipelines - Filter with scrublet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Filter with scrublet

+
+ +
+
+ Doublet detection using the Scrublet method (Wolock, Lopez and Klein, 2019). +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: filter_with_scrublet
+Namespace: filter

+
+ +

The method tests for potential doublets by using the expression profiles of cells to generate synthetic potential doubles which are tested against cells. The method returns a “doublet score” on which it calls for potential doublets.

+

For the source code please visit https://github.com/AllonKleinLab/scrublet.

+

For 10x we expect the doublet rates to be: Multiplet Rate (%) - # of Cells Loaded - # of Cells Recovered ~0.4% ~800 ~500 ~0.8% ~1,600 ~1,000 ~1.6% ~3,200 ~2,000 ~2.3% ~4,800 ~3,000 ~3.1% ~6,400 ~4,000 ~3.9% ~8,000 ~5,000 ~4.6% ~9,600 ~6,000 ~5.4% ~11,200 ~7,000 ~6.1% ~12,800 ~8,000 ~6.9% ~14,400 ~9,000 ~7.6% ~16,000 ~10,000

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/filter/filter_with_scrublet/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+obs_name_filter: "filter_with_scrublet"
+do_subset: false
+obs_name_doublet_score: "scrublet_doublet_score"
+min_counts: 2
+min_cells: 3
+min_gene_variablity_percent: 85
+num_pca_components: 30
+distance_metric: "euclidean"
+allow_automatic_threshold_detection_fail: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/filter/filter_with_scrublet/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--outputOutput h5mu file.file, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--obs_name_filterIn which .obs slot to store a boolean array corresponding to which observations should be filtered out.string, default: "filter_with_scrublet"
--do_subsetWhether to subset before storing the output.boolean_true
--obs_name_doublet_scoreName of the doublet scores column in the obs slot of the returned object.string, default: "scrublet_doublet_score"
--min_countsThe number of minimal UMI counts per cell that have to be present for initial cell detection.integer, default: 2
--min_cellsThe number of cells in which UMIs for a gene were detected.integer, default: 3
--min_gene_variablity_percentUsed for gene filtering prior to PCA. Keep the most highly variable genes (in the top min_gene_variability_pctl percentile), as measured by the v-statistic [Klein et al., Cell 2015].double, default: 85
--num_pca_componentsNumber of principal components to use during PCA dimensionality reduction.integer, default: 30
--distance_metricThe distance metric used for computing similarities.string, default: "euclidean"
--allow_automatic_threshold_detection_failWhen scrublet fails to automatically determine the double score threshold, allow the component to continue and set the output columns to NA.boolean_true
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (contributor)

  • +
  • Robrecht Cannoodt (maintainer, contributor)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/filter/remove_modality.html b/pr-preview/pr-51/components/modules/filter/remove_modality.html new file mode 100644 index 00000000..f73148e1 --- /dev/null +++ b/pr-preview/pr-51/components/modules/filter/remove_modality.html @@ -0,0 +1,1629 @@ + + + + + + + + + + +OpenPipelines - Remove modality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Remove modality

+
+ +
+
+ Remove a modality from a .h5mu file +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: remove_modality
+Namespace: filter

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/filter/remove_modality/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: # please fill in - example: ["foo"]
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/filter/remove_modality/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, required
--outputOutput h5mu file.file, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/filter/subset_h5mu.html b/pr-preview/pr-51/components/modules/filter/subset_h5mu.html new file mode 100644 index 00000000..11af00e4 --- /dev/null +++ b/pr-preview/pr-51/components/modules/filter/subset_h5mu.html @@ -0,0 +1,1635 @@ + + + + + + + + + + +OpenPipelines - Subset h5mu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Subset h5mu

+
+ +
+
+ Create a subset of a mudata file by selecting the first number of observations +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: subset_h5mu
+Namespace: filter

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/filter/subset_h5mu/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+# number_of_observations: 5
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/filter/subset_h5mu/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--outputOutput h5mu file.file, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--number_of_observationsNumber of observations to be selected from the h5mu file.integer, example: 5
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/index.html b/pr-preview/pr-51/components/modules/index.html new file mode 100644 index 00000000..14ecc03a --- /dev/null +++ b/pr-preview/pr-51/components/modules/index.html @@ -0,0 +1,1482 @@ + + + + + + + + + +OpenPipelines - Modules + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Modules

+
+ + + +
+ + + + +
+ + +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/integrate/harmonypy.html b/pr-preview/pr-51/components/modules/integrate/harmonypy.html new file mode 100644 index 00000000..7d1f3f7c --- /dev/null +++ b/pr-preview/pr-51/components/modules/integrate/harmonypy.html @@ -0,0 +1,1655 @@ + + + + + + + + + + +OpenPipelines - Harmonypy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Harmonypy

+
+ +
+
+ Performs Harmony integration based as described in https://github.com/immunogenomics/harmony. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: harmonypy
+Namespace: integrate

+
+ +

Based on an implementation in python from https://github.com/slowkow/harmonypy

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/integrate/harmonypy/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "path/to/file"
+# output: "$id.$key.output.output"
+# output_compression: "gzip"
+modality: "rna"
+obsm_input: "X_pca"
+obsm_output: "X_pca_integrated"
+theta: [2]
+obs_covariates: # please fill in - example: ["batch", "sample"]
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/integrate/harmonypy/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required
--outputOutput h5mu file.file, required
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--modalitystring, default: "rna"
--obsm_inputWhich .obsm slot to use as a starting PCA embedding.string, default: "X_pca"
--obsm_outputIn which .obsm slot to store the resulting integrated embedding.string, default: "X_pca_integrated"
--thetaDiversity clustering penalty parameter. Specify for each variable in group.by.vars. theta=0 does not encourage any diversity. Larger values of theta result in more diverse clusters.double, default: 2
--obs_covariatesThe .obs field(s) that define the covariate(s) to regress out.string, required, example: "batch", example: "sample"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)

  • +
  • Robrecht Cannoodt (contributor)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/integrate/scanorama.html b/pr-preview/pr-51/components/modules/integrate/scanorama.html new file mode 100644 index 00000000..5783470b --- /dev/null +++ b/pr-preview/pr-51/components/modules/integrate/scanorama.html @@ -0,0 +1,1678 @@ + + + + + + + + + + +OpenPipelines - Scanorama + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Scanorama

+
+ +
+
+ Use Scanorama to integrate different experiments +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: scanorama
+Namespace: integrate

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/integrate/scanorama/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "path/to/file"
+modality: "rna"
+# output: "$id.$key.output.h5ad"
+# output_compression: "gzip"
+obs_batch: "batch"
+obsm_input: "X_pca"
+obsm_output: "X_scanorama"
+knn: 20
+batch_size: 5000
+sigma: 15
+approx: true
+alpha: 0.1
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/integrate/scanorama/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required
--modalitystring, default: "rna"
--outputOutput .h5mu filefile, required, default: "output.h5ad"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--obs_batchColumn name discriminating between your batches.string, default: "batch"
--obsm_inputBasis obsm slot to run scanorama on.string, default: "X_pca"
--obsm_outputThe name of the field in adata.obsm where the integrated embeddings will be stored after running this function. Defaults to X_scanorama.string, default: "X_scanorama"
--knnNumber of nearest neighbors to use for matching.integer, default: 20
--batch_sizeThe batch size used in the alignment vector computation. Useful when integrating very large (>100k samples) datasets. Set to large value that runs within available memory.integer, default: 5000
--sigmaCorrection smoothing parameter on Gaussian kernel.double, default: 15
--approxUse approximate nearest neighbors with Python annoy; greatly speeds up matching runtime.boolean, default: TRUE
--alphaAlignment score minimum cutoffdouble, default: 0.1
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (author)

  • +
  • Dries Schaumont (maintainer)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/integrate/scarches.html b/pr-preview/pr-51/components/modules/integrate/scarches.html new file mode 100644 index 00000000..0ad6cf84 --- /dev/null +++ b/pr-preview/pr-51/components/modules/integrate/scarches.html @@ -0,0 +1,1764 @@ + + + + + + + + + + +OpenPipelines - Scarches + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Scarches

+
+ +
+
+ Performs reference mapping with scArches +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: scarches
+Namespace: integrate

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/integrate/scarches/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input: # please fill in - example: "path/to/file"
+modality: "rna"
+reference: # please fill in - example: "path/to/file"
+dataset_name: "test_dataset"
+
+# Outputs
+# output: "$id.$key.output.output"
+# output_compression: "gzip"
+# model_output: "$id.$key.model_output.model_output"
+obsm_output: "X_integrated_scanvi"
+
+# Early stopping arguments
+# early_stopping: true
+early_stopping_monitor: "elbo_validation"
+early_stopping_patience: 45
+early_stopping_min_delta: 0.0
+
+# Learning parameters
+max_epochs: # please fill in - example: 123
+reduce_lr_on_plateau: true
+lr_factor: 0.6
+lr_patience: 30
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/integrate/scarches/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu file to use as a queryfile, required
--modalitystring, default: "rna"
--referencePath to the directory with reference model or a web link. For HLCA use https://zenodo.org/record/6337966/files/HLCA_reference_model.zipfile, required
--dataset_nameName of query dataset to use as a batch name. If not set, name of the input file is usedstring, default: "test_dataset"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput h5mu file.file, required
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--model_outputOutput directory for modelfile, default: "model"
--obsm_outputIn which .obsm slot to store the resulting integrated embedding.string, default: "X_integrated_scanvi"
+
+
+

Early stopping arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--early_stoppingWhether to perform early stopping with respect to the validation set.boolean
--early_stopping_monitorMetric logged during validation set epoch.string, default: "elbo_validation"
--early_stopping_patienceNumber of validation epochs with no improvement after which training will be stopped.integer, default: 45
--early_stopping_min_deltaMinimum change in the monitored quantity to qualify as an improvement, i.e. an absolute change of less than min_delta, will count as no improvement.double, default: 0
+
+
+

Learning parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--max_epochsNumber of passes through the dataset, defaults to (20000 / number of cells) * 400 or 400; whichever is smallest.integer, required
--reduce_lr_on_plateauWhether to monitor validation loss and reduce learning rate when validation set lr_scheduler_metric plateaus.boolean, default: TRUE
--lr_factorFactor to reduce learning rate.double, default: 0.6
--lr_patienceNumber of epochs with no improvement after which learning rate will be reduced.double, default: 30
+
+
+
+

Authors

+
    +
  • Vladimir Shitov
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/integrate/scvi.html b/pr-preview/pr-51/components/modules/integrate/scvi.html new file mode 100644 index 00000000..f8fb0076 --- /dev/null +++ b/pr-preview/pr-51/components/modules/integrate/scvi.html @@ -0,0 +1,1937 @@ + + + + + + + + + + +OpenPipelines - Scvi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Scvi

+
+ +
+
+ Performs scvi integration as done in the human lung cell atlas https://github.com/LungCellAtlas/HLCA +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: scvi
+Namespace: integrate

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/integrate/scvi/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input: # please fill in - example: "path/to/file"
+modality: "rna"
+# input_layer: "foo"
+obs_batch: "sample_id"
+# var_input: "foo"
+# obs_labels: "foo"
+# obs_size_factor: "foo"
+# obs_categorical_covariate: ["foo"]
+# obs_continuous_covariate: ["foo"]
+
+# Outputs
+# output: "$id.$key.output.output"
+# model_output: "$id.$key.model_output.model_output"
+# output_compression: "gzip"
+obsm_output: "X_scvi_integrated"
+
+# SCVI options
+n_hidden_nodes: 128
+n_dimensions_latent_space: 30
+n_hidden_layers: 2
+dropout_rate: 0.1
+dispersion: "gene"
+gene_likelihood: "nb"
+
+# Variational auto-encoder model options
+use_layer_normalization: "both"
+use_batch_normalization: "none"
+encode_covariates: true
+deeply_inject_covariates: false
+use_observed_lib_size: false
+
+# Early stopping arguments
+# early_stopping: true
+early_stopping_monitor: "elbo_validation"
+early_stopping_patience: 45
+early_stopping_min_delta: 0.0
+
+# Learning parameters
+# max_epochs: 123
+reduce_lr_on_plateau: true
+lr_factor: 0.6
+lr_patience: 30
+
+# Data validition
+n_obs_min_count: 0
+n_var_min_count: 0
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/integrate/scvi/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required
--modalitystring, default: "rna"
--input_layerInput layer to use. If None, X is usedstring
--obs_batchColumn name discriminating between your batches.string, default: "sample_id"
--var_input.var column containing highly variable genes. By default, do not subset genes.string
--obs_labelsKey in adata.obs for label information. Categories will automatically be converted into integer categories and saved to adata.obs[’_scvi_labels’]. If None, assigns the same label to all the data.string
--obs_size_factorKey in adata.obs for size factor information. Instead of using library size as a size factor, the provided size factor column will be used as offset in the mean of the likelihood. Assumed to be on linear scale.string
--obs_categorical_covariateKeys in adata.obs that correspond to categorical data. These covariates can be added in addition to the batch covariate and are also treated as nuisance factors (i.e., the model tries to minimize their effects on the latent space). Thus, these should not be used for biologically-relevant factors that you do not want to correct for.string
--obs_continuous_covariateKeys in adata.obs that correspond to continuous data. These covariates can be added in addition to the batch covariate and are also treated as nuisance factors (i.e., the model tries to minimize their effects on the latent space). Thus, these should not be used for biologically-relevant factors that you do not want to correct for.string
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput h5mu file.file, required
--model_outputFolder where the state of the trained model will be saved to.file
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--obsm_outputIn which .obsm slot to store the resulting integrated embedding.string, default: "X_scvi_integrated"
+
+
+

SCVI options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--n_hidden_nodesNumber of nodes per hidden layer.integer, default: 128
--n_dimensions_latent_spaceDimensionality of the latent space.integer, default: 30
--n_hidden_layersNumber of hidden layers used for encoder and decoder neural-networks.integer, default: 2
--dropout_rateDropout rate for the neural networks.double, default: 0.1
--dispersionSet the behavior for the dispersion for negative binomial distributions: - gene: dispersion parameter of negative binomial is constant per gene across cells - gene-batch: dispersion can differ between different batches - gene-label: dispersion can differ between different labels - gene-cell: dispersion can differ for every gene in every cellstring, default: "gene"
--gene_likelihoodModel used to generate the expression data from a count-based likelihood distribution. - nb: Negative binomial distribution - zinb: Zero-inflated negative binomial distribution - poisson: Poisson distributionstring, default: "nb"
+
+
+

Variational auto-encoder model options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--use_layer_normalizationNeural networks for which to enable layer normalization.string, default: "both"
--use_batch_normalizationNeural networks for which to enable batch normalization.string, default: "none"
--encode_covariatesWhether to concatenate covariates to expression in encoderboolean_false
--deeply_inject_covariatesWhether to concatenate covariates into output of hidden layers in encoder/decoder. This option only applies when n_layers > 1. The covariates are concatenated to the input of subsequent hidden layers.boolean_true
--use_observed_lib_sizeUse observed library size for RNA as scaling factor in mean of conditional distribution.boolean_true
+
+
+

Early stopping arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--early_stoppingWhether to perform early stopping with respect to the validation set.boolean
--early_stopping_monitorMetric logged during validation set epoch.string, default: "elbo_validation"
--early_stopping_patienceNumber of validation epochs with no improvement after which training will be stopped.integer, default: 45
--early_stopping_min_deltaMinimum change in the monitored quantity to qualify as an improvement, i.e. an absolute change of less than min_delta, will count as no improvement.double, default: 0
+
+
+

Learning parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--max_epochsNumber of passes through the dataset, defaults to (20000 / number of cells) * 400 or 400; whichever is smallest.integer
--reduce_lr_on_plateauWhether to monitor validation loss and reduce learning rate when validation set lr_scheduler_metric plateaus.boolean, default: TRUE
--lr_factorFactor to reduce learning rate.double, default: 0.6
--lr_patienceNumber of epochs with no improvement after which learning rate will be reduced.double, default: 30
+
+
+

Data validition

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--n_obs_min_countMinimum number of cells threshold ensuring that every obs_batch category has sufficient observations (cells) for model training.integer, default: 0
--n_var_min_countMinimum number of genes threshold ensuring that every var_input filter has sufficient observations (genes) for model training.integer, default: 0
+
+
+
+

Authors

+
    +
  • Malte D. Luecken (author)

  • +
  • Dries Schaumont (maintainer)

  • +
  • Matthias Beyens (contributor)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/integrate/totalvi.html b/pr-preview/pr-51/components/modules/integrate/totalvi.html new file mode 100644 index 00000000..9c557206 --- /dev/null +++ b/pr-preview/pr-51/components/modules/integrate/totalvi.html @@ -0,0 +1,1761 @@ + + + + + + + + + + +OpenPipelines - Totalvi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Totalvi

+
+ +
+
+ Performs mapping to the reference by totalvi model: https://docs.scvi-tools.org/en/stable/tutorials/notebooks/scarches_scvi_tools.html#Reference-mapping-with-TOTALVI +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: totalvi
+Namespace: integrate

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/integrate/totalvi/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input: # please fill in - example: "path/to/file"
+reference: # please fill in - example: "path/to/file"
+force_retrain: false
+query_modality: "rna"
+# query_proteins_modality: "foo"
+reference_modality: "rna"
+reference_proteins_modality: "prot"
+# input_layer: "foo"
+obs_batch: "sample_id"
+# var_input: "foo"
+
+# Outputs
+# output: "$id.$key.output.output"
+obsm_output: "X_integrated_totalvi"
+obsm_normalized_rna_output: "X_totalvi_normalized_rna"
+obsm_normalized_protein_output: "X_totalvi_normalized_protein"
+# reference_model_path: "$id.$key.reference_model_path.reference_model_path"
+# query_model_path: "$id.$key.query_model_path.query_model_path"
+
+# Learning parameters
+max_epochs: 400
+max_query_epochs: 200
+weight_decay: 0.0
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/integrate/totalvi/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu file with query data to integrate with reference.file, required
--referenceInput h5mu file with reference data to train the TOTALVI model.file, required
--force_retrainIf true, retrain the model and save it to reference_model_pathboolean_true
--query_modalitystring, default: "rna"
--query_proteins_modalityName of the modality in the input (query) h5mu file containing protein datastring
--reference_modalitystring, default: "rna"
--reference_proteins_modalityName of the modality containing proteins in the referencestring, default: "prot"
--input_layerInput layer to use. If None, X is usedstring
--obs_batchColumn name discriminating between your batches.string, default: "sample_id"
--var_input.var column containing highly variable genes. By default, do not subset genes.string
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput h5mu file.file, required
--obsm_outputIn which .obsm slot to store the resulting integrated embedding.string, default: "X_integrated_totalvi"
--obsm_normalized_rna_outputIn which .obsm slot to store the normalized RNA from TOTALVI.string, default: "X_totalvi_normalized_rna"
--obsm_normalized_protein_outputIn which .obsm slot to store the normalized protein data from TOTALVI.string, default: "X_totalvi_normalized_protein"
--reference_model_pathDirectory with the reference model. If not exists, trained model will be saved therefile, default: "totalvi_model_reference"
--query_model_pathDirectory, where the query model will be savedfile, default: "totalvi_model_query"
+
+
+

Learning parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--max_epochsNumber of passes through the datasetinteger, default: 400
--max_query_epochsNumber of passes through the dataset, when fine-tuning model for queryinteger, default: 200
--weight_decayWeight decay, when fine-tuning model for querydouble, default: 0
+
+
+
+

Authors

+
    +
  • Vladimir Shitov
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/interpret/lianapy.html b/pr-preview/pr-51/components/modules/interpret/lianapy.html new file mode 100644 index 00000000..e285c2d8 --- /dev/null +++ b/pr-preview/pr-51/components/modules/interpret/lianapy.html @@ -0,0 +1,1684 @@ + + + + + + + + + + +OpenPipelines - Lianapy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Lianapy

+
+ +
+
+ Performs LIANA integration based as described in https://github.com/saezlab/liana-py +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: lianapy
+Namespace: interpret

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/interpret/lianapy/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "path/to/file"
+# output: "$id.$key.output.output"
+output_compression: "gzip"
+modality: "rna"
+# layer: "foo"
+groupby: "bulk_labels"
+resource_name: "consensus"
+gene_symbol: "gene_symbol"
+expr_prop: 0.1
+min_cells: 5
+aggregate_method: "rra"
+return_all_lrs: false
+n_perms: 100
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/interpret/lianapy/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required
--outputOutput h5mu file.file, required
--output_compressionstring, default: "gzip"
--modalitystring, default: "rna"
--layerLayer in anndata.AnnData.layers to use. If None, use mudata.mod[modality].X.string
--groupbyThe key of the observations grouping to consider.string, default: "bulk_labels"
--resource_nameName of the resource to be loaded and use for ligand-receptor inference.string, default: "consensus"
--gene_symbolColumn name in var DataFrame in which gene symbol are stored.string, default: "gene_symbol"
--expr_propMinimum expression proportion for the ligands/receptors (and their subunits) in the corresponding cell identities. Set to ‘0’, to return unfiltered results.double, default: 0.1
--min_cellsMinimum cells per cell identity (‘groupby’) to be considered for downstream analysis.integer, default: 5
--aggregate_methodMethod aggregation approach, one of [‘mean’, ‘rra’], where ‘mean’ represents the mean rank, while ‘rra’ is the RobustRankAggregate (Kolde et al., 2014) of the interactions.string, default: "rra"
--return_all_lrsBool whether to return all LRs, or only those that surpass the ‘expr_prop’ threshold. Those interactions that do not pass the ‘expr_prop’ threshold will be assigned to the worst score of the ones that do. ‘False’ by default.boolean, default: FALSE
--n_permsNumber of permutations for the permutation test. Note that this is relevant only for permutation-based methods - e.g. ’CellPhoneDBinteger, default: 100
+
+
+
+

Authors

+
    +
  • Mauro Saporita (author)

  • +
  • Povilas Gibas (author)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/labels_transfer/knn.html b/pr-preview/pr-51/components/modules/labels_transfer/knn.html new file mode 100644 index 00000000..5e24aa66 --- /dev/null +++ b/pr-preview/pr-51/components/modules/labels_transfer/knn.html @@ -0,0 +1,1718 @@ + + + + + + + + + + +OpenPipelines - Knn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Knn

+
+ +
+
+ Performs label transfer from reference to query using KNN classifier +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: knn
+Namespace: labels_transfer

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/labels_transfer/knn/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Learning parameters
+n_neighbors: # please fill in - example: 123
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/labels_transfer/knn/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Input dataset (query) arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputThe query data to transfer the labels to. Should be a .h5mu file.file, required
--modalityWhich modality to use.string, default: "rna"
--input_obsm_featuresThe .obsm key of the embedding to use for the classifier’s inference. If not provided, the .X slot will be used instead. Make sure that embedding was obtained in the same way as the reference embedding (e.g. by the same model or preprocessing).string, example: "X_integrated_scanvi"
+
+
+

Reference dataset arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--referenceThe reference data to train classifiers on.file, example: "https:/zenodo.org/record/6337966/files/HLCA_emb_and_metadata.h5ad"
--reference_obsm_featuresThe .obsm key of the embedding to use for the classifier’s training. Make sure that embedding was obtained in the same way as the query embedding (e.g. by the same model or preprocessing).string, required, default: "X_integrated_scanvi"
--reference_obs_targetsThe .obs key of the target labels to tranfer.string, default: "ann_level_1", default: "ann_level_2", default: "ann_level_3", default: "ann_level_4", default: "ann_level_5", default: "ann_finest_level"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputThe query data in .h5mu format with predicted labels transfered from the reference.file, required
--output_obs_predictionsIn which .obs slots to store the predicted information. If provided, must have the same length as --reference_obs_targets. If empty, will default to the reference_obs_targets combined with the "_pred" suffix.string
--output_obs_uncertaintyIn which .obs slots to store the uncertainty of the predictions. If provided, must have the same length as --reference_obs_targets. If empty, will default to the reference_obs_targets combined with the "_uncertainty" suffix.string
--output_uns_parametersThe .uns key to store additional information about the parameters used for the label transfer.string, default: "labels_transfer"
+
+
+

Learning parameters

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--n_neighborsNumber of nearest neighbors to use for classificationinteger, required
+
+
+
+

Authors

+
    +
  • Vladimir Shitov (author)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/labels_transfer/xgboost.html b/pr-preview/pr-51/components/modules/labels_transfer/xgboost.html new file mode 100644 index 00000000..fd65bd95 --- /dev/null +++ b/pr-preview/pr-51/components/modules/labels_transfer/xgboost.html @@ -0,0 +1,1835 @@ + + + + + + + + + + +OpenPipelines - Xgboost + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Xgboost

+
+ +
+
+ Performs label transfer from reference to query using XGBoost classifier +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: xgboost
+Namespace: labels_transfer

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/labels_transfer/xgboost/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Execution arguments
+force_retrain: false
+use_gpu: false
+verbosity: 1
+# model_output: "$id.$key.model_output.model_output"
+
+# Learning parameters
+learning_rate: 0.3
+min_split_loss: 0
+max_depth: 6
+min_child_weight: 1
+max_delta_step: 0
+subsample: 1
+sampling_method: "uniform"
+colsample_bytree: 1
+colsample_bylevel: 1
+colsample_bynode: 1
+reg_lambda: 1
+reg_alpha: 0
+scale_pos_weight: 1
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/labels_transfer/xgboost/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Input dataset (query) arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputThe query data to transfer the labels to. Should be a .h5mu file.file, required
--modalityWhich modality to use.string, default: "rna"
--input_obsm_featuresThe .obsm key of the embedding to use for the classifier’s inference. If not provided, the .X slot will be used instead. Make sure that embedding was obtained in the same way as the reference embedding (e.g. by the same model or preprocessing).string, example: "X_integrated_scanvi"
+
+
+

Reference dataset arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--referenceThe reference data to train classifiers on.file, example: "https:/zenodo.org/record/6337966/files/HLCA_emb_and_metadata.h5ad"
--reference_obsm_featuresThe .obsm key of the embedding to use for the classifier’s training. Make sure that embedding was obtained in the same way as the query embedding (e.g. by the same model or preprocessing).string, required, default: "X_integrated_scanvi"
--reference_obs_targetsThe .obs key of the target labels to tranfer.string, default: "ann_level_1", default: "ann_level_2", default: "ann_level_3", default: "ann_level_4", default: "ann_level_5", default: "ann_finest_level"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputThe query data in .h5mu format with predicted labels transfered from the reference.file, required
--output_obs_predictionsIn which .obs slots to store the predicted information. If provided, must have the same length as --reference_obs_targets. If empty, will default to the reference_obs_targets combined with the "_pred" suffix.string
--output_obs_uncertaintyIn which .obs slots to store the uncertainty of the predictions. If provided, must have the same length as --reference_obs_targets. If empty, will default to the reference_obs_targets combined with the "_uncertainty" suffix.string
--output_uns_parametersThe .uns key to store additional information about the parameters used for the label transfer.string, default: "labels_transfer"
+
+
+

Execution arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--force_retrainRetrain models on the reference even if model_output directory already has trained classifiers. WARNING! It will rewrite existing classifiers for targets in the model_output directory!boolean_true
--use_gpuUse GPU during models training and inference (recommended).boolean, default: FALSE
--verbosityThe verbosity level for evaluation of the classifier from the range [0,2]integer, default: 1
--model_outputOutput directory for modelfile, default: "model"
+
+
+

Learning parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--learning_rateStep size shrinkage used in update to prevents overfitting. Range: [0,1]. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the referencedouble, default: 0.3
--min_split_lossMinimum loss reduction required to make a further partition on a leaf node of the tree. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the referencedouble, default: 0
--max_depthMaximum depth of a tree. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the referenceinteger, default: 6
--min_child_weightMinimum sum of instance weight (hessian) needed in a child. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the referenceinteger, default: 1
--max_delta_stepMaximum delta step we allow each leaf output to be. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the referencedouble, default: 0
--subsampleSubsample ratio of the training instances. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the referencedouble, default: 1
--sampling_methodThe method to use to sample the training instances. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the referencestring, default: "uniform"
--colsample_bytreeFraction of columns to be subsampled. Range (0, 1]. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the referencedouble, default: 1
--colsample_bylevelSubsample ratio of columns for each level. Range (0, 1]. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the referencedouble, default: 1
--colsample_bynodeSubsample ratio of columns for each node (split). Range (0, 1]. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the referencedouble, default: 1
--reg_lambdaL2 regularization term on weights. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the referencedouble, default: 1
--reg_alphaL1 regularization term on weights. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the referencedouble, default: 0
--scale_pos_weightControl the balance of positive and negative weights, useful for unbalanced classes. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the referencedouble, default: 1
+
+
+
+

Authors

+
    +
  • Vladimir Shitov (author)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/mapping/bd_rhapsody.html b/pr-preview/pr-51/components/modules/mapping/bd_rhapsody.html new file mode 100644 index 00000000..6cfcc37b --- /dev/null +++ b/pr-preview/pr-51/components/modules/mapping/bd_rhapsody.html @@ -0,0 +1,1852 @@ + + + + + + + + + + +OpenPipelines - BD Rhapsody + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

BD Rhapsody

+
+ +
+
+ A wrapper for the BD Rhapsody Analysis CWL v1.10.1 pipeline +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: bd_rhapsody
+Namespace: mapping

+
+ +

A wrapper for the BD Rhapsody Analysis CWL v1.10.1 pipeline.

+

The CWL pipeline file is obtained by cloning ‘https://bitbucket.org/CRSwDev/cwl/src/master/’ and removing all objects with class ‘DockerRequirement’ from the YML.

+

This pipeline can be used for a targeted analysis (with --mode targeted) or for a whole transcriptome analysis (with --mode wta).

+
    +
  • If mode is "targeted", then either the --reference or --abseq_reference parameters must be defined.
  • +
  • If mode is "wta", then --reference and --transcriptome_annotation must be defined, --abseq_reference and --supplemental_reference is optional.
  • +
+

The reference_genome and transcriptome_annotation files can be generated with the make_reference pipeline. Alternatively, BD also provides standard references which can be downloaded from these locations:

+
    +
  • Human: http://bd-rhapsody-public.s3-website-us-east-1.amazonaws.com/Rhapsody-WTA/GRCh38-PhiX-gencodev29/
  • +
  • Mouse: http://bd-rhapsody-public.s3-website-us-east-1.amazonaws.com/Rhapsody-WTA/GRCm38-PhiX-gencodevM19/
  • +
+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/mapping/bd_rhapsody/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+mode: # please fill in - example: "wta"
+input: # please fill in - example: ["input.fastq.gz"]
+reference: # please fill in - example: ["reference_genome.tar.gz|reference.fasta"]
+# transcriptome_annotation: "transcriptome.gtf"
+# abseq_reference: ["abseq_reference.fasta"]
+# supplemental_reference: ["supplemental_reference.fasta"]
+sample_prefix: "sample"
+
+# Outputs
+# output: "$id.$key.output.output"
+
+# Putative cell calling settings
+# putative_cell_call: "mRNA"
+# exact_cell_count: 10000
+disable_putative_calling: false
+
+# Subsample arguments
+# subsample: 0.01
+# subsample_seed: 3445
+
+# Multiplex arguments
+# sample_tags_version: "human"
+# tag_names: ["4-mySample", "9-myOtherSample", "6-alsoThisSample"]
+
+# VDJ arguments
+# vdj_version: "human"
+
+# CWL-runner arguments
+parallel: true
+timestamps: false
+dryrun: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/mapping/bd_rhapsody/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--modeWhether to run a whole transcriptome analysis (WTA) or a targeted analysis.string, required, example: "wta"
--inputPath to your read files in the FASTQ.GZ format. You may specify as many R1/R2 read pairs as you want.file, required, example: "input.fastq.gz"
--referenceRefence to map to. For --mode wta, this is the path to STAR index as a tar.gz file. For --mode targeted, this is the path to mRNA reference file for pre-designed, supplemental, or custom panel, in FASTA formatfile, required, example: "reference_genome.tar.gz&#124;reference.fasta"
--transcriptome_annotationPath to GTF annotation file (only for --mode wta).file, example: "transcriptome.gtf"
--abseq_referencePath to the AbSeq reference file in FASTA format. Only needed if BD AbSeq Ab-Oligos are used.file, example: "abseq_reference.fasta"
--supplemental_referencePath to the supplemental reference file in FASTA format. Only needed if there are additional transgene sequences used in the experiment (only for --mode wta).file, example: "supplemental_reference.fasta"
--sample_prefixSpecify a run name to use as the output file base name. Use only letters, numbers, or hyphens. Do not use special characters or spaces.string, default: "sample"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput folder. Output still needs to be processed further.file, required, example: "output_dir"
+
+
+

Putative cell calling settings

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--putative_cell_callSpecify the dataset to be used for putative cell calling. For putative cell calling using an AbSeq dataset, please provide an AbSeq_Reference fasta file above.string, example: "mRNA"
--exact_cell_countExact cell count - Set a specific number (>=1) of cells as putative, based on those with the highest error-corrected read countinteger, example: 10000
--disable_putative_callingDisable Refined Putative Cell Calling - Determine putative cells using only the basic algorithm (minimum second derivative along the cumulative reads curve). The refined algorithm attempts to remove false positives and recover false negatives, but may not be ideal for certain complex mixtures of cell types. Does not apply if Exact Cell Count is set.boolean_true
+
+
+

Subsample arguments

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--subsampleA number >1 or fraction (0 < n < 1) to indicate the number or percentage of reads to subsample.double, example: 0.01
--subsample_seedA seed for replicating a previous subsampled run.integer, example: 3445
+
+
+

Multiplex arguments

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--sample_tags_versionSpecify if multiplexed run.string, example: "human"
--tag_namesTag_Names (optional) - Specify the tag number followed by ‘-’ and the desired sample name to appear in Sample_Tag_Metrics.csv. Do not use the special characters: &, (), [], {}, <>, ?, |string, example: "4-mySample", example: "9-myOtherSample", example: "6-alsoThisSample"
+
+
+

VDJ arguments

+ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--vdj_versionSpecify if VDJ run.string, example: "human"
+
+
+

CWL-runner arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--parallelRun jobs in parallel.boolean, default: TRUE
--timestampsAdd timestamps to the errors, warnings, and notifications.boolean_true
--dryrunIf true, the output directory will only contain the CWL input files, but the pipeline itself will not be executed.boolean_true
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/mapping/cellranger_count.html b/pr-preview/pr-51/components/modules/mapping/cellranger_count.html new file mode 100644 index 00000000..ec10d289 --- /dev/null +++ b/pr-preview/pr-51/components/modules/mapping/cellranger_count.html @@ -0,0 +1,1697 @@ + + + + + + + + + + +OpenPipelines - Cellranger count + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Cellranger count

+
+ +
+
+ Align fastq files using Cell Ranger count. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: cellranger_count
+Namespace: mapping

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/mapping/cellranger_count/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input: # please fill in - example: ["sample_S1_L001_R1_001.fastq.gz", "sample_S1_L001_R2_001.fastq.gz"]
+reference: # please fill in - example: "reference.tar.gz"
+
+# Outputs
+# output: "$id.$key.output.output"
+
+# Arguments
+# expect_cells: 3000
+chemistry: "auto"
+secondary_analysis: false
+generate_bam: true
+include_introns: true
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/mapping/cellranger_count/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputThe fastq.gz files to align. Can also be a single directory containing fastq.gz files.file, required, example: "sample_S1_L001_R1_001.fastq.gz", example: "sample_S1_L001_R2_001.fastq.gz"
--referenceThe path to Cell Ranger reference tar.gz file. Can also be a directory.file, required, example: "reference.tar.gz"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputThe folder to store the alignment results.file, required, example: "/path/to/output"
+
+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--expect_cellsExpected number of recovered cells, used as input to cell calling algorithm.integer, example: 3000
--chemistryAssay configuration. - auto: autodetect mode - threeprime: Single Cell 3’ - fiveprime: Single Cell 5’ - SC3Pv1: Single Cell 3’ v1 - SC3Pv2: Single Cell 3’ v2 - SC3Pv3: Single Cell 3’ v3 - SC3Pv3LT: Single Cell 3’ v3 LT - SC3Pv3HT: Single Cell 3’ v3 HT - SC5P-PE: Single Cell 5’ paired-end - SC5P-R2: Single Cell 5’ R2-only - SC-FB: Single Cell Antibody-only 3’ v2 or 5’ See https://kb.10xgenomics.com/hc/en-us/articles/115003764132-How-does-Cell-Ranger-auto-detect-chemistry- for more information.string, default: "auto"
--secondary_analysisWhether or not to run the secondary analysis e.g. clustering.boolean, default: FALSE
--generate_bamWhether to generate a BAM file.boolean, default: TRUE
--include_intronsInclude intronic reads in count (default=true unless –target-panel is specified in which case default=false)boolean, default: TRUE
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Samuel D’Souza (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/mapping/cellranger_count_split.html b/pr-preview/pr-51/components/modules/mapping/cellranger_count_split.html new file mode 100644 index 00000000..34524c2e --- /dev/null +++ b/pr-preview/pr-51/components/modules/mapping/cellranger_count_split.html @@ -0,0 +1,1649 @@ + + + + + + + + + + +OpenPipelines - Cellranger count split + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Cellranger count split

+
+ +
+
+ Split 10x Cell Ranger output directory into separate output fields. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: cellranger_count_split
+Namespace: mapping

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/mapping/cellranger_count_split/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input_dir"
+# filtered_h5: "$id.$key.filtered_h5.h5"
+# metrics_summary: "$id.$key.metrics_summary.csv"
+# molecule_info: "$id.$key.molecule_info.h5"
+# bam: "$id.$key.bam.bam"
+# bai: "$id.$key.bai.bai"
+# raw_h5: "$id.$key.raw_h5.h5"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/mapping/cellranger_count_split/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputOutput directory from a Cell Ranger count run.file, required, example: "input_dir"
--filtered_h5file, example: "filtered_feature_bc_matrix.h5"
--metrics_summaryfile, example: "metrics_summary.csv"
--molecule_infofile, example: "molecule_info.h5"
--bamfile, example: "possorted_genome_bam.bam"
--baifile, example: "possorted_genome_bam.bam.bai"
--raw_h5file, example: "raw_feature_bc_matrix.h5"
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Samuel D’Souza (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/mapping/cellranger_multi.html b/pr-preview/pr-51/components/modules/mapping/cellranger_multi.html new file mode 100644 index 00000000..a8df1c48 --- /dev/null +++ b/pr-preview/pr-51/components/modules/mapping/cellranger_multi.html @@ -0,0 +1,1828 @@ + + + + + + + + + + +OpenPipelines - Cellranger multi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Cellranger multi

+
+ +
+
+ Align fastq files using Cell Ranger multi. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: cellranger_multi
+Namespace: mapping

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/mapping/cellranger_multi/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Outputs
+# output: "$id.$key.output.output"
+
+# Input files
+input: # please fill in - example: ["mysample_S1_L001_R1_001.fastq.gz", "mysample_S1_L001_R2_001.fastq.gz"]
+gex_reference: # please fill in - example: "reference_genome.tar.gz"
+# vdj_reference: "reference_vdj.tar.gz"
+# vdj_inner_enrichment_primers: "enrichment_primers.txt"
+# feature_reference: "feature_reference.csv"
+
+# Library arguments
+library_id: # please fill in - example: ["mysample1"]
+library_type: # please fill in - example: ["Gene Expression"]
+# library_subsample: ["0.5"]
+# library_lanes: ["1-4"]
+
+# Gene expression arguments
+# gex_expect_cells: 3000
+gex_chemistry: "auto"
+gex_secondary_analysis: false
+gex_generate_bam: false
+gex_include_introns: true
+
+# Cell multiplexing parameters
+# cell_multiplex_sample_id: "foo"
+# cell_multiplex_oligo_ids: "foo"
+# cell_multiplex_description: "foo"
+
+# Executor arguments
+dryrun: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/mapping/cellranger_multi/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Input files

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputThe FASTQ files to be analyzed. FASTQ files should conform to the naming conventions of bcl2fastq and mkfastq: [Sample Name]_S[Sample Index]_L00[Lane Number]_[Read Type]_001.fastq.gzfile, required, example: "mysample_S1_L001_R1_001.fastq.gz", example: "mysample_S1_L001_R2_001.fastq.gz"
--gex_referenceGenome refence index built by Cell Ranger mkref.file, required, example: "reference_genome.tar.gz"
--vdj_referenceVDJ refence index built by Cell Ranger mkref.file, example: "reference_vdj.tar.gz"
--vdj_inner_enrichment_primersV(D)J Immune Profiling libraries: if inner enrichment primers other than those provided in the 10x Genomics kits are used, they need to be specified here as a text file with one primer per line.file, example: "enrichment_primers.txt"
--feature_referencePath to the Feature reference CSV file, declaring Feature Barcode constructs and associated barcodes. Required only for Antibody Capture or CRISPR Guide Capture libraries. See https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/using/feature-bc-analysis#feature-ref for more information.file, example: "feature_reference.csv"
+
+
+

Library arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--library_idThe Illumina sample name to analyze. This must exactly match the ‘Sample Name’ part of the FASTQ files specified in the --input argument.string, required, example: "mysample1"
--library_typeThe underlying feature type of the library. Possible values: “Gene Expression”, “VDJ”, “VDJ-T”, “VDJ-B”, “Antibody Capture”, “CRISPR Guide Capture”, “Multiplexing Capture”string, required, example: "Gene Expression"
--library_subsampleOptional. The rate at which reads from the provided FASTQ files are sampled. Must be strictly greater than 0 and less than or equal to 1.string, example: "0.5"
--library_lanesLanes associated with this sample. Defaults to using all lanes.string, example: "1-4"
+
+
+

Gene expression arguments

+

Arguments relevant to the analysis of gene expression data.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--gex_expect_cellsExpected number of recovered cells, used as input to cell calling algorithm.integer, example: 3000
--gex_chemistryAssay configuration. - auto: autodetect mode - threeprime: Single Cell 3’ - fiveprime: Single Cell 5’ - SC3Pv1: Single Cell 3’ v1 - SC3Pv2: Single Cell 3’ v2 - SC3Pv3: Single Cell 3’ v3 - SC3Pv3LT: Single Cell 3’ v3 LT - SC3Pv3HT: Single Cell 3’ v3 HT - SC5P-PE: Single Cell 5’ paired-end - SC5P-R2: Single Cell 5’ R2-only - SC-FB: Single Cell Antibody-only 3’ v2 or 5’ See https://kb.10xgenomics.com/hc/en-us/articles/115003764132-How-does-Cell-Ranger-auto-detect-chemistry- for more information.string, default: "auto"
--gex_secondary_analysisWhether or not to run the secondary analysis e.g. clustering.boolean, default: FALSE
--gex_generate_bamWhether to generate a BAM file.boolean, default: FALSE
--gex_include_intronsInclude intronic reads in count (default=true unless –target-panel is specified in which case default=false)boolean, default: TRUE
+
+
+

Cell multiplexing parameters

+

Arguments related to cell multiplexing.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--cell_multiplex_sample_idA name to identify a multiplexed sample. Must be alphanumeric with hyphens and/or underscores, and less than 64 characters. Required for Cell Multiplexing libraries.string
--cell_multiplex_oligo_idsThe Cell Multiplexing oligo IDs used to multiplex this sample. If multiple CMOs were used for a sample, separate IDs with a pipe (e.g., CMO301|CMO302). Required for Cell Multiplexing libraries.string
--cell_multiplex_descriptionA description for the sample.string
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputThe folder to store the alignment results.file, required, example: "/path/to/output"
+
+
+

Executor arguments

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--dryrunIf true, the output directory will only contain the CWL input files, but the pipeline itself will not be executed.boolean_true
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
  • Dries De Maeyer (author)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/mapping/htseq_count.html b/pr-preview/pr-51/components/modules/mapping/htseq_count.html new file mode 100644 index 00000000..19fddba8 --- /dev/null +++ b/pr-preview/pr-51/components/modules/mapping/htseq_count.html @@ -0,0 +1,1758 @@ + + + + + + + + + + +OpenPipelines - Htseq count + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Htseq count

+
+ +
+
+ Quantify gene expression for subsequent testing for differential expression. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: htseq_count
+Namespace: mapping

+
+ +

This script takes one or more alignment files in SAM/BAM format and a feature file in GFF format and calculates for each feature the number of reads mapping to it.

+

See http://htseq.readthedocs.io/en/master/count.html for details.

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/mapping/htseq_count/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+order: "name"
+stranded: "yes"
+minimum_alignment_quality: 10
+# type: "exon"
+# id_attribute: ["gene_id"]
+# additional_attributes: ["gene_name"]
+add_chromosome_info: false
+mode: "union"
+non_unique: "none"
+# secondary_alignments: "foo"
+# supplementary_alignments: "foo"
+counts_output_sparse: false
+
+# Input
+input: # please fill in - example: ["mysample1.BAM", "mysample2.BAM"]
+reference: # please fill in - example: "reference.gtf"
+
+# Output
+# output: "$id.$key.output.tsv"
+# output_delimiter: "   "
+# output_sam: ["$id.$key.output_sam_*.BAM"]
+# output_sam_format: "foo"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/mapping/htseq_count/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Input

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputPath to the SAM/BAM files containing the mapped reads.file, required, example: "mysample1.BAM", example: "mysample2.BAM"
--referencePath to the GTF file containing the features.file, required, example: "reference.gtf"
+
+
+

Output

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputFilename to output the counts to.file, required, example: "htseq-count.tsv"
--output_delimiterColumn delimiter in output.string, example: " "
--output_samWrite out all SAM alignment records into SAM/BAM files (one per input file needed), annotating each line with its feature assignment (as an optional field with tag ‘XF’). See the -p option to use BAM instead of SAM.file, example: "mysample1_out.BAM", example: "mysample2_out.BAM"
--output_sam_formatFormat to use with the –output_sam argument.string
+
+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--orderSorting order of . Paired-end sequencing data must be sorted either by position or by read name, and the sorting order must be specified. Ignored for single-end data.string, default: "name"
--strandedWhether the data is from a strand-specific assay. ‘reverse’ means ‘yes’ with reversed strand interpretation.string, default: "yes"
--minimum_alignment_qualitySkip all reads with MAPQ alignment quality lower than the given minimum value. MAPQ is the 5th column of a SAM/BAM file and its usage depends on the software used to map the reads.integer, default: 10
--typeFeature type (3rd column in GTF file) to be used, all features of other type are ignored (default, suitable for Ensembl GTF files: exon)string, example: "exon"
--id_attributeGTF attribute to be used as feature ID (default, suitable for Ensembl GTF files: gene_id). All feature of the right type (see -t option) within the same GTF attribute will be added together. The typical way of using this option is to count all exonic reads from each gene and add the exons but other uses are possible as well. You can call this option multiple times: in that case, the combination of all attributes separated by colons (:) will be used as a unique identifier, e.g. for exons you might use -i gene_id -i exon_number.string, example: "gene_id"
--additional_attributesAdditional feature attributes (suitable for Ensembl GTF files: gene_name). Use multiple times for more than one additional attribute. These attributes are only used as annotations in the output, while the determination of how the counts are added together is done based on option -i.string, example: "gene_name"
--add_chromosome_infoStore information about the chromosome of each feature as an additional attribute (e.g. colunm in the TSV output file).boolean_true
--modeMode to handle reads overlapping more than one feature.string, default: "union"
--non_uniqueWhether and how to score reads that are not uniquely aligned or ambiguously assigned to features.string, default: "none"
--secondary_alignmentsWhether to score secondary alignments (0x100 flag).string
--supplementary_alignmentsWhether to score supplementary alignments (0x800 flag).string
--counts_output_sparseStore the counts as a sparse matrix (mtx, h5ad, loom).boolean_true
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (author, maintainer)

  • +
  • Angela Oliveira Pisco (author)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/mapping/htseq_count_to_h5mu.html b/pr-preview/pr-51/components/modules/mapping/htseq_count_to_h5mu.html new file mode 100644 index 00000000..766e28b1 --- /dev/null +++ b/pr-preview/pr-51/components/modules/mapping/htseq_count_to_h5mu.html @@ -0,0 +1,1657 @@ + + + + + + + + + + +OpenPipelines - Htseq count to h5mu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Htseq count to h5mu

+
+ +
+
+ Convert the htseq table to a h5mu +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: htseq_count_to_h5mu
+Namespace: mapping

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/mapping/htseq_count_to_h5mu/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Outputs
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Input
+input_id: # please fill in - example: ["foo"]
+input_counts: # please fill in - example: ["counts.tsv"]
+reference: # please fill in - example: "gencode_v41_star"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/mapping/htseq_count_to_h5mu/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Input

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--input_idThe obs index for the countsstring, required, example: "foo"
--input_countsThe counts as a TSV file as output by HTSeq.file, required, example: "counts.tsv"
--referenceThe GTF file.file, required, example: "gencode_v41_star"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput h5mu file.file, required, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (author, maintainer)

  • +
  • Angela Oliveira Pisco (author)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/mapping/multi_star.html b/pr-preview/pr-51/components/modules/mapping/multi_star.html new file mode 100644 index 00000000..0dd705c7 --- /dev/null +++ b/pr-preview/pr-51/components/modules/mapping/multi_star.html @@ -0,0 +1,3064 @@ + + + + + + + + + + +OpenPipelines - Multi star + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Multi star

+
+ +
+
+ Align fastq files using STAR. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: multi_star
+Namespace: mapping

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/mapping/multi_star/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Input/Output
+input_id: # please fill in - example: ["mysample", "mysample"]
+input_r1: # please fill in - example: ["mysample_S1_L001_R1_001.fastq.gz", "mysample_S1_L002_R1_001.fastq.gz"]
+# input_r2: ["mysample_S1_L001_R2_001.fastq.gz", "mysample_S1_L002_R2_001.fastq.gz"]
+reference_index: # please fill in - example: "/path/to/reference"
+reference_gtf: # please fill in - example: "genes.gtf"
+# output: "$id.$key.output.output"
+
+# Processing arguments
+run_htseq_count: true
+run_multiqc: true
+min_success_rate: 0.5
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/mapping/multi_star/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Input/Output

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--input_idThe ID of the sample being processed. This vector should have the same length as the --input_r1 argument.string, required, example: "mysample", example: "mysample"
--input_r1Paths to the sequences to be mapped. If using Illumina paired-end reads, only the R1 files should be passed.file, required, example: "mysample_S1_L001_R1_001.fastq.gz", example: "mysample_S1_L002_R1_001.fastq.gz"
--input_r2Paths to the sequences to be mapped. If using Illumina paired-end reads, only the R2 files should be passed.file, example: "mysample_S1_L001_R2_001.fastq.gz", example: "mysample_S1_L002_R2_001.fastq.gz"
--reference_indexPath to the reference built by star_build_reference. Corresponds to the –genomeDir argument in the STAR command.file, required, example: "/path/to/reference"
--reference_gtfPath to the gtf reference file.file, required, example: "genes.gtf"
--outputPath to output directory. Corresponds to the –outFileNamePrefix argument in the STAR command.file, required, example: "/path/to/foo"
+
+
+

Processing arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--run_htseq_countWhether or not to also run htseq-count after STAR.boolean, default: TRUE
--run_multiqcWhether or not to also run MultiQC at the end.boolean, default: TRUE
--min_success_rateFail when the success rate is below this threshold.double, default: 0.5
+
+
+

Run Parameters

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--runRNGseedrandom number generator seed.integer, example: 777
+
+
+

Genome Parameters

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--genomeFastaFilespath(s) to the fasta files with the genome sequences, separated by spaces. These files should be plain text FASTA files, they cannot be zipped. Required for the genome generation (–runMode genomeGenerate). Can also be used in the mapping (–runMode alignReads) to add extra (new) sequences to the genome (e.g. spike-ins).file
+
+
+

Splice Junctions Database

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--sjdbFileChrStartEndpath to the files with genomic coordinates (chr start end strand) for the splice junction introns. Multiple files can be supplied and will be concatenated.string
--sjdbGTFfilepath to the GTF file with annotationsfile
--sjdbGTFchrPrefixprefix for chromosome names in a GTF file (e.g. ‘chr’ for using ENSMEBL annotations with UCSC genomes)string
--sjdbGTFfeatureExonfeature type in GTF file to be used as exons for building transcriptsstring, example: "exon"
--sjdbGTFtagExonParentTranscriptGTF attribute name for parent transcript ID (default “transcript_id” works for GTF files)string, example: "transcript_id"
--sjdbGTFtagExonParentGeneGTF attribute name for parent gene ID (default “gene_id” works for GTF files)string, example: "gene_id"
--sjdbGTFtagExonParentGeneNameGTF attribute name for parent gene namestring, example: "gene_name"
--sjdbGTFtagExonParentGeneTypeGTF attribute name for parent gene typestring, example: "gene_type", example: "gene_biotype"
--sjdbOverhanglength of the donor/acceptor sequence on each side of the junctions, ideally = (mate_length - 1)integer, example: 100
--sjdbScoreextra alignment score for alignments that cross database junctionsinteger, example: 2
--sjdbInsertSavewhich files to save when sjdb junctions are inserted on the fly at the mapping step - Basic … only small junction / transcript files - All … all files including big Genome, SA and SAindex - this will create a complete genome directorystring, example: "Basic"
+
+
+

Variation parameters

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--varVCFfilepath to the VCF file that contains variation data. The 10th column should contain the genotype information, e.g. 0/1string
+
+
+

Read Parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--readFilesTypeformat of input read files - Fastx … FASTA or FASTQ - SAM SE … SAM or BAM single-end reads; for BAM use –readFilesCommand samtools view - SAM PE … SAM or BAM paired-end reads; for BAM use –readFilesCommand samtools viewstring, example: "Fastx"
--readFilesSAMattrKeepfor –readFilesType SAM SE/PE, which SAM tags to keep in the output BAM, e.g.: –readFilesSAMtagsKeep RG PL - All … keep all tags - None … do not keep any tagsstring, example: "All"
--readFilesManifestpath to the “manifest” file with the names of read files. The manifest file should contain 3 tab-separated columns: paired-end reads: read1_file_name \(tab\) read2_file_name \(tab\) read_group_line. single-end reads: read1_file_name \(tab\) - \(tab\) read_group_line. Spaces, but not tabs are allowed in file names. If read_group_line does not start with ID:, it can only contain one ID field, and ID: will be added to it. If read_group_line starts with ID:, it can contain several fields separated by \(tab\), and all fields will be be copied verbatim into SAM @RG header line.file
--readFilesPrefixprefix for the read files names, i.e. it will be added in front of the strings in –readFilesInstring
--readFilesCommandcommand line to execute for each of the input file. This command should generate FASTA or FASTQ text and send it to stdout For example: zcat - to uncompress .gz files, bzcat - to uncompress .bz2 files, etc.string
--readMapNumbernumber of reads to map from the beginning of the file -1: map all readsinteger, example: -1
--readMatesLengthsInEqual/NotEqual - lengths of names,sequences,qualities for both mates are the same / not the same. NotEqual is safe in all situations.string, example: "NotEqual"
--readNameSeparatorcharacter(s) separating the part of the read names that will be trimmed in output (read name after space is always trimmed)string, example: "/"
--readQualityScoreBasenumber to be subtracted from the ASCII code to get Phred quality scoreinteger, example: 33
+
+
+

Read Clipping

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--clipAdapterTypeadapter clipping type - Hamming … adapter clipping based on Hamming distance, with the number of mismatches controlled by –clip5pAdapterMMp - CellRanger4 … 5p and 3p adapter clipping similar to CellRanger4. Utilizes Opal package by Martin Sosic: https://github.com/Martinsos/opal - None … no adapter clipping, all other clip* parameters are disregardedstring, example: "Hamming"
--clip3pNbasesnumber(s) of bases to clip from 3p of each mate. If one value is given, it will be assumed the same for both mates.integer, example: 0
--clip3pAdapterSeqadapter sequences to clip from 3p of each mate. If one value is given, it will be assumed the same for both mates. - polyA … polyA sequence with the length equal to read lengthstring
--clip3pAdapterMMpmax proportion of mismatches for 3p adapter clipping for each mate. If one value is given, it will be assumed the same for both mates.double, example: 0.1
--clip3pAfterAdapterNbasesnumber of bases to clip from 3p of each mate after the adapter clipping. If one value is given, it will be assumed the same for both mates.integer, example: 0
--clip5pNbasesnumber(s) of bases to clip from 5p of each mate. If one value is given, it will be assumed the same for both mates.integer, example: 0
+
+
+

Limits

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--limitGenomeGenerateRAMmaximum available RAM (bytes) for genome generationlong, example: NA
--limitIObufferSizemax available buffers size (bytes) for input/output, per threadlong, example: 30000000, example: 50000000
--limitOutSAMoneReadBytesmax size of the SAM record (bytes) for one read. Recommended value: >(2(LengthMate1+LengthMate2+100)outFilterMultimapNmaxlong, example: 100000
--limitOutSJoneReadmax number of junctions for one read (including all multi-mappers)integer, example: 1000
--limitOutSJcollapsedmax number of collapsed junctionsinteger, example: 1000000
--limitBAMsortRAMmaximum available RAM (bytes) for sorting BAM. If =0, it will be set to the genome index size. 0 value can only be used with –genomeLoad NoSharedMemory option.long, example: 0
--limitSjdbInsertNsjmaximum number of junctions to be inserted to the genome on the fly at the mapping stage, including those from annotations and those detected in the 1st step of the 2-pass runinteger, example: 1000000
--limitNreadsSoftsoft limit on the number of readsinteger, example: -1
+
+
+

Output: general

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outTmpKeepwhether to keep the temporary files after STAR runs is finished - None … remove all temporary files - All … keep all filesstring
--outStdwhich output will be directed to stdout (standard out) - Log … log messages - SAM … alignments in SAM format (which normally are output to Aligned.out.sam file), normal standard output will go into Log.std.out - BAM_Unsorted … alignments in BAM format, unsorted. Requires –outSAMtype BAM Unsorted - BAM_SortedByCoordinate … alignments in BAM format, sorted by coordinate. Requires –outSAMtype BAM SortedByCoordinate - BAM_Quant … alignments to transcriptome in BAM format, unsorted. Requires –quantMode TranscriptomeSAMstring, example: "Log"
--outReadsUnmappedoutput of unmapped and partially mapped (i.e. mapped only one mate of a paired end read) reads in separate file(s). - None … no output - Fastx … output in separate fasta/fastq files, Unmapped.out.mate1/2string
--outQSconversionAddadd this number to the quality score (e.g. to convert from Illumina to Sanger, use -31)integer, example: 0
--outMultimapperOrderorder of multimapping alignments in the output files - Old_2.4 … quasi-random order used before 2.5.0 - Random … random order of alignments for each multi-mapper. Read mates (pairs) are always adjacent, all alignment for each read stay together. This option will become default in the future releases.string, example: "Old_2.4"
+
+
+

Output: SAM and BAM

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outSAMmodemode of SAM output - None … no SAM output - Full … full SAM output - NoQS … full SAM but without quality scoresstring, example: "Full"
--outSAMstrandFieldCufflinks-like strand field flag - None … not used - intronMotif … strand derived from the intron motif. This option changes the output alignments: reads with inconsistent and/or non-canonical introns are filtered out.string
--outSAMattributesa string of desired SAM attributes, in the order desired for the output SAM. Tags can be listed in any combination/order. Presets: - None … no attributes - Standard … NH HI AS nM - All … NH HI AS nM NM MD jM jI MC ch Alignment: - NH … number of loci the reads maps to: =1 for unique mappers, >1 for multimappers. Standard SAM tag. - HI … multiple alignment index, starts with –outSAMattrIHstart (=1 by default). Standard SAM tag. - AS … local alignment score, +1/-1 for matches/mismateches, score* penalties for indels and gaps. For PE reads, total score for two mates. Stadnard SAM tag. - nM … number of mismatches. For PE reads, sum over two mates. - NM … edit distance to the reference (number of mismatched + inserted + deleted bases) for each mate. Standard SAM tag. - MD … string encoding mismatched and deleted reference bases (see standard SAM specifications). Standard SAM tag. - jM … intron motifs for all junctions (i.e. N in CIGAR): 0: non-canonical; 1: GT/AG, 2: CT/AC, 3: GC/AG, 4: CT/GC, 5: AT/AC, 6: GT/AT. If splice junctions database is used, and a junction is annotated, 20 is added to its motif value. - jI … start and end of introns for all junctions (1-based). - XS … alignment strand according to –outSAMstrandField. - MC … mate’s CIGAR string. Standard SAM tag. - ch … marks all segment of all chimeric alingments for –chimOutType WithinBAM output. - cN … number of bases clipped from the read ends: 5’ and 3’ Variation: - vA … variant allele - vG … genomic coordinate of the variant overlapped by the read. - vW … 1 - alignment passes WASP filtering; 2,3,4,5,6,7 - alignment does not pass WASP filtering. Requires –waspOutputMode SAMtag. STARsolo: - CR CY UR UY … sequences and quality scores of cell barcodes and UMIs for the solo* demultiplexing. - GX GN … gene ID and gene name for unique-gene reads. - gx gn … gene IDs and gene names for unique- and multi-gene reads. - CB UB … error-corrected cell barcodes and UMIs for solo* demultiplexing. Requires –outSAMtype BAM SortedByCoordinate. - sM … assessment of CB and UMI. - sS … sequence of the entire barcode (CB,UMI,adapter). - sQ … quality of the entire barcode. ***Unsupported/undocumented: - ha … haplotype (1/2) when mapping to the diploid genome. Requires genome generated with –genomeTransformType Diploid . - rB … alignment block read/genomic coordinates. - vR … read coordinate of the variant.string, example: "Standard"
--outSAMattrIHstartstart value for the IH attribute. 0 may be required by some downstream software, such as Cufflinks or StringTie.integer, example: 1
--outSAMunmappedoutput of unmapped reads in the SAM format 1st word: - None … no output - Within … output unmapped reads within the main SAM file (i.e. Aligned.out.sam) 2nd word: - KeepPairs … record unmapped mate for each alignment, and, in case of unsorted output, keep it adjacent to its mapped mate. Only affects multi-mapping reads.string
--outSAMordertype of sorting for the SAM output Paired: one mate after the other for all paired alignments PairedKeepInputOrder: one mate after the other for all paired alignments, the order is kept the same as in the input FASTQ filesstring, example: "Paired"
--outSAMprimaryFlagwhich alignments are considered primary - all others will be marked with 0x100 bit in the FLAG - OneBestScore … only one alignment with the best score is primary - AllBestScore … all alignments with the best score are primarystring, example: "OneBestScore"
--outSAMreadIDread ID record type - Standard … first word (until space) from the FASTx read ID line, removing /1,/2 from the end - Number … read number (index) in the FASTx filestring, example: "Standard"
--outSAMmapqUnique0 to 255: the MAPQ value for unique mappersinteger, example: 255
--outSAMflagOR0 to 65535: sam FLAG will be bitwise OR’d with this value, i.e. FLAG=FLAG | outSAMflagOR. This is applied after all flags have been set by STAR, and after outSAMflagAND. Can be used to set specific bits that are not set otherwise.integer, example: 0
--outSAMflagAND0 to 65535: sam FLAG will be bitwise AND’d with this value, i.e. FLAG=FLAG & outSAMflagOR. This is applied after all flags have been set by STAR, but before outSAMflagOR. Can be used to unset specific bits that are not set otherwise.integer, example: 65535
--outSAMattrRGlineSAM/BAM read group line. The first word contains the read group identifier and must start with “ID:”, e.g. –outSAMattrRGline ID:xxx CN:yy “DS:z z z”. xxx will be added as RG tag to each output alignment. Any spaces in the tag values have to be double quoted. Comma separated RG lines correspons to different (comma separated) input files in –readFilesIn. Commas have to be surrounded by spaces, e.g. –outSAMattrRGline ID:xxx , ID:zzz “DS:z z” , ID:yyy DS:yyyystring
--outSAMheaderHD@HD (header) line of the SAM headerstring
--outSAMheaderPGextra @PG (software) line of the SAM header (in addition to STAR)string
--outSAMheaderCommentFilepath to the file with @CO (comment) lines of the SAM headerstring
--outSAMfilterfilter the output into main SAM/BAM files - KeepOnlyAddedReferences … only keep the reads for which all alignments are to the extra reference sequences added with –genomeFastaFiles at the mapping stage. - KeepAllAddedReferences … keep all alignments to the extra reference sequences added with –genomeFastaFiles at the mapping stage.string
--outSAMmultNmaxmax number of multiple alignments for a read that will be output to the SAM/BAM files. Note that if this value is not equal to -1, the top scoring alignment will be output first - -1 … all alignments (up to –outFilterMultimapNmax) will be outputinteger, example: -1
--outSAMtlencalculation method for the TLEN field in the SAM/BAM files - 1 … leftmost base of the (+)strand mate to rightmost base of the (-)mate. (+)sign for the (+)strand mate - 2 … leftmost base of any mate to rightmost base of any mate. (+)sign for the mate with the leftmost base. This is different from 1 for overlapping mates with protruding endsinteger, example: 1
--outBAMcompression-1 to 10 BAM compression level, -1=default compression (6?), 0=no compression, 10=maximum compressioninteger, example: 1
--outBAMsortingThreadN>=0: number of threads for BAM sorting. 0 will default to min(6,–runThreadN).integer, example: 0
--outBAMsortingBinsN>0: number of genome bins for coordinate-sortinginteger, example: 50
+
+
+

BAM processing

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--bamRemoveDuplicatesTypemark duplicates in the BAM file, for now only works with (i) sorted BAM fed with inputBAMfile, and (ii) for paired-end alignments only - - … no duplicate removal/marking - UniqueIdentical … mark all multimappers, and duplicate unique mappers. The coordinates, FLAG, CIGAR must be identical - UniqueIdenticalNotMulti … mark duplicate unique mappers but not multimappers.string
--bamRemoveDuplicatesMate2basesNnumber of bases from the 5’ of mate 2 to use in collapsing (e.g. for RAMPAGE)integer, example: 0
+
+
+

Output Wiggle

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outWigTypetype of signal output, e.g. “bedGraph” OR “bedGraph read1_5p”. Requires sorted BAM: –outSAMtype BAM SortedByCoordinate . 1st word: - None … no signal output - bedGraph … bedGraph format - wiggle … wiggle format 2nd word: - read1_5p … signal from only 5’ of the 1st read, useful for CAGE/RAMPAGE etc - read2 … signal from only 2nd readstring
--outWigStrandstrandedness of wiggle/bedGraph output - Stranded … separate strands, str1 and str2 - Unstranded … collapsed strandsstring, example: "Stranded"
--outWigReferencesPrefixprefix matching reference names to include in the output wiggle file, e.g. “chr”, default “-” - include all referencesstring
--outWigNormtype of normalization for the signal - RPM … reads per million of mapped reads - None … no normalization, “raw” countsstring, example: "RPM"
+
+
+

Output Filtering

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outFilterTypetype of filtering - Normal … standard filtering using only current alignment - BySJout … keep only those reads that contain junctions that passed filtering into SJ.out.tabstring, example: "Normal"
--outFilterMultimapScoreRangethe score range below the maximum score for multimapping alignmentsinteger, example: 1
--outFilterMultimapNmaxmaximum number of loci the read is allowed to map to. Alignments (all of them) will be output only if the read maps to no more loci than this value. Otherwise no alignments will be output, and the read will be counted as “mapped to too many loci” in the Log.final.out .integer, example: 10
--outFilterMismatchNmaxalignment will be output only if it has no more mismatches than this value.integer, example: 10
--outFilterMismatchNoverLmaxalignment will be output only if its ratio of mismatches to mapped length is less than or equal to this value.double, example: 0.3
--outFilterMismatchNoverReadLmaxalignment will be output only if its ratio of mismatches to read length is less than or equal to this value.double, example: 1
--outFilterScoreMinalignment will be output only if its score is higher than or equal to this value.integer, example: 0
--outFilterScoreMinOverLreadsame as outFilterScoreMin, but normalized to read length (sum of mates’ lengths for paired-end reads)double, example: 0.66
--outFilterMatchNminalignment will be output only if the number of matched bases is higher than or equal to this value.integer, example: 0
--outFilterMatchNminOverLreadsam as outFilterMatchNmin, but normalized to the read length (sum of mates’ lengths for paired-end reads).double, example: 0.66
--outFilterIntronMotifsfilter alignment using their motifs - None … no filtering - RemoveNoncanonical … filter out alignments that contain non-canonical junctions - RemoveNoncanonicalUnannotated … filter out alignments that contain non-canonical unannotated junctions when using annotated splice junctions database. The annotated non-canonical junctions will be kept.string
--outFilterIntronStrandsfilter alignments - RemoveInconsistentStrands … remove alignments that have junctions with inconsistent strands - None … no filteringstring, example: "RemoveInconsistentStrands"
+
+
+

Output splice junctions (SJ.out.tab)

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outSJtypetype of splice junction output - Standard … standard SJ.out.tab output - None … no splice junction outputstring, example: "Standard"
+
+
+

Output Filtering: Splice Junctions

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outSJfilterReadswhich reads to consider for collapsed splice junctions output - All … all reads, unique- and multi-mappers - Unique … uniquely mapping reads onlystring, example: "All"
--outSJfilterOverhangMinminimum overhang length for splice junctions on both sides for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif does not apply to annotated junctionsinteger, example: 30, example: 12, example: 12, example: 12
--outSJfilterCountUniqueMinminimum uniquely mapping read count per junction for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif Junctions are output if one of outSJfilterCountUniqueMin OR outSJfilterCountTotalMin conditions are satisfied does not apply to annotated junctionsinteger, example: 3, example: 1, example: 1, example: 1
--outSJfilterCountTotalMinminimum total (multi-mapping+unique) read count per junction for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif Junctions are output if one of outSJfilterCountUniqueMin OR outSJfilterCountTotalMin conditions are satisfied does not apply to annotated junctionsinteger, example: 3, example: 1, example: 1, example: 1
--outSJfilterDistToOtherSJminminimum allowed distance to other junctions’ donor/acceptor does not apply to annotated junctionsinteger, example: 10, example: 0, example: 5, example: 10
--outSJfilterIntronMaxVsReadNmaximum gap allowed for junctions supported by 1,2,3,,,N reads i.e. by default junctions supported by 1 read can have gaps <=50000b, by 2 reads: <=100000b, by 3 reads: <=200000. by >=4 reads any gap <=alignIntronMax does not apply to annotated junctionsinteger, example: 50000, example: 100000, example: 200000
+
+
+

Scoring

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--scoreGapsplice junction penalty (independent on intron motif)integer, example: 0
--scoreGapNoncannon-canonical junction penalty (in addition to scoreGap)integer, example: -8
--scoreGapGCAGGC/AG and CT/GC junction penalty (in addition to scoreGap)integer, example: -4
--scoreGapATACAT/AC and GT/AT junction penalty (in addition to scoreGap)integer, example: -8
--scoreGenomicLengthLog2scaleextra score logarithmically scaled with genomic length of the alignment: scoreGenomicLengthLog2scale*log2(genomicLength)integer, example: 0
--scoreDelOpendeletion open penaltyinteger, example: -2
--scoreDelBasedeletion extension penalty per base (in addition to scoreDelOpen)integer, example: -2
--scoreInsOpeninsertion open penaltyinteger, example: -2
--scoreInsBaseinsertion extension penalty per base (in addition to scoreInsOpen)integer, example: -2
--scoreStitchSJshiftmaximum score reduction while searching for SJ boundaries in the stitching stepinteger, example: 1
+
+
+

Alignments and Seeding

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--seedSearchStartLmaxdefines the search start point through the read - the read is split into pieces no longer than this valueinteger, example: 50
--seedSearchStartLmaxOverLreadseedSearchStartLmax normalized to read length (sum of mates’ lengths for paired-end reads)double, example: 1
--seedSearchLmaxdefines the maximum length of the seeds, if =0 seed length is not limitedinteger, example: 0
--seedMultimapNmaxonly pieces that map fewer than this value are utilized in the stitching procedureinteger, example: 10000
--seedPerReadNmaxmax number of seeds per readinteger, example: 1000
--seedPerWindowNmaxmax number of seeds per windowinteger, example: 50
--seedNoneLociPerWindowmax number of one seed loci per windowinteger, example: 10
--seedSplitMinmin length of the seed sequences split by Ns or mate gapinteger, example: 12
--seedMapMinmin length of seeds to be mappedinteger, example: 5
--alignIntronMinminimum intron size, genomic gap is considered intron if its length>=alignIntronMin, otherwise it is considered Deletioninteger, example: 21
--alignIntronMaxmaximum intron size, if 0, max intron size will be determined by (2^winBinNbits)*winAnchorDistNbinsinteger, example: 0
--alignMatesGapMaxmaximum gap between two mates, if 0, max intron gap will be determined by (2^winBinNbits)*winAnchorDistNbinsinteger, example: 0
--alignSJoverhangMinminimum overhang (i.e. block size) for spliced alignmentsinteger, example: 5
--alignSJstitchMismatchNmaxmaximum number of mismatches for stitching of the splice junctions (-1: no limit). (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif.integer, example: 0, example: -1, example: 0, example: 0
--alignSJDBoverhangMinminimum overhang (i.e. block size) for annotated (sjdb) spliced alignmentsinteger, example: 3
--alignSplicedMateMapLminminimum mapped length for a read mate that is splicedinteger, example: 0
--alignSplicedMateMapLminOverLmatealignSplicedMateMapLmin normalized to mate lengthdouble, example: 0.66
--alignWindowsPerReadNmaxmax number of windows per readinteger, example: 10000
--alignTranscriptsPerWindowNmaxmax number of transcripts per windowinteger, example: 100
--alignTranscriptsPerReadNmaxmax number of different alignments per read to considerinteger, example: 10000
--alignEndsTypetype of read ends alignment - Local … standard local alignment with soft-clipping allowed - EndToEnd … force end-to-end read alignment, do not soft-clip - Extend5pOfRead1 … fully extend only the 5p of the read1, all other ends: local alignment - Extend5pOfReads12 … fully extend only the 5p of the both read1 and read2, all other ends: local alignmentstring, example: "Local"
--alignEndsProtrudeallow protrusion of alignment ends, i.e. start (end) of the +strand mate downstream of the start (end) of the -strand mate 1st word: int: maximum number of protrusion bases allowed 2nd word: string: - ConcordantPair … report alignments with non-zero protrusion as concordant pairs - DiscordantPair … report alignments with non-zero protrusion as discordant pairsstring, example: "0 ConcordantPair"
--alignSoftClipAtReferenceEndsallow the soft-clipping of the alignments past the end of the chromosomes - Yes … allow - No … prohibit, useful for compatibility with Cufflinksstring, example: "Yes"
--alignInsertionFlushhow to flush ambiguous insertion positions - None … insertions are not flushed - Right … insertions are flushed to the rightstring
+
+
+

Paired-End reads

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--peOverlapNbasesMinminimum number of overlapping bases to trigger mates merging and realignment. Specify >0 value to switch on the “merginf of overlapping mates” algorithm.integer, example: 0
--peOverlapMMpmaximum proportion of mismatched bases in the overlap areadouble, example: 0.01
+
+
+

Windows, Anchors, Binning

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--winAnchorMultimapNmaxmax number of loci anchors are allowed to map tointeger, example: 50
--winBinNbits=log2(winBin), where winBin is the size of the bin for the windows/clustering, each window will occupy an integer number of bins.integer, example: 16
--winAnchorDistNbinsmax number of bins between two anchors that allows aggregation of anchors into one windowinteger, example: 9
--winFlankNbinslog2(winFlank), where win Flank is the size of the left and right flanking regions for each windowinteger, example: 4
--winReadCoverageRelativeMinminimum relative coverage of the read sequence by the seeds in a window, for STARlong algorithm only.double, example: 0.5
--winReadCoverageBasesMinminimum number of bases covered by the seeds in a window , for STARlong algorithm only.integer, example: 0
+
+
+

Chimeric Alignments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--chimOutTypetype of chimeric output - Junctions … Chimeric.out.junction - SeparateSAMold … output old SAM into separate Chimeric.out.sam file - WithinBAM … output into main aligned BAM files (Aligned.*.bam) - WithinBAM HardClip … (default) hard-clipping in the CIGAR for supplemental chimeric alignments (default if no 2nd word is present) - WithinBAM SoftClip … soft-clipping in the CIGAR for supplemental chimeric alignmentsstring, example: "Junctions"
--chimSegmentMinminimum length of chimeric segment length, if ==0, no chimeric outputinteger, example: 0
--chimScoreMinminimum total (summed) score of the chimeric segmentsinteger, example: 0
--chimScoreDropMaxmax drop (difference) of chimeric score (the sum of scores of all chimeric segments) from the read lengthinteger, example: 20
--chimScoreSeparationminimum difference (separation) between the best chimeric score and the next oneinteger, example: 10
--chimScoreJunctionNonGTAGpenalty for a non-GT/AG chimeric junctioninteger, example: -1
--chimJunctionOverhangMinminimum overhang for a chimeric junctioninteger, example: 20
--chimSegmentReadGapMaxmaximum gap in the read sequence between chimeric segmentsinteger, example: 0
--chimFilterdifferent filters for chimeric alignments - None … no filtering - banGenomicN … Ns are not allowed in the genome sequence around the chimeric junctionstring, example: "banGenomicN"
--chimMainSegmentMultNmaxmaximum number of multi-alignments for the main chimeric segment. =1 will prohibit multimapping main segments.integer, example: 10
--chimMultimapNmaxmaximum number of chimeric multi-alignments - 0 … use the old scheme for chimeric detection which only considered unique alignmentsinteger, example: 0
--chimMultimapScoreRangethe score range for multi-mapping chimeras below the best chimeric score. Only works with –chimMultimapNmax > 1integer, example: 1
--chimNonchimScoreDropMinto trigger chimeric detection, the drop in the best non-chimeric alignment score with respect to the read length has to be greater than this valueinteger, example: 20
--chimOutJunctionFormatformatting type for the Chimeric.out.junction file - 0 … no comment lines/headers - 1 … comment lines at the end of the file: command line and Nreads: total, unique/multi-mappinginteger, example: 0
+
+
+

Quantification of Annotations

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--quantModetypes of quantification requested - - … none - TranscriptomeSAM … output SAM/BAM alignments to transcriptome into a separate file - GeneCounts … count reads per genestring
--quantTranscriptomeBAMcompression-2 to 10 transcriptome BAM compression level - -2 … no BAM output - -1 … default compression (6?) - 0 … no compression - 10 … maximum compressioninteger, example: 1
--quantTranscriptomeBanprohibit various alignment type - IndelSoftclipSingleend … prohibit indels, soft clipping and single-end alignments - compatible with RSEM - Singleend … prohibit single-end alignmentsstring, example: "IndelSoftclipSingleend"
+
+
+

2-pass Mapping

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--twopassMode2-pass mapping mode. - None … 1-pass mapping - Basic … basic 2-pass mapping, with all 1st pass junctions inserted into the genome indices on the flystring
--twopass1readsNnumber of reads to process for the 1st step. Use very large number (or default -1) to map all reads in the first step.integer, example: -1
+
+
+

WASP parameters

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--waspOutputModeWASP allele-specific output type. This is re-implementation of the original WASP mappability filtering by Bryce van de Geijn, Graham McVicker, Yoav Gilad & Jonathan K Pritchard. Please cite the original WASP paper: Nature Methods 12, 1061-1063 (2015), https://www.nature.com/articles/nmeth.3582 . - SAMtag … add WASP tags to the alignments that pass WASP filteringstring
+
+
+

STARsolo (single cell RNA-seq) parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--soloTypetype of single-cell RNA-seq - CB_UMI_Simple … (a.k.a. Droplet) one UMI and one Cell Barcode of fixed length in read2, e.g. Drop-seq and 10X Chromium. - CB_UMI_Complex … multiple Cell Barcodes of varying length, one UMI of fixed length and one adapter sequence of fixed length are allowed in read2 only (e.g. inDrop, ddSeq). - CB_samTagOut … output Cell Barcode as CR and/or CB SAm tag. No UMI counting. –readFilesIn cDNA_read1 [cDNA_read2 if paired-end] CellBarcode_read . Requires –outSAMtype BAM Unsorted [and/or SortedByCoordinate] - SmartSeq … Smart-seq: each cell in a separate FASTQ (paired- or single-end), barcodes are corresponding read-groups, no UMI sequences, alignments deduplicated according to alignment start and end (after extending soft-clipped bases)string
--soloCBwhitelistfile(s) with whitelist(s) of cell barcodes. Only –soloType CB_UMI_Complex allows more than one whitelist file. - None … no whitelist: all cell barcodes are allowedstring
--soloCBstartcell barcode start baseinteger, example: 1
--soloCBlencell barcode lengthinteger, example: 16
--soloUMIstartUMI start baseinteger, example: 17
--soloUMIlenUMI lengthinteger, example: 10
--soloBarcodeReadLengthlength of the barcode read - 1 … equal to sum of soloCBlen+soloUMIlen - 0 … not defined, do not checkinteger, example: 1
--soloBarcodeMateidentifies which read mate contains the barcode (CB+UMI) sequence - 0 … barcode sequence is on separate read, which should always be the last file in the –readFilesIn listed - 1 … barcode sequence is a part of mate 1 - 2 … barcode sequence is a part of mate 2integer, example: 0
--soloCBpositionposition of Cell Barcode(s) on the barcode read. Presently only works with –soloType CB_UMI_Complex, and barcodes are assumed to be on Read2. Format for each barcode: startAnchor_startPosition_endAnchor_endPosition start(end)Anchor defines the Anchor Base for the CB: 0: read start; 1: read end; 2: adapter start; 3: adapter end start(end)Position is the 0-based position with of the CB start(end) with respect to the Anchor Base String for different barcodes are separated by space. Example: inDrop (Zilionis et al, Nat. Protocols, 2017): –soloCBposition 0_0_2_-1 3_1_3_8string
--soloUMIpositionposition of the UMI on the barcode read, same as soloCBposition Example: inDrop (Zilionis et al, Nat. Protocols, 2017): –soloCBposition 3_9_3_14string
--soloAdapterSequenceadapter sequence to anchor barcodes. Only one adapter sequence is allowed.string
--soloAdapterMismatchesNmaxmaximum number of mismatches allowed in adapter sequence.integer, example: 1
--soloCBmatchWLtypematching the Cell Barcodes to the WhiteList - Exact … only exact matches allowed - 1MM … only one match in whitelist with 1 mismatched base allowed. Allowed CBs have to have at least one read with exact match. - 1MM_multi … multiple matches in whitelist with 1 mismatched base allowed, posterior probability calculation is used choose one of the matches. Allowed CBs have to have at least one read with exact match. This option matches best with CellRanger 2.2.0 - 1MM_multi_pseudocounts … same as 1MM_Multi, but pseudocounts of 1 are added to all whitelist barcodes. - 1MM_multi_Nbase_pseudocounts … same as 1MM_multi_pseudocounts, multimatching to WL is allowed for CBs with N-bases. This option matches best with CellRanger >= 3.0.0 - EditDist_2 … allow up to edit distance of 3 fpr each of the barcodes. May include one deletion + one insertion. Only works with –soloType CB_UMI_Complex. Matches to multiple passlist barcdoes are not allowed. Similar to ParseBio Split-seq pipeline.string, example: "1MM_multi"
--soloInputSAMattrBarcodeSeqwhen inputting reads from a SAM file (–readsFileType SAM SE/PE), these SAM attributes mark the barcode sequence (in proper order). For instance, for 10X CellRanger or STARsolo BAMs, use –soloInputSAMattrBarcodeSeq CR UR . This parameter is required when running STARsolo with input from SAM.string
--soloInputSAMattrBarcodeQualwhen inputting reads from a SAM file (–readsFileType SAM SE/PE), these SAM attributes mark the barcode qualities (in proper order). For instance, for 10X CellRanger or STARsolo BAMs, use –soloInputSAMattrBarcodeQual CY UY . If this parameter is ‘-’ (default), the quality ‘H’ will be assigned to all bases.string
--soloStrandstrandedness of the solo libraries: - Unstranded … no strand information - Forward … read strand same as the original RNA molecule - Reverse … read strand opposite to the original RNA moleculestring, example: "Forward"
--soloFeaturesgenomic features for which the UMI counts per Cell Barcode are collected - Gene … genes: reads match the gene transcript - SJ … splice junctions: reported in SJ.out.tab - GeneFull … full gene (pre-mRNA): count all reads overlapping genes’ exons and introns - GeneFull_ExonOverIntron … full gene (pre-mRNA): count all reads overlapping genes’ exons and introns: prioritize 100% overlap with exons - GeneFull_Ex50pAS … full gene (pre-RNA): count all reads overlapping genes’ exons and introns: prioritize >50% overlap with exons. Do not count reads with 100% exonic overlap in the antisense direction.string, example: "Gene"
--soloMultiMapperscounting method for reads mapping to multiple genes - Unique … count only reads that map to unique genes - Uniform … uniformly distribute multi-genic UMIs to all genes - Rescue … distribute UMIs proportionally to unique+uniform counts (~ first iteration of EM) - PropUnique … distribute UMIs proportionally to unique mappers, if present, and uniformly if not. - EM … multi-gene UMIs are distributed using Expectation Maximization algorithmstring, example: "Unique"
--soloUMIdeduptype of UMI deduplication (collapsing) algorithm - 1MM_All … all UMIs with 1 mismatch distance to each other are collapsed (i.e. counted once). - 1MM_Directional_UMItools … follows the “directional” method from the UMI-tools by Smith, Heger and Sudbery (Genome Research 2017). - 1MM_Directional … same as 1MM_Directional_UMItools, but with more stringent criteria for duplicate UMIs - Exact … only exactly matching UMIs are collapsed. - NoDedup … no deduplication of UMIs, count all reads. - 1MM_CR … CellRanger2-4 algorithm for 1MM UMI collapsing.string, example: "1MM_All"
--soloUMIfilteringtype of UMI filtering (for reads uniquely mapping to genes) - - … basic filtering: remove UMIs with N and homopolymers (similar to CellRanger 2.2.0). - MultiGeneUMI … basic + remove lower-count UMIs that map to more than one gene. - MultiGeneUMI_All … basic + remove all UMIs that map to more than one gene. - MultiGeneUMI_CR … basic + remove lower-count UMIs that map to more than one gene, matching CellRanger > 3.0.0 . Only works with –soloUMIdedup 1MM_CRstring
--soloOutFileNamesfile names for STARsolo output: file_name_prefix gene_names barcode_sequences cell_feature_count_matrixstring, example: "Solo.out/", example: "features.tsv", example: "barcodes.tsv", example: "matrix.mtx"
--soloCellFiltercell filtering type and parameters - None … do not output filtered cells - TopCells … only report top cells by UMI count, followed by the exact number of cells - CellRanger2.2 … simple filtering of CellRanger 2.2. Can be followed by numbers: number of expected cells, robust maximum percentile for UMI count, maximum to minimum ratio for UMI count The harcoded values are from CellRanger: nExpectedCells=3000; maxPercentile=0.99; maxMinRatio=10 - EmptyDrops_CR … EmptyDrops filtering in CellRanger flavor. Please cite the original EmptyDrops paper: A.T.L Lun et al, Genome Biology, 20, 63 (2019): https://genomebiology.biomedcentral.com/articles/10.1186/s13059-019-1662-y Can be followed by 10 numeric parameters: nExpectedCells maxPercentile maxMinRatio indMin indMax umiMin umiMinFracMedian candMaxN FDR simN The harcoded values are from CellRanger: 3000 0.99 10 45000 90000 500 0.01 20000 0.01 10000string, example: "CellRanger2.2", example: "3000", example: "0.99", example: "10"
--soloOutFormatFeaturesGeneField3field 3 in the Gene features.tsv file. If “-”, then no 3rd field is output.string, example: "Gene Expression"
--soloCellReadStatsOutput reads statistics for each CB - Standard … standard outputstring
+
+
+

HTSeq arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--strandedWhether the data is from a strand-specific assay. ‘reverse’ means ‘yes’ with reversed strand interpretation.string, default: "yes"
--minimum_alignment_qualitySkip all reads with MAPQ alignment quality lower than the given minimum value. MAPQ is the 5th column of a SAM/BAM file and its usage depends on the software used to map the reads.integer, default: 10
--typeFeature type (3rd column in GTF file) to be used, all features of other type are ignored (default, suitable for Ensembl GTF files: exon)string, example: "exon"
--id_attributeGTF attribute to be used as feature ID (default, suitable for Ensembl GTF files: gene_id). All feature of the right type (see -t option) within the same GTF attribute will be added together. The typical way of using this option is to count all exonic reads from each gene and add the exons but other uses are possible as well. You can call this option multiple times: in that case, the combination of all attributes separated by colons (:) will be used as a unique identifier, e.g. for exons you might use -i gene_id -i exon_number.string, example: "gene_id"
--additional_attributesAdditional feature attributes (suitable for Ensembl GTF files: gene_name). Use multiple times for more than one additional attribute. These attributes are only used as annotations in the output, while the determination of how the counts are added together is done based on option -i.string, example: "gene_name"
--add_chromosome_infoStore information about the chromosome of each feature as an additional attribute (e.g. colunm in the TSV output file).boolean_true
--modeMode to handle reads overlapping more than one feature.string, default: "union"
--non_uniqueWhether and how to score reads that are not uniquely aligned or ambiguously assigned to features.string, default: "none"
--secondary_alignmentsWhether to score secondary alignments (0x100 flag).string
--supplementary_alignmentsWhether to score supplementary alignments (0x800 flag).string
--counts_output_sparseStore the counts as a sparse matrix (mtx, h5ad, loom).boolean_true
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/mapping/multi_star_to_h5mu.html b/pr-preview/pr-51/components/modules/mapping/multi_star_to_h5mu.html new file mode 100644 index 00000000..abd32e70 --- /dev/null +++ b/pr-preview/pr-51/components/modules/mapping/multi_star_to_h5mu.html @@ -0,0 +1,1624 @@ + + + + + + + + + + +OpenPipelines - Multi star to h5mu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Multi star to h5mu

+
+ +
+
+ Convert the output of multi_star to a h5mu +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: multi_star_to_h5mu
+Namespace: mapping

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/mapping/multi_star_to_h5mu/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "/path/to/foo"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/mapping/multi_star_to_h5mu/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputThe directory created by multi_starfile, required, example: "/path/to/foo"
--outputOutput h5mu file.file, required, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (author, maintainer)

  • +
  • Angela Oliveira Pisco (author)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/mapping/samtools_sort.html b/pr-preview/pr-51/components/modules/mapping/samtools_sort.html new file mode 100644 index 00000000..1c90bd2b --- /dev/null +++ b/pr-preview/pr-51/components/modules/mapping/samtools_sort.html @@ -0,0 +1,1711 @@ + + + + + + + + + + +OpenPipelines - Samtools sort + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Samtools sort

+
+ +
+
+ Sort and (optionally) index alignments. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: samtools_sort
+Namespace: mapping

+
+ +

Reads are sorted by leftmost coordinates, or by read name when --sort_by_read_names is used.

+

An appropriate @HD-SO sort order header tag will be added or an existing one updated if necessary.

+

Note that to generate an index file (by specifying --output_bai), the default coordinate sort must be used. Thus the --sort_by_read_names and --sort_by <TAG> options are incompatible with --output_bai.

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/mapping/samtools_sort/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+minimizer_cluster: false
+# minimizer_kmer: 20
+sort_by_read_names: false
+# sort_by: "foo"
+no_pg: false
+
+# Input
+input: # please fill in - example: "input.bam"
+
+# Output
+# output_bam: "$id.$key.output_bam.bam"
+# output_bai: "$id.$key.output_bai.bai"
+# output_format: "bam"
+# compression: 5
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/mapping/samtools_sort/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Input

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputPath to the SAM/BAM/CRAM files containing the mapped reads.file, required, example: "input.bam"
+
+
+

Output

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--output_bamFilename to output the counts to.file, required, example: "output.bam"
--output_baiBAI-format index for BAM file.file, example: "output.bam.bai"
--output_formatThe output format. By default, samtools tries to select a format based on the -o filename extension; if output is to standard output or no format can be deduced, bam is selected.string, example: "bam"
--compressionCompression level, from 0 (uncompressed) to 9 (bestinteger, example: 5
+
+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--minimizer_clusterSort unmapped reads (those in chromosome “*“) by their sequence minimiser (Schleimer et al., 2003; Roberts et al., 2004), also reverse complementing as appropriate. This has the effect of collating some similar data together, improving the compressibility of the unmapped sequence. The minimiser kmer size is adjusted using the -K option. Note data compressed in this manner may need to be name collated prior to conversion back to fastq. Mapped sequences are sorted by chromosome and position.boolean_true
--minimizer_kmerSets the kmer size to be used in the -M option.integer, example: 20
--sort_by_read_namesSort by read names (i.e., the QNAME field) rather than by chromosomal coordinates.boolean_true
--sort_bySort first by this value in the alignment tag, then by position or name (if also using -n).string
--no_pgDo not add a @PG line to the header of the output file.boolean_true
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (author, maintainer)

  • +
  • Angela Oliveira Pisco (author)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/mapping/star_align.html b/pr-preview/pr-51/components/modules/mapping/star_align.html new file mode 100644 index 00000000..84469bc3 --- /dev/null +++ b/pr-preview/pr-51/components/modules/mapping/star_align.html @@ -0,0 +1,2958 @@ + + + + + + + + + + +OpenPipelines - Star align + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Star align

+
+ +
+
+ Align fastq files using STAR. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: star_align
+Namespace: mapping

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/mapping/star_align/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Input/Output
+input: # please fill in - example: ["mysample_S1_L001_R1_001.fastq.gz", "mysample_S1_L001_R2_001.fastq.gz"]
+reference: # please fill in - example: "/path/to/reference"
+# output: "$id.$key.output.output"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/mapping/star_align/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Input/Output

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputThe FASTQ files to be analyzed. Corresponds to the –readFilesIn argument in the STAR command.file, required, example: "mysample_S1_L001_R1_001.fastq.gz", example: "mysample_S1_L001_R2_001.fastq.gz"
--referencePath to the reference built by star_build_reference. Corresponds to the –genomeDir argument in the STAR command.file, required, example: "/path/to/reference"
--outputPath to output directory. Corresponds to the –outFileNamePrefix argument in the STAR command.file, required, example: "/path/to/foo"
+
+
+

Run Parameters

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--runRNGseedrandom number generator seed.integer, example: 777
+
+
+

Genome Parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--genomeLoadmode of shared memory usage for the genome files. Only used with –runMode alignReads. - LoadAndKeep … load genome into shared and keep it in memory after run - LoadAndRemove … load genome into shared but remove it after run - LoadAndExit … load genome into shared memory and exit, keeping the genome in memory for future runs - Remove … do not map anything, just remove loaded genome from memory - NoSharedMemory … do not use shared memory, each job will have its own private copy of the genomestring, example: "NoSharedMemory"
--genomeFastaFilespath(s) to the fasta files with the genome sequences, separated by spaces. These files should be plain text FASTA files, they cannot be zipped. Required for the genome generation (–runMode genomeGenerate). Can also be used in the mapping (–runMode alignReads) to add extra (new) sequences to the genome (e.g. spike-ins).file
--genomeFileSizesgenome files exact sizes in bytes. Typically, this should not be defined by the user.integer, example: 0
--genomeTransformOutputwhich output to transform back to original genome - SAM … SAM/BAM alignments - SJ … splice junctions (SJ.out.tab) - None … no transformation of the outputstring
--genomeChrSetMitochondrialnames of the mitochondrial chromosomes. Presently only used for STARsolo statistics output/string, example: "chrM", example: "M", example: "MT"
+
+
+

Splice Junctions Database

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--sjdbFileChrStartEndpath to the files with genomic coordinates (chr start end strand) for the splice junction introns. Multiple files can be supplied and will be concatenated.string
--sjdbGTFfilepath to the GTF file with annotationsfile
--sjdbGTFchrPrefixprefix for chromosome names in a GTF file (e.g. ‘chr’ for using ENSMEBL annotations with UCSC genomes)string
--sjdbGTFfeatureExonfeature type in GTF file to be used as exons for building transcriptsstring, example: "exon"
--sjdbGTFtagExonParentTranscriptGTF attribute name for parent transcript ID (default “transcript_id” works for GTF files)string, example: "transcript_id"
--sjdbGTFtagExonParentGeneGTF attribute name for parent gene ID (default “gene_id” works for GTF files)string, example: "gene_id"
--sjdbGTFtagExonParentGeneNameGTF attribute name for parent gene namestring, example: "gene_name"
--sjdbGTFtagExonParentGeneTypeGTF attribute name for parent gene typestring, example: "gene_type", example: "gene_biotype"
--sjdbOverhanglength of the donor/acceptor sequence on each side of the junctions, ideally = (mate_length - 1)integer, example: 100
--sjdbScoreextra alignment score for alignments that cross database junctionsinteger, example: 2
--sjdbInsertSavewhich files to save when sjdb junctions are inserted on the fly at the mapping step - Basic … only small junction / transcript files - All … all files including big Genome, SA and SAindex - this will create a complete genome directorystring, example: "Basic"
+
+
+

Variation parameters

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--varVCFfilepath to the VCF file that contains variation data. The 10th column should contain the genotype information, e.g. 0/1string
+
+
+

Read Parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--readFilesTypeformat of input read files - Fastx … FASTA or FASTQ - SAM SE … SAM or BAM single-end reads; for BAM use –readFilesCommand samtools view - SAM PE … SAM or BAM paired-end reads; for BAM use –readFilesCommand samtools viewstring, example: "Fastx"
--readFilesSAMattrKeepfor –readFilesType SAM SE/PE, which SAM tags to keep in the output BAM, e.g.: –readFilesSAMtagsKeep RG PL - All … keep all tags - None … do not keep any tagsstring, example: "All"
--readFilesManifestpath to the “manifest” file with the names of read files. The manifest file should contain 3 tab-separated columns: paired-end reads: read1_file_name \(tab\) read2_file_name \(tab\) read_group_line. single-end reads: read1_file_name \(tab\) - \(tab\) read_group_line. Spaces, but not tabs are allowed in file names. If read_group_line does not start with ID:, it can only contain one ID field, and ID: will be added to it. If read_group_line starts with ID:, it can contain several fields separated by \(tab\), and all fields will be be copied verbatim into SAM @RG header line.file
--readFilesPrefixprefix for the read files names, i.e. it will be added in front of the strings in –readFilesInstring
--readFilesCommandcommand line to execute for each of the input file. This command should generate FASTA or FASTQ text and send it to stdout For example: zcat - to uncompress .gz files, bzcat - to uncompress .bz2 files, etc.string
--readMapNumbernumber of reads to map from the beginning of the file -1: map all readsinteger, example: -1
--readMatesLengthsInEqual/NotEqual - lengths of names,sequences,qualities for both mates are the same / not the same. NotEqual is safe in all situations.string, example: "NotEqual"
--readNameSeparatorcharacter(s) separating the part of the read names that will be trimmed in output (read name after space is always trimmed)string, example: "/"
--readQualityScoreBasenumber to be subtracted from the ASCII code to get Phred quality scoreinteger, example: 33
+
+
+

Read Clipping

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--clipAdapterTypeadapter clipping type - Hamming … adapter clipping based on Hamming distance, with the number of mismatches controlled by –clip5pAdapterMMp - CellRanger4 … 5p and 3p adapter clipping similar to CellRanger4. Utilizes Opal package by Martin Sosic: https://github.com/Martinsos/opal - None … no adapter clipping, all other clip* parameters are disregardedstring, example: "Hamming"
--clip3pNbasesnumber(s) of bases to clip from 3p of each mate. If one value is given, it will be assumed the same for both mates.integer, example: 0
--clip3pAdapterSeqadapter sequences to clip from 3p of each mate. If one value is given, it will be assumed the same for both mates. - polyA … polyA sequence with the length equal to read lengthstring
--clip3pAdapterMMpmax proportion of mismatches for 3p adapter clipping for each mate. If one value is given, it will be assumed the same for both mates.double, example: 0.1
--clip3pAfterAdapterNbasesnumber of bases to clip from 3p of each mate after the adapter clipping. If one value is given, it will be assumed the same for both mates.integer, example: 0
--clip5pNbasesnumber(s) of bases to clip from 5p of each mate. If one value is given, it will be assumed the same for both mates.integer, example: 0
+
+
+

Limits

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--limitGenomeGenerateRAMmaximum available RAM (bytes) for genome generationlong, example: NA
--limitIObufferSizemax available buffers size (bytes) for input/output, per threadlong, example: 30000000, example: 50000000
--limitOutSAMoneReadBytesmax size of the SAM record (bytes) for one read. Recommended value: >(2(LengthMate1+LengthMate2+100)outFilterMultimapNmaxlong, example: 100000
--limitOutSJoneReadmax number of junctions for one read (including all multi-mappers)integer, example: 1000
--limitOutSJcollapsedmax number of collapsed junctionsinteger, example: 1000000
--limitBAMsortRAMmaximum available RAM (bytes) for sorting BAM. If =0, it will be set to the genome index size. 0 value can only be used with –genomeLoad NoSharedMemory option.long, example: 0
--limitSjdbInsertNsjmaximum number of junctions to be inserted to the genome on the fly at the mapping stage, including those from annotations and those detected in the 1st step of the 2-pass runinteger, example: 1000000
--limitNreadsSoftsoft limit on the number of readsinteger, example: -1
+
+
+

Output: general

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outTmpKeepwhether to keep the temporary files after STAR runs is finished - None … remove all temporary files - All … keep all filesstring
--outStdwhich output will be directed to stdout (standard out) - Log … log messages - SAM … alignments in SAM format (which normally are output to Aligned.out.sam file), normal standard output will go into Log.std.out - BAM_Unsorted … alignments in BAM format, unsorted. Requires –outSAMtype BAM Unsorted - BAM_SortedByCoordinate … alignments in BAM format, sorted by coordinate. Requires –outSAMtype BAM SortedByCoordinate - BAM_Quant … alignments to transcriptome in BAM format, unsorted. Requires –quantMode TranscriptomeSAMstring, example: "Log"
--outReadsUnmappedoutput of unmapped and partially mapped (i.e. mapped only one mate of a paired end read) reads in separate file(s). - None … no output - Fastx … output in separate fasta/fastq files, Unmapped.out.mate1/2string
--outQSconversionAddadd this number to the quality score (e.g. to convert from Illumina to Sanger, use -31)integer, example: 0
--outMultimapperOrderorder of multimapping alignments in the output files - Old_2.4 … quasi-random order used before 2.5.0 - Random … random order of alignments for each multi-mapper. Read mates (pairs) are always adjacent, all alignment for each read stay together. This option will become default in the future releases.string, example: "Old_2.4"
+
+
+

Output: SAM and BAM

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outSAMtypetype of SAM/BAM output 1st word: - BAM … output BAM without sorting - SAM … output SAM without sorting - None … no SAM/BAM output 2nd, 3rd: - Unsorted … standard unsorted - SortedByCoordinate … sorted by coordinate. This option will allocate extra memory for sorting which can be specified by –limitBAMsortRAM.string, example: "SAM"
--outSAMmodemode of SAM output - None … no SAM output - Full … full SAM output - NoQS … full SAM but without quality scoresstring, example: "Full"
--outSAMstrandFieldCufflinks-like strand field flag - None … not used - intronMotif … strand derived from the intron motif. This option changes the output alignments: reads with inconsistent and/or non-canonical introns are filtered out.string
--outSAMattributesa string of desired SAM attributes, in the order desired for the output SAM. Tags can be listed in any combination/order. Presets: - None … no attributes - Standard … NH HI AS nM - All … NH HI AS nM NM MD jM jI MC ch Alignment: - NH … number of loci the reads maps to: =1 for unique mappers, >1 for multimappers. Standard SAM tag. - HI … multiple alignment index, starts with –outSAMattrIHstart (=1 by default). Standard SAM tag. - AS … local alignment score, +1/-1 for matches/mismateches, score* penalties for indels and gaps. For PE reads, total score for two mates. Stadnard SAM tag. - nM … number of mismatches. For PE reads, sum over two mates. - NM … edit distance to the reference (number of mismatched + inserted + deleted bases) for each mate. Standard SAM tag. - MD … string encoding mismatched and deleted reference bases (see standard SAM specifications). Standard SAM tag. - jM … intron motifs for all junctions (i.e. N in CIGAR): 0: non-canonical; 1: GT/AG, 2: CT/AC, 3: GC/AG, 4: CT/GC, 5: AT/AC, 6: GT/AT. If splice junctions database is used, and a junction is annotated, 20 is added to its motif value. - jI … start and end of introns for all junctions (1-based). - XS … alignment strand according to –outSAMstrandField. - MC … mate’s CIGAR string. Standard SAM tag. - ch … marks all segment of all chimeric alingments for –chimOutType WithinBAM output. - cN … number of bases clipped from the read ends: 5’ and 3’ Variation: - vA … variant allele - vG … genomic coordinate of the variant overlapped by the read. - vW … 1 - alignment passes WASP filtering; 2,3,4,5,6,7 - alignment does not pass WASP filtering. Requires –waspOutputMode SAMtag. STARsolo: - CR CY UR UY … sequences and quality scores of cell barcodes and UMIs for the solo* demultiplexing. - GX GN … gene ID and gene name for unique-gene reads. - gx gn … gene IDs and gene names for unique- and multi-gene reads. - CB UB … error-corrected cell barcodes and UMIs for solo* demultiplexing. Requires –outSAMtype BAM SortedByCoordinate. - sM … assessment of CB and UMI. - sS … sequence of the entire barcode (CB,UMI,adapter). - sQ … quality of the entire barcode. ***Unsupported/undocumented: - ha … haplotype (1/2) when mapping to the diploid genome. Requires genome generated with –genomeTransformType Diploid . - rB … alignment block read/genomic coordinates. - vR … read coordinate of the variant.string, example: "Standard"
--outSAMattrIHstartstart value for the IH attribute. 0 may be required by some downstream software, such as Cufflinks or StringTie.integer, example: 1
--outSAMunmappedoutput of unmapped reads in the SAM format 1st word: - None … no output - Within … output unmapped reads within the main SAM file (i.e. Aligned.out.sam) 2nd word: - KeepPairs … record unmapped mate for each alignment, and, in case of unsorted output, keep it adjacent to its mapped mate. Only affects multi-mapping reads.string
--outSAMordertype of sorting for the SAM output Paired: one mate after the other for all paired alignments PairedKeepInputOrder: one mate after the other for all paired alignments, the order is kept the same as in the input FASTQ filesstring, example: "Paired"
--outSAMprimaryFlagwhich alignments are considered primary - all others will be marked with 0x100 bit in the FLAG - OneBestScore … only one alignment with the best score is primary - AllBestScore … all alignments with the best score are primarystring, example: "OneBestScore"
--outSAMreadIDread ID record type - Standard … first word (until space) from the FASTx read ID line, removing /1,/2 from the end - Number … read number (index) in the FASTx filestring, example: "Standard"
--outSAMmapqUnique0 to 255: the MAPQ value for unique mappersinteger, example: 255
--outSAMflagOR0 to 65535: sam FLAG will be bitwise OR’d with this value, i.e. FLAG=FLAG | outSAMflagOR. This is applied after all flags have been set by STAR, and after outSAMflagAND. Can be used to set specific bits that are not set otherwise.integer, example: 0
--outSAMflagAND0 to 65535: sam FLAG will be bitwise AND’d with this value, i.e. FLAG=FLAG & outSAMflagOR. This is applied after all flags have been set by STAR, but before outSAMflagOR. Can be used to unset specific bits that are not set otherwise.integer, example: 65535
--outSAMattrRGlineSAM/BAM read group line. The first word contains the read group identifier and must start with “ID:”, e.g. –outSAMattrRGline ID:xxx CN:yy “DS:z z z”. xxx will be added as RG tag to each output alignment. Any spaces in the tag values have to be double quoted. Comma separated RG lines correspons to different (comma separated) input files in –readFilesIn. Commas have to be surrounded by spaces, e.g. –outSAMattrRGline ID:xxx , ID:zzz “DS:z z” , ID:yyy DS:yyyystring
--outSAMheaderHD@HD (header) line of the SAM headerstring
--outSAMheaderPGextra @PG (software) line of the SAM header (in addition to STAR)string
--outSAMheaderCommentFilepath to the file with @CO (comment) lines of the SAM headerstring
--outSAMfilterfilter the output into main SAM/BAM files - KeepOnlyAddedReferences … only keep the reads for which all alignments are to the extra reference sequences added with –genomeFastaFiles at the mapping stage. - KeepAllAddedReferences … keep all alignments to the extra reference sequences added with –genomeFastaFiles at the mapping stage.string
--outSAMmultNmaxmax number of multiple alignments for a read that will be output to the SAM/BAM files. Note that if this value is not equal to -1, the top scoring alignment will be output first - -1 … all alignments (up to –outFilterMultimapNmax) will be outputinteger, example: -1
--outSAMtlencalculation method for the TLEN field in the SAM/BAM files - 1 … leftmost base of the (+)strand mate to rightmost base of the (-)mate. (+)sign for the (+)strand mate - 2 … leftmost base of any mate to rightmost base of any mate. (+)sign for the mate with the leftmost base. This is different from 1 for overlapping mates with protruding endsinteger, example: 1
--outBAMcompression-1 to 10 BAM compression level, -1=default compression (6?), 0=no compression, 10=maximum compressioninteger, example: 1
--outBAMsortingThreadN>=0: number of threads for BAM sorting. 0 will default to min(6,–runThreadN).integer, example: 0
--outBAMsortingBinsN>0: number of genome bins for coordinate-sortinginteger, example: 50
+
+
+

BAM processing

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--bamRemoveDuplicatesTypemark duplicates in the BAM file, for now only works with (i) sorted BAM fed with inputBAMfile, and (ii) for paired-end alignments only - - … no duplicate removal/marking - UniqueIdentical … mark all multimappers, and duplicate unique mappers. The coordinates, FLAG, CIGAR must be identical - UniqueIdenticalNotMulti … mark duplicate unique mappers but not multimappers.string
--bamRemoveDuplicatesMate2basesNnumber of bases from the 5’ of mate 2 to use in collapsing (e.g. for RAMPAGE)integer, example: 0
+
+
+

Output Wiggle

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outWigTypetype of signal output, e.g. “bedGraph” OR “bedGraph read1_5p”. Requires sorted BAM: –outSAMtype BAM SortedByCoordinate . 1st word: - None … no signal output - bedGraph … bedGraph format - wiggle … wiggle format 2nd word: - read1_5p … signal from only 5’ of the 1st read, useful for CAGE/RAMPAGE etc - read2 … signal from only 2nd readstring
--outWigStrandstrandedness of wiggle/bedGraph output - Stranded … separate strands, str1 and str2 - Unstranded … collapsed strandsstring, example: "Stranded"
--outWigReferencesPrefixprefix matching reference names to include in the output wiggle file, e.g. “chr”, default “-” - include all referencesstring
--outWigNormtype of normalization for the signal - RPM … reads per million of mapped reads - None … no normalization, “raw” countsstring, example: "RPM"
+
+
+

Output Filtering

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outFilterTypetype of filtering - Normal … standard filtering using only current alignment - BySJout … keep only those reads that contain junctions that passed filtering into SJ.out.tabstring, example: "Normal"
--outFilterMultimapScoreRangethe score range below the maximum score for multimapping alignmentsinteger, example: 1
--outFilterMultimapNmaxmaximum number of loci the read is allowed to map to. Alignments (all of them) will be output only if the read maps to no more loci than this value. Otherwise no alignments will be output, and the read will be counted as “mapped to too many loci” in the Log.final.out .integer, example: 10
--outFilterMismatchNmaxalignment will be output only if it has no more mismatches than this value.integer, example: 10
--outFilterMismatchNoverLmaxalignment will be output only if its ratio of mismatches to mapped length is less than or equal to this value.double, example: 0.3
--outFilterMismatchNoverReadLmaxalignment will be output only if its ratio of mismatches to read length is less than or equal to this value.double, example: 1
--outFilterScoreMinalignment will be output only if its score is higher than or equal to this value.integer, example: 0
--outFilterScoreMinOverLreadsame as outFilterScoreMin, but normalized to read length (sum of mates’ lengths for paired-end reads)double, example: 0.66
--outFilterMatchNminalignment will be output only if the number of matched bases is higher than or equal to this value.integer, example: 0
--outFilterMatchNminOverLreadsam as outFilterMatchNmin, but normalized to the read length (sum of mates’ lengths for paired-end reads).double, example: 0.66
--outFilterIntronMotifsfilter alignment using their motifs - None … no filtering - RemoveNoncanonical … filter out alignments that contain non-canonical junctions - RemoveNoncanonicalUnannotated … filter out alignments that contain non-canonical unannotated junctions when using annotated splice junctions database. The annotated non-canonical junctions will be kept.string
--outFilterIntronStrandsfilter alignments - RemoveInconsistentStrands … remove alignments that have junctions with inconsistent strands - None … no filteringstring, example: "RemoveInconsistentStrands"
+
+
+

Output splice junctions (SJ.out.tab)

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outSJtypetype of splice junction output - Standard … standard SJ.out.tab output - None … no splice junction outputstring, example: "Standard"
+
+
+

Output Filtering: Splice Junctions

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outSJfilterReadswhich reads to consider for collapsed splice junctions output - All … all reads, unique- and multi-mappers - Unique … uniquely mapping reads onlystring, example: "All"
--outSJfilterOverhangMinminimum overhang length for splice junctions on both sides for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif does not apply to annotated junctionsinteger, example: 30, example: 12, example: 12, example: 12
--outSJfilterCountUniqueMinminimum uniquely mapping read count per junction for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif Junctions are output if one of outSJfilterCountUniqueMin OR outSJfilterCountTotalMin conditions are satisfied does not apply to annotated junctionsinteger, example: 3, example: 1, example: 1, example: 1
--outSJfilterCountTotalMinminimum total (multi-mapping+unique) read count per junction for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif Junctions are output if one of outSJfilterCountUniqueMin OR outSJfilterCountTotalMin conditions are satisfied does not apply to annotated junctionsinteger, example: 3, example: 1, example: 1, example: 1
--outSJfilterDistToOtherSJminminimum allowed distance to other junctions’ donor/acceptor does not apply to annotated junctionsinteger, example: 10, example: 0, example: 5, example: 10
--outSJfilterIntronMaxVsReadNmaximum gap allowed for junctions supported by 1,2,3,,,N reads i.e. by default junctions supported by 1 read can have gaps <=50000b, by 2 reads: <=100000b, by 3 reads: <=200000. by >=4 reads any gap <=alignIntronMax does not apply to annotated junctionsinteger, example: 50000, example: 100000, example: 200000
+
+
+

Scoring

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--scoreGapsplice junction penalty (independent on intron motif)integer, example: 0
--scoreGapNoncannon-canonical junction penalty (in addition to scoreGap)integer, example: -8
--scoreGapGCAGGC/AG and CT/GC junction penalty (in addition to scoreGap)integer, example: -4
--scoreGapATACAT/AC and GT/AT junction penalty (in addition to scoreGap)integer, example: -8
--scoreGenomicLengthLog2scaleextra score logarithmically scaled with genomic length of the alignment: scoreGenomicLengthLog2scale*log2(genomicLength)integer, example: 0
--scoreDelOpendeletion open penaltyinteger, example: -2
--scoreDelBasedeletion extension penalty per base (in addition to scoreDelOpen)integer, example: -2
--scoreInsOpeninsertion open penaltyinteger, example: -2
--scoreInsBaseinsertion extension penalty per base (in addition to scoreInsOpen)integer, example: -2
--scoreStitchSJshiftmaximum score reduction while searching for SJ boundaries in the stitching stepinteger, example: 1
+
+
+

Alignments and Seeding

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--seedSearchStartLmaxdefines the search start point through the read - the read is split into pieces no longer than this valueinteger, example: 50
--seedSearchStartLmaxOverLreadseedSearchStartLmax normalized to read length (sum of mates’ lengths for paired-end reads)double, example: 1
--seedSearchLmaxdefines the maximum length of the seeds, if =0 seed length is not limitedinteger, example: 0
--seedMultimapNmaxonly pieces that map fewer than this value are utilized in the stitching procedureinteger, example: 10000
--seedPerReadNmaxmax number of seeds per readinteger, example: 1000
--seedPerWindowNmaxmax number of seeds per windowinteger, example: 50
--seedNoneLociPerWindowmax number of one seed loci per windowinteger, example: 10
--seedSplitMinmin length of the seed sequences split by Ns or mate gapinteger, example: 12
--seedMapMinmin length of seeds to be mappedinteger, example: 5
--alignIntronMinminimum intron size, genomic gap is considered intron if its length>=alignIntronMin, otherwise it is considered Deletioninteger, example: 21
--alignIntronMaxmaximum intron size, if 0, max intron size will be determined by (2^winBinNbits)*winAnchorDistNbinsinteger, example: 0
--alignMatesGapMaxmaximum gap between two mates, if 0, max intron gap will be determined by (2^winBinNbits)*winAnchorDistNbinsinteger, example: 0
--alignSJoverhangMinminimum overhang (i.e. block size) for spliced alignmentsinteger, example: 5
--alignSJstitchMismatchNmaxmaximum number of mismatches for stitching of the splice junctions (-1: no limit). (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif.integer, example: 0, example: -1, example: 0, example: 0
--alignSJDBoverhangMinminimum overhang (i.e. block size) for annotated (sjdb) spliced alignmentsinteger, example: 3
--alignSplicedMateMapLminminimum mapped length for a read mate that is splicedinteger, example: 0
--alignSplicedMateMapLminOverLmatealignSplicedMateMapLmin normalized to mate lengthdouble, example: 0.66
--alignWindowsPerReadNmaxmax number of windows per readinteger, example: 10000
--alignTranscriptsPerWindowNmaxmax number of transcripts per windowinteger, example: 100
--alignTranscriptsPerReadNmaxmax number of different alignments per read to considerinteger, example: 10000
--alignEndsTypetype of read ends alignment - Local … standard local alignment with soft-clipping allowed - EndToEnd … force end-to-end read alignment, do not soft-clip - Extend5pOfRead1 … fully extend only the 5p of the read1, all other ends: local alignment - Extend5pOfReads12 … fully extend only the 5p of the both read1 and read2, all other ends: local alignmentstring, example: "Local"
--alignEndsProtrudeallow protrusion of alignment ends, i.e. start (end) of the +strand mate downstream of the start (end) of the -strand mate 1st word: int: maximum number of protrusion bases allowed 2nd word: string: - ConcordantPair … report alignments with non-zero protrusion as concordant pairs - DiscordantPair … report alignments with non-zero protrusion as discordant pairsstring, example: "0 ConcordantPair"
--alignSoftClipAtReferenceEndsallow the soft-clipping of the alignments past the end of the chromosomes - Yes … allow - No … prohibit, useful for compatibility with Cufflinksstring, example: "Yes"
--alignInsertionFlushhow to flush ambiguous insertion positions - None … insertions are not flushed - Right … insertions are flushed to the rightstring
+
+
+

Paired-End reads

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--peOverlapNbasesMinminimum number of overlapping bases to trigger mates merging and realignment. Specify >0 value to switch on the “merginf of overlapping mates” algorithm.integer, example: 0
--peOverlapMMpmaximum proportion of mismatched bases in the overlap areadouble, example: 0.01
+
+
+

Windows, Anchors, Binning

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--winAnchorMultimapNmaxmax number of loci anchors are allowed to map tointeger, example: 50
--winBinNbits=log2(winBin), where winBin is the size of the bin for the windows/clustering, each window will occupy an integer number of bins.integer, example: 16
--winAnchorDistNbinsmax number of bins between two anchors that allows aggregation of anchors into one windowinteger, example: 9
--winFlankNbinslog2(winFlank), where win Flank is the size of the left and right flanking regions for each windowinteger, example: 4
--winReadCoverageRelativeMinminimum relative coverage of the read sequence by the seeds in a window, for STARlong algorithm only.double, example: 0.5
--winReadCoverageBasesMinminimum number of bases covered by the seeds in a window , for STARlong algorithm only.integer, example: 0
+
+
+

Chimeric Alignments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--chimOutTypetype of chimeric output - Junctions … Chimeric.out.junction - SeparateSAMold … output old SAM into separate Chimeric.out.sam file - WithinBAM … output into main aligned BAM files (Aligned.*.bam) - WithinBAM HardClip … (default) hard-clipping in the CIGAR for supplemental chimeric alignments (default if no 2nd word is present) - WithinBAM SoftClip … soft-clipping in the CIGAR for supplemental chimeric alignmentsstring, example: "Junctions"
--chimSegmentMinminimum length of chimeric segment length, if ==0, no chimeric outputinteger, example: 0
--chimScoreMinminimum total (summed) score of the chimeric segmentsinteger, example: 0
--chimScoreDropMaxmax drop (difference) of chimeric score (the sum of scores of all chimeric segments) from the read lengthinteger, example: 20
--chimScoreSeparationminimum difference (separation) between the best chimeric score and the next oneinteger, example: 10
--chimScoreJunctionNonGTAGpenalty for a non-GT/AG chimeric junctioninteger, example: -1
--chimJunctionOverhangMinminimum overhang for a chimeric junctioninteger, example: 20
--chimSegmentReadGapMaxmaximum gap in the read sequence between chimeric segmentsinteger, example: 0
--chimFilterdifferent filters for chimeric alignments - None … no filtering - banGenomicN … Ns are not allowed in the genome sequence around the chimeric junctionstring, example: "banGenomicN"
--chimMainSegmentMultNmaxmaximum number of multi-alignments for the main chimeric segment. =1 will prohibit multimapping main segments.integer, example: 10
--chimMultimapNmaxmaximum number of chimeric multi-alignments - 0 … use the old scheme for chimeric detection which only considered unique alignmentsinteger, example: 0
--chimMultimapScoreRangethe score range for multi-mapping chimeras below the best chimeric score. Only works with –chimMultimapNmax > 1integer, example: 1
--chimNonchimScoreDropMinto trigger chimeric detection, the drop in the best non-chimeric alignment score with respect to the read length has to be greater than this valueinteger, example: 20
--chimOutJunctionFormatformatting type for the Chimeric.out.junction file - 0 … no comment lines/headers - 1 … comment lines at the end of the file: command line and Nreads: total, unique/multi-mappinginteger, example: 0
+
+
+

Quantification of Annotations

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--quantModetypes of quantification requested - - … none - TranscriptomeSAM … output SAM/BAM alignments to transcriptome into a separate file - GeneCounts … count reads per genestring
--quantTranscriptomeBAMcompression-2 to 10 transcriptome BAM compression level - -2 … no BAM output - -1 … default compression (6?) - 0 … no compression - 10 … maximum compressioninteger, example: 1
--quantTranscriptomeBanprohibit various alignment type - IndelSoftclipSingleend … prohibit indels, soft clipping and single-end alignments - compatible with RSEM - Singleend … prohibit single-end alignmentsstring, example: "IndelSoftclipSingleend"
+
+
+

2-pass Mapping

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--twopassMode2-pass mapping mode. - None … 1-pass mapping - Basic … basic 2-pass mapping, with all 1st pass junctions inserted into the genome indices on the flystring
--twopass1readsNnumber of reads to process for the 1st step. Use very large number (or default -1) to map all reads in the first step.integer, example: -1
+
+
+

WASP parameters

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--waspOutputModeWASP allele-specific output type. This is re-implementation of the original WASP mappability filtering by Bryce van de Geijn, Graham McVicker, Yoav Gilad & Jonathan K Pritchard. Please cite the original WASP paper: Nature Methods 12, 1061-1063 (2015), https://www.nature.com/articles/nmeth.3582 . - SAMtag … add WASP tags to the alignments that pass WASP filteringstring
+
+
+

STARsolo (single cell RNA-seq) parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--soloTypetype of single-cell RNA-seq - CB_UMI_Simple … (a.k.a. Droplet) one UMI and one Cell Barcode of fixed length in read2, e.g. Drop-seq and 10X Chromium. - CB_UMI_Complex … multiple Cell Barcodes of varying length, one UMI of fixed length and one adapter sequence of fixed length are allowed in read2 only (e.g. inDrop, ddSeq). - CB_samTagOut … output Cell Barcode as CR and/or CB SAm tag. No UMI counting. –readFilesIn cDNA_read1 [cDNA_read2 if paired-end] CellBarcode_read . Requires –outSAMtype BAM Unsorted [and/or SortedByCoordinate] - SmartSeq … Smart-seq: each cell in a separate FASTQ (paired- or single-end), barcodes are corresponding read-groups, no UMI sequences, alignments deduplicated according to alignment start and end (after extending soft-clipped bases)string
--soloCBwhitelistfile(s) with whitelist(s) of cell barcodes. Only –soloType CB_UMI_Complex allows more than one whitelist file. - None … no whitelist: all cell barcodes are allowedstring
--soloCBstartcell barcode start baseinteger, example: 1
--soloCBlencell barcode lengthinteger, example: 16
--soloUMIstartUMI start baseinteger, example: 17
--soloUMIlenUMI lengthinteger, example: 10
--soloBarcodeReadLengthlength of the barcode read - 1 … equal to sum of soloCBlen+soloUMIlen - 0 … not defined, do not checkinteger, example: 1
--soloBarcodeMateidentifies which read mate contains the barcode (CB+UMI) sequence - 0 … barcode sequence is on separate read, which should always be the last file in the –readFilesIn listed - 1 … barcode sequence is a part of mate 1 - 2 … barcode sequence is a part of mate 2integer, example: 0
--soloCBpositionposition of Cell Barcode(s) on the barcode read. Presently only works with –soloType CB_UMI_Complex, and barcodes are assumed to be on Read2. Format for each barcode: startAnchor_startPosition_endAnchor_endPosition start(end)Anchor defines the Anchor Base for the CB: 0: read start; 1: read end; 2: adapter start; 3: adapter end start(end)Position is the 0-based position with of the CB start(end) with respect to the Anchor Base String for different barcodes are separated by space. Example: inDrop (Zilionis et al, Nat. Protocols, 2017): –soloCBposition 0_0_2_-1 3_1_3_8string
--soloUMIpositionposition of the UMI on the barcode read, same as soloCBposition Example: inDrop (Zilionis et al, Nat. Protocols, 2017): –soloCBposition 3_9_3_14string
--soloAdapterSequenceadapter sequence to anchor barcodes. Only one adapter sequence is allowed.string
--soloAdapterMismatchesNmaxmaximum number of mismatches allowed in adapter sequence.integer, example: 1
--soloCBmatchWLtypematching the Cell Barcodes to the WhiteList - Exact … only exact matches allowed - 1MM … only one match in whitelist with 1 mismatched base allowed. Allowed CBs have to have at least one read with exact match. - 1MM_multi … multiple matches in whitelist with 1 mismatched base allowed, posterior probability calculation is used choose one of the matches. Allowed CBs have to have at least one read with exact match. This option matches best with CellRanger 2.2.0 - 1MM_multi_pseudocounts … same as 1MM_Multi, but pseudocounts of 1 are added to all whitelist barcodes. - 1MM_multi_Nbase_pseudocounts … same as 1MM_multi_pseudocounts, multimatching to WL is allowed for CBs with N-bases. This option matches best with CellRanger >= 3.0.0 - EditDist_2 … allow up to edit distance of 3 fpr each of the barcodes. May include one deletion + one insertion. Only works with –soloType CB_UMI_Complex. Matches to multiple passlist barcdoes are not allowed. Similar to ParseBio Split-seq pipeline.string, example: "1MM_multi"
--soloInputSAMattrBarcodeSeqwhen inputting reads from a SAM file (–readsFileType SAM SE/PE), these SAM attributes mark the barcode sequence (in proper order). For instance, for 10X CellRanger or STARsolo BAMs, use –soloInputSAMattrBarcodeSeq CR UR . This parameter is required when running STARsolo with input from SAM.string
--soloInputSAMattrBarcodeQualwhen inputting reads from a SAM file (–readsFileType SAM SE/PE), these SAM attributes mark the barcode qualities (in proper order). For instance, for 10X CellRanger or STARsolo BAMs, use –soloInputSAMattrBarcodeQual CY UY . If this parameter is ‘-’ (default), the quality ‘H’ will be assigned to all bases.string
--soloStrandstrandedness of the solo libraries: - Unstranded … no strand information - Forward … read strand same as the original RNA molecule - Reverse … read strand opposite to the original RNA moleculestring, example: "Forward"
--soloFeaturesgenomic features for which the UMI counts per Cell Barcode are collected - Gene … genes: reads match the gene transcript - SJ … splice junctions: reported in SJ.out.tab - GeneFull … full gene (pre-mRNA): count all reads overlapping genes’ exons and introns - GeneFull_ExonOverIntron … full gene (pre-mRNA): count all reads overlapping genes’ exons and introns: prioritize 100% overlap with exons - GeneFull_Ex50pAS … full gene (pre-RNA): count all reads overlapping genes’ exons and introns: prioritize >50% overlap with exons. Do not count reads with 100% exonic overlap in the antisense direction.string, example: "Gene"
--soloMultiMapperscounting method for reads mapping to multiple genes - Unique … count only reads that map to unique genes - Uniform … uniformly distribute multi-genic UMIs to all genes - Rescue … distribute UMIs proportionally to unique+uniform counts (~ first iteration of EM) - PropUnique … distribute UMIs proportionally to unique mappers, if present, and uniformly if not. - EM … multi-gene UMIs are distributed using Expectation Maximization algorithmstring, example: "Unique"
--soloUMIdeduptype of UMI deduplication (collapsing) algorithm - 1MM_All … all UMIs with 1 mismatch distance to each other are collapsed (i.e. counted once). - 1MM_Directional_UMItools … follows the “directional” method from the UMI-tools by Smith, Heger and Sudbery (Genome Research 2017). - 1MM_Directional … same as 1MM_Directional_UMItools, but with more stringent criteria for duplicate UMIs - Exact … only exactly matching UMIs are collapsed. - NoDedup … no deduplication of UMIs, count all reads. - 1MM_CR … CellRanger2-4 algorithm for 1MM UMI collapsing.string, example: "1MM_All"
--soloUMIfilteringtype of UMI filtering (for reads uniquely mapping to genes) - - … basic filtering: remove UMIs with N and homopolymers (similar to CellRanger 2.2.0). - MultiGeneUMI … basic + remove lower-count UMIs that map to more than one gene. - MultiGeneUMI_All … basic + remove all UMIs that map to more than one gene. - MultiGeneUMI_CR … basic + remove lower-count UMIs that map to more than one gene, matching CellRanger > 3.0.0 . Only works with –soloUMIdedup 1MM_CRstring
--soloOutFileNamesfile names for STARsolo output: file_name_prefix gene_names barcode_sequences cell_feature_count_matrixstring, example: "Solo.out/", example: "features.tsv", example: "barcodes.tsv", example: "matrix.mtx"
--soloCellFiltercell filtering type and parameters - None … do not output filtered cells - TopCells … only report top cells by UMI count, followed by the exact number of cells - CellRanger2.2 … simple filtering of CellRanger 2.2. Can be followed by numbers: number of expected cells, robust maximum percentile for UMI count, maximum to minimum ratio for UMI count The harcoded values are from CellRanger: nExpectedCells=3000; maxPercentile=0.99; maxMinRatio=10 - EmptyDrops_CR … EmptyDrops filtering in CellRanger flavor. Please cite the original EmptyDrops paper: A.T.L Lun et al, Genome Biology, 20, 63 (2019): https://genomebiology.biomedcentral.com/articles/10.1186/s13059-019-1662-y Can be followed by 10 numeric parameters: nExpectedCells maxPercentile maxMinRatio indMin indMax umiMin umiMinFracMedian candMaxN FDR simN The harcoded values are from CellRanger: 3000 0.99 10 45000 90000 500 0.01 20000 0.01 10000string, example: "CellRanger2.2", example: "3000", example: "0.99", example: "10"
--soloOutFormatFeaturesGeneField3field 3 in the Gene features.tsv file. If “-”, then no 3rd field is output.string, example: "Gene Expression"
--soloCellReadStatsOutput reads statistics for each CB - Standard … standard outputstring
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/mapping/star_align_v273a.html b/pr-preview/pr-51/components/modules/mapping/star_align_v273a.html new file mode 100644 index 00000000..7264d350 --- /dev/null +++ b/pr-preview/pr-51/components/modules/mapping/star_align_v273a.html @@ -0,0 +1,2958 @@ + + + + + + + + + + +OpenPipelines - Star align v273a + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Star align v273a

+
+ +
+
+ Align fastq files using STAR. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: star_align_v273a
+Namespace: mapping

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/mapping/star_align_v273a/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Input/Output
+input: # please fill in - example: ["mysample_S1_L001_R1_001.fastq.gz", "mysample_S1_L001_R2_001.fastq.gz"]
+reference: # please fill in - example: "/path/to/reference"
+# output: "$id.$key.output.output"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/mapping/star_align_v273a/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Input/Output

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputThe FASTQ files to be analyzed. Corresponds to the –readFilesIn in the STAR command.file, required, example: "mysample_S1_L001_R1_001.fastq.gz", example: "mysample_S1_L001_R2_001.fastq.gz"
--referencePath to the reference built by star_build_reference. Corresponds to the –genomeDir in the STAR command.file, required, example: "/path/to/reference"
--outputPath to output directory. Corresponds to the –outFileNamePrefix in the STAR command.file, required, example: "/path/to/foo"
+
+
+

Run Parameters

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--runRNGseedrandom number generator seed.integer, example: 777
+
+
+

Genome Parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--genomeLoadmode of shared memory usage for the genome files. Only used with –runMode alignReads. - LoadAndKeep … load genome into shared and keep it in memory after run - LoadAndRemove … load genome into shared but remove it after run - LoadAndExit … load genome into shared memory and exit, keeping the genome in memory for future runs - Remove … do not map anything, just remove loaded genome from memory - NoSharedMemory … do not use shared memory, each job will have its own private copy of the genomestring, example: "NoSharedMemory"
--genomeFastaFilespath(s) to the fasta files with the genome sequences, separated by spaces. These files should be plain text FASTA files, they cannot be zipped. Required for the genome generation (–runMode genomeGenerate). Can also be used in the mapping (–runMode alignReads) to add extra (new) sequences to the genome (e.g. spike-ins).file
--genomeFileSizesgenome files exact sizes in bytes. Typically, this should not be defined by the user.integer, example: 0
--genomeTransformOutputwhich output to transform back to original genome - SAM … SAM/BAM alignments - SJ … splice junctions (SJ.out.tab) - None … no transformation of the outputstring
--genomeChrSetMitochondrialnames of the mitochondrial chromosomes. Presently only used for STARsolo statistics output/string, example: "chrM", example: "M", example: "MT"
+
+
+

Splice Junctions Database

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--sjdbFileChrStartEndpath to the files with genomic coordinates (chr start end strand) for the splice junction introns. Multiple files can be supplied and will be concatenated.string
--sjdbGTFfilepath to the GTF file with annotationsfile
--sjdbGTFchrPrefixprefix for chromosome names in a GTF file (e.g. ‘chr’ for using ENSMEBL annotations with UCSC genomes)string
--sjdbGTFfeatureExonfeature type in GTF file to be used as exons for building transcriptsstring, example: "exon"
--sjdbGTFtagExonParentTranscriptGTF attribute name for parent transcript ID (default “transcript_id” works for GTF files)string, example: "transcript_id"
--sjdbGTFtagExonParentGeneGTF attribute name for parent gene ID (default “gene_id” works for GTF files)string, example: "gene_id"
--sjdbGTFtagExonParentGeneNameGTF attribute name for parent gene namestring, example: "gene_name"
--sjdbGTFtagExonParentGeneTypeGTF attribute name for parent gene typestring, example: "gene_type", example: "gene_biotype"
--sjdbOverhanglength of the donor/acceptor sequence on each side of the junctions, ideally = (mate_length - 1)integer, example: 100
--sjdbScoreextra alignment score for alignments that cross database junctionsinteger, example: 2
--sjdbInsertSavewhich files to save when sjdb junctions are inserted on the fly at the mapping step - Basic … only small junction / transcript files - All … all files including big Genome, SA and SAindex - this will create a complete genome directorystring, example: "Basic"
+
+
+

Variation parameters

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--varVCFfilepath to the VCF file that contains variation data. The 10th column should contain the genotype information, e.g. 0/1string
+
+
+

Read Parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--readFilesTypeformat of input read files - Fastx … FASTA or FASTQ - SAM SE … SAM or BAM single-end reads; for BAM use –readFilesCommand samtools view - SAM PE … SAM or BAM paired-end reads; for BAM use –readFilesCommand samtools viewstring, example: "Fastx"
--readFilesSAMattrKeepfor –readFilesType SAM SE/PE, which SAM tags to keep in the output BAM, e.g.: –readFilesSAMtagsKeep RG PL - All … keep all tags - None … do not keep any tagsstring, example: "All"
--readFilesManifestpath to the “manifest” file with the names of read files. The manifest file should contain 3 tab-separated columns: paired-end reads: read1_file_name \(tab\) read2_file_name \(tab\) read_group_line. single-end reads: read1_file_name \(tab\) - \(tab\) read_group_line. Spaces, but not tabs are allowed in file names. If read_group_line does not start with ID:, it can only contain one ID field, and ID: will be added to it. If read_group_line starts with ID:, it can contain several fields separated by \(tab\), and all fields will be be copied verbatim into SAM @RG header line.file
--readFilesPrefixprefix for the read files names, i.e. it will be added in front of the strings in –readFilesInstring
--readFilesCommandcommand line to execute for each of the input file. This command should generate FASTA or FASTQ text and send it to stdout For example: zcat - to uncompress .gz files, bzcat - to uncompress .bz2 files, etc.string
--readMapNumbernumber of reads to map from the beginning of the file -1: map all readsinteger, example: -1
--readMatesLengthsInEqual/NotEqual - lengths of names,sequences,qualities for both mates are the same / not the same. NotEqual is safe in all situations.string, example: "NotEqual"
--readNameSeparatorcharacter(s) separating the part of the read names that will be trimmed in output (read name after space is always trimmed)string, example: "/"
--readQualityScoreBasenumber to be subtracted from the ASCII code to get Phred quality scoreinteger, example: 33
+
+
+

Read Clipping

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--clipAdapterTypeadapter clipping type - Hamming … adapter clipping based on Hamming distance, with the number of mismatches controlled by –clip5pAdapterMMp - CellRanger4 … 5p and 3p adapter clipping similar to CellRanger4. Utilizes Opal package by Martin Sosic: https://github.com/Martinsos/opal - None … no adapter clipping, all other clip* parameters are disregardedstring, example: "Hamming"
--clip3pNbasesnumber(s) of bases to clip from 3p of each mate. If one value is given, it will be assumed the same for both mates.integer, example: 0
--clip3pAdapterSeqadapter sequences to clip from 3p of each mate. If one value is given, it will be assumed the same for both mates. - polyA … polyA sequence with the length equal to read lengthstring
--clip3pAdapterMMpmax proportion of mismatches for 3p adapter clipping for each mate. If one value is given, it will be assumed the same for both mates.double, example: 0.1
--clip3pAfterAdapterNbasesnumber of bases to clip from 3p of each mate after the adapter clipping. If one value is given, it will be assumed the same for both mates.integer, example: 0
--clip5pNbasesnumber(s) of bases to clip from 5p of each mate. If one value is given, it will be assumed the same for both mates.integer, example: 0
+
+
+

Limits

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--limitGenomeGenerateRAMmaximum available RAM (bytes) for genome generationlong, example: NA
--limitIObufferSizemax available buffers size (bytes) for input/output, per threadlong, example: 30000000, example: 50000000
--limitOutSAMoneReadBytesmax size of the SAM record (bytes) for one read. Recommended value: >(2(LengthMate1+LengthMate2+100)outFilterMultimapNmaxlong, example: 100000
--limitOutSJoneReadmax number of junctions for one read (including all multi-mappers)integer, example: 1000
--limitOutSJcollapsedmax number of collapsed junctionsinteger, example: 1000000
--limitBAMsortRAMmaximum available RAM (bytes) for sorting BAM. If =0, it will be set to the genome index size. 0 value can only be used with –genomeLoad NoSharedMemory option.long, example: 0
--limitSjdbInsertNsjmaximum number of junctions to be inserted to the genome on the fly at the mapping stage, including those from annotations and those detected in the 1st step of the 2-pass runinteger, example: 1000000
--limitNreadsSoftsoft limit on the number of readsinteger, example: -1
+
+
+

Output: general

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outTmpKeepwhether to keep the temporary files after STAR runs is finished - None … remove all temporary files - All … keep all filesstring
--outStdwhich output will be directed to stdout (standard out) - Log … log messages - SAM … alignments in SAM format (which normally are output to Aligned.out.sam file), normal standard output will go into Log.std.out - BAM_Unsorted … alignments in BAM format, unsorted. Requires –outSAMtype BAM Unsorted - BAM_SortedByCoordinate … alignments in BAM format, sorted by coordinate. Requires –outSAMtype BAM SortedByCoordinate - BAM_Quant … alignments to transcriptome in BAM format, unsorted. Requires –quantMode TranscriptomeSAMstring, example: "Log"
--outReadsUnmappedoutput of unmapped and partially mapped (i.e. mapped only one mate of a paired end read) reads in separate file(s). - None … no output - Fastx … output in separate fasta/fastq files, Unmapped.out.mate1/2string
--outQSconversionAddadd this number to the quality score (e.g. to convert from Illumina to Sanger, use -31)integer, example: 0
--outMultimapperOrderorder of multimapping alignments in the output files - Old_2.4 … quasi-random order used before 2.5.0 - Random … random order of alignments for each multi-mapper. Read mates (pairs) are always adjacent, all alignment for each read stay together. This option will become default in the future releases.string, example: "Old_2.4"
+
+
+

Output: SAM and BAM

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outSAMtypetype of SAM/BAM output 1st word: - BAM … output BAM without sorting - SAM … output SAM without sorting - None … no SAM/BAM output 2nd, 3rd: - Unsorted … standard unsorted - SortedByCoordinate … sorted by coordinate. This option will allocate extra memory for sorting which can be specified by –limitBAMsortRAM.string, example: "SAM"
--outSAMmodemode of SAM output - None … no SAM output - Full … full SAM output - NoQS … full SAM but without quality scoresstring, example: "Full"
--outSAMstrandFieldCufflinks-like strand field flag - None … not used - intronMotif … strand derived from the intron motif. This option changes the output alignments: reads with inconsistent and/or non-canonical introns are filtered out.string
--outSAMattributesa string of desired SAM attributes, in the order desired for the output SAM. Tags can be listed in any combination/order. Presets: - None … no attributes - Standard … NH HI AS nM - All … NH HI AS nM NM MD jM jI MC ch Alignment: - NH … number of loci the reads maps to: =1 for unique mappers, >1 for multimappers. Standard SAM tag. - HI … multiple alignment index, starts with –outSAMattrIHstart (=1 by default). Standard SAM tag. - AS … local alignment score, +1/-1 for matches/mismateches, score* penalties for indels and gaps. For PE reads, total score for two mates. Stadnard SAM tag. - nM … number of mismatches. For PE reads, sum over two mates. - NM … edit distance to the reference (number of mismatched + inserted + deleted bases) for each mate. Standard SAM tag. - MD … string encoding mismatched and deleted reference bases (see standard SAM specifications). Standard SAM tag. - jM … intron motifs for all junctions (i.e. N in CIGAR): 0: non-canonical; 1: GT/AG, 2: CT/AC, 3: GC/AG, 4: CT/GC, 5: AT/AC, 6: GT/AT. If splice junctions database is used, and a junction is annotated, 20 is added to its motif value. - jI … start and end of introns for all junctions (1-based). - XS … alignment strand according to –outSAMstrandField. - MC … mate’s CIGAR string. Standard SAM tag. - ch … marks all segment of all chimeric alingments for –chimOutType WithinBAM output. - cN … number of bases clipped from the read ends: 5’ and 3’ Variation: - vA … variant allele - vG … genomic coordinate of the variant overlapped by the read. - vW … 1 - alignment passes WASP filtering; 2,3,4,5,6,7 - alignment does not pass WASP filtering. Requires –waspOutputMode SAMtag. STARsolo: - CR CY UR UY … sequences and quality scores of cell barcodes and UMIs for the solo* demultiplexing. - GX GN … gene ID and gene name for unique-gene reads. - gx gn … gene IDs and gene names for unique- and multi-gene reads. - CB UB … error-corrected cell barcodes and UMIs for solo* demultiplexing. Requires –outSAMtype BAM SortedByCoordinate. - sM … assessment of CB and UMI. - sS … sequence of the entire barcode (CB,UMI,adapter). - sQ … quality of the entire barcode. ***Unsupported/undocumented: - ha … haplotype (1/2) when mapping to the diploid genome. Requires genome generated with –genomeTransformType Diploid . - rB … alignment block read/genomic coordinates. - vR … read coordinate of the variant.string, example: "Standard"
--outSAMattrIHstartstart value for the IH attribute. 0 may be required by some downstream software, such as Cufflinks or StringTie.integer, example: 1
--outSAMunmappedoutput of unmapped reads in the SAM format 1st word: - None … no output - Within … output unmapped reads within the main SAM file (i.e. Aligned.out.sam) 2nd word: - KeepPairs … record unmapped mate for each alignment, and, in case of unsorted output, keep it adjacent to its mapped mate. Only affects multi-mapping reads.string
--outSAMordertype of sorting for the SAM output Paired: one mate after the other for all paired alignments PairedKeepInputOrder: one mate after the other for all paired alignments, the order is kept the same as in the input FASTQ filesstring, example: "Paired"
--outSAMprimaryFlagwhich alignments are considered primary - all others will be marked with 0x100 bit in the FLAG - OneBestScore … only one alignment with the best score is primary - AllBestScore … all alignments with the best score are primarystring, example: "OneBestScore"
--outSAMreadIDread ID record type - Standard … first word (until space) from the FASTx read ID line, removing /1,/2 from the end - Number … read number (index) in the FASTx filestring, example: "Standard"
--outSAMmapqUnique0 to 255: the MAPQ value for unique mappersinteger, example: 255
--outSAMflagOR0 to 65535: sam FLAG will be bitwise OR’d with this value, i.e. FLAG=FLAG | outSAMflagOR. This is applied after all flags have been set by STAR, and after outSAMflagAND. Can be used to set specific bits that are not set otherwise.integer, example: 0
--outSAMflagAND0 to 65535: sam FLAG will be bitwise AND’d with this value, i.e. FLAG=FLAG & outSAMflagOR. This is applied after all flags have been set by STAR, but before outSAMflagOR. Can be used to unset specific bits that are not set otherwise.integer, example: 65535
--outSAMattrRGlineSAM/BAM read group line. The first word contains the read group identifier and must start with “ID:”, e.g. –outSAMattrRGline ID:xxx CN:yy “DS:z z z”. xxx will be added as RG tag to each output alignment. Any spaces in the tag values have to be double quoted. Comma separated RG lines correspons to different (comma separated) input files in –readFilesIn. Commas have to be surrounded by spaces, e.g. –outSAMattrRGline ID:xxx , ID:zzz “DS:z z” , ID:yyy DS:yyyystring
--outSAMheaderHD@HD (header) line of the SAM headerstring
--outSAMheaderPGextra @PG (software) line of the SAM header (in addition to STAR)string
--outSAMheaderCommentFilepath to the file with @CO (comment) lines of the SAM headerstring
--outSAMfilterfilter the output into main SAM/BAM files - KeepOnlyAddedReferences … only keep the reads for which all alignments are to the extra reference sequences added with –genomeFastaFiles at the mapping stage. - KeepAllAddedReferences … keep all alignments to the extra reference sequences added with –genomeFastaFiles at the mapping stage.string
--outSAMmultNmaxmax number of multiple alignments for a read that will be output to the SAM/BAM files. Note that if this value is not equal to -1, the top scoring alignment will be output first - -1 … all alignments (up to –outFilterMultimapNmax) will be outputinteger, example: -1
--outSAMtlencalculation method for the TLEN field in the SAM/BAM files - 1 … leftmost base of the (+)strand mate to rightmost base of the (-)mate. (+)sign for the (+)strand mate - 2 … leftmost base of any mate to rightmost base of any mate. (+)sign for the mate with the leftmost base. This is different from 1 for overlapping mates with protruding endsinteger, example: 1
--outBAMcompression-1 to 10 BAM compression level, -1=default compression (6?), 0=no compression, 10=maximum compressioninteger, example: 1
--outBAMsortingThreadN>=0: number of threads for BAM sorting. 0 will default to min(6,–runThreadN).integer, example: 0
--outBAMsortingBinsN>0: number of genome bins for coordinate-sortinginteger, example: 50
+
+
+

BAM processing

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--bamRemoveDuplicatesTypemark duplicates in the BAM file, for now only works with (i) sorted BAM fed with inputBAMfile, and (ii) for paired-end alignments only - - … no duplicate removal/marking - UniqueIdentical … mark all multimappers, and duplicate unique mappers. The coordinates, FLAG, CIGAR must be identical - UniqueIdenticalNotMulti … mark duplicate unique mappers but not multimappers.string
--bamRemoveDuplicatesMate2basesNnumber of bases from the 5’ of mate 2 to use in collapsing (e.g. for RAMPAGE)integer, example: 0
+
+
+

Output Wiggle

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outWigTypetype of signal output, e.g. “bedGraph” OR “bedGraph read1_5p”. Requires sorted BAM: –outSAMtype BAM SortedByCoordinate . 1st word: - None … no signal output - bedGraph … bedGraph format - wiggle … wiggle format 2nd word: - read1_5p … signal from only 5’ of the 1st read, useful for CAGE/RAMPAGE etc - read2 … signal from only 2nd readstring
--outWigStrandstrandedness of wiggle/bedGraph output - Stranded … separate strands, str1 and str2 - Unstranded … collapsed strandsstring, example: "Stranded"
--outWigReferencesPrefixprefix matching reference names to include in the output wiggle file, e.g. “chr”, default “-” - include all referencesstring
--outWigNormtype of normalization for the signal - RPM … reads per million of mapped reads - None … no normalization, “raw” countsstring, example: "RPM"
+
+
+

Output Filtering

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outFilterTypetype of filtering - Normal … standard filtering using only current alignment - BySJout … keep only those reads that contain junctions that passed filtering into SJ.out.tabstring, example: "Normal"
--outFilterMultimapScoreRangethe score range below the maximum score for multimapping alignmentsinteger, example: 1
--outFilterMultimapNmaxmaximum number of loci the read is allowed to map to. Alignments (all of them) will be output only if the read maps to no more loci than this value. Otherwise no alignments will be output, and the read will be counted as “mapped to too many loci” in the Log.final.out .integer, example: 10
--outFilterMismatchNmaxalignment will be output only if it has no more mismatches than this value.integer, example: 10
--outFilterMismatchNoverLmaxalignment will be output only if its ratio of mismatches to mapped length is less than or equal to this value.double, example: 0.3
--outFilterMismatchNoverReadLmaxalignment will be output only if its ratio of mismatches to read length is less than or equal to this value.double, example: 1
--outFilterScoreMinalignment will be output only if its score is higher than or equal to this value.integer, example: 0
--outFilterScoreMinOverLreadsame as outFilterScoreMin, but normalized to read length (sum of mates’ lengths for paired-end reads)double, example: 0.66
--outFilterMatchNminalignment will be output only if the number of matched bases is higher than or equal to this value.integer, example: 0
--outFilterMatchNminOverLreadsam as outFilterMatchNmin, but normalized to the read length (sum of mates’ lengths for paired-end reads).double, example: 0.66
--outFilterIntronMotifsfilter alignment using their motifs - None … no filtering - RemoveNoncanonical … filter out alignments that contain non-canonical junctions - RemoveNoncanonicalUnannotated … filter out alignments that contain non-canonical unannotated junctions when using annotated splice junctions database. The annotated non-canonical junctions will be kept.string
--outFilterIntronStrandsfilter alignments - RemoveInconsistentStrands … remove alignments that have junctions with inconsistent strands - None … no filteringstring, example: "RemoveInconsistentStrands"
+
+
+

Output splice junctions (SJ.out.tab)

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outSJtypetype of splice junction output - Standard … standard SJ.out.tab output - None … no splice junction outputstring, example: "Standard"
+
+
+

Output Filtering: Splice Junctions

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outSJfilterReadswhich reads to consider for collapsed splice junctions output - All … all reads, unique- and multi-mappers - Unique … uniquely mapping reads onlystring, example: "All"
--outSJfilterOverhangMinminimum overhang length for splice junctions on both sides for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif does not apply to annotated junctionsinteger, example: 30, example: 12, example: 12, example: 12
--outSJfilterCountUniqueMinminimum uniquely mapping read count per junction for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif Junctions are output if one of outSJfilterCountUniqueMin OR outSJfilterCountTotalMin conditions are satisfied does not apply to annotated junctionsinteger, example: 3, example: 1, example: 1, example: 1
--outSJfilterCountTotalMinminimum total (multi-mapping+unique) read count per junction for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif Junctions are output if one of outSJfilterCountUniqueMin OR outSJfilterCountTotalMin conditions are satisfied does not apply to annotated junctionsinteger, example: 3, example: 1, example: 1, example: 1
--outSJfilterDistToOtherSJminminimum allowed distance to other junctions’ donor/acceptor does not apply to annotated junctionsinteger, example: 10, example: 0, example: 5, example: 10
--outSJfilterIntronMaxVsReadNmaximum gap allowed for junctions supported by 1,2,3,,,N reads i.e. by default junctions supported by 1 read can have gaps <=50000b, by 2 reads: <=100000b, by 3 reads: <=200000. by >=4 reads any gap <=alignIntronMax does not apply to annotated junctionsinteger, example: 50000, example: 100000, example: 200000
+
+
+

Scoring

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--scoreGapsplice junction penalty (independent on intron motif)integer, example: 0
--scoreGapNoncannon-canonical junction penalty (in addition to scoreGap)integer, example: -8
--scoreGapGCAGGC/AG and CT/GC junction penalty (in addition to scoreGap)integer, example: -4
--scoreGapATACAT/AC and GT/AT junction penalty (in addition to scoreGap)integer, example: -8
--scoreGenomicLengthLog2scaleextra score logarithmically scaled with genomic length of the alignment: scoreGenomicLengthLog2scale*log2(genomicLength)integer, example: 0
--scoreDelOpendeletion open penaltyinteger, example: -2
--scoreDelBasedeletion extension penalty per base (in addition to scoreDelOpen)integer, example: -2
--scoreInsOpeninsertion open penaltyinteger, example: -2
--scoreInsBaseinsertion extension penalty per base (in addition to scoreInsOpen)integer, example: -2
--scoreStitchSJshiftmaximum score reduction while searching for SJ boundaries in the stitching stepinteger, example: 1
+
+
+

Alignments and Seeding

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--seedSearchStartLmaxdefines the search start point through the read - the read is split into pieces no longer than this valueinteger, example: 50
--seedSearchStartLmaxOverLreadseedSearchStartLmax normalized to read length (sum of mates’ lengths for paired-end reads)double, example: 1
--seedSearchLmaxdefines the maximum length of the seeds, if =0 seed length is not limitedinteger, example: 0
--seedMultimapNmaxonly pieces that map fewer than this value are utilized in the stitching procedureinteger, example: 10000
--seedPerReadNmaxmax number of seeds per readinteger, example: 1000
--seedPerWindowNmaxmax number of seeds per windowinteger, example: 50
--seedNoneLociPerWindowmax number of one seed loci per windowinteger, example: 10
--seedSplitMinmin length of the seed sequences split by Ns or mate gapinteger, example: 12
--seedMapMinmin length of seeds to be mappedinteger, example: 5
--alignIntronMinminimum intron size, genomic gap is considered intron if its length>=alignIntronMin, otherwise it is considered Deletioninteger, example: 21
--alignIntronMaxmaximum intron size, if 0, max intron size will be determined by (2^winBinNbits)*winAnchorDistNbinsinteger, example: 0
--alignMatesGapMaxmaximum gap between two mates, if 0, max intron gap will be determined by (2^winBinNbits)*winAnchorDistNbinsinteger, example: 0
--alignSJoverhangMinminimum overhang (i.e. block size) for spliced alignmentsinteger, example: 5
--alignSJstitchMismatchNmaxmaximum number of mismatches for stitching of the splice junctions (-1: no limit). (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif.integer, example: 0, example: -1, example: 0, example: 0
--alignSJDBoverhangMinminimum overhang (i.e. block size) for annotated (sjdb) spliced alignmentsinteger, example: 3
--alignSplicedMateMapLminminimum mapped length for a read mate that is splicedinteger, example: 0
--alignSplicedMateMapLminOverLmatealignSplicedMateMapLmin normalized to mate lengthdouble, example: 0.66
--alignWindowsPerReadNmaxmax number of windows per readinteger, example: 10000
--alignTranscriptsPerWindowNmaxmax number of transcripts per windowinteger, example: 100
--alignTranscriptsPerReadNmaxmax number of different alignments per read to considerinteger, example: 10000
--alignEndsTypetype of read ends alignment - Local … standard local alignment with soft-clipping allowed - EndToEnd … force end-to-end read alignment, do not soft-clip - Extend5pOfRead1 … fully extend only the 5p of the read1, all other ends: local alignment - Extend5pOfReads12 … fully extend only the 5p of the both read1 and read2, all other ends: local alignmentstring, example: "Local"
--alignEndsProtrudeallow protrusion of alignment ends, i.e. start (end) of the +strand mate downstream of the start (end) of the -strand mate 1st word: int: maximum number of protrusion bases allowed 2nd word: string: - ConcordantPair … report alignments with non-zero protrusion as concordant pairs - DiscordantPair … report alignments with non-zero protrusion as discordant pairsstring, example: "0 ConcordantPair"
--alignSoftClipAtReferenceEndsallow the soft-clipping of the alignments past the end of the chromosomes - Yes … allow - No … prohibit, useful for compatibility with Cufflinksstring, example: "Yes"
--alignInsertionFlushhow to flush ambiguous insertion positions - None … insertions are not flushed - Right … insertions are flushed to the rightstring
+
+
+

Paired-End reads

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--peOverlapNbasesMinminimum number of overlapping bases to trigger mates merging and realignment. Specify >0 value to switch on the “merginf of overlapping mates” algorithm.integer, example: 0
--peOverlapMMpmaximum proportion of mismatched bases in the overlap areadouble, example: 0.01
+
+
+

Windows, Anchors, Binning

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--winAnchorMultimapNmaxmax number of loci anchors are allowed to map tointeger, example: 50
--winBinNbits=log2(winBin), where winBin is the size of the bin for the windows/clustering, each window will occupy an integer number of bins.integer, example: 16
--winAnchorDistNbinsmax number of bins between two anchors that allows aggregation of anchors into one windowinteger, example: 9
--winFlankNbinslog2(winFlank), where win Flank is the size of the left and right flanking regions for each windowinteger, example: 4
--winReadCoverageRelativeMinminimum relative coverage of the read sequence by the seeds in a window, for STARlong algorithm only.double, example: 0.5
--winReadCoverageBasesMinminimum number of bases covered by the seeds in a window , for STARlong algorithm only.integer, example: 0
+
+
+

Chimeric Alignments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--chimOutTypetype of chimeric output - Junctions … Chimeric.out.junction - SeparateSAMold … output old SAM into separate Chimeric.out.sam file - WithinBAM … output into main aligned BAM files (Aligned.*.bam) - WithinBAM HardClip … (default) hard-clipping in the CIGAR for supplemental chimeric alignments (default if no 2nd word is present) - WithinBAM SoftClip … soft-clipping in the CIGAR for supplemental chimeric alignmentsstring, example: "Junctions"
--chimSegmentMinminimum length of chimeric segment length, if ==0, no chimeric outputinteger, example: 0
--chimScoreMinminimum total (summed) score of the chimeric segmentsinteger, example: 0
--chimScoreDropMaxmax drop (difference) of chimeric score (the sum of scores of all chimeric segments) from the read lengthinteger, example: 20
--chimScoreSeparationminimum difference (separation) between the best chimeric score and the next oneinteger, example: 10
--chimScoreJunctionNonGTAGpenalty for a non-GT/AG chimeric junctioninteger, example: -1
--chimJunctionOverhangMinminimum overhang for a chimeric junctioninteger, example: 20
--chimSegmentReadGapMaxmaximum gap in the read sequence between chimeric segmentsinteger, example: 0
--chimFilterdifferent filters for chimeric alignments - None … no filtering - banGenomicN … Ns are not allowed in the genome sequence around the chimeric junctionstring, example: "banGenomicN"
--chimMainSegmentMultNmaxmaximum number of multi-alignments for the main chimeric segment. =1 will prohibit multimapping main segments.integer, example: 10
--chimMultimapNmaxmaximum number of chimeric multi-alignments - 0 … use the old scheme for chimeric detection which only considered unique alignmentsinteger, example: 0
--chimMultimapScoreRangethe score range for multi-mapping chimeras below the best chimeric score. Only works with –chimMultimapNmax > 1integer, example: 1
--chimNonchimScoreDropMinto trigger chimeric detection, the drop in the best non-chimeric alignment score with respect to the read length has to be greater than this valueinteger, example: 20
--chimOutJunctionFormatformatting type for the Chimeric.out.junction file - 0 … no comment lines/headers - 1 … comment lines at the end of the file: command line and Nreads: total, unique/multi-mappinginteger, example: 0
+
+
+

Quantification of Annotations

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--quantModetypes of quantification requested - - … none - TranscriptomeSAM … output SAM/BAM alignments to transcriptome into a separate file - GeneCounts … count reads per genestring
--quantTranscriptomeBAMcompression-2 to 10 transcriptome BAM compression level - -2 … no BAM output - -1 … default compression (6?) - 0 … no compression - 10 … maximum compressioninteger, example: 1
--quantTranscriptomeBanprohibit various alignment type - IndelSoftclipSingleend … prohibit indels, soft clipping and single-end alignments - compatible with RSEM - Singleend … prohibit single-end alignmentsstring, example: "IndelSoftclipSingleend"
+
+
+

2-pass Mapping

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--twopassMode2-pass mapping mode. - None … 1-pass mapping - Basic … basic 2-pass mapping, with all 1st pass junctions inserted into the genome indices on the flystring
--twopass1readsNnumber of reads to process for the 1st step. Use very large number (or default -1) to map all reads in the first step.integer, example: -1
+
+
+

WASP parameters

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--waspOutputModeWASP allele-specific output type. This is re-implementation of the original WASP mappability filtering by Bryce van de Geijn, Graham McVicker, Yoav Gilad & Jonathan K Pritchard. Please cite the original WASP paper: Nature Methods 12, 1061-1063 (2015), https://www.nature.com/articles/nmeth.3582 . - SAMtag … add WASP tags to the alignments that pass WASP filteringstring
+
+
+

STARsolo (single cell RNA-seq) parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--soloTypetype of single-cell RNA-seq - CB_UMI_Simple … (a.k.a. Droplet) one UMI and one Cell Barcode of fixed length in read2, e.g. Drop-seq and 10X Chromium. - CB_UMI_Complex … multiple Cell Barcodes of varying length, one UMI of fixed length and one adapter sequence of fixed length are allowed in read2 only (e.g. inDrop, ddSeq). - CB_samTagOut … output Cell Barcode as CR and/or CB SAm tag. No UMI counting. –readFilesIn cDNA_read1 [cDNA_read2 if paired-end] CellBarcode_read . Requires –outSAMtype BAM Unsorted [and/or SortedByCoordinate] - SmartSeq … Smart-seq: each cell in a separate FASTQ (paired- or single-end), barcodes are corresponding read-groups, no UMI sequences, alignments deduplicated according to alignment start and end (after extending soft-clipped bases)string
--soloCBwhitelistfile(s) with whitelist(s) of cell barcodes. Only –soloType CB_UMI_Complex allows more than one whitelist file. - None … no whitelist: all cell barcodes are allowedstring
--soloCBstartcell barcode start baseinteger, example: 1
--soloCBlencell barcode lengthinteger, example: 16
--soloUMIstartUMI start baseinteger, example: 17
--soloUMIlenUMI lengthinteger, example: 10
--soloBarcodeReadLengthlength of the barcode read - 1 … equal to sum of soloCBlen+soloUMIlen - 0 … not defined, do not checkinteger, example: 1
--soloBarcodeMateidentifies which read mate contains the barcode (CB+UMI) sequence - 0 … barcode sequence is on separate read, which should always be the last file in the –readFilesIn listed - 1 … barcode sequence is a part of mate 1 - 2 … barcode sequence is a part of mate 2integer, example: 0
--soloCBpositionposition of Cell Barcode(s) on the barcode read. Presently only works with –soloType CB_UMI_Complex, and barcodes are assumed to be on Read2. Format for each barcode: startAnchor_startPosition_endAnchor_endPosition start(end)Anchor defines the Anchor Base for the CB: 0: read start; 1: read end; 2: adapter start; 3: adapter end start(end)Position is the 0-based position with of the CB start(end) with respect to the Anchor Base String for different barcodes are separated by space. Example: inDrop (Zilionis et al, Nat. Protocols, 2017): –soloCBposition 0_0_2_-1 3_1_3_8string
--soloUMIpositionposition of the UMI on the barcode read, same as soloCBposition Example: inDrop (Zilionis et al, Nat. Protocols, 2017): –soloCBposition 3_9_3_14string
--soloAdapterSequenceadapter sequence to anchor barcodes. Only one adapter sequence is allowed.string
--soloAdapterMismatchesNmaxmaximum number of mismatches allowed in adapter sequence.integer, example: 1
--soloCBmatchWLtypematching the Cell Barcodes to the WhiteList - Exact … only exact matches allowed - 1MM … only one match in whitelist with 1 mismatched base allowed. Allowed CBs have to have at least one read with exact match. - 1MM_multi … multiple matches in whitelist with 1 mismatched base allowed, posterior probability calculation is used choose one of the matches. Allowed CBs have to have at least one read with exact match. This option matches best with CellRanger 2.2.0 - 1MM_multi_pseudocounts … same as 1MM_Multi, but pseudocounts of 1 are added to all whitelist barcodes. - 1MM_multi_Nbase_pseudocounts … same as 1MM_multi_pseudocounts, multimatching to WL is allowed for CBs with N-bases. This option matches best with CellRanger >= 3.0.0 - EditDist_2 … allow up to edit distance of 3 fpr each of the barcodes. May include one deletion + one insertion. Only works with –soloType CB_UMI_Complex. Matches to multiple passlist barcdoes are not allowed. Similar to ParseBio Split-seq pipeline.string, example: "1MM_multi"
--soloInputSAMattrBarcodeSeqwhen inputting reads from a SAM file (–readsFileType SAM SE/PE), these SAM attributes mark the barcode sequence (in proper order). For instance, for 10X CellRanger or STARsolo BAMs, use –soloInputSAMattrBarcodeSeq CR UR . This parameter is required when running STARsolo with input from SAM.string
--soloInputSAMattrBarcodeQualwhen inputting reads from a SAM file (–readsFileType SAM SE/PE), these SAM attributes mark the barcode qualities (in proper order). For instance, for 10X CellRanger or STARsolo BAMs, use –soloInputSAMattrBarcodeQual CY UY . If this parameter is ‘-’ (default), the quality ‘H’ will be assigned to all bases.string
--soloStrandstrandedness of the solo libraries: - Unstranded … no strand information - Forward … read strand same as the original RNA molecule - Reverse … read strand opposite to the original RNA moleculestring, example: "Forward"
--soloFeaturesgenomic features for which the UMI counts per Cell Barcode are collected - Gene … genes: reads match the gene transcript - SJ … splice junctions: reported in SJ.out.tab - GeneFull … full gene (pre-mRNA): count all reads overlapping genes’ exons and introns - GeneFull_ExonOverIntron … full gene (pre-mRNA): count all reads overlapping genes’ exons and introns: prioritize 100% overlap with exons - GeneFull_Ex50pAS … full gene (pre-RNA): count all reads overlapping genes’ exons and introns: prioritize >50% overlap with exons. Do not count reads with 100% exonic overlap in the antisense direction.string, example: "Gene"
--soloMultiMapperscounting method for reads mapping to multiple genes - Unique … count only reads that map to unique genes - Uniform … uniformly distribute multi-genic UMIs to all genes - Rescue … distribute UMIs proportionally to unique+uniform counts (~ first iteration of EM) - PropUnique … distribute UMIs proportionally to unique mappers, if present, and uniformly if not. - EM … multi-gene UMIs are distributed using Expectation Maximization algorithmstring, example: "Unique"
--soloUMIdeduptype of UMI deduplication (collapsing) algorithm - 1MM_All … all UMIs with 1 mismatch distance to each other are collapsed (i.e. counted once). - 1MM_Directional_UMItools … follows the “directional” method from the UMI-tools by Smith, Heger and Sudbery (Genome Research 2017). - 1MM_Directional … same as 1MM_Directional_UMItools, but with more stringent criteria for duplicate UMIs - Exact … only exactly matching UMIs are collapsed. - NoDedup … no deduplication of UMIs, count all reads. - 1MM_CR … CellRanger2-4 algorithm for 1MM UMI collapsing.string, example: "1MM_All"
--soloUMIfilteringtype of UMI filtering (for reads uniquely mapping to genes) - - … basic filtering: remove UMIs with N and homopolymers (similar to CellRanger 2.2.0). - MultiGeneUMI … basic + remove lower-count UMIs that map to more than one gene. - MultiGeneUMI_All … basic + remove all UMIs that map to more than one gene. - MultiGeneUMI_CR … basic + remove lower-count UMIs that map to more than one gene, matching CellRanger > 3.0.0 . Only works with –soloUMIdedup 1MM_CRstring
--soloOutFileNamesfile names for STARsolo output: file_name_prefix gene_names barcode_sequences cell_feature_count_matrixstring, example: "Solo.out/", example: "features.tsv", example: "barcodes.tsv", example: "matrix.mtx"
--soloCellFiltercell filtering type and parameters - None … do not output filtered cells - TopCells … only report top cells by UMI count, followed by the exact number of cells - CellRanger2.2 … simple filtering of CellRanger 2.2. Can be followed by numbers: number of expected cells, robust maximum percentile for UMI count, maximum to minimum ratio for UMI count The harcoded values are from CellRanger: nExpectedCells=3000; maxPercentile=0.99; maxMinRatio=10 - EmptyDrops_CR … EmptyDrops filtering in CellRanger flavor. Please cite the original EmptyDrops paper: A.T.L Lun et al, Genome Biology, 20, 63 (2019): https://genomebiology.biomedcentral.com/articles/10.1186/s13059-019-1662-y Can be followed by 10 numeric parameters: nExpectedCells maxPercentile maxMinRatio indMin indMax umiMin umiMinFracMedian candMaxN FDR simN The harcoded values are from CellRanger: 3000 0.99 10 45000 90000 500 0.01 20000 0.01 10000string, example: "CellRanger2.2", example: "3000", example: "0.99", example: "10"
--soloOutFormatFeaturesGeneField3field 3 in the Gene features.tsv file. If “-”, then no 3rd field is output.string, example: "Gene Expression"
--soloCellReadStatsOutput reads statistics for each CB - Standard … standard outputstring
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/mapping/star_build_reference.html b/pr-preview/pr-51/components/modules/mapping/star_build_reference.html new file mode 100644 index 00000000..cea8d244 --- /dev/null +++ b/pr-preview/pr-51/components/modules/mapping/star_build_reference.html @@ -0,0 +1,1650 @@ + + + + + + + + + + +OpenPipelines - Star build reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Star build reference

+
+ +
+
+ Create a reference for STAR from a set of fasta files. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: star_build_reference
+Namespace: mapping

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/mapping/star_build_reference/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Input/Output
+genome_fasta: # please fill in - example: ["chr1.fasta", "chr2.fasta"]
+# transcriptome_gtf: "path/to/file"
+# output: "$id.$key.output.output"
+
+# Genome indexing arguments
+genomeSAindexNbases: 14
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/mapping/star_build_reference/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Input/Output

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--genome_fastaThe fasta files to be included in the reference. Corresponds to the –genomeFastaFiles argument in the STAR command.file, required, example: "chr1.fasta", example: "chr2.fasta"
--transcriptome_gtfSpecifies the path to the file with annotated transcripts in the standard GTF format. STAR will extract splice junctions from this file and use them to greatly improve accuracy of the mapping. Corresponds to the –sjdbGTFfile argument in the STAR command.file
--outputPath to output directory. Corresponds to the –genomeDir argument in the STAR command.file, required, example: "/path/to/foo"
+
+
+

Genome indexing arguments

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--genomeSAindexNbasesLength (bases) of the SA pre-indexing string. Typically between 10 and 15. Longer strings will use much more memory, but allow faster searches. For small genomes, the parameter {genomeSAindexNbases must be scaled down to min(14, log2(GenomeLength)/2 - 1).integer, default: 14
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/metadata/add_id.html b/pr-preview/pr-51/components/modules/metadata/add_id.html new file mode 100644 index 00000000..a5efb307 --- /dev/null +++ b/pr-preview/pr-51/components/modules/metadata/add_id.html @@ -0,0 +1,1642 @@ + + + + + + + + + + +OpenPipelines - Add id + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Add id

+
+ +
+
+ Add id of .obs. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: add_id
+Namespace: metadata

+
+ +

Also allows to make .obs_names (the .obs index) unique by prefixing the values with an unique id per .h5mu file

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/metadata/add_id/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "sample_path"
+input_id: # please fill in - example: "foo"
+obs_output: "sample_id"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+make_observation_keys_unique: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/metadata/add_id/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputPath to the input .h5mu.file, required, example: "sample_path"
--input_idThe input id.string, required
--obs_outputName of the .obs column where to store the id.string, default: "sample_id"
--outputfile, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--make_observation_keys_uniqueJoin the id to the .obs index (.obs_names).boolean_true
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/metadata/join_csv.html b/pr-preview/pr-51/components/modules/metadata/join_csv.html new file mode 100644 index 00000000..60a36fcd --- /dev/null +++ b/pr-preview/pr-51/components/modules/metadata/join_csv.html @@ -0,0 +1,1695 @@ + + + + + + + + + + +OpenPipelines - Join csv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Join csv

+
+ +
+
+ Join a csv containing metadata to the .obs or .var field of a mudata file. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: join_csv
+Namespace: metadata

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/metadata/join_csv/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# MuData Input
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+# obs_key: "foo"
+# var_key: "foo"
+
+# MuData Output
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Metadata Input
+input_csv: # please fill in - example: "metadata.csv"
+csv_key: "id"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/metadata/join_csv/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

MuData Input

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--obs_keyObs column name where the sample id can be found for each observation to join on. Useful when adding metadata to concatenated samples. Mutually exclusive with --var_key.”string
--var_keyVar column name where the sample id can be found for each variable to join on. Mutually exclusive with --obs_key.”string
+
+
+

MuData Output

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput h5mu file.file, required, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
+
+
+

Metadata Input

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--input_csv.csv file containing metadatafile, required, example: "metadata.csv"
--csv_keycolumn of the the csv that corresponds to the sample id.string, default: "id"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/metadata/join_uns_to_obs.html b/pr-preview/pr-51/components/modules/metadata/join_uns_to_obs.html new file mode 100644 index 00000000..f137f0f6 --- /dev/null +++ b/pr-preview/pr-51/components/modules/metadata/join_uns_to_obs.html @@ -0,0 +1,1627 @@ + + + + + + + + + + +OpenPipelines - Join uns to obs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Join uns to obs

+
+ +
+
+ Join a data frame of length 1 (1 row index value) in .uns containing metadata to the .obs of a mudata file. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: join_uns_to_obs
+Namespace: metadata

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/metadata/join_uns_to_obs/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+uns_key: # please fill in - example: "foo"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/metadata/join_uns_to_obs/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--uns_keystring, required
--outputOutput h5mu file.file, required, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
+ + +
+
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/metadata/move_obsm_to_obs.html b/pr-preview/pr-51/components/modules/metadata/move_obsm_to_obs.html new file mode 100644 index 00000000..698bee2d --- /dev/null +++ b/pr-preview/pr-51/components/modules/metadata/move_obsm_to_obs.html @@ -0,0 +1,1657 @@ + + + + + + + + + + +OpenPipelines - Move obsm to obs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Move obsm to obs

+
+ +
+
+ Move a matrix from .obsm to .obs. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: move_obsm_to_obs
+Namespace: metadata

+
+ +

Newly created columns in .obs will be created from the .obsm key suffixed with an underscore and the name of the columns of the specified .obsm matrix

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/metadata/move_obsm_to_obs/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# MuData Input
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+obsm_key: # please fill in - example: "foo"
+
+# MuData Output
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/metadata/move_obsm_to_obs/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

MuData Input

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--obsm_keyKey of a data structure to move from .obsm to .obs.string, required
+
+
+

MuData Output

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput h5mu file.file, required, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/neighbors/bbknn.html b/pr-preview/pr-51/components/modules/neighbors/bbknn.html new file mode 100644 index 00000000..350c2fcd --- /dev/null +++ b/pr-preview/pr-51/components/modules/neighbors/bbknn.html @@ -0,0 +1,1678 @@ + + + + + + + + + + +OpenPipelines - Bbknn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Bbknn

+
+ +
+
+ BBKNN network generation +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: bbknn
+Namespace: neighbors

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/neighbors/bbknn/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "path/to/file"
+modality: "rna"
+obsm_input: "X_pca"
+obs_batch: "batch"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+uns_output: "neighbors"
+obsp_distances: "distances"
+obsp_connectivities: "connectivities"
+n_neighbors_within_batch: 3
+n_pcs: 50
+# n_trim: 123
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/neighbors/bbknn/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required
--modalitystring, default: "rna"
--obsm_inputThe dimensionality reduction in .obsm to use for neighbour detection. Defaults to X_pca.string, default: "X_pca"
--obs_batch.obs column name discriminating between your batches.string, default: "batch"
--outputOutput .h5mu file.file, required, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--uns_outputMandatory .uns slot to store various neighbor output objects.string, default: "neighbors"
--obsp_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "distances"
--obsp_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "connectivities"
--n_neighbors_within_batchHow many top neighbours to report for each batch; total number of neighbours in the initial k-nearest-neighbours computation will be this number times the number of batches.integer, default: 3
--n_pcsHow many dimensions (in case of PCA, principal components) to use in the analysis.integer, default: 50
--n_trimTrim the neighbours of each cell to these many top connectivities. May help with population independence and improve the tidiness of clustering. The lower the value the more independent the individual populations, at the cost of more conserved batch effect. If None (default), sets the parameter value automatically to 10 times neighbors_within_batch times the number of batches. Set to 0 to skip.integer
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (author)

  • +
  • Dries Schaumont (maintainer)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/neighbors/find_neighbors.html b/pr-preview/pr-51/components/modules/neighbors/find_neighbors.html new file mode 100644 index 00000000..806ecde1 --- /dev/null +++ b/pr-preview/pr-51/components/modules/neighbors/find_neighbors.html @@ -0,0 +1,1673 @@ + + + + + + + + + + +OpenPipelines - Find neighbors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Find neighbors

+
+ +
+
+ Compute a neighborhood graph of observations [McInnes18]. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: find_neighbors
+Namespace: neighbors

+
+ +

The neighbor search efficiency of this heavily relies on UMAP [McInnes18], which also provides a method for estimating connectivities of data points - the connectivity of the manifold (method==‘umap’). If method==‘gauss’, connectivities are computed according to [Coifman05], in the adaption of [Haghverdi16].

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/neighbors/find_neighbors/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+obsm_input: "X_pca"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+uns_output: "neighbors"
+obsp_distances: "distances"
+obsp_connectivities: "connectivities"
+metric: "euclidean"
+num_neighbors: 15
+seed: 0
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/neighbors/find_neighbors/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--obsm_inputWhich .obsm slot to use as a starting PCA embedding.string, default: "X_pca"
--outputOutput h5mu file containing the found neighbors.file, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--uns_outputMandatory .uns slot to store various neighbor output objects.string, default: "neighbors"
--obsp_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "distances"
--obsp_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "connectivities"
--metricThe distance metric to be used in the generation of the nearest neighborhood network.string, default: "euclidean"
--num_neighborsThe size of local neighborhood (in terms of number of neighboring data points) used for manifold approximation. Larger values result in more global views of the manifold, while smaller values result in more local data being preserved. In general values should be in the range 2 to 100. If knn is True, number of nearest neighbors to be searched. If knn is False, a Gaussian kernel width is set to the distance of the n_neighbors neighbor.integer, default: 15
--seedA random seed.integer, default: 0
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (maintainer)

  • +
  • Robrecht Cannoodt (contributor)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/process_10xh5/filter_10xh5.html b/pr-preview/pr-51/components/modules/process_10xh5/filter_10xh5.html new file mode 100644 index 00000000..aadfde9f --- /dev/null +++ b/pr-preview/pr-51/components/modules/process_10xh5/filter_10xh5.html @@ -0,0 +1,1641 @@ + + + + + + + + + + +OpenPipelines - Filter 10xh5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Filter 10xh5

+
+ +
+
+ Filter a 10x h5 dataset +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: filter_10xh5
+Namespace: process_10xh5

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/process_10xh5/filter_10xh5/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "pbmc_1k_protein_v3_raw_feature_bc_matrix.h5"
+# output: "$id.$key.output.h5"
+min_library_size: 0
+min_cells_per_gene: 0
+# keep_feature_types: ["Antibody Capture"]
+verbose: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/process_10xh5/filter_10xh5/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputAn h5 file from the 10x genomics website.file, required, example: "pbmc_1k_protein_v3_raw_feature_bc_matrix.h5"
--outputOutput h5 file.file, required, example: "pbmc_1k_protein_v3_raw_feature_bc_matrix_filtered.h5"
--min_library_sizeMinimum library size.integer, default: 0
--min_cells_per_geneMinimum number of cells per gene.integer, default: 0
--keep_feature_typesSpecify which feature types will never be filtered outstring, example: "Antibody Capture"
--verboseIncrease verbosityboolean_true
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/qc/calculate_qc_metrics.html b/pr-preview/pr-51/components/modules/qc/calculate_qc_metrics.html new file mode 100644 index 00000000..dcbf0b17 --- /dev/null +++ b/pr-preview/pr-51/components/modules/qc/calculate_qc_metrics.html @@ -0,0 +1,1677 @@ + + + + + + + + + + +OpenPipelines - Calculate qc metrics + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Calculate qc metrics

+
+ +
+
+ Add basic quality control metrics to an .h5mu file. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: calculate_qc_metrics
+Namespace: qc

+
+ +

The metrics are comparable to what scanpy.pp.calculate_qc_metrics output, although they have slightly different names:

+

Var metrics (name in this component -> name in scanpy): - pct_dropout -> pct_dropout_by_{expr_type} - num_nonzero_obs -> n_cells_by_{expr_type} - obs_mean -> mean_{expr_type} - total_counts -> total_{expr_type}

+

Obs metrics: - num_nonzero_vars -> n_genes_by_{expr_type} - pct_{var_qc_metrics]} -> pct_{expr_type}{qc_var} - total_counts{var_qc_metrics} -> total_{expr_type}{qc_var} - pct_of_counts_in_top{top_n_vars}vars -> pct{expr_type}in_top{n}{var_type} - total_counts -> total{expr_type}

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/qc/calculate_qc_metrics/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+# layer: "raw_counts"
+# var_qc_metrics: ["ercc", "highly_variable", "mitochondrial"]
+# var_qc_metrics_fill_na_value: true
+# top_n_vars: [123]
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/qc/calculate_qc_metrics/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--layerstring, example: "raw_counts"
--var_qc_metricsKeys to select a boolean (containing only True or False) column from .var. For each cell, calculate the proportion of total values for genes which are labeled ‘True’, compared to the total sum of the values for all genes.string, example: "ercc,highly_variable,mitochondrial"
--var_qc_metrics_fill_na_valueFill any ‘NA’ values found in the columns specified with –var_qc_metrics to ‘True’ or ‘False’. as False.boolean
--top_n_varsNumber of top vars to be used to calculate cumulative proportions. If not specified, proportions are not calculated. --top_n_vars 20,50 finds cumulative proportion to the 20th and 50th most expressed vars.integer
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput h5mu file.file, example: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/qc/fastqc.html b/pr-preview/pr-51/components/modules/qc/fastqc.html new file mode 100644 index 00000000..52b0efd7 --- /dev/null +++ b/pr-preview/pr-51/components/modules/qc/fastqc.html @@ -0,0 +1,1622 @@ + + + + + + + + + + +OpenPipelines - Fastqc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Fastqc

+
+ +
+
+ Fastqc component, please see https://www.bioinformatics.babraham.ac.uk/projects/fastqc/. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: fastqc
+Namespace: qc

+
+ +

This component can take one or more files (by means of shell globbing) or a complete directory

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/qc/fastqc/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+mode: "files"
+input: # please fill in - example: "fastq_dir/"
+# output: "$id.$key.output.output"
+# threads: 123
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/qc/fastqc/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--modeThe mode in which the component works. Can be either files or dir.string, default: "files"
--inputDirectory containing input fastq files.file, required, example: "fastq_dir"
--outputOutput directory to write reports to.file, required, example: "qc"
--threadsSpecifies the number of files which can be processed simultaneously. Each thread will be allocated 250MB of memory.integer
+ + +
+
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/qc/multiqc.html b/pr-preview/pr-51/components/modules/qc/multiqc.html new file mode 100644 index 00000000..3fd4b07e --- /dev/null +++ b/pr-preview/pr-51/components/modules/qc/multiqc.html @@ -0,0 +1,1610 @@ + + + + + + + + + + +OpenPipelines - Multiqc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Multiqc

+
+ +
+
+ MultiQC aggregates results from bioinformatics analyses across many samples into a single report. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: multiqc
+Namespace: qc

+
+ +

It searches a given directory for analysis logs and compiles a HTML report. It’s a general use tool, perfect for summarising the output from numerous bioinformatics tools

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/qc/multiqc/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: ["input.txt"]
+# output: "$id.$key.output.output"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/qc/multiqc/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInputs for MultiQC.file, required, example: "input.txt"
--outputCreate report in the specified output directory.file, required, example: "report"
+ + +
+
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/query/cellxgene_census.html b/pr-preview/pr-51/components/modules/query/cellxgene_census.html new file mode 100644 index 00000000..58b5dc71 --- /dev/null +++ b/pr-preview/pr-51/components/modules/query/cellxgene_census.html @@ -0,0 +1,1705 @@ + + + + + + + + + + +OpenPipelines - Cellxgene census + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Cellxgene census

+
+ +
+
+ Query CellxGene Census or user-specified TileDBSoma object, and eventually fetch cell and gene metadata or/and expression counts. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: cellxgene_census
+Namespace: query

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/query/cellxgene_census/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input_database: "CellxGene"
+modality: "rna"
+cellxgene_release: "2023-05-15"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Query
+species: "homo_sapiens"
+# cell_query: "is_primary_data == True and cell_type_ontology_term_id in ['CL:0000136', 'CL:1000311', 'CL:0002616'] and suspension_type == 'cell'"
+# cells_filter_columns: ["dataset_id", "tissue", "assay", "disease", "cell_type"]
+# min_cells_filter_columns: 100
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/query/cellxgene_census/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+

Arguments related to the input (aka query) dataset.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--input_databaseFull input database S3 prefix URL. Default: CellxGene Censusstring, default: "CellxGene", example: "s3://"
--modalityWhich modality to store the output in.string, default: "rna"
--cellxgene_releaseCellxGene Census release date. More information: https://chanzuckerberg.github.io/cellxgene-census/cellxgene_census_docsite_data_release_info.htmlstring, default: "2023-05-15"
+
+
+

Query

+

Arguments related to the query.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--speciesSpecie(s) of interest. If not specified, Homo Sapiens will be queried.string, default: "homo_sapiens", example: "homo_sapiens"
--cell_queryThe query for selecting the cells as defined by the cellxgene census schema.string, example: "is_primary_data == True and cell_type_ontology_term_id in ['CL:0000136', 'CL:1000311', 'CL:0002616'] and suspension_type == 'cell'"
--cells_filter_columnsThe query for selecting the cells as defined by the cellxgene census schema.string, example: "dataset_id", example: "tissue", example: "assay", example: "disease", example: "cell_type"
--min_cells_filter_columnsMinimum of amount of summed cells_filter_columns cellsdouble, example: 100
+
+
+

Outputs

+

Output arguments.

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput h5mu file.file, required, example: "output.h5mu"
--output_compressionstring, example: "gzip"
+
+
+
+

Authors

+
    +
  • Matthias Beyens

  • +
  • Dries De Maeyer (author)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/reference/build_bdrhap_reference.html b/pr-preview/pr-51/components/modules/reference/build_bdrhap_reference.html new file mode 100644 index 00000000..b5981d9d --- /dev/null +++ b/pr-preview/pr-51/components/modules/reference/build_bdrhap_reference.html @@ -0,0 +1,1624 @@ + + + + + + + + + + +OpenPipelines - Build bdrhap reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Build bdrhap reference

+
+ +
+
+ Compile a reference into a STAR index compatible with the BD Rhapsody pipeline. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: build_bdrhap_reference
+Namespace: reference

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/reference/build_bdrhap_reference/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+genome_fasta: # please fill in - example: "genome_sequence.fa.gz"
+transcriptome_gtf: # please fill in - example: "transcriptome_annotation.gtf.gz"
+# output: "$id.$key.output.gz"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/reference/build_bdrhap_reference/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--genome_fastaReference genome fasta.file, required, example: "genome_sequence.fa.gz"
--transcriptome_gtfReference transcriptome annotation.file, required, example: "transcriptome_annotation.gtf.gz"
--outputStar indexfile, required, example: "star_index.tar.gz"
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/reference/build_cellranger_reference.html b/pr-preview/pr-51/components/modules/reference/build_cellranger_reference.html new file mode 100644 index 00000000..a4c656ef --- /dev/null +++ b/pr-preview/pr-51/components/modules/reference/build_cellranger_reference.html @@ -0,0 +1,1625 @@ + + + + + + + + + + +OpenPipelines - Build cellranger reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Build cellranger reference

+
+ +
+
+ Build a Cell Ranger-compatible reference folder from user-supplied genome FASTA and gene GTF files. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: build_cellranger_reference
+Namespace: reference

+
+ +

Creates a new folder named after the genome.

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/reference/build_cellranger_reference/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+genome_fasta: # please fill in - example: "genome_sequence.fa.gz"
+transcriptome_gtf: # please fill in - example: "transcriptome_annotation.gtf.gz"
+# output: "$id.$key.output.output"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/reference/build_cellranger_reference/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--genome_fastaReference genome fasta.file, required, example: "genome_sequence.fa.gz"
--transcriptome_gtfReference transcriptome annotation.file, required, example: "transcriptome_annotation.gtf.gz"
--outputOutput folderfile, required, example: "cellranger_reference"
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/reference/make_reference.html b/pr-preview/pr-51/components/modules/reference/make_reference.html new file mode 100644 index 00000000..5a332659 --- /dev/null +++ b/pr-preview/pr-51/components/modules/reference/make_reference.html @@ -0,0 +1,1643 @@ + + + + + + + + + + +OpenPipelines - Make reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Make reference

+
+ +
+
+ Preprocess and build a transcriptome reference. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: make_reference
+Namespace: reference

+
+ +

Example input files are: - genome_fasta: https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/GRCh38.primary_assembly.genome.fa.gz - transcriptome_gtf: https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/gencode.v41.annotation.gtf.gz - ercc: https://assets.thermofisher.com/TFS-Assets/LSG/manuals/ERCC92.zip

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/reference/make_reference/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+genome_fasta: # please fill in - example: "genome_fasta.fa.gz"
+transcriptome_gtf: # please fill in - example: "transcriptome.gtf.gz"
+# ercc: "ercc.zip"
+# subset_regex: "(ERCC-00002|chr1)"
+# output_fasta: "$id.$key.output_fasta.gz"
+# output_gtf: "$id.$key.output_gtf.gz"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/reference/make_reference/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--genome_fastaReference genome fasta. Example:file, required, example: "genome_fasta.fa.gz"
--transcriptome_gtfReference transcriptome annotation.file, required, example: "transcriptome.gtf.gz"
--erccERCC sequence and annotation file.file, example: "ercc.zip"
--subset_regexWill subset the reference chromosomes using the given regex.string, example: "(ERCC-00002&#124;chr1)"
--output_fastaOutput genome sequence fasta.file, required, example: "genome_sequence.fa.gz"
--output_gtfOutput transcriptome annotation gtf.file, required, example: "transcriptome_annotation.gtf.gz"
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/report/mermaid.html b/pr-preview/pr-51/components/modules/report/mermaid.html new file mode 100644 index 00000000..12179c06 --- /dev/null +++ b/pr-preview/pr-51/components/modules/report/mermaid.html @@ -0,0 +1,1641 @@ + + + + + + + + + + +OpenPipelines - Mermaid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Mermaid

+
+ +
+
+ Generates a network from mermaid code +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: mermaid
+Namespace: report

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/report/mermaid/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "path/to/file"
+# output: "$id.$key.output.output"
+# output_format: "foo"
+width: 800
+height: 600
+background_color: "white"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/report/mermaid/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput directoryfile, required
--outputGenerated network as output.file, required
--output_formatOutput format for the generated image. By default will be inferred from the extension of the file specified with –output.string
--widthWidth of the pageinteger, default: 800
--heightHeight of the pageinteger, default: 600
--background_colorBackground color for pngs/svgs (not pdfs)string, default: "white", example: "#F0F0F0"
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/transfer/publish.html b/pr-preview/pr-51/components/modules/transfer/publish.html new file mode 100644 index 00000000..cd90eaac --- /dev/null +++ b/pr-preview/pr-51/components/modules/transfer/publish.html @@ -0,0 +1,1612 @@ + + + + + + + + + + +OpenPipelines - Publish + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Publish

+
+ +
+
+ Publish an artifact and optionally rename with parameters +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: publish
+Namespace: transfer

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/transfer/publish/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "path/to/file"
+# output: "$id.$key.output.output"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/transfer/publish/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput filenamefile, required
--outputOutput filenamefile, required
+
+
+
+

Authors

+
    +
  • Toni Verbeiren (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/transform/clr.html b/pr-preview/pr-51/components/modules/transform/clr.html new file mode 100644 index 00000000..1a4fbaa6 --- /dev/null +++ b/pr-preview/pr-51/components/modules/transform/clr.html @@ -0,0 +1,1635 @@ + + + + + + + + + + +OpenPipelines - Clr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Clr

+
+ +
+
+ Perform CLR normalization on CITE-seq data (Stoeckius et al., 2017) +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: clr
+Namespace: transform

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/transform/clr/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "prot"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+# output_layer: "foo"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/transform/clr/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "prot"
--outputOutput h5mu file.file, required, default: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--output_layerOutput layer to use. By default, use X.string
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/transform/delete_layer.html b/pr-preview/pr-51/components/modules/transform/delete_layer.html new file mode 100644 index 00000000..36e91b63 --- /dev/null +++ b/pr-preview/pr-51/components/modules/transform/delete_layer.html @@ -0,0 +1,1641 @@ + + + + + + + + + + +OpenPipelines - Delete layer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Delete layer

+
+ +
+
+ Delete an anndata layer from one or more modalities +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: delete_layer
+Namespace: transform

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/transform/delete_layer/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+layer: # please fill in - example: ["foo"]
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+missing_ok: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/transform/delete_layer/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--layerInput layer to removestring, required
--outputOutput h5mu file.file, required, default: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--missing_okDo not raise an error if the layer does not exist for all modalities.boolean_true
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/transform/log1p.html b/pr-preview/pr-51/components/modules/transform/log1p.html new file mode 100644 index 00000000..2278cd71 --- /dev/null +++ b/pr-preview/pr-51/components/modules/transform/log1p.html @@ -0,0 +1,1649 @@ + + + + + + + + + + +OpenPipelines - Log1p + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Log1p

+
+ +
+
+ Logarithmize the data matrix. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: log1p
+Namespace: transform

+
+ +

Computes X = log(X + 1), where log denotes the natural logarithm unless a different base is given

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/transform/log1p/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+# input_layer: "foo"
+# output_layer: "foo"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+# base: 2
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/transform/log1p/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--input_layerInput layer to use. If None, X is normalizedstring
--output_layerOutput layer to use. By default, use X.string
--outputOutput h5mu file.file, required, default: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--basedouble, example: 2
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (maintainer)

  • +
  • Robrecht Cannoodt (contributor)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/transform/normalize_total.html b/pr-preview/pr-51/components/modules/transform/normalize_total.html new file mode 100644 index 00000000..1c898bea --- /dev/null +++ b/pr-preview/pr-51/components/modules/transform/normalize_total.html @@ -0,0 +1,1656 @@ + + + + + + + + + + +OpenPipelines - Normalize total + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Normalize total

+
+ +
+
+ Normalize counts per cell. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: normalize_total
+Namespace: transform

+
+ +

Normalize each cell by total counts over all genes, so that every cell has the same total count after normalization. If choosing target_sum=1e6, this is CPM normalization.

+

If exclude_highly_expressed=True, very highly expressed genes are excluded from the computation of the normalization factor (size factor) for each cell. This is meaningful as these can strongly influence the resulting normalized values for all other genes [Weinreb17].

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/transform/normalize_total/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+# input_layer: "foo"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+# output_layer: "foo"
+target_sum: 10000
+exclude_highly_expressed: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/transform/normalize_total/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--modalitystring, default: "rna"
--input_layerInput layer to use. By default, X is normalizedstring
--outputOutput h5mu file.file, required, default: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--output_layerOutput layer to use. By default, use X.string
--target_sumIf None, after normalization, each observation (cell) has a total count equal to the median of total counts for observations (cells) before normalization.integer, default: 10000
--exclude_highly_expressedExclude (very) highly expressed genes for the computation of the normalization factor (size factor) for each cell. A gene is considered highly expressed, if it has more than max_fraction of the total counts in at least one cell. The not-excluded genes will sum up to target_sum.boolean_true
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (maintainer)

  • +
  • Robrecht Cannoodt (contributor)

  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/transform/regress_out.html b/pr-preview/pr-51/components/modules/transform/regress_out.html new file mode 100644 index 00000000..eee07590 --- /dev/null +++ b/pr-preview/pr-51/components/modules/transform/regress_out.html @@ -0,0 +1,1636 @@ + + + + + + + + + + +OpenPipelines - Regress out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Regress out

+
+ +
+
+ Regress out (mostly) unwanted sources of variation. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: regress_out
+Namespace: transform

+
+ +

Uses simple linear regression. This is inspired by Seurat’s regressOut function in R [Satija15]. Note that this function tends to overcorrect in certain circumstances as described in issue theislab/scanpy#526. See https://github.com/theislab/scanpy/issues/526

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/transform/regress_out/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+modality: "rna"
+# obs_keys: ["foo"]
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/transform/regress_out/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu filefile, required, example: "input.h5mu"
--outputOutput h5mu file.file, required, default: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
--modalityWhich modality (one or more) to run this component on.string, default: "rna"
--obs_keysWhich .obs keys to regress on.string
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (maintainer, contributor)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/transform/scale.html b/pr-preview/pr-51/components/modules/transform/scale.html new file mode 100644 index 00000000..400ee66f --- /dev/null +++ b/pr-preview/pr-51/components/modules/transform/scale.html @@ -0,0 +1,1641 @@ + + + + + + + + + + +OpenPipelines - Scale + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Scale

+
+ +
+
+ Scale data to unit variance and zero mean +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: scale
+Namespace: transform

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/transform/scale/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "input.h5mu"
+modality: "rna"
+# max_value: 123.0
+zero_center: true
+# output: "$id.$key.output.h5mu"
+# output_compression: "gzip"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/transform/scale/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputInput h5mu file.file, required, example: "input.h5mu"
--modalityList of modalities to process.string, default: "rna"
--max_valueClip (truncate) to this value after scaling. Does not clip by default.double
--zero_centerIf False, omit zero-centering variables, which allows to handle sparse input efficiently.boolean, default: TRUE
--outputOutput h5mu file.file, required, default: "output.h5mu"
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/velocity/scvelo.html b/pr-preview/pr-51/components/modules/velocity/scvelo.html new file mode 100644 index 00000000..3fa39a54 --- /dev/null +++ b/pr-preview/pr-51/components/modules/velocity/scvelo.html @@ -0,0 +1,1737 @@ + + + + + + + + + +OpenPipelines - Scvelo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Scvelo

+
+ + + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: scvelo
+Namespace: velocity

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/velocity/scvelo/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+input: # please fill in - example: "path/to/file"
+
+# Outputs
+# output: "$id.$key.output.output"
+# output_compression: "gzip"
+
+# Filtering and normalization
+# min_counts: 123
+# min_counts_u: 123
+# min_cells: 123
+# min_cells_u: 123
+# min_shared_counts: 123
+# min_shared_cells: 123
+# n_top_genes: 123
+log_transform: true
+
+# Fitting parameters
+# n_principal_components: 123
+n_neighbors: 30
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/velocity/scvelo/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputVelocyto loom file.file, required
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputOutput directory. If it does not exist, will be created.file, required
--output_compressionThe compression format to be used on the output h5mu object.string, example: "gzip"
+
+
+

Filtering and normalization

+

Arguments for filtering, normalization an log transform (see scvelo.pp.filter_and_normalize function)

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--min_countsMinimum number of counts required for a gene to pass filtering (spliced).integer
--min_counts_uMinimum number of counts required for a gene to pass filtering (unspliced).integer
--min_cellsMinimum number of cells expressed required to pass filtering (spliced).integer
--min_cells_uMinimum number of cells expressed required to pass filtering (unspliced).integer
--min_shared_countsMinimum number of counts (both unspliced and spliced) required for a gene.integer
--min_shared_cellsMinimum number of cells required to be expressed (both unspliced and spliced).integer
--n_top_genesNumber of genes to keep.integer
--log_transformDo not log transform counts.boolean, default: TRUE
+
+
+

Fitting parameters

+

Arguments for fitting the data

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--n_principal_componentsNumber of principal components to use for calculating moments.integer
--n_neighborsNumber of neighbors to use. First/second-order moments are computed for each cell across its nearest neighbors, where the neighbor graph is obtained from euclidean distances in PCA space.integer, default: 30
+
+
+
+

Authors

+
    +
  • Dries Schaumont (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/modules/velocity/velocyto.html b/pr-preview/pr-51/components/modules/velocity/velocyto.html new file mode 100644 index 00000000..d47c04d7 --- /dev/null +++ b/pr-preview/pr-51/components/modules/velocity/velocyto.html @@ -0,0 +1,1641 @@ + + + + + + + + + + +OpenPipelines - Velocyto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Velocyto

+
+ +
+
+ Runs the velocity analysis on a BAM file, outputting a loom file. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: velocyto
+Namespace: velocity

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script target/nextflow/velocity/velocyto/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+input: # please fill in - example: "path/to/file"
+transcriptome: # please fill in - example: "path/to/file"
+# barcode: "path/to/file"
+without_umi: false
+# output: "$id.$key.output.output"
+logic: "Default"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script target/nextflow/velocity/velocyto/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--inputPath to BAM filefile, required
--transcriptomePath to GTF filefile, required
--barcodeValid barcodes file, to filter the bam. If –bcfile is not specified all the cell barcodes will be included. Cell barcodes should be specified in the bcfile as the ‘CB’ tag for each readfile
--without_umifooboolean_true
--outputVelocyto loom filefile, required
--logicThe logic to use for the filtering.string, default: "Default"
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (maintainer)
  • +
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/index.html b/pr-preview/pr-51/components/workflows/index.html new file mode 100644 index 00000000..52139a71 --- /dev/null +++ b/pr-preview/pr-51/components/workflows/index.html @@ -0,0 +1,1482 @@ + + + + + + + + + +OpenPipelines - Workflows + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Workflows

+
+ + + +
+ + + + +
+ + +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/ingestion/bd_rhapsody.html b/pr-preview/pr-51/components/workflows/ingestion/bd_rhapsody.html new file mode 100644 index 00000000..410a6457 --- /dev/null +++ b/pr-preview/pr-51/components/workflows/ingestion/bd_rhapsody.html @@ -0,0 +1,1897 @@ + + + + + + + + + + +OpenPipelines - BD Rhapsody + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

BD Rhapsody

+
+ +
+
+ A generic pipeline for running BD Rhapsody WTA or Targeted mapping, with support for AbSeq, VDJ and/or SMK. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: bd_rhapsody
+Namespace: ingestion

+
+ +

A wrapper for the BD Rhapsody Analysis CWL v1.10.1 pipeline.

+

This pipeline can be used for a targeted analysis (with --mode targeted) or for a whole transcriptome analysis (with --mode wta).

+
    +
  • If mode is "targeted", then either the --reference or --abseq_reference parameters must be defined.
  • +
  • If mode is "wta", then --reference and --transcriptome_annotation must be defined, --abseq_reference and --supplemental_reference is optional.
  • +
+

The reference_genome and transcriptome_annotation files can be generated with the make_reference pipeline. Alternatively, BD also provides standard references which can be downloaded from these locations:

+
    +
  • Human: http://bd-rhapsody-public.s3-website-us-east-1.amazonaws.com/Rhapsody-WTA/GRCh38-PhiX-gencodev29/
  • +
  • Mouse: http://bd-rhapsody-public.s3-website-us-east-1.amazonaws.com/Rhapsody-WTA/GRCm38-PhiX-gencodevM19/
  • +
+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/ingestion/bd_rhapsody/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+mode: # please fill in - example: "wta"
+id: # please fill in - example: "foo"
+input: # please fill in - example: ["input.fastq.gz"]
+reference: # please fill in - example: ["reference_genome.tar.gz|reference.fasta"]
+# transcriptome_annotation: "transcriptome.gtf"
+# abseq_reference: ["abseq_reference.fasta"]
+# supplemental_reference: ["supplemental_reference.fasta"]
+sample_prefix: "sample"
+
+# Outputs
+# output_raw: "$id.$key.output_raw.output_raw"
+# output_h5mu: "$id.$key.output_h5mu.h5mu"
+
+# Putative cell calling settings
+# putative_cell_call: "mRNA"
+# exact_cell_count: 10000
+disable_putative_calling: false
+
+# Subsample arguments
+# subsample: 0.01
+# subsample_seed: 3445
+
+# Multiplex arguments
+# sample_tags_version: "human"
+# tag_names: ["4-mySample", "9-myOtherSample", "6-alsoThisSample"]
+
+# VDJ arguments
+# vdj_version: "human"
+
+# CWL-runner arguments
+parallel: true
+timestamps: false
+dryrun: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/ingestion/bd_rhapsody/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--modeWhether to run a whole transcriptome analysis (WTA) or a targeted analysis.string, required, example: "wta"
--idID of the sample.string, required, example: "foo"
--inputPath to your read files in the FASTQ.GZ format. You may specify as many R1/R2 read pairs as you want.file, required, example: "input.fastq.gz"
--referenceRefence to map to. For --mode wta, this is the path to STAR index as a tar.gz file. For --mode targeted, this is the path to mRNA reference file for pre-designed, supplemental, or custom panel, in FASTA formatfile, required, example: "reference_genome.tar.gz&#124;reference.fasta"
--transcriptome_annotationPath to GTF annotation file (only for --mode wta).file, example: "transcriptome.gtf"
--abseq_referencePath to the AbSeq reference file in FASTA format. Only needed if BD AbSeq Ab-Oligos are used.file, example: "abseq_reference.fasta"
--supplemental_referencePath to the supplemental reference file in FASTA format. Only needed if there are additional transgene sequences used in the experiment (only for --mode wta).file, example: "supplemental_reference.fasta"
--sample_prefixSpecify a run name to use as the output file base name. Use only letters, numbers, or hyphens. Do not use special characters or spaces.string, default: "sample"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--output_rawThe BD Rhapsody output folder as it comes out of the BD Rhapsody pipelinefile, required, example: "output_dir"
--output_h5muThe converted h5mu file.file, required, example: "output.h5mu"
+
+
+

Putative cell calling settings

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--putative_cell_callSpecify the dataset to be used for putative cell calling. For putative cell calling using an AbSeq dataset, please provide an AbSeq_Reference fasta file above.string, example: "mRNA"
--exact_cell_countExact cell count - Set a specific number (>=1) of cells as putative, based on those with the highest error-corrected read countinteger, example: 10000
--disable_putative_callingDisable Refined Putative Cell Calling - Determine putative cells using only the basic algorithm (minimum second derivative along the cumulative reads curve). The refined algorithm attempts to remove false positives and recover false negatives, but may not be ideal for certain complex mixtures of cell types. Does not apply if Exact Cell Count is set.boolean_true
+
+
+

Subsample arguments

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--subsampleA number >1 or fraction (0 < n < 1) to indicate the number or percentage of reads to subsample.double, example: 0.01
--subsample_seedA seed for replicating a previous subsampled run.integer, example: 3445
+
+
+

Multiplex arguments

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--sample_tags_versionSpecify if multiplexed run.string, example: "human"
--tag_namesTag_Names (optional) - Specify the tag number followed by ‘-’ and the desired sample name to appear in Sample_Tag_Metrics.csv. Do not use the special characters: &, (), [], {}, <>, ?, |string, example: "4-mySample", example: "9-myOtherSample", example: "6-alsoThisSample"
+
+
+

VDJ arguments

+ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--vdj_versionSpecify if VDJ run.string, example: "human"
+
+
+

CWL-runner arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--parallelRun jobs in parallel.boolean, default: TRUE
--timestampsAdd timestamps to the errors, warnings, and notifications.boolean_true
--dryrunIf true, the output directory will only contain the CWL input files, but the pipeline itself will not be executed.boolean_true
+
+
+
+

Authors

+
    +
  • Robrecht Cannoodt (maintainer)
  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p10(bd_rhapsody)
+    p12(join)
+    p20(from_bdrhap_to_h5mu)
+    p22(join)
+    p28(Output)
+    p0-->p2
+    p2-->p4
+    p4-->p12
+    p4-->p10
+    p10-->p12
+    p12-->p22
+    p12-->p20
+    p20-->p22
+    p22-->p28
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/ingestion/cellranger_mapping.html b/pr-preview/pr-51/components/workflows/ingestion/cellranger_mapping.html new file mode 100644 index 00000000..bbebad41 --- /dev/null +++ b/pr-preview/pr-51/components/workflows/ingestion/cellranger_mapping.html @@ -0,0 +1,1760 @@ + + + + + + + + + + +OpenPipelines - Cell Ranger mapping + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Cell Ranger mapping

+
+ +
+
+ A pipeline for running Cell Ranger mapping. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: cellranger_mapping
+Namespace: ingestion

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/ingestion/cellranger_mapping/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: ["sample_S1_L001_R1_001.fastq.gz", "sample_S1_L001_R2_001.fastq.gz"]
+reference: # please fill in - example: "reference.tar.gz"
+
+# Outputs
+# output_raw: "$id.$key.output_raw.output_raw"
+# output_h5mu: "$id.$key.output_h5mu.h5mu"
+obsm_metrics: "metrics_summary"
+output_type: "raw"
+
+# Cell Ranger arguments
+# expect_cells: 3000
+chemistry: "auto"
+secondary_analysis: false
+generate_bam: true
+include_introns: true
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/ingestion/cellranger_mapping/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputThe fastq.gz files to align. Can also be a single directory containing fastq.gz files.file, required, example: "sample_S1_L001_R1_001.fastq.gz", example: "sample_S1_L001_R2_001.fastq.gz"
--referenceThe path to Cell Ranger reference tar.gz file.file, required, example: "reference.tar.gz"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--output_rawLocation where the output folder from Cell Ranger will be stored.file, required, example: "output_dir"
--output_h5muThe output from Cell Ranger, converted to h5mu.file, required, example: "output.h5mu"
--obsm_metricsName of the .obsm slot under which to QC metrics (if any).string, default: "metrics_summary"
--output_typeWhich Cell Ranger output to use for converting to h5mu.string, default: "raw"
+
+
+

Cell Ranger arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--expect_cellsExpected number of recovered cells, used as input to cell calling algorithm.integer, example: 3000
--chemistryAssay configuration. - auto: autodetect mode - threeprime: Single Cell 3’ - fiveprime: Single Cell 5’ - SC3Pv1: Single Cell 3’ v1 - SC3Pv2: Single Cell 3’ v2 - SC3Pv3: Single Cell 3’ v3 - SC3Pv3LT: Single Cell 3’ v3 LT - SC3Pv3HT: Single Cell 3’ v3 HT - SC5P-PE: Single Cell 5’ paired-end - SC5P-R2: Single Cell 5’ R2-only - SC-FB: Single Cell Antibody-only 3’ v2 or 5’ See https://kb.10xgenomics.com/hc/en-us/articles/115003764132-How-does-Cell-Ranger-auto-detect-chemistry- for more information.string, default: "auto"
--secondary_analysisWhether or not to run the secondary analysis e.g. clustering.boolean, default: FALSE
--generate_bamWhether to generate a BAM file.boolean, default: TRUE
--include_intronsInclude intronic reads in count (default=true unless –target-panel is specified in which case default=false)boolean, default: TRUE
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
  • Dries De Maeyer (author)

  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p11(cellranger_count)
+    p13(join)
+    p20(cellranger_count_split)
+    p22(join)
+    p30(from_10xh5_to_h5mu)
+    p32(join)
+    p39(Output)
+    p0-->p2
+    p2-->p4
+    p4-->p13
+    p4-->p11
+    p11-->p13
+    p13-->p22
+    p13-->p20
+    p20-->p22
+    p22-->p32
+    p22-->p30
+    p30-->p32
+    p32-->p39
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/ingestion/cellranger_multi.html b/pr-preview/pr-51/components/workflows/ingestion/cellranger_multi.html new file mode 100644 index 00000000..22163d17 --- /dev/null +++ b/pr-preview/pr-51/components/workflows/ingestion/cellranger_multi.html @@ -0,0 +1,1851 @@ + + + + + + + + + + +OpenPipelines - Cell Ranger multi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Cell Ranger multi

+
+ +
+
+ A pipeline for running Cell Ranger multi. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: cellranger_multi
+Namespace: ingestion

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/ingestion/cellranger_multi/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: ["sample_S1_L001_R1_001.fastq.gz", "sample_S1_L001_R2_001.fastq.gz"]
+gex_reference: # please fill in - example: "reference_genome.tar.gz"
+# vdj_reference: "reference_vdj.tar.gz"
+# feature_reference: "feature_reference.csv"
+# vdj_inner_enrichment_primers: "enrichment_primers.txt"
+
+# Outputs
+# output_raw: "$id.$key.output_raw.output_raw"
+# output_h5mu: "$id.$key.output_h5mu.h5mu"
+uns_metrics: "metrics_cellranger"
+
+# Cell multiplexing parameters
+# cell_multiplex_sample_id: "foo"
+# cell_multiplex_oligo_ids: "foo"
+# cell_multiplex_description: "foo"
+
+# Gene expression arguments
+# gex_expect_cells: 3000
+gex_chemistry: "auto"
+gex_secondary_analysis: false
+gex_generate_bam: true
+gex_include_introns: true
+
+# Library arguments
+library_id: # please fill in - example: ["mysample1"]
+library_type: # please fill in - example: ["Gene Expression"]
+# library_subsample: ["0.5"]
+# library_lanes: ["1-4"]
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/ingestion/cellranger_multi/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputThe fastq.gz files to align. Can also be a single directory containing fastq.gz files.file, required, example: "sample_S1_L001_R1_001.fastq.gz", example: "sample_S1_L001_R2_001.fastq.gz"
--gex_referenceGenome refence index built by Cell Ranger mkref.file, required, example: "reference_genome.tar.gz"
--vdj_referenceVDJ refence index built by Cell Ranger mkref.file, example: "reference_vdj.tar.gz"
--feature_referencePath to the Feature reference CSV file, declaring Feature Barcode constructs and associated barcodes. Required only for Antibody Capture or CRISPR Guide Capture libraries. See https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/using/feature-bc-analysis#feature-ref for more information.file, example: "feature_reference.csv"
--vdj_inner_enrichment_primersV(D)J Immune Profiling libraries: if inner enrichment primers other than those provided in the 10x Genomics kits are used, they need to be specified here as a text file with one primer per line.file, example: "enrichment_primers.txt"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--output_rawThe raw output folder.file, required, example: "output_dir"
--output_h5muThe converted h5mu file.file, required, example: "output.h5mu"
--uns_metricsName of the .uns slot under which to QC metrics (if any).string, default: "metrics_cellranger"
+
+
+

Cell multiplexing parameters

+

Arguments related to cell multiplexing.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--cell_multiplex_sample_idA name to identify a multiplexed sample. Must be alphanumeric with hyphens and/or underscores, and less than 64 characters. Required for Cell Multiplexing libraries.string
--cell_multiplex_oligo_idsThe Cell Multiplexing oligo IDs used to multiplex this sample. If multiple CMOs were used for a sample, separate IDs with a pipe (e.g., CMO301|CMO302). Required for Cell Multiplexing libraries.string
--cell_multiplex_descriptionA description for the sample.string
+
+
+

Gene expression arguments

+

Arguments relevant to the analysis of gene expression data.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--gex_expect_cellsExpected number of recovered cells, used as input to cell calling algorithm.integer, example: 3000
--gex_chemistryAssay configuration. - auto: autodetect mode - threeprime: Single Cell 3’ - fiveprime: Single Cell 5’ - SC3Pv1: Single Cell 3’ v1 - SC3Pv2: Single Cell 3’ v2 - SC3Pv3: Single Cell 3’ v3 - SC3Pv3LT: Single Cell 3’ v3 LT - SC3Pv3HT: Single Cell 3’ v3 HT - SC5P-PE: Single Cell 5’ paired-end - SC5P-R2: Single Cell 5’ R2-only - SC-FB: Single Cell Antibody-only 3’ v2 or 5’ See https://kb.10xgenomics.com/hc/en-us/articles/115003764132-How-does-Cell-Ranger-auto-detect-chemistry- for more information.string, default: "auto"
--gex_secondary_analysisWhether or not to run the secondary analysis e.g. clustering.boolean, default: FALSE
--gex_generate_bamWhether to generate a BAM file.boolean, default: TRUE
--gex_include_intronsInclude intronic reads in count (default=true unless –target-panel is specified in which case default=false)boolean, default: TRUE
+
+
+

Library arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--library_idThe Illumina sample name to analyze. This must exactly match the ‘Sample Name’ part of the FASTQ files specified in the --input argument.string, required, example: "mysample1"
--library_typeThe underlying feature type of the library. Possible values: “Gene Expression”, “VDJ”, “VDJ-T”, “VDJ-B”, “Antibody Capture”, “CRISPR Guide Capture”, “Multiplexing Capture”string, required, example: "Gene Expression"
--library_subsampleOptional. The rate at which reads from the provided FASTQ files are sampled. Must be strictly greater than 0 and less than or equal to 1.string, example: "0.5"
--library_lanesLanes associated with this sample. Defaults to using all lanes.string, example: "1-4"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author)
  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p11(cellranger_multi)
+    p13(join)
+    p20(from_cellranger_multi_to_h5mu)
+    p22(join)
+    p29(Output)
+    p0-->p2
+    p2-->p4
+    p4-->p13
+    p4-->p11
+    p11-->p13
+    p13-->p22
+    p13-->p20
+    p20-->p22
+    p22-->p29
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/ingestion/cellranger_postprocessing.html b/pr-preview/pr-51/components/workflows/ingestion/cellranger_postprocessing.html new file mode 100644 index 00000000..354cbf5f --- /dev/null +++ b/pr-preview/pr-51/components/workflows/ingestion/cellranger_postprocessing.html @@ -0,0 +1,1764 @@ + + + + + + + + + + +OpenPipelines - Cell Ranger post-processing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Cell Ranger post-processing

+
+ +
+
+ Post-processing Cell Ranger datasets. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: cellranger_postprocessing
+Namespace: ingestion

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/ingestion/cellranger_postprocessing/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "input.h5mu"
+
+# Outputs
+# output: "$id.$key.output.output"
+
+# Correction arguments
+perform_correction: false
+cellbender_epochs: 150
+
+# Filtering arguments
+# min_genes: 100
+# min_counts: 1000
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/ingestion/cellranger_postprocessing/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputInput h5mu file created by running Cell Ranger and converting its output to h5mu.file, required, example: "input.h5mu"
+
+
+

Outputs

+ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputThe converted h5mu file.file
+
+
+

Correction arguments

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--perform_correctionWhether or not to run CellBender to perform count correction.boolean_true
--cellbender_epochsNumber of epochs to run CellBender for.integer, default: 150
+
+
+

Filtering arguments

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--min_genesMinimum number of counts required for a cell to pass filtering.integer, example: 100
--min_countsMinimum number of genes expressed required for a cell to pass filtering.integer, example: 1000
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p6(from_10xh5_to_h5mu)
+    p8(join)
+    p12(toSortedList)
+    p14(flatMap)
+    p15(filter)
+    p21(cellbender_remove_background)
+    p23(join)
+    p27(mix)
+    p26(filter)
+    p28(filter)
+    p34(filter_with_counts)
+    p36(join)
+    p40(mix)
+    p39(filter)
+    p46(publish)
+    p48(join)
+    p54(Output)
+    p14-->p15
+    p14-->p26
+    p26-->p27
+    p27-->p28
+    p27-->p39
+    p39-->p40
+    p0-->p8
+    p0-->p6
+    p6-->p8
+    p8-->p12
+    p12-->p14
+    p15-->p23
+    p15-->p21
+    p21-->p23
+    p23-->p27
+    p28-->p36
+    p28-->p34
+    p34-->p36
+    p36-->p40
+    p40-->p48
+    p40-->p46
+    p46-->p48
+    p48-->p54
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/ingestion/conversion.html b/pr-preview/pr-51/components/workflows/ingestion/conversion.html new file mode 100644 index 00000000..dd965576 --- /dev/null +++ b/pr-preview/pr-51/components/workflows/ingestion/conversion.html @@ -0,0 +1,1729 @@ + + + + + + + + + + +OpenPipelines - Conversion + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Conversion

+
+ +
+
+ A pipeline to convert different file formats to .h5mu. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: conversion
+Namespace: ingestion

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/ingestion/conversion/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: ["input.h5mu"]
+input_type: # please fill in - example: "foo"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+
+# Conversion from h5ad
+# modality: ["foo"]
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/ingestion/conversion/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "input.h5mu"
--input_typeType of the input filestring, required
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputName or template for the output files.file, example: "output.h5mu"
+
+
+

Conversion from h5ad

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--modalityName of the modality where the h5ad is stored in the h5mu object.string
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author, maintainer)

  • +
  • Dries De Maeyer (author)

  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p5(filter)
+    p10(from_10xh5_to_h5mu)
+    p12(join)
+    p35(mix)
+    p15(filter)
+    p20(from_10xmtx_to_h5mu)
+    p22(join)
+    p25(filter)
+    p30(from_h5ad_to_h5mu)
+    p32(join)
+    p37(toSortedList)
+    p39(Output)
+    p4-->p5
+    p4-->p15
+    p4-->p25
+    p0-->p2
+    p2-->p4
+    p5-->p12
+    p5-->p10
+    p10-->p12
+    p12-->p35
+    p15-->p22
+    p15-->p20
+    p20-->p22
+    p22-->p35
+    p25-->p32
+    p25-->p30
+    p30-->p32
+    p32-->p35
+    p35-->p37
+    p37-->p39
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/ingestion/demux.html b/pr-preview/pr-51/components/workflows/ingestion/demux.html new file mode 100644 index 00000000..3dd2c51a --- /dev/null +++ b/pr-preview/pr-51/components/workflows/ingestion/demux.html @@ -0,0 +1,1705 @@ + + + + + + + + + + +OpenPipelines - Demux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Demux

+
+ +
+
+ A generic pipeline for running bcl2fastq, bcl-convert or Cell Ranger mkfastq. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: demux
+Namespace: ingestion

+
+ +

Convert .bcl files to .fastq files using bcl2fastq, bcl-convert or Cell Ranger mkfastq.

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/ingestion/demux/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Arguments
+id: # please fill in - example: "foo"
+input: # please fill in - example: "bcl_dir"
+sample_sheet: # please fill in - example: "bcl_dir"
+demultiplexer: "bcl2fastq"
+# ignore_missing: true
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/ingestion/demux/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument group

+
+

Arguments

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputInput run directoryfile, required, example: "bcl_dir"
--sample_sheetPointer to the sample sheetfile, required, example: "bcl_dir"
--demultiplexerThe multiplexer to use, one of bclconvert or mkfastqstring, default: "bcl2fastq"
--ignore_missingShould the demultiplexer ignore missing entities (filter, …)boolean
+
+
+
+

Authors

+
    +
  • Toni Verbeiren (author, maintainer)

  • +
  • Marijke Van Moerbeke (author)

  • +
  • Angela Oliveira Pisco (author)

  • +
  • Samuel D’Souza (author)

  • +
  • Robrecht Cannoodt (author)

  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p5(filter)
+    p10(cellranger_mkfastq)
+    p12(join)
+    p35(mix)
+    p15(filter)
+    p20(bcl_convert)
+    p22(join)
+    p25(filter)
+    p30(bcl2fastq)
+    p32(join)
+    p41(fastqc)
+    p43(join)
+    p46(Output)
+    p48(toSortedList)
+    p54(multiqc)
+    p56(join)
+    p59(Output)
+    p63(Output)
+    p4-->p5
+    p4-->p15
+    p4-->p25
+    p0-->p2
+    p2-->p4
+    p5-->p12
+    p5-->p10
+    p10-->p12
+    p12-->p35
+    p15-->p22
+    p15-->p20
+    p20-->p22
+    p22-->p35
+    p25-->p32
+    p25-->p30
+    p30-->p32
+    p32-->p35
+    p35-->p43
+    p35-->p41
+    p41-->p43
+    p43-->p46
+    p35-->p48
+    p48-->p56
+    p48-->p54
+    p54-->p56
+    p56-->p59
+    p35-->p63
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/ingestion/make_reference.html b/pr-preview/pr-51/components/workflows/ingestion/make_reference.html new file mode 100644 index 00000000..4679314e --- /dev/null +++ b/pr-preview/pr-51/components/workflows/ingestion/make_reference.html @@ -0,0 +1,1776 @@ + + + + + + + + + + +OpenPipelines - Make reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Make reference

+
+ +
+
+ Build a transcriptomics reference into one of many formats +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: make_reference
+Namespace: ingestion

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/ingestion/make_reference/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+genome_fasta: # please fill in - example: "https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/GRCh38.primary_assembly.genome.fa.gz"
+transcriptome_gtf: # please fill in - example: "https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/gencode.v41.annotation.gtf.gz"
+# ercc: "https://assets.thermofisher.com/TFS-Assets/LSG/manuals/ERCC92.zip"
+
+# Outputs
+target: ["star"]
+# output_fasta: "$id.$key.output_fasta.gz"
+# output_gtf: "$id.$key.output_gtf.gz"
+# output_cellranger: "$id.$key.output_cellranger.gz"
+# output_bd_rhapsody: "$id.$key.output_bd_rhapsody.gz"
+# output_star: "$id.$key.output_star.gz"
+
+# Arguments
+# subset_regex: "(ERCC-00002|chr1)"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/ingestion/make_reference/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the reference.string, required, example: "foo"
--genome_fastaReference genome fasta.file, required, example: "https:/ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/GRCh38.primary_assembly.genome.fa.gz"
--transcriptome_gtfReference transcriptome annotation.file, required, example: "https:/ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/gencode.v41.annotation.gtf.gz"
--erccERCC sequence and annotation file.file, example: "https:/assets.thermofisher.com/TFS-Assets/LSG/manuals/ERCC92.zip"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--targetWhich reference indices to generate.string, default: "star"
--output_fastaOutput genome sequence fasta.file, example: "genome_sequence.fa.gz"
--output_gtfOutput transcriptome annotation gtf.file, example: "transcriptome_annotation.gtf.gz"
--output_cellrangerOutput indexfile, example: "cellranger_index.tar.gz"
--output_bd_rhapsodyOutput indexfile, example: "bdrhap_index.tar.gz"
--output_starOutput indexfile, example: "star_index.tar.gz"
+
+
+

Arguments

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--subset_regexWill subset the reference chromosomes using the given regex.string, example: "(ERCC-00002&#124;chr1)"
+
+
+
+

Authors

+
    +
  • Angela Oliveira Pisco (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p11(make_reference)
+    p13(join)
+    p17(filter)
+    p22(build_cellranger_reference)
+    p24(join)
+    p54(join)
+    p29(filter)
+    p34(build_bdrhap_reference)
+    p36(join)
+    p55(join)
+    p41(filter)
+    p46(star_build_reference)
+    p48(join)
+    p56(join)
+    p57(join)
+    p62(Output)
+    p54-->p55
+    p55-->p56
+    p56-->p57
+    p0-->p2
+    p2-->p4
+    p4-->p13
+    p4-->p11
+    p11-->p13
+    p13-->p17
+    p17-->p24
+    p17-->p22
+    p22-->p24
+    p24-->p54
+    p13-->p29
+    p29-->p36
+    p29-->p34
+    p34-->p36
+    p36-->p55
+    p13-->p41
+    p41-->p48
+    p41-->p46
+    p46-->p48
+    p48-->p56
+    p0-->p57
+    p13-->p54
+    p57-->p62
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/integration/common/harmony_leiden.html b/pr-preview/pr-51/components/workflows/integration/common/harmony_leiden.html new file mode 100644 index 00000000..3094df23 --- /dev/null +++ b/pr-preview/pr-51/components/workflows/integration/common/harmony_leiden.html @@ -0,0 +1,1834 @@ + + + + + + + + + + +OpenPipelines - Harmony leiden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Harmony leiden

+
+ +
+
+ Run harmony integration followed by neighbour calculations, leiden clustering and run umap on the result. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: harmony_leiden
+Namespace: integration/common

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.9.0 -latest \
+  -main-script workflows/multiomics/integration/harmony_leiden/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "dataset.h5mu"
+layer: "log_normalized"
+modality: "rna"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+
+# Neighbour calculation
+uns_neighbors: "harmonypy_integration_neighbors"
+obsp_neighbor_distances: "harmonypy_integration_distances"
+obsp_neighbor_connectivities: "harmonypy_integration_connectivities"
+
+# Harmony integration options
+embedding: "X_pca"
+obsm_integrated: "X_pca_integrated"
+obs_covariates: # please fill in - example: ["batch", "sample"]
+theta: [2]
+
+# Clustering options
+obs_cluster: "harmony_integration_leiden"
+leiden_resolution: [1]
+
+# Umap options
+obsm_umap: "X_leiden_harmony_umap"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.9.0 -latest \
+  -profile docker \
+  -main-script workflows/multiomics/integration/harmony_leiden/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "dataset.h5mu"
--layeruse specified layer for expression values instead of the .X object from the modality.string, default: "log_normalized"
--modalityWhich modality to process.string, default: "rna"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

Neighbour calculation

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--uns_neighborsIn which .uns slot to store various neighbor output objects.string, default: "harmonypy_integration_neighbors"
--obsp_neighbor_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "harmonypy_integration_distances"
--obsp_neighbor_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "harmonypy_integration_connectivities"
+
+
+

Harmony integration options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--embeddingEmbedding to use as inputstring, default: "X_pca"
--obsm_integratedIn which .obsm slot to store the resulting integrated embedding.string, default: "X_pca_integrated"
--obs_covariatesThe .obs field(s) that define the covariate(s) to regress out.string, required, example: "batch", example: "sample"
--thetaDiversity clustering penalty parameter. Specify for each variable in group.by.vars. theta=0 does not encourage any diversity. Larger values of theta result in more diverse clusters.”double, default: 2
+
+
+

Clustering options

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obs_clusterName of the .obs key under which to add the cluster labels.string, default: "harmony_integration_leiden"
--leiden_resolutionControl the coarseness of the clustering. Higher values lead to more clusters.double, default: 1
+
+
+

Umap options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_umapIn which .obsm slot to store the resulting UMAP embedding.string, default: "X_leiden_harmony_umap"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author)
  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p12(harmonypy)
+    p22(find_neighbors)
+    p32(leiden)
+    p42(umap)
+    p52(move_obsm_to_obs)
+    p60(Output)
+    p0-->p2
+    p2-->p4
+    p4-->p12
+    p12-->p22
+    p22-->p32
+    p32-->p42
+    p42-->p52
+    p52-->p60
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/integration/initialize_integration/initialize_integration.html b/pr-preview/pr-51/components/workflows/integration/initialize_integration/initialize_integration.html new file mode 100644 index 00000000..b6a5efe8 --- /dev/null +++ b/pr-preview/pr-51/components/workflows/integration/initialize_integration/initialize_integration.html @@ -0,0 +1,1785 @@ + + + + + + + + + + +OpenPipelines - Initialize integration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Initialize integration

+
+ +
+
+ Run calculations that output information required for most integration methods: PCA, nearest neighbour and UMAP. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: initialize_integration
+Namespace: integration/initialize_integration

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.9.0 -latest \
+  -main-script workflows/multiomics/integration/initialize_integration/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "dataset.h5mu"
+layer: "log_normalized"
+modality: "rna"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+
+# PCA options
+obsm_pca: "X_pca"
+# var_pca_feature_selection: "foo"
+
+# Neighbour calculation
+uns_neighbors: "neighbors"
+obsp_neighbor_distances: "distances"
+obsp_neighbor_connectivities: "connectivities"
+
+# Umap options
+obsm_umap: "X_umap"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.9.0 -latest \
+  -profile docker \
+  -main-script workflows/multiomics/integration/initialize_integration/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "dataset.h5mu"
--layeruse specified layer for expression values instead of the .X object from the modality.string, default: "log_normalized"
--modalityWhich modality to process.string, default: "rna"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

PCA options

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_pcaIn which .obsm slot to store the resulting PCA embedding.string, default: "X_pca"
--var_pca_feature_selectionColumn name in .var matrix that will be used to select which genes to run the PCA on.string
+
+
+

Neighbour calculation

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--uns_neighborsIn which .uns slot to store various neighbor output objects.string, default: "neighbors"
--obsp_neighbor_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "distances"
--obsp_neighbor_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "connectivities"
+
+
+

Umap options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_umapIn which .obsm slot to store the resulting UMAP embedding.string, default: "X_umap"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author)
  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p12(pca)
+    p22(find_neighbors)
+    p32(umap)
+    p40(Output)
+    p0-->p2
+    p2-->p4
+    p4-->p12
+    p12-->p22
+    p22-->p32
+    p32-->p40
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/integration/scanorama_leiden/scanorama_leiden.html b/pr-preview/pr-51/components/workflows/integration/scanorama_leiden/scanorama_leiden.html new file mode 100644 index 00000000..6afefbde --- /dev/null +++ b/pr-preview/pr-51/components/workflows/integration/scanorama_leiden/scanorama_leiden.html @@ -0,0 +1,1859 @@ + + + + + + + + + + +OpenPipelines - Scanorama leiden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Scanorama leiden

+
+ +
+
+ Run scanorama integration followed by neighbour calculations, leiden clustering and run umap on the result. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: scanorama_leiden
+Namespace: integration/scanorama_leiden

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.9.0 -latest \
+  -main-script workflows/multiomics/integration/scanorama_leiden/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "dataset.h5mu"
+layer: "log_normalized"
+modality: "rna"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+
+# Neighbour calculation
+uns_neighbors: "scanorama_integration_neighbors"
+obsp_neighbor_distances: "scanorama_integration_distances"
+obsp_neighbor_connectivities: "scanorama_integration_connectivities"
+
+# Scanorama integration options
+obs_batch: "sample_id"
+obsm_input: "X_pca"
+obsm_output: "X_scanorama"
+knn: 20
+batch_size: 5000
+sigma: 15
+approx: true
+alpha: 0.1
+
+# Clustering options
+obs_cluster: "scanorama_integration_leiden"
+leiden_resolution: [1]
+
+# Umap options
+obsm_umap: "X_leiden_scanorama_umap"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.9.0 -latest \
+  -profile docker \
+  -main-script workflows/multiomics/integration/scanorama_leiden/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "dataset.h5mu"
--layeruse specified layer for expression values instead of the .X object from the modality.string, default: "log_normalized"
--modalityWhich modality to process.string, default: "rna"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

Neighbour calculation

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--uns_neighborsIn which .uns slot to store various neighbor output objects.string, default: "scanorama_integration_neighbors"
--obsp_neighbor_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "scanorama_integration_distances"
--obsp_neighbor_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "scanorama_integration_connectivities"
+
+
+

Scanorama integration options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obs_batchColumn name discriminating between your batches.string, default: "sample_id"
--obsm_input.osbm slot that points to embedding to run scanorama on.string, default: "X_pca"
--obsm_outputThe name of the field in adata.obsm where the integrated embeddings will be stored after running this function. Defaults to X_scanorama.string, default: "X_scanorama"
--knnNumber of nearest neighbors to use for matching.integer, default: 20
--batch_sizeThe batch size used in the alignment vector computation. Useful when integrating very large (>100k samples) datasets. Set to large value that runs within available memory.integer, default: 5000
--sigmaCorrection smoothing parameter on Gaussian kernel.double, default: 15
--approxUse approximate nearest neighbors with Python annoy; greatly speeds up matching runtime.boolean, default: TRUE
--alphaAlignment score minimum cutoffdouble, default: 0.1
+
+
+

Clustering options

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obs_clusterName of the .obs key under which to add the cluster labels.string, default: "scanorama_integration_leiden"
--leiden_resolutionControl the coarseness of the clustering. Higher values lead to more clusters.double, default: 1
+
+
+

Umap options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_umapIn which .obsm slot to store the resulting UMAP embedding.string, default: "X_leiden_scanorama_umap"
+
+
+
+

Authors

+
    +
  • Mauro Saporita (author)

  • +
  • Povilas Gibas (author)

  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p12(scanorama)
+    p22(find_neighbors)
+    p32(leiden)
+    p42(umap)
+    p52(move_obsm_to_obs)
+    p60(Output)
+    p0-->p2
+    p2-->p4
+    p4-->p12
+    p12-->p22
+    p22-->p32
+    p32-->p42
+    p42-->p52
+    p52-->p60
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/integration/scvi/scvi.html b/pr-preview/pr-51/components/workflows/integration/scvi/scvi.html new file mode 100644 index 00000000..34ece1cb --- /dev/null +++ b/pr-preview/pr-51/components/workflows/integration/scvi/scvi.html @@ -0,0 +1,1839 @@ + + + + + + + + + + +OpenPipelines - Scvi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Scvi

+
+ +
+
+ Run scvi integration followed by neighbour calculations and run umap on the result. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: scvi
+Namespace: integration/scvi

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.9.0 -latest \
+  -main-script workflows/multiomics/integration/scvi/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "dataset.h5mu"
+layer: "log_normalized"
+modality: "rna"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+# output_model: "$id.$key.output_model.output_model"
+
+# Neighbour calculation
+uns_neighbors: "scvi_integration_neighbors"
+obsp_neighbor_distances: "scvi_integration_distances"
+obsp_neighbor_connectivities: "scvi_integration_connectivities"
+
+# Scvi integration options
+obs_batch: # please fill in - example: "foo"
+obsm_output: "X_scvi_integrated"
+# early_stopping: true
+early_stopping_monitor: "elbo_validation"
+early_stopping_patience: 45
+early_stopping_min_delta: 0.0
+# max_epochs: 123
+reduce_lr_on_plateau: true
+lr_factor: 0.6
+lr_patience: 30
+
+# Umap options
+obsm_umap: "X_scvi_umap"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.9.0 -latest \
+  -profile docker \
+  -main-script workflows/multiomics/integration/scvi/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "dataset.h5mu"
--layeruse specified layer for expression values instead of the .X object from the modality.string, default: "log_normalized"
--modalityWhich modality to process.string, default: "rna"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
--output_modelFolder where the state of the trained model will be saved to.file, required, example: "output_dir"
+
+
+

Neighbour calculation

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--uns_neighborsIn which .uns slot to store various neighbor output objects.string, default: "scvi_integration_neighbors"
--obsp_neighbor_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "scvi_integration_distances"
--obsp_neighbor_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "scvi_integration_connectivities"
+
+
+

Scvi integration options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obs_batchColumn name discriminating between your batches.string, required
--obsm_outputIn which .obsm slot to store the resulting integrated embedding.string, default: "X_scvi_integrated"
--early_stoppingWhether to perform early stopping with respect to the validation set.boolean
--early_stopping_monitorMetric logged during validation set epoch.string, default: "elbo_validation"
--early_stopping_patienceNumber of validation epochs with no improvement after which training will be stopped.integer, default: 45
--early_stopping_min_deltaMinimum change in the monitored quantity to qualify as an improvement, i.e. an absolute change of less than min_delta, will count as no improvement.double, default: 0
--max_epochsNumber of passes through the dataset, defaults to (20000 / number of cells) * 400 or 400; whichever is smallest.integer
--reduce_lr_on_plateauWhether to monitor validation loss and reduce learning rate when validation set lr_scheduler_metric plateaus.boolean, default: TRUE
--lr_factorFactor to reduce learning rate.double, default: 0.6
--lr_patienceNumber of epochs with no improvement after which learning rate will be reduced.double, default: 30
+
+
+

Umap options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_umapIn which .obsm slot to store the resulting UMAP embedding.string, default: "X_scvi_umap"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author)
  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p3(toSortedList)
+    p5(flatMap)
+    p13(scvi)
+    p24(find_neighbors)
+    p34(umap)
+    p42(Output)
+    p0-->p3
+    p3-->p5
+    p5-->p13
+    p13-->p24
+    p24-->p34
+    p34-->p42
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/multiomics/full_pipeline.html b/pr-preview/pr-51/components/workflows/multiomics/full_pipeline.html new file mode 100644 index 00000000..49f09fae --- /dev/null +++ b/pr-preview/pr-51/components/workflows/multiomics/full_pipeline.html @@ -0,0 +1,2163 @@ + + + + + + + + + + +OpenPipelines - Full pipeline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Full pipeline

+
+ +
+
+ A pipeline to analyse multiple multiomics samples. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: full_pipeline
+Namespace: multiomics

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/multiomics/full_pipeline/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "input.h5mu"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+
+# Sample ID options
+add_id_to_obs: true
+add_id_obs_output: "sample_id"
+add_id_make_observation_keys_unique: true
+
+# RNA filtering options
+# rna_min_counts: 200
+# rna_max_counts: 5000000
+# rna_min_genes_per_cell: 200
+# rna_max_genes_per_cell: 1500000
+# rna_min_cells_per_gene: 3
+# rna_min_fraction_mito: 0
+# rna_max_fraction_mito: 0.2
+
+# CITE-seq filtering options
+# prot_min_counts: 3
+# prot_max_counts: 5000000
+# prot_min_proteins_per_cell: 200
+# prot_max_proteins_per_cell: 100000000
+# prot_min_cells_per_protein: 3
+
+# Highly variable gene detection
+filter_with_hvg_var_output: "filter_with_hvg"
+filter_with_hvg_obs_batch_key: "sample_id"
+
+# Mitochondrial Gene Detection
+# var_name_mitochondrial_genes: "foo"
+# var_gene_names: "gene_symbol"
+mitochondrial_gene_regex: "^[mM][tT]-"
+
+# QC metrics calculation options
+# var_qc_metrics: ["ercc", "highly_variable"]
+top_n_vars: [50, 100, 200, 500]
+
+# PCA options
+pca_overwrite: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/multiomics/full_pipeline/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "input.h5mu"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

Sample ID options

+

Options for adding the id to .obs on the MuData object. Having a sample id present in a requirement of several components for this pipeline.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--add_id_to_obsAdd the value passed with –id to .obs.boolean, default: TRUE
--add_id_obs_output.Obs column to add the sample IDs to. Required and only used when –add_id_to_obs is set to ‘true’string, default: "sample_id"
--add_id_make_observation_keys_uniqueJoin the id to the .obs index (.obs_names). Only used when –add_id_to_obs is set to ‘true’.boolean, default: TRUE
+
+
+

RNA filtering options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--rna_min_countsMinimum number of counts captured per cell.integer, example: 200
--rna_max_countsMaximum number of counts captured per cell.integer, example: 5000000
--rna_min_genes_per_cellMinimum of non-zero values per cell.integer, example: 200
--rna_max_genes_per_cellMaximum of non-zero values per cell.integer, example: 1500000
--rna_min_cells_per_geneMinimum of non-zero values per gene.integer, example: 3
--rna_min_fraction_mitoMinimum fraction of UMIs that are mitochondrial.double, example: 0
--rna_max_fraction_mitoMaximum fraction of UMIs that are mitochondrial.double, example: 0.2
+
+
+

CITE-seq filtering options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--prot_min_countsMinimum number of counts per cell.integer, example: 3
--prot_max_countsMinimum number of counts per cell.integer, example: 5000000
--prot_min_proteins_per_cellMinimum of non-zero values per cell.integer, example: 200
--prot_max_proteins_per_cellMaximum of non-zero values per cell.integer, example: 100000000
--prot_min_cells_per_proteinMinimum of non-zero values per protein.integer, example: 3
+
+
+

Highly variable gene detection

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--filter_with_hvg_var_outputIn which .var slot to store a boolean array corresponding to the highly variable genes.string, default: "filter_with_hvg"
--filter_with_hvg_obs_batch_keyIf specified, highly-variable genes are selected within each batch separately and merged. This simple process avoids the selection of batch-specific genes and acts as a lightweight batch correction method.string, default: "sample_id"
+
+
+

Mitochondrial Gene Detection

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--var_name_mitochondrial_genesIn which .var slot to store a boolean array corresponding the mitochondrial genes.string
--var_gene_names.var column name to be used to detect mitochondrial genes instead of .var_names (default if not set). Gene names matching with the regex value from –mitochondrial_gene_regex will be identified as a mitochondrial gene.string, example: "gene_symbol"
--mitochondrial_gene_regexRegex string that identifies mitochondrial genes from –var_gene_names. By default will detect human and mouse mitochondrial genes from a gene symbol.string, default: "^[mM][tT]-"
+
+
+

QC metrics calculation options

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--var_qc_metricsKeys to select a boolean (containing only True or False) column from .var. For each cell, calculate the proportion of total values for genes which are labeled ‘True’, compared to the total sum of the values for all genes. Defaults to the combined values specified for –var_name_mitochondrial_genes and –filter_with_hvg_var_output.string, example: "ercc,highly_variable"
--top_n_varsNumber of top vars to be used to calculate cumulative proportions. If not specified, proportions are not calculated. --top_n_vars 20,50 finds cumulative proportion to the 20th and 50th most expressed vars.integer, default: 50, default: 100, default: 200, default: 500
+
+
+

PCA options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--pca_overwriteAllow overwriting slots for PCA output.boolean_true
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author, maintainer)
  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p7(toSortedList)
+    p9(Output)
+    p11(filter)
+    p17(add_id)
+    p19(join)
+    p23(mix)
+    p22(filter)
+    p25(filter)
+    p30(split_modalities)
+    p32(join)
+    p39(concat)
+    p35(filter)
+    p37(test_wf:run_wf:split_modalities_workflow:splitStub)
+    p40(flatMap)
+    p41(filter)
+    p44(toSortedList)
+    p46(flatMap)
+    p53(filter_with_counts)
+    p55(join)
+    p63(do_filter)
+    p65(join)
+    p73(filter_with_scrublet)
+    p75(join)
+    p110(concat)
+    p79(filter)
+    p82(toSortedList)
+    p84(flatMap)
+    p91(test_wf:run_wf:singlesample_processing_workflow:prot_singlesample:filter_with_counts:filter_with_counts_process1)
+    p93(join)
+    p101(test_wf:run_wf:singlesample_processing_workflow:prot_singlesample:do_filter:do_filter_process1)
+    p103(join)
+    p108(filter)
+    p112(groupTuple)
+    p118(concat)
+    p120(join)
+    p125(filter)
+    p128(toSortedList)
+    p130(flatMap)
+    p132(toSortedList)
+    p134(Output)
+    p140(normalize_total)
+    p142(join)
+    p150(log1p)
+    p152(join)
+    p160(delete_layer)
+    p162(join)
+    p170(filter_with_hvg)
+    p172(join)
+    p180(rna_calculate_qc_metrics)
+    p182(join)
+    p223(concat)
+    p188(filter)
+    p191(toSortedList)
+    p193(flatMap)
+    p195(toSortedList)
+    p197(Output)
+    p203(clr)
+    p205(join)
+    p213(prot_calculate_qc_metrics)
+    p215(join)
+    p221(filter)
+    p224(toSortedList)
+    p230(merge)
+    p232(join)
+    p235(filter)
+    p239(toSortedList)
+    p241(flatMap)
+    p248(pca)
+    p250(join)
+    p258(find_neighbors)
+    p260(join)
+    p268(umap)
+    p270(join)
+    p275(concat)
+    p274(filter)
+    p276(filter)
+    p280(toSortedList)
+    p282(flatMap)
+    p289(pca)
+    p291(join)
+    p299(find_neighbors)
+    p301(join)
+    p309(test_wf:run_wf:integration_setup_workflow:initialize_integration_prot:umap:umap_process1)
+    p311(join)
+    p316(concat)
+    p315(filter)
+    p322(publish)
+    p324(join)
+    p329(toSortedList)
+    p331(Output)
+    p22-->p23
+    p39-->p40
+    p40-->p41
+    p40-->p79
+    p40-->p108
+    p223-->p224
+    p274-->p275
+    p275-->p276
+    p275-->p315
+    p315-->p316
+    p0-->p2
+    p2-->p4
+    p4-->p7
+    p7-->p9
+    p4-->p11
+    p4-->p22
+    p11-->p19
+    p11-->p17
+    p17-->p19
+    p19-->p23
+    p23-->p25
+    p23-->p35
+    p25-->p32
+    p25-->p30
+    p30-->p32
+    p32-->p39
+    p35-->p37
+    p37-->p39
+    p41-->p44
+    p44-->p46
+    p46-->p55
+    p46-->p53
+    p53-->p55
+    p55-->p65
+    p55-->p63
+    p63-->p65
+    p65-->p75
+    p65-->p73
+    p73-->p75
+    p75-->p110
+    p79-->p82
+    p82-->p84
+    p84-->p93
+    p84-->p91
+    p91-->p93
+    p93-->p103
+    p93-->p101
+    p101-->p103
+    p103-->p110
+    p108-->p110
+    p110-->p112
+    p112-->p120
+    p112-->p118
+    p118-->p120
+    p120-->p125
+    p120-->p188
+    p120-->p221
+    p125-->p128
+    p128-->p130
+    p130-->p132
+    p132-->p134
+    p130-->p142
+    p130-->p140
+    p140-->p142
+    p142-->p152
+    p142-->p150
+    p150-->p152
+    p152-->p162
+    p152-->p160
+    p160-->p162
+    p162-->p172
+    p162-->p170
+    p170-->p172
+    p172-->p182
+    p172-->p180
+    p180-->p182
+    p182-->p223
+    p188-->p191
+    p191-->p193
+    p193-->p195
+    p195-->p197
+    p193-->p205
+    p193-->p203
+    p203-->p205
+    p205-->p215
+    p205-->p213
+    p213-->p215
+    p215-->p223
+    p221-->p223
+    p224-->p232
+    p224-->p230
+    p230-->p232
+    p232-->p235
+    p232-->p274
+    p235-->p239
+    p239-->p241
+    p241-->p250
+    p241-->p248
+    p248-->p250
+    p250-->p260
+    p250-->p258
+    p258-->p260
+    p260-->p270
+    p260-->p268
+    p268-->p270
+    p270-->p275
+    p276-->p280
+    p280-->p282
+    p282-->p291
+    p282-->p289
+    p289-->p291
+    p291-->p301
+    p291-->p299
+    p299-->p301
+    p301-->p311
+    p301-->p309
+    p309-->p311
+    p311-->p316
+    p316-->p324
+    p316-->p322
+    p322-->p324
+    p324-->p329
+    p329-->p331
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/multiomics/integration.html b/pr-preview/pr-51/components/workflows/multiomics/integration.html new file mode 100644 index 00000000..319f537f --- /dev/null +++ b/pr-preview/pr-51/components/workflows/multiomics/integration.html @@ -0,0 +1,1879 @@ + + + + + + + + + + +OpenPipelines - Integration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Integration

+
+ +
+
+ A pipeline for demultiplexing multimodal multi-sample RNA transcriptomics data. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: integration
+Namespace: multiomics

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.8.0 -latest \
+  -main-script workflows/multiomics/integration/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "dataset.h5mu"
+layer: "log_normalized"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+
+# PCA options
+obsm_pca: "X_pca"
+# var_pca_feature_selection: "foo"
+
+# Harmony integration options
+obsm_integrated: "X_pca_integrated"
+obs_covariates: # please fill in - example: ["batch", "sample"]
+rna_theta: [2]
+
+# Neighbour calculation
+uns_neighbors: "neighbors"
+obsp_neighbor_distances: "distances"
+obsp_neighbor_connectivities: "connectivities"
+
+# Clustering options
+obs_cluster: "leiden"
+leiden_resolution: 1
+
+# Umap options
+obsm_umap: "X_umap"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.8.0 -latest \
+  -profile docker \
+  -main-script workflows/multiomics/integration/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "dataset.h5mu"
--layeruse specified layer for expression values instead of the .X object from the modality.string, default: "log_normalized"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

PCA options

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_pcaIn which .obsm slot to store the resulting PCA embedding.string, default: "X_pca"
--var_pca_feature_selectionColumn name in .var matrix that will be used to select which genes to run the PCA on.string
+
+
+

Harmony integration options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_integratedIn which .obsm slot to store the resulting integrated embedding.string, default: "X_pca_integrated"
--obs_covariatesThe .obs field(s) that define the covariate(s) to regress out.string, required, example: "batch", example: "sample"
--rna_thetaDiversity clustering penalty parameter. Specify for each variable in group.by.vars. theta=0 does not encourage any diversity. Larger values of theta result in more diverse clusters.”double, default: 2
+
+
+

Neighbour calculation

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--uns_neighborsIn which .uns slot to store various neighbor output objects.string, default: "neighbors"
--obsp_neighbor_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "distances"
--obsp_neighbor_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "connectivities"
+
+
+

Clustering options

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obs_clusterName of the .obs key under which to add the cluster labels.string, default: "leiden"
--leiden_resolutionControl the coarseness of the clustering. Higher values lead to more clusters.double, default: 1
+
+
+

Umap options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_umapIn which .obsm slot to store the resulting UMAP embedding.string, default: "X_umap"
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (author)
  • +
  • Robrecht Cannoodt (author, maintainer)
  • +
  • Dries Schaumont (author)
  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p15(join)
+    p13(pca)
+    p18(filter)
+    p29(concat)
+    p19(filter)
+    p27(join)
+    p25(harmonypy)
+    p38(join)
+    p36(find_neighbors)
+    p48(join)
+    p46(leiden)
+    p58(join)
+    p56(umap)
+    p64(Output)
+    p18-->p29
+    p0-->p2
+    p2-->p4
+    p4-->p15
+    p4-->p13
+    p13-->p15
+    p15-->p18
+    p15-->p19
+    p19-->p27
+    p19-->p25
+    p25-->p27
+    p27-->p29
+    p29-->p38
+    p29-->p36
+    p36-->p38
+    p38-->p48
+    p38-->p46
+    p46-->p48
+    p48-->p58
+    p48-->p56
+    p56-->p58
+    p58-->p64
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/multiomics/integration/bbknn_leiden.html b/pr-preview/pr-51/components/workflows/multiomics/integration/bbknn_leiden.html new file mode 100644 index 00000000..8943e9db --- /dev/null +++ b/pr-preview/pr-51/components/workflows/multiomics/integration/bbknn_leiden.html @@ -0,0 +1,1830 @@ + + + + + + + + + + +OpenPipelines - Bbknn leiden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Bbknn leiden

+
+ +
+
+ Run bbknn followed by leiden clustering and run umap on the result. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: bbknn_leiden
+Namespace: multiomics/integration

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/multiomics/integration/bbknn_leiden/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "dataset.h5mu"
+layer: "log_normalized"
+modality: "rna"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+
+# Bbknn
+obsm_input: "X_pca"
+obs_batch: "sample_id"
+uns_output: "bbknn_integration_neighbors"
+obsp_distances: "bbknn_integration_distances"
+obsp_connectivities: "bbknn_integration_connectivities"
+n_neighbors_within_batch: 3
+n_pcs: 50
+# n_trim: 123
+
+# Clustering options
+obs_cluster: "bbknn_integration_leiden"
+leiden_resolution: 1
+
+# UMAP options
+obsm_umap: "X_leiden_bbknn_umap"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/multiomics/integration/bbknn_leiden/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "dataset.h5mu"
--layeruse specified layer for expression values instead of the .X object from the modality.string, default: "log_normalized"
--modalityWhich modality to process.string, default: "rna"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

Bbknn

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_inputThe dimensionality reduction in .obsm to use for neighbour detection. Defaults to X_pca.string, default: "X_pca"
--obs_batch.obs column name discriminating between your batches.string, default: "sample_id"
--uns_outputMandatory .uns slot to store various neighbor output objects.string, default: "bbknn_integration_neighbors"
--obsp_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "bbknn_integration_distances"
--obsp_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "bbknn_integration_connectivities"
--n_neighbors_within_batchHow many top neighbours to report for each batch; total number of neighbours in the initial k-nearest-neighbours computation will be this number times the number of batches.integer, default: 3
--n_pcsHow many dimensions (in case of PCA, principal components) to use in the analysis.integer, default: 50
--n_trimTrim the neighbours of each cell to these many top connectivities. May help with population independence and improve the tidiness of clustering. The lower the value the more independent the individual populations, at the cost of more conserved batch effect. If None (default), sets the parameter value automatically to 10 times neighbors_within_batch times the number of batches. Set to 0 to skip.integer
+
+
+

Clustering options

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obs_clusterPrefix for the .obs keys under which to add the cluster labels. Newly created columns in .obs will be created from the specified value for ‘–obs_cluster’ suffixed with an underscore and one of the resolutions resolutions specified in ‘–leiden_resolution’.string, default: "bbknn_integration_leiden"
--leiden_resolutionControl the coarseness of the clustering. Higher values lead to more clusters.double, default: 1
+
+
+

UMAP options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_umapIn which .obsm slot to store the resulting UMAP embedding.string, default: "X_leiden_bbknn_umap"
+
+
+
+

Authors

+
    +
  • Mauro Saporita (author)

  • +
  • Povilas Gibas (author)

  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p10(bbknn)
+    p12(join)
+    p20(leiden)
+    p22(join)
+    p30(umap)
+    p32(join)
+    p40(move_obsm_to_obs)
+    p42(join)
+    p48(Output)
+    p0-->p2
+    p2-->p4
+    p4-->p12
+    p4-->p10
+    p10-->p12
+    p12-->p22
+    p12-->p20
+    p20-->p22
+    p22-->p32
+    p22-->p30
+    p30-->p32
+    p32-->p42
+    p32-->p40
+    p40-->p42
+    p42-->p48
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/multiomics/integration/harmony_leiden.html b/pr-preview/pr-51/components/workflows/multiomics/integration/harmony_leiden.html new file mode 100644 index 00000000..60d2f503 --- /dev/null +++ b/pr-preview/pr-51/components/workflows/multiomics/integration/harmony_leiden.html @@ -0,0 +1,1849 @@ + + + + + + + + + + +OpenPipelines - Harmony leiden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Harmony leiden

+
+ +
+
+ Run harmony integration followed by neighbour calculations, leiden clustering and run umap on the result. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: harmony_leiden
+Namespace: multiomics/integration

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/multiomics/integration/harmony_leiden/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "dataset.h5mu"
+layer: "log_normalized"
+modality: "rna"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+
+# Neighbour calculation
+uns_neighbors: "harmonypy_integration_neighbors"
+obsp_neighbor_distances: "harmonypy_integration_distances"
+obsp_neighbor_connectivities: "harmonypy_integration_connectivities"
+
+# Harmony integration options
+embedding: "X_pca"
+obsm_integrated: "X_pca_integrated"
+obs_covariates: # please fill in - example: ["batch", "sample"]
+theta: [2]
+
+# Clustering options
+obs_cluster: "harmony_integration_leiden"
+leiden_resolution: [1]
+
+# Umap options
+obsm_umap: "X_leiden_harmony_umap"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/multiomics/integration/harmony_leiden/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "dataset.h5mu"
--layeruse specified layer for expression values instead of the .X object from the modality.string, default: "log_normalized"
--modalityWhich modality to process.string, default: "rna"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

Neighbour calculation

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--uns_neighborsIn which .uns slot to store various neighbor output objects.string, default: "harmonypy_integration_neighbors"
--obsp_neighbor_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "harmonypy_integration_distances"
--obsp_neighbor_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "harmonypy_integration_connectivities"
+
+
+

Harmony integration options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--embeddingEmbedding to use as inputstring, default: "X_pca"
--obsm_integratedIn which .obsm slot to store the resulting integrated embedding.string, default: "X_pca_integrated"
--obs_covariatesThe .obs field(s) that define the covariate(s) to regress out.string, required, example: "batch", example: "sample"
--thetaDiversity clustering penalty parameter. Specify for each variable in group.by.vars. theta=0 does not encourage any diversity. Larger values of theta result in more diverse clusters.”double, default: 2
+
+
+

Clustering options

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obs_clusterPrefix for the .obs keys under which to add the cluster labels. Newly created columns in .obs will be created from the specified value for ‘–obs_cluster’ suffixed with an underscore and one of the resolutions resolutions specified in ‘–leiden_resolution’.string, default: "harmony_integration_leiden"
--leiden_resolutionControl the coarseness of the clustering. Higher values lead to more clusters.double, default: 1
+
+
+

Umap options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_umapIn which .obsm slot to store the resulting UMAP embedding.string, default: "X_leiden_harmony_umap"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author)
  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p10(harmonypy)
+    p12(join)
+    p20(find_neighbors)
+    p22(join)
+    p30(leiden)
+    p32(join)
+    p40(umap)
+    p42(join)
+    p50(move_obsm_to_obs)
+    p52(join)
+    p58(Output)
+    p0-->p2
+    p2-->p4
+    p4-->p12
+    p4-->p10
+    p10-->p12
+    p12-->p22
+    p12-->p20
+    p20-->p22
+    p22-->p32
+    p22-->p30
+    p30-->p32
+    p32-->p42
+    p32-->p40
+    p40-->p42
+    p42-->p52
+    p42-->p50
+    p50-->p52
+    p52-->p58
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/multiomics/integration/initialize_integration.html b/pr-preview/pr-51/components/workflows/multiomics/integration/initialize_integration.html new file mode 100644 index 00000000..1b7fe2a0 --- /dev/null +++ b/pr-preview/pr-51/components/workflows/multiomics/integration/initialize_integration.html @@ -0,0 +1,1802 @@ + + + + + + + + + + +OpenPipelines - Initialize integration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Initialize integration

+
+ +
+
+ Run calculations that output information required for most integration methods: PCA, nearest neighbour and UMAP. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: initialize_integration
+Namespace: multiomics/integration

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/multiomics/integration/initialize_integration/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "dataset.h5mu"
+layer: "log_normalized"
+modality: "rna"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+
+# PCA options
+obsm_pca: "X_pca"
+# var_pca_feature_selection: "foo"
+pca_overwrite: false
+
+# Neighbour calculation
+uns_neighbors: "neighbors"
+obsp_neighbor_distances: "distances"
+obsp_neighbor_connectivities: "connectivities"
+
+# Umap options
+obsm_umap: "X_umap"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/multiomics/integration/initialize_integration/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "dataset.h5mu"
--layeruse specified layer for expression values instead of the .X object from the modality.string, default: "log_normalized"
--modalityWhich modality to process.string, default: "rna"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

PCA options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_pcaIn which .obsm slot to store the resulting PCA embedding.string, default: "X_pca"
--var_pca_feature_selectionColumn name in .var matrix that will be used to select which genes to run the PCA on.string
--pca_overwriteAllow overwriting slots for PCA output.boolean_true
+
+
+

Neighbour calculation

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--uns_neighborsIn which .uns slot to store various neighbor output objects.string, default: "neighbors"
--obsp_neighbor_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "distances"
--obsp_neighbor_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "connectivities"
+
+
+

Umap options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_umapIn which .obsm slot to store the resulting UMAP embedding.string, default: "X_umap"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author)
  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p11(pca)
+    p13(join)
+    p21(find_neighbors)
+    p23(join)
+    p31(umap)
+    p33(join)
+    p38(toSortedList)
+    p40(Output)
+    p0-->p2
+    p2-->p4
+    p4-->p13
+    p4-->p11
+    p11-->p13
+    p13-->p23
+    p13-->p21
+    p21-->p23
+    p23-->p33
+    p23-->p31
+    p31-->p33
+    p33-->p38
+    p38-->p40
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/multiomics/integration/leiden_scvi.html b/pr-preview/pr-51/components/workflows/multiomics/integration/leiden_scvi.html new file mode 100644 index 00000000..1637ad6f --- /dev/null +++ b/pr-preview/pr-51/components/workflows/multiomics/integration/leiden_scvi.html @@ -0,0 +1,1891 @@ + + + + + + + + + + +OpenPipelines - Leiden scvi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Leiden scvi

+
+ +
+
+ Run scvi integration followed by neighbour calculations, leiden clustering and run umap on the result. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: leiden_scvi
+Namespace: multiomics/integration

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/multiomics/integration/scvi_leiden/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "dataset.h5mu"
+layer: "log_normalized"
+modality: "rna"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+# output_model: "$id.$key.output_model.output_model"
+
+# Neighbour calculation
+uns_neighbors: "scvi_integration_neighbors"
+obsp_neighbor_distances: "scvi_integration_distances"
+obsp_neighbor_connectivities: "scvi_integration_connectivities"
+
+# Scvi integration options
+obs_batch: # please fill in - example: "foo"
+obsm_output: "X_scvi_integrated"
+# early_stopping: true
+early_stopping_monitor: "elbo_validation"
+early_stopping_patience: 45
+early_stopping_min_delta: 0.0
+# max_epochs: 123
+reduce_lr_on_plateau: true
+lr_factor: 0.6
+lr_patience: 30
+
+# Clustering options
+obs_cluster: "scvi_integration_leiden"
+leiden_resolution: [1]
+
+# Umap options
+obsm_umap: "X_scvi_umap"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/multiomics/integration/scvi_leiden/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "dataset.h5mu"
--layeruse specified layer for expression values instead of the .X object from the modality.string, default: "log_normalized"
--modalityWhich modality to process.string, default: "rna"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
--output_modelFolder where the state of the trained model will be saved to.file, required, example: "output_dir"
+
+
+

Neighbour calculation

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--uns_neighborsIn which .uns slot to store various neighbor output objects.string, default: "scvi_integration_neighbors"
--obsp_neighbor_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "scvi_integration_distances"
--obsp_neighbor_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "scvi_integration_connectivities"
+
+
+

Scvi integration options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obs_batchColumn name discriminating between your batches.string, required
--obsm_outputIn which .obsm slot to store the resulting integrated embedding.string, default: "X_scvi_integrated"
--early_stoppingWhether to perform early stopping with respect to the validation set.boolean
--early_stopping_monitorMetric logged during validation set epoch.string, default: "elbo_validation"
--early_stopping_patienceNumber of validation epochs with no improvement after which training will be stopped.integer, default: 45
--early_stopping_min_deltaMinimum change in the monitored quantity to qualify as an improvement, i.e. an absolute change of less than min_delta, will count as no improvement.double, default: 0
--max_epochsNumber of passes through the dataset, defaults to (20000 / number of cells) * 400 or 400; whichever is smallest.integer
--reduce_lr_on_plateauWhether to monitor validation loss and reduce learning rate when validation set lr_scheduler_metric plateaus.boolean, default: TRUE
--lr_factorFactor to reduce learning rate.double, default: 0.6
--lr_patienceNumber of epochs with no improvement after which learning rate will be reduced.double, default: 30
+
+
+

Clustering options

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obs_clusterPrefix for the .obs keys under which to add the cluster labels. Newly created columns in .obs will be created from the specified value for ‘–obs_cluster’ suffixed with an underscore and one of the resolutions resolutions specified in ‘–leiden_resolution’.string, default: "scvi_integration_leiden"
--leiden_resolutionControl the coarseness of the clustering. Higher values lead to more clusters.double, default: 1
+
+
+

Umap options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_umapIn which .obsm slot to store the resulting UMAP embedding.string, default: "X_scvi_umap"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author)
  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p3(toSortedList)
+    p5(flatMap)
+    p12(scvi)
+    p14(join)
+    p23(find_neighbors)
+    p25(join)
+    p33(leiden)
+    p35(join)
+    p43(umap)
+    p45(join)
+    p53(move_obsm_to_obs)
+    p55(join)
+    p62(Output)
+    p0-->p3
+    p3-->p5
+    p5-->p14
+    p5-->p12
+    p12-->p14
+    p14-->p25
+    p14-->p23
+    p23-->p25
+    p25-->p35
+    p25-->p33
+    p33-->p35
+    p35-->p45
+    p35-->p43
+    p43-->p45
+    p45-->p55
+    p45-->p53
+    p53-->p55
+    p55-->p62
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/multiomics/integration/scanorama_leiden.html b/pr-preview/pr-51/components/workflows/multiomics/integration/scanorama_leiden.html new file mode 100644 index 00000000..c073e34a --- /dev/null +++ b/pr-preview/pr-51/components/workflows/multiomics/integration/scanorama_leiden.html @@ -0,0 +1,1874 @@ + + + + + + + + + + +OpenPipelines - Scanorama leiden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Scanorama leiden

+
+ +
+
+ Run scanorama integration followed by neighbour calculations, leiden clustering and run umap on the result. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: scanorama_leiden
+Namespace: multiomics/integration

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/multiomics/integration/scanorama_leiden/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "dataset.h5mu"
+layer: "log_normalized"
+modality: "rna"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+
+# Neighbour calculation
+uns_neighbors: "scanorama_integration_neighbors"
+obsp_neighbor_distances: "scanorama_integration_distances"
+obsp_neighbor_connectivities: "scanorama_integration_connectivities"
+
+# Scanorama integration options
+obs_batch: "sample_id"
+obsm_input: "X_pca"
+obsm_output: "X_scanorama"
+knn: 20
+batch_size: 5000
+sigma: 15
+approx: true
+alpha: 0.1
+
+# Clustering options
+obs_cluster: "scanorama_integration_leiden"
+leiden_resolution: [1]
+
+# Umap options
+obsm_umap: "X_leiden_scanorama_umap"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/multiomics/integration/scanorama_leiden/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "dataset.h5mu"
--layeruse specified layer for expression values instead of the .X object from the modality.string, default: "log_normalized"
--modalityWhich modality to process.string, default: "rna"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

Neighbour calculation

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--uns_neighborsIn which .uns slot to store various neighbor output objects.string, default: "scanorama_integration_neighbors"
--obsp_neighbor_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "scanorama_integration_distances"
--obsp_neighbor_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "scanorama_integration_connectivities"
+
+
+

Scanorama integration options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obs_batchColumn name discriminating between your batches.string, default: "sample_id"
--obsm_input.obsm slot that points to embedding to run scanorama on.string, default: "X_pca"
--obsm_outputThe name of the field in adata.obsm where the integrated embeddings will be stored after running this function. Defaults to X_scanorama.string, default: "X_scanorama"
--knnNumber of nearest neighbors to use for matching.integer, default: 20
--batch_sizeThe batch size used in the alignment vector computation. Useful when integrating very large (>100k samples) datasets. Set to large value that runs within available memory.integer, default: 5000
--sigmaCorrection smoothing parameter on Gaussian kernel.double, default: 15
--approxUse approximate nearest neighbors with Python annoy; greatly speeds up matching runtime.boolean, default: TRUE
--alphaAlignment score minimum cutoffdouble, default: 0.1
+
+
+

Clustering options

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obs_clusterPrefix for the .obs keys under which to add the cluster labels. Newly created columns in .obs will be created from the specified value for ‘–obs_cluster’ suffixed with an underscore and one of the resolutions specified in ‘–leiden_resolution’.string, default: "scanorama_integration_leiden"
--leiden_resolutionControl the coarseness of the clustering. Higher values lead to more clusters.double, default: 1
+
+
+

Umap options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_umapIn which .obsm slot to store the resulting UMAP embedding.string, default: "X_leiden_scanorama_umap"
+
+
+
+

Authors

+
    +
  • Mauro Saporita (author)

  • +
  • Povilas Gibas (author)

  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p11(scanorama)
+    p13(join)
+    p21(find_neighbors)
+    p23(join)
+    p31(leiden)
+    p33(join)
+    p41(umap)
+    p43(join)
+    p51(move_obsm_to_obs)
+    p53(join)
+    p60(Output)
+    p0-->p2
+    p2-->p4
+    p4-->p13
+    p4-->p11
+    p11-->p13
+    p13-->p23
+    p13-->p21
+    p21-->p23
+    p23-->p33
+    p23-->p31
+    p31-->p33
+    p33-->p43
+    p33-->p41
+    p41-->p43
+    p43-->p53
+    p43-->p51
+    p51-->p53
+    p53-->p60
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/multiomics/integration/totalvi_leiden.html b/pr-preview/pr-51/components/workflows/multiomics/integration/totalvi_leiden.html new file mode 100644 index 00000000..a1377ee7 --- /dev/null +++ b/pr-preview/pr-51/components/workflows/multiomics/integration/totalvi_leiden.html @@ -0,0 +1,2048 @@ + + + + + + + + + + +OpenPipelines - Totalvi leiden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Totalvi leiden

+
+ +
+
+ Run totalVI integration followed by neighbour calculations, leiden clustering and run umap on the result. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: totalvi_leiden
+Namespace: multiomics/integration

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/multiomics/integration/totalvi_leiden/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "dataset.h5mu"
+layer: "log_normalized"
+modality: "rna"
+prot_modality: "prot"
+reference: # please fill in - example: "path/to/file"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+# reference_model_path: "$id.$key.reference_model_path.reference_model_path"
+# query_model_path: "$id.$key.query_model_path.query_model_path"
+
+# General TotalVI Options
+obs_batch: "sample_id"
+max_epochs: 400
+max_query_epochs: 200
+weight_decay: 0.0
+force_retrain: false
+# var_input: "foo"
+
+# TotalVI integration options RNA
+rna_reference_modality: "rna"
+rna_obsm_output: "X_totalvi"
+
+# TotalVI integration options ADT
+prot_reference_modality: "prot"
+prot_obsm_output: "X_totalvi"
+
+# Neighbour calculation RNA
+rna_uns_neighbors: "totalvi_integration_neighbors"
+rna_obsp_neighbor_distances: "totalvi_integration_distances"
+rna_obsp_neighbor_connectivities: "totalvi_integration_connectivities"
+
+# Neighbour calculation ADT
+prot_uns_neighbors: "totalvi_integration_neighbors"
+prot_obsp_neighbor_distances: "totalvi_integration_distances"
+prot_obsp_neighbor_connectivities: "totalvi_integration_connectivities"
+
+# Clustering options RNA
+rna_obs_cluster: "totalvi_integration_leiden"
+rna_leiden_resolution: [1]
+
+# Clustering options ADT
+prot_obs_cluster: "totalvi_integration_leiden"
+prot_leiden_resolution: [1]
+
+# Umap options
+obsm_umap: "X_totalvi_umap"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/multiomics/integration/totalvi_leiden/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "dataset.h5mu"
--layeruse specified layer for expression values instead of the .X object from the modality.string, default: "log_normalized"
--modalityWhich modality to process.string, default: "rna"
--prot_modalityWhich modality to process.string, default: "prot"
--referenceInput h5mu file with reference data to train the TOTALVI model.file, required
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
--reference_model_pathDirectory with the reference model. If not exists, trained model will be saved therefile, default: "totalvi_model_reference"
--query_model_pathDirectory, where the query model will be savedfile, default: "totalvi_model_query"
+
+
+

General TotalVI Options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obs_batch.Obs column name discriminating between your batches.string, default: "sample_id"
--max_epochsNumber of passes through the datasetinteger, default: 400
--max_query_epochsNumber of passes through the dataset, when fine-tuning model for queryinteger, default: 200
--weight_decayWeight decay, when fine-tuning model for querydouble, default: 0
--force_retrainIf true, retrain the model and save it to reference_model_pathboolean_true
--var_inputBoolean .var column to subset data with (e.g. containing highly variable genes). By default, do not subset genes.string
+
+
+

TotalVI integration options RNA

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--rna_reference_modalitystring, default: "rna"
--rna_obsm_outputIn which .obsm slot to store the normalized RNA from TOTALVI.string, default: "X_totalvi"
+
+
+

TotalVI integration options ADT

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--prot_reference_modalityName of the modality containing proteins in the referencestring, default: "prot"
--prot_obsm_outputIn which .obsm slot to store the normalized protein data from TOTALVI.string, default: "X_totalvi"
+
+
+

Neighbour calculation RNA

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--rna_uns_neighborsIn which .uns slot to store various neighbor output objects.string, default: "totalvi_integration_neighbors"
--rna_obsp_neighbor_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "totalvi_integration_distances"
--rna_obsp_neighbor_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "totalvi_integration_connectivities"
+
+
+

Neighbour calculation ADT

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--prot_uns_neighborsIn which .uns slot to store various neighbor output objects.string, default: "totalvi_integration_neighbors"
--prot_obsp_neighbor_distancesIn which .obsp slot to store the distance matrix between the resulting neighbors.string, default: "totalvi_integration_distances"
--prot_obsp_neighbor_connectivitiesIn which .obsp slot to store the connectivities matrix between the resulting neighbors.string, default: "totalvi_integration_connectivities"
+
+
+

Clustering options RNA

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--rna_obs_clusterPrefix for the .obs keys under which to add the cluster labels. Newly created columns in .obs will be created from the specified value for ‘–obs_cluster’ suffixed with an underscore and one of the resolutions resolutions specified in ‘–leiden_resolution’.string, default: "totalvi_integration_leiden"
--rna_leiden_resolutionControl the coarseness of the clustering. Higher values lead to more clusters.double, default: 1
+
+
+

Clustering options ADT

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--prot_obs_clusterPrefix for the .obs keys under which to add the cluster labels. Newly created columns in .obs will be created from the specified value for ‘–obs_cluster’ suffixed with an underscore and one of the resolutions resolutions specified in ‘–leiden_resolution’.string, default: "totalvi_integration_leiden"
--prot_leiden_resolutionControl the coarseness of the clustering. Higher values lead to more clusters.double, default: 1
+
+
+

Umap options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--obsm_umapIn which .obsm slot to store the resulting UMAP embedding.string, default: "X_totalvi_umap"
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author)
  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p3(toSortedList)
+    p5(flatMap)
+    p12(totalvi)
+    p14(join)
+    p23(find_neighbors)
+    p25(join)
+    p33(leiden)
+    p35(join)
+    p43(umap)
+    p45(join)
+    p53(move_obsm_to_obs)
+    p55(join)
+    p64(test_wf:run_wf:test_wf:run_wf:neighbors_leiden_umap:find_neighbors:find_neighbors_process1)
+    p66(join)
+    p74(test_wf:run_wf:test_wf:run_wf:neighbors_leiden_umap:leiden:leiden_process1)
+    p76(join)
+    p84(test_wf:run_wf:test_wf:run_wf:neighbors_leiden_umap:umap:umap_process1)
+    p86(join)
+    p94(test_wf:run_wf:test_wf:run_wf:neighbors_leiden_umap:move_obsm_to_obs:move_obsm_to_obs_process1)
+    p96(join)
+    p104(publish)
+    p106(join)
+    p112(Output)
+    p0-->p3
+    p3-->p5
+    p5-->p14
+    p5-->p12
+    p12-->p14
+    p14-->p25
+    p14-->p23
+    p23-->p25
+    p25-->p35
+    p25-->p33
+    p33-->p35
+    p35-->p45
+    p35-->p43
+    p43-->p45
+    p45-->p55
+    p45-->p53
+    p53-->p55
+    p55-->p66
+    p55-->p64
+    p64-->p66
+    p66-->p76
+    p66-->p74
+    p74-->p76
+    p76-->p86
+    p76-->p84
+    p84-->p86
+    p86-->p96
+    p86-->p94
+    p94-->p96
+    p96-->p106
+    p96-->p104
+    p104-->p106
+    p106-->p112
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/multiomics/multisample.html b/pr-preview/pr-51/components/workflows/multiomics/multisample.html new file mode 100644 index 00000000..9fc035a3 --- /dev/null +++ b/pr-preview/pr-51/components/workflows/multiomics/multisample.html @@ -0,0 +1,1905 @@ + + + + + + + + + + +OpenPipelines - Multisample + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Multisample

+
+ +
+
+ This workflow serves as an entrypoint into the ‘full_pipeline’ in order to re-run the multisample processing and the integration setup. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: multisample
+Namespace: multiomics

+
+ +

An input .h5mu file will first be split in order to run the multisample processing per modality. Next, the modalities are merged again and the integration setup pipeline is executed. Please note that this workflow assumes that samples from multiple pipelines are already concatenated.

+
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/multiomics/multisample/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "foo"
+input: # please fill in - example: "input.h5mu"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+
+# Highly variable gene detection
+filter_with_hvg_var_output: "filter_with_hvg"
+filter_with_hvg_obs_batch_key: "sample_id"
+
+# QC metrics calculation options
+var_qc_metrics: ["filter_with_hvg"]
+top_n_vars: [50, 100, 200, 500]
+
+# PCA options
+pca_overwrite: false
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/multiomics/multisample/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "input.h5mu"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

Highly variable gene detection

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--filter_with_hvg_var_outputIn which .var slot to store a boolean array corresponding to the highly variable genes.string, default: "filter_with_hvg"
--filter_with_hvg_obs_batch_keyIf specified, highly-variable genes are selected within each batch separately and merged. This simple process avoids the selection of batch-specific genes and acts as a lightweight batch correction method.string, default: "sample_id"
+
+
+

QC metrics calculation options

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--var_qc_metricsKeys to select a boolean (containing only True or False) column from .var. For each cell, calculate the proportion of total values for genes which are labeled ‘True’, compared to the total sum of the values for all genes.string, default: "filter_with_hvg", example: "ercc,highly_variable"
--top_n_varsNumber of top vars to be used to calculate cumulative proportions. If not specified, proportions are not calculated. --top_n_vars 20,50 finds cumulative proportion to the 20th and 50th most expressed vars.integer, default: 50, default: 100, default: 200, default: 500
+
+
+

PCA options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--pca_overwriteAllow overwriting slots for PCA output.boolean_true
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author, maintainer)
  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p2(toSortedList)
+    p4(flatMap)
+    p7(filter)
+    p12(split_modalities)
+    p14(join)
+    p21(concat)
+    p17(filter)
+    p19(test_wf:run_wf:split_modalities_workflow:splitStub)
+    p22(flatMap)
+    p23(filter)
+    p26(toSortedList)
+    p28(flatMap)
+    p30(toSortedList)
+    p32(Output)
+    p38(normalize_total)
+    p40(join)
+    p48(log1p)
+    p50(join)
+    p58(delete_layer)
+    p60(join)
+    p68(filter_with_hvg)
+    p70(join)
+    p78(rna_calculate_qc_metrics)
+    p80(join)
+    p121(concat)
+    p86(filter)
+    p89(toSortedList)
+    p91(flatMap)
+    p93(toSortedList)
+    p95(Output)
+    p101(clr)
+    p103(join)
+    p111(prot_calculate_qc_metrics)
+    p113(join)
+    p119(filter)
+    p122(groupTuple)
+    p128(merge)
+    p130(join)
+    p133(filter)
+    p137(toSortedList)
+    p139(flatMap)
+    p146(pca)
+    p148(join)
+    p156(find_neighbors)
+    p158(join)
+    p166(umap)
+    p168(join)
+    p173(concat)
+    p172(filter)
+    p174(filter)
+    p178(toSortedList)
+    p180(flatMap)
+    p187(pca)
+    p189(join)
+    p197(find_neighbors)
+    p199(join)
+    p207(test_wf:run_wf:integration_setup_workflow:initialize_integration_prot:umap:umap_process1)
+    p209(join)
+    p214(concat)
+    p213(filter)
+    p220(publish)
+    p222(join)
+    p227(toSortedList)
+    p229(Output)
+    p21-->p22
+    p22-->p23
+    p22-->p86
+    p22-->p119
+    p121-->p122
+    p172-->p173
+    p173-->p174
+    p173-->p213
+    p213-->p214
+    p0-->p2
+    p2-->p4
+    p4-->p7
+    p4-->p17
+    p7-->p14
+    p7-->p12
+    p12-->p14
+    p14-->p21
+    p17-->p19
+    p19-->p21
+    p23-->p26
+    p26-->p28
+    p28-->p30
+    p30-->p32
+    p28-->p40
+    p28-->p38
+    p38-->p40
+    p40-->p50
+    p40-->p48
+    p48-->p50
+    p50-->p60
+    p50-->p58
+    p58-->p60
+    p60-->p70
+    p60-->p68
+    p68-->p70
+    p70-->p80
+    p70-->p78
+    p78-->p80
+    p80-->p121
+    p86-->p89
+    p89-->p91
+    p91-->p93
+    p93-->p95
+    p91-->p103
+    p91-->p101
+    p101-->p103
+    p103-->p113
+    p103-->p111
+    p111-->p113
+    p113-->p121
+    p119-->p121
+    p122-->p130
+    p122-->p128
+    p128-->p130
+    p130-->p133
+    p130-->p172
+    p133-->p137
+    p137-->p139
+    p139-->p148
+    p139-->p146
+    p146-->p148
+    p148-->p158
+    p148-->p156
+    p156-->p158
+    p158-->p168
+    p158-->p166
+    p166-->p168
+    p168-->p173
+    p174-->p178
+    p178-->p180
+    p180-->p189
+    p180-->p187
+    p187-->p189
+    p189-->p199
+    p189-->p197
+    p197-->p199
+    p199-->p209
+    p199-->p207
+    p207-->p209
+    p209-->p214
+    p214-->p222
+    p214-->p220
+    p220-->p222
+    p222-->p227
+    p227-->p229
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/multiomics/prot_multisample.html b/pr-preview/pr-51/components/workflows/multiomics/prot_multisample.html new file mode 100644 index 00000000..392a589d --- /dev/null +++ b/pr-preview/pr-51/components/workflows/multiomics/prot_multisample.html @@ -0,0 +1,1709 @@ + + + + + + + + + + +OpenPipelines - Prot multisample + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Prot multisample

+
+ +
+
+ Processing unimodal multi-sample ADT data. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: prot_multisample
+Namespace: multiomics

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/multiomics/prot_multisample/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "concatenated"
+input: # please fill in - example: "dataset.h5mu"
+
+# Outputs
+# output: "$id.$key.output.h5mu"
+
+# QC metrics calculation options
+top_n_vars: [50, 100, 200, 500]
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/multiomics/prot_multisample/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the concatenated filestring, required, example: "concatenated"
--inputPath to the samples.file, required, example: "dataset.h5mu"
+
+
+

Outputs

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

QC metrics calculation options

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--top_n_varsNumber of top vars to be used to calculate cumulative proportions. If not specified, proportions are not calculated. --top_n_vars 20,50 finds cumulative proportion to the 20th and 50th most expressed vars.integer, default: 50, default: 100, default: 200, default: 500
+
+
+
+

Authors

+
    +
  • Dries Schaumont (author)
  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p3(toSortedList)
+    p5(flatMap)
+    p7(toSortedList)
+    p9(Output)
+    p15(clr)
+    p17(join)
+    p25(prot_calculate_qc_metrics)
+    p27(join)
+    p34(Output)
+    p0-->p3
+    p3-->p5
+    p5-->p7
+    p7-->p9
+    p5-->p17
+    p5-->p15
+    p15-->p17
+    p17-->p27
+    p17-->p25
+    p25-->p27
+    p27-->p34
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/multiomics/prot_singlesample.html b/pr-preview/pr-51/components/workflows/multiomics/prot_singlesample.html new file mode 100644 index 00000000..6a3a75a5 --- /dev/null +++ b/pr-preview/pr-51/components/workflows/multiomics/prot_singlesample.html @@ -0,0 +1,1745 @@ + + + + + + + + + + +OpenPipelines - Prot singlesample + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Prot singlesample

+
+ +
+
+ Processing unimodal single-sample CITE-seq data. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: prot_singlesample
+Namespace: multiomics

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/multiomics/prot_singlesample/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Input
+id: # please fill in - example: "foo"
+input: # please fill in - example: "dataset.h5mu"
+
+# Output
+# output: "$id.$key.output.h5mu"
+
+# Filtering options
+# min_counts: 200
+# max_counts: 5000000
+# min_proteins_per_cell: 200
+# max_proteins_per_cell: 1500000
+# min_cells_per_protein: 3
+# min_fraction_mito: 0
+# max_fraction_mito: 0.2
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/multiomics/prot_singlesample/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Input

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "dataset.h5mu"
+
+
+

Output

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

Filtering options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--min_countsMinimum number of counts captured per cell.integer, example: 200
--max_countsMaximum number of counts captured per cell.integer, example: 5000000
--min_proteins_per_cellMinimum of non-zero values per cell.integer, example: 200
--max_proteins_per_cellMaximum of non-zero values per cell.integer, example: 1500000
--min_cells_per_proteinMinimum of non-zero values per gene.integer, example: 3
--min_fraction_mitoMinimum fraction of proteins that are mitochondrial.double, example: 0
--max_fraction_mitoMaximum fraction of proteins that are mitochondrial.double, example: 0.2
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
  • Dries Schaumont (author)

  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p3(toSortedList)
+    p5(flatMap)
+    p12(filter_with_counts)
+    p14(join)
+    p22(do_filter)
+    p24(join)
+    p30(toSortedList)
+    p32(Output)
+    p0-->p3
+    p3-->p5
+    p5-->p14
+    p5-->p12
+    p12-->p14
+    p14-->p24
+    p14-->p22
+    p22-->p24
+    p24-->p30
+    p30-->p32
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/multiomics/rna_multisample.html b/pr-preview/pr-51/components/workflows/multiomics/rna_multisample.html new file mode 100644 index 00000000..21580403 --- /dev/null +++ b/pr-preview/pr-51/components/workflows/multiomics/rna_multisample.html @@ -0,0 +1,1777 @@ + + + + + + + + + + +OpenPipelines - Rna multisample + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Rna multisample

+
+ +
+
+ Processing unimodal multi-sample RNA transcriptomics data. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: rna_multisample
+Namespace: multiomics

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/multiomics/rna_multisample/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Inputs
+id: # please fill in - example: "concatenated"
+input: # please fill in - example: "dataset.h5mu"
+
+# Output
+# output: "$id.$key.output.h5mu"
+
+# Filtering highly variable genes
+filter_with_hvg_var_output: "filter_with_hvg"
+filter_with_hvg_obs_batch_key: "sample_id"
+filter_with_hvg_flavor: "seurat"
+# filter_with_hvg_n_top_genes: 123
+
+# QC metrics calculation options
+var_qc_metrics: ["filter_with_hvg"]
+top_n_vars: [50, 100, 200, 500]
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/multiomics/rna_multisample/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Inputs

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the concatenated filestring, required, example: "concatenated"
--inputPath to the samples.file, required, example: "dataset.h5mu"
+
+
+

Output

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

Filtering highly variable genes

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--filter_with_hvg_var_outputIn which .var slot to store a boolean array corresponding to the highly variable genes.string, default: "filter_with_hvg"
--filter_with_hvg_obs_batch_keyIf specified, highly-variable genes are selected within each batch separately and merged. This simple process avoids the selection of batch-specific genes and acts as a lightweight batch correction method. For all flavors, genes are first sorted by how many batches they are a HVG. For dispersion-based flavors ties are broken by normalized dispersion. If flavor = ‘seurat_v3’, ties are broken by the median (across batches) rank based on within-batch normalized variance.string, default: "sample_id"
--filter_with_hvg_flavorChoose the flavor for identifying highly variable genes. For the dispersion based methods in their default workflows, Seurat passes the cutoffs whereas Cell Ranger passes n_top_genes.string, default: "seurat"
--filter_with_hvg_n_top_genesNumber of highly-variable genes to keep. Mandatory if filter_with_hvg_flavor is set to ‘seurat_v3’.integer
+
+
+

QC metrics calculation options

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--var_qc_metricsKeys to select a boolean (containing only True or False) column from .var. For each cell, calculate the proportion of total values for genes which are labeled ‘True’, compared to the total sum of the values for all genes.string, default: "filter_with_hvg", example: "ercc,highly_variable"
--top_n_varsNumber of top vars to be used to calculate cumulative proportions. If not specified, proportions are not calculated. --top_n_vars 20,50 finds cumulative proportion to the 20th and 50th most expressed vars.integer, default: 50, default: 100, default: 200, default: 500
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
  • Dries Schaumont (author)

  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p3(toSortedList)
+    p5(flatMap)
+    p7(toSortedList)
+    p9(Output)
+    p15(normalize_total)
+    p17(join)
+    p25(log1p)
+    p27(join)
+    p35(delete_layer)
+    p37(join)
+    p45(filter_with_hvg)
+    p47(join)
+    p55(rna_calculate_qc_metrics)
+    p57(join)
+    p64(Output)
+    p0-->p3
+    p3-->p5
+    p5-->p7
+    p7-->p9
+    p5-->p17
+    p5-->p15
+    p15-->p17
+    p17-->p27
+    p17-->p25
+    p25-->p27
+    p27-->p37
+    p27-->p35
+    p35-->p37
+    p37-->p47
+    p37-->p45
+    p45-->p47
+    p47-->p57
+    p47-->p55
+    p55-->p57
+    p57-->p64
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/components/workflows/multiomics/rna_singlesample.html b/pr-preview/pr-51/components/workflows/multiomics/rna_singlesample.html new file mode 100644 index 00000000..e5676a7c --- /dev/null +++ b/pr-preview/pr-51/components/workflows/multiomics/rna_singlesample.html @@ -0,0 +1,1787 @@ + + + + + + + + + + +OpenPipelines - Rna singlesample + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Rna singlesample

+
+ +
+
+ Processing unimodal single-sample RNA transcriptomics data. +
+
+ + +
+ + + + +
+ + +
+ + +
+
+

Info

+

ID: rna_singlesample
+Namespace: multiomics

+
+ +
+

Example commands

+

You can run the pipeline using nextflow run.

+
+

View help

+

You can use --help as a parameter to get an overview of the possible parameters.

+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -main-script ./workflows/multiomics/rna_singlesample/main.nf \
+  --help
+
+
+

Run command

+
+ +Example of params.yaml + +
# Input
+id: # please fill in - example: "foo"
+input: # please fill in - example: "dataset.h5mu"
+
+# Output
+# output: "$id.$key.output.h5mu"
+
+# Filtering options
+# min_counts: 200
+# max_counts: 5000000
+# min_genes_per_cell: 200
+# max_genes_per_cell: 1500000
+# min_cells_per_gene: 3
+# min_fraction_mito: 0
+# max_fraction_mito: 0.2
+
+# Mitochondrial gene detection
+# var_name_mitochondrial_genes: "foo"
+# var_gene_names: "gene_symbol"
+mitochondrial_gene_regex: "^[mM][tT]-"
+
+# Nextflow input-output arguments
+publish_dir: # please fill in - example: "output/"
+# param_list: "my_params.yaml"
+
+
nextflow run openpipelines-bio/openpipeline \
+  -r 0.10.0 -latest \
+  -profile docker \
+  -main-script ./workflows/multiomics/rna_singlesample/main.nf \
+  -params-file params.yaml
+
+
+
+ +
+
+Note +
+
+
+

Replace -profile docker with -profile podman or -profile singularity depending on the desired backend.

+
+
+
+
+
+

Argument groups

+
+

Input

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--idID of the sample.string, required, example: "foo"
--inputPath to the sample.file, required, example: "dataset.h5mu"
+
+
+

Output

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionAttributes
--outputDestination path to the output.file, required, example: "output.h5mu"
+
+
+

Filtering options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--min_countsMinimum number of counts captured per cell.integer, example: 200
--max_countsMaximum number of counts captured per cell.integer, example: 5000000
--min_genes_per_cellMinimum of non-zero values per cell.integer, example: 200
--max_genes_per_cellMaximum of non-zero values per cell.integer, example: 1500000
--min_cells_per_geneMinimum of non-zero values per gene.integer, example: 3
--min_fraction_mitoMinimum fraction of UMIs that are mitochondrial.double, example: 0
--max_fraction_mitoMaximum fraction of UMIs that are mitochondrial.double, example: 0.2
+
+
+

Mitochondrial gene detection

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionAttributes
--var_name_mitochondrial_genesIn which .var slot to store a boolean array corresponding the mitochondrial genes.string
--var_gene_names.var column name to be used to detect mitochondrial genes instead of .var_names (default if not set). Gene names matching with the regex value from –mitochondrial_gene_regex will be identified as a mitochondrial gene.string, example: "gene_symbol"
--mitochondrial_gene_regexRegex string that identifies mitochondrial genes from –var_gene_names. By default will detect human and mouse mitochondrial genes from a gene symbol.string, default: "^[mM][tT]-"
+
+
+
+

Authors

+
    +
  • Dries De Maeyer (author)

  • +
  • Robrecht Cannoodt (author, maintainer)

  • +
  • Dries Schaumont (author)

  • +
+
+
+

Visualisation

+
+
+
+
+
flowchart LR
+    p0(Input)
+    p3(toSortedList)
+    p5(flatMap)
+    p12(filter_with_counts)
+    p14(join)
+    p22(do_filter)
+    p24(join)
+    p32(filter_with_scrublet)
+    p34(join)
+    p42(Output)
+    p0-->p3
+    p3-->p5
+    p5-->p14
+    p5-->p12
+    p12-->p14
+    p14-->p24
+    p14-->p22
+    p22-->p24
+    p24-->p34
+    p24-->p32
+    p32-->p34
+    p34-->p42
+
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/contributing/creating_components.html b/pr-preview/pr-51/contributing/creating_components.html new file mode 100644 index 00000000..6140755a --- /dev/null +++ b/pr-preview/pr-51/contributing/creating_components.html @@ -0,0 +1,729 @@ + + + + + + + + + +OpenPipelines - Creating components + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Creating components

+
+ + + +
+ + + + +
+ + +
+ +
+

A common file format

+

One of the core principals of OpenPipelines is to use MuData as a common data format troughout the whole pipeline. See the concepts page for more information on openpipelines uses MuData to store single-cell data.

+
+
+

Component location

+

As discussed in the project structure, components in the repository are stored within src. Additionally, components are grouped into namespaces, according to a common functionality. An example of such a namespace is the dimensionality reduction namespace (dimred), of which the components pca and umap are members. This means that within src, the namespace folders can be found that stores the components that belong to these namespaces.

+

In order to create a new component in OpenPipelines, you will need to create a new folder that will contain the different elements of the component:

+
mkdir src/my_namespace/my_component
+
+
+
+ +
+
+Tip +
+
+
+

Take a look at the components that are already in src/! There might be a component that already does something similar to what you need.

+
+
+
+
+

The elements of a component

+

A component consists of one or more scripts that provide the functionality of the component together with metadata of the component in a configuration file. The Viash config contains metadata of your dataset, which script is used to run it, and the required dependencies. An in-depth guide on how to create components is available on the viash website, but a few specifics and guidelines will be discussed here.

+
+

The config

+
functionality:
+  name: "my_component"
+  namespace: "my_namespace"
+  description: "My new custom component"
+  authors:
+    - __merge__: ../../authors/my_name.yaml
+      roles: [ author ]
+  arguments:
+    - name: "--output"
+      type: file
+      example: "output_file.h5mu"
+      description: "Location were the output file should be written to."
+      direction: "output"
+  resources:
+    - type: python_script
+      path: script.py
+platforms:
+  - type: docker
+    image: python:3.11
+    setup:
+      - type: python
+        packages: mudata~=0.2.3
+  - type: nextflow
+    directives:
+      label: [highcpu, midmem]
+
+

Basic information

+

Each component should have the name, a namespace, a description and author information defined in the config. Because a single author can contribute to multiple components, the author information is often duplicated across components, which was causing issues with the author information being out of date and not easy to maintain. Therefore, it was decided to move author information to ./src/authors. Each author has a yaml file containing the author information, and the viash __merge__ property is used to merge this information into the viash configs.

+

Basic information checklist:

+
    +
  • Give the component a name
  • +
  • Add the component to an appropriate namespace
  • +
  • Add a description
  • +
  • Add author information
  • +
+
+
+

Arguments and argument groups

+

If you component requires arguments, they should be defined in arguments or argument_groups. Try tro group individual arguments into argument_groups when the number of arguments become too larg (10 or more as a rule of thumb).

+

Argument checklist:

+
    +
  • Add a description and name
  • +
  • Each argument should have the appropriate type.
  • +
  • Input and output files should be of type file instead of string and use the appropriate direction:
  • +
  • If possible: add an example
  • +
  • If the argument can accept multiple values, add multiple: true
  • +
  • If the possible input for an argument is limited to certain set of values, use choices:
  • +
+
+
+

(Test)resources

+

Resources define files that are required for a component to perform its function. These can be scripts, but also additional files like settings for tools you might require. Defining resources is both a necessity because viash needs to know what code to execute, but defining resources also has the added benefit that these resources are automatically made available, regardless of the build environment. For example: resources are automatically mounted within a running docker container.

+

There is a difference between defining resources and test_resources. While resources are required for a component to function, test_resources only need to be included when testing the component (with for example viash test) in addition to the regular resources. Having a look at the example above, resources are defined using the resources: property. It takes a list of multiple files or folders.

+

In openpipelines, it was decided to not use a service like git lfs to include large resources into the repository. Instead, if large resources are required, there are two possibilities: * Large resources required for testing are to uploaded into an s3 bucket that is synced automatically before running tests (both locally and on github). Please ping a maintainer when you open a PR and ask them to upload the files for you. * Other large resources that are not needed for testing can be considered as input. This means that an argument of type: file needs to be created. The downside of this method is that viash is not able to natively support remote files f

+

Resources checklist: - Script resources are located next to the config and added to the config with the correct type (python_script, r_script, …) - Small resources (<50MB) that are not scripts can also be checked in into the repo, next to the

+
+
+

Build information

+

TODO

+
+
+
+

The script file

+

TODO

+
+
+

Author information

+

TODO

+
+
+
+

Adding dependencies

+

TODO

+
+
+

Building components from their source

+

When running or testing individual components, it is not necessary to execute an extra command to run the build step, viash test and viash run will build the component on the fly. However, before integrating components into a pipeline, you will need to build the components. More specifically, openpipelines uses Nextflow to combine components into pipelines, so we need to have at least the components build for nextflow platform as target. The easiest method to build the components is to use:

+
viash ns build --parallel --setup cachedbuild
+

After using .viash ns build, the target folder will be populated with three subfolders, corresponding to the build platforms that viash supports: native, docker and nextflow. In contrast to ./bin/viash build, viash_build will use all of the platforms defined in each of the components configuration instead of the first one. Keep in mind that running ./bin/viash_build will not always cause a component to be re-build completely. Caching mechanisms in the docker platform for example will make sure only components for which alterations have been made will be build, significantly reducing build times. In summary, using ./bin/viash_build makes sure that the latest build of components are available before starting to integrate them in pipelines.

+

Building an individual component can still be useful, for example when debugging a component for which the build fails or if you want to create a standalone executable for a component to execute it without the need to use viash. To build an individual component, ./bin/viash build can be used. Note that the default build directory of this viash base command is output, which is not the location where build components will be imported from when integrating them in pipelines. Using the --output argument, you can set it to any directory you want, for example:

+
./bin/viash build ./src/filter/do_filter/config.vsh.yaml -o ./target/native/filter/do_filter/ -p native
+
+
+

Containerization

+

One of the key benefits of using Viash is that containers can be created that gather dependencies per component, which avoids building one container that has to encorporate all dependencies for a pipeline together. The containers for a single component can be reduced in size, defining the minimal requirements to run the component. That being said, building containers from scratch can be labour intensive and error prone, with base containers from reputable publishers often benefiting from improved reliability and security. Hence, a balance has to be made between reducing the container’s size and adding many dependencies to a small base container.

+

The preferred containerization setup in OpenPipelines uses the following guidelines:

+
    +
  • Choose a base container from a reputable source and use its latest version
  • +
  • Do not use base containers that have not been updated in a while
  • +
  • Use package managers to install dependencies as much as possible
  • +
  • Avoid building depdencies from source.
  • +
+

Examples of base containers that are currently being used are:

+ + + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/contributing/creating_pipelines.html b/pr-preview/pr-51/contributing/creating_pipelines.html new file mode 100644 index 00000000..6eae405e --- /dev/null +++ b/pr-preview/pr-51/contributing/creating_pipelines.html @@ -0,0 +1,545 @@ + + + + + + + + + +OpenPipelines - Creating pipelines + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Creating pipelines

+
+ + + +
+ + + + +
+ + +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/contributing/getting_started.html b/pr-preview/pr-51/contributing/getting_started.html new file mode 100644 index 00000000..f947c4ab --- /dev/null +++ b/pr-preview/pr-51/contributing/getting_started.html @@ -0,0 +1,612 @@ + + + + + + + + + +OpenPipelines - Getting started + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Getting started

+
+ + + +
+ + + + +
+ + +
+ +
+

Forking the code and cloning the repository

+

The openpipelines code is hosted on GitHub. To start working on openpipeline, you should create your own copy of the repository by forking it. Visit the openpipeline repository here and use the ‘Fork’ button on the top right hand side of the page. After you are done forking, you can clone the repository to a local directory on your computer using git clone. You can choose between using an SSH key to log in to GitHub or username and password (HTTPS) to connect to github.

+
+ +
+
+
git clone https://github.com/<YOUR USERNAME>/openpipeline.git
+cd openpipeline
+git remote add upstream https://github.com/openpipeline-bio/openpipeline.git
+
+
+
git clone git@github.com:<YOUR USERNAME>/openpipeline.git
+cd openpipeline
+git remote add upstream https://github.com/openpipeline-bio/openpipeline.git
+
+
+
+
+
+

Installing viash and nextflow

+

Openpipelines is being developed in Viash and Nextflow. If you are unfamiliar with either one of these platforms, you can check out their respective documentations here and here. To start contributing to openpipelines, you will need at least a working version of Java 11, OpenJDK 11, or a later version (up to Java 18). Additionally, by using Docker,you can build and test pipeline components and pipelines without needing to manually install dependencies for these components on your machine.

+

Viash and Nextflow can be installed by following the guides in the documentation for both of these tools. Make sure the viash and nextflow binaries are located in an existing directory that is listed in your $PATH. You can check if everything worked by running the following two commands and see if they output the correct location of the executables.

+
which viash
+which nextflow
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/contributing/index.html b/pr-preview/pr-51/contributing/index.html new file mode 100644 index 00000000..994fe105 --- /dev/null +++ b/pr-preview/pr-51/contributing/index.html @@ -0,0 +1,545 @@ + + + + + + + + + +OpenPipelines - Contributing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Contributing

+
+ + + +
+ + + + +
+ + +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/contributing/project_structure.html b/pr-preview/pr-51/contributing/project_structure.html new file mode 100644 index 00000000..0a7cafc4 --- /dev/null +++ b/pr-preview/pr-51/contributing/project_structure.html @@ -0,0 +1,623 @@ + + + + + + + + + +OpenPipelines - Project structure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Project structure

+
+ + + +
+ + + + +
+ + +
+ +
+

Project structure

+

The root of the repository contains three main folders:

+
    +
  1. src, which contains the source code for individual components.
  2. +
  3. The workflows folder containing the implementations of the pipelines (combining one or more components).
  4. +
  5. (optionally) the target folder
  6. +
+

Each subfolder from src contains a Viash namespace, a logical grouping of pipeline components that perform a similar function. Within each namespace, subfolders designate individual pipeline components. For example ./src/convert/from_bdrhap_to_h5ad contains the implementation for a component from_bdrhap_to_h5ad which is grouped together with other components such as from_10xmtx_to_h5mu into a namespace convert. In a similar manner as grouping components into namespaces, pipelines are grouped together into folders. However, these are not component namespaces and as such do not interact with viash ns commands.

+

As will become apparent later on, Viash not only provides commands to perform operations on individual components, but also on groups of components in a namespace and all components in a project. As a rule of thumb, the basic Viash commands (like ./bin/viash test) are designated for running commands on individual components, while ns commands are (./bin/viash ns test) are for namespaces. When cloning a fresh repository, there will be no target folder present. This is because the target folder will only be created after components have been build.

+
+
+

Versioning and branching strategy

+

OpenPipeline tries to use of semantic versioning to govern changes between versions. An release of openpipelines uses a version number in the format MAJOR.MINOR.PATCH. Currenly, openpipelines is still at major version 0.x.y, meaning that public-facing breaking changes are possible on MINOR releases. These breaking changes will be documented in a dedicated section of the CHANGELOG that is published with each release. A PATCH release (i.e. a release where the MAJOR and MINOR version number stay the same), is used to resolve bugs with the pipeline but should not introduce breaking changes. Keep in mind that patches might introduce behavioral changes that may look breaking but are actually rectifying changes that were inadvertently introduced previously (and were in fact also ‘breaking changes’). In this case, a bug can also be released without changing the MINOR version, in a PATH release.

+

Between releases, development progress is tracked on Git branches. A git branch represents a snapshot of a codebase in time, to which changes can be added (i.e. committed). Eventually, all new feature or bugfixes must be reconsiled into a single branch so that a new release can be created. This process is called merging and the process of requesting the merging of two branches is called a pull request. Openpipelines follows the convention that the target branch for all pull requests is the main branch. Thus, the main branch contains the latest changes for the code and it can be considered the development branch.

+

Once a pull request has been approved and merged, Github Actions CI will automatically build all components (creating the target directory) and push the result to the main_build branch. In essence, the main_build branch is a copy of the main branch, but also containing the build components. Once it is time to create a openpipelines release, the Github CI release workflow is manually triggered, the components on the main branch will be build and tested. Then, the result will be pushed to the release branch and the integration tests will be run. If all tests succeeded, a new github tag and release can be created manually from the release branch.

+
+
+
+
+
%%{init: { 'logLevel': 'debug', 'theme': 'default'} } }%%
+gitGraph
+  commit id: "initial commit"
+  branch main_build
+  commit id: "CI build"
+  checkout main
+  commit
+  checkout main_build
+  merge main
+  checkout main
+  branch feature_a
+  branch feature_b
+  checkout feature_a
+  commit
+  commit
+  checkout main
+  commit id: "#release 0.1" type: HIGHLIGHT
+  checkout main_build
+  merge main
+  checkout main
+  branch release
+  commit tag: "0.1"
+  checkout main
+  commit
+  checkout feature_b
+  commit
+  commit
+  checkout feature_a
+  commit
+  checkout main
+  merge feature_a
+  checkout main_build
+  merge main
+  checkout main
+  checkout feature_b
+  commit
+  checkout main
+  merge feature_b
+  checkout main_build
+  merge main
+  checkout release
+  merge main tag: "0.2"
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/contributing/pull_requests.html b/pr-preview/pr-51/contributing/pull_requests.html new file mode 100644 index 00000000..d9a620e4 --- /dev/null +++ b/pr-preview/pr-51/contributing/pull_requests.html @@ -0,0 +1,597 @@ + + + + + + + + + +OpenPipelines - Publishing your changes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Publishing your changes

+
+ + + +
+ + + + +
+ + +
+ +
+

Updating your pull request or branch

+

While creating changes on your local branch, another developper could have added new changes the openpipeline repository. These changes will need to be included into your local branch before a pull request can be merged. Updating your branch involves merging the upstream branch (usually main) into your branch:

+
# download the changes from the openpipelines repo
+git fetch upstream
+# change your current branch to the branch of the pull request
+git checkout <feature_branch>
+# merge the changes from upstream into your branch
+git merge upstream/main
+# push the updates, your pull request will also be updated
+git push
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/contributing/running_tests.html b/pr-preview/pr-51/contributing/running_tests.html new file mode 100644 index 00000000..380d7867 --- /dev/null +++ b/pr-preview/pr-51/contributing/running_tests.html @@ -0,0 +1,609 @@ + + + + + + + + + +OpenPipelines - Running tests + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Running tests

+
+ + + +
+ + + + +
+ + +
+ +
+

Fetching the test data.

+

The input data that is needed to run the tests will need to be downloaded from the openpipelines Amazon AWS s3 bucket first. To do so, the download/sync_test_resource component can be used, which will download the data to the correct location (resources_test) by default.

+
./bin/viash run ./src/download/sync_test_resources/config.vsh.yaml -p docker -- --input s3://openpipelines-data
+

Or, if you do not want to use Docker and have aws-cli tools installed natively:

+
./bin/viash run ./src/download/sync_test_resources/config.vsh.yaml -p native -- --input s3://openpipelines-data
+
+
+

Running component unittests

+

To build and run tests for individual component that you are working on, use viash test with the config.vsh.yaml of the component you would like to test. For example:

+
./bin/viash test ./src/convert/from_10xh5_to_h5mu/config.vsh.yaml
+

Keep in mind that when no platform is passed to viash test, it will use the first platform that is specified in the config, which is docker for most of the components in openpipelines. Use -p native for example if you do not want to use docker.

+

It is also possible to execute the tests for all components in each namespace using ./bin/viash_test (note the underscore instead of a space).

+
./bin/viash_test
+
+
+

Integration tests

+

Individual integration tests can be run by using the integration_test.sh scripts for a pipeline, located next to the main.nf in the workflows folder.

+
./workflows/ingestion/cellranger_demux/integration_test.sh
+

Running all integration tests is also possible using a helper script that can be found at workflows/test/integration_test.sh. Using this script requires a working R installation with tidyverse installed. However, as pipelines are implemented by combining individual components

+
./workflows/test/integration_test.sh
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/fundamentals/architecture.html b/pr-preview/pr-51/fundamentals/architecture.html new file mode 100644 index 00000000..ca469ff5 --- /dev/null +++ b/pr-preview/pr-51/fundamentals/architecture.html @@ -0,0 +1,975 @@ + + + + + + + + + +OpenPipelines - Architecture + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Architecture

+
+ + + +
+ + + + +
+ + +
+ +

OpenPipeline is a pipeline for the processing of multimodal single-cell data that scales to a great many of samples. Covering the architecture requires us to explain many angles, including: what the expected inputs and outputs are for each workflow are, how do the workflows relate to each other, and what the state of the data is at each step of the pipeline. Here is an overview of the general steps involved in processing sequencing data into a single integrated object. We will discuss each of the steps further below.

+
+
+
+
+
+
flowchart TD  
+  ingest["Ingestion"] --> split --> unimodalsinglesample["Unimodal Single Sample Processing"] --> concat --> unimodalmultisample["Unimodal Multi Sample Processing"] --> merging --> integation_setup["Integration Setup"] --> integration["Integration"]  --> downstreamprocessing["Downstream Processing"]
+
+
+
Figure 1: Overview of the steps included in OpenPipeline for the analysis of single cell multiomics data.
+
+
+
+
+
    +
  1. Ingestion: Convert raw sequencing data or count tables into MuData data for further processing.
  2. +
  3. Splitting modalities: Creating several MuData objects, one per modality, out of a multimodal input sample.
  4. +
  5. Unimodal Single Sample Processing: tools applied to each modality of samples individually. Mostly involves the selection of true from false cells.
  6. +
  7. Unimodal Multi Sample Processing: steps that require information from all samples together. Processing is still performed per-modality.
  8. +
  9. Merging: Creating one MuData object from several unimodal MuData input files.
  10. +
  11. Initializing Integration: Performs dimensionality reduction and cell type clustering on non-integrated samples. These are popular steps that would otherwise be executed manually or they provide input for downstream integration methods.
  12. +
  13. Integration: The alignment of cell types across samples. Can be performed per modality or based on multiple modalities.
  14. +
  15. Downstream Processing: Extra analyses performed on the integrated dataset and conversion to other file formats.
  16. +
+
+

Available workflows

+

The structure of the sections that have been laid out below follow a logical grouping of the processing according to the state of the data. However, even though this grouping makes sense from a data perspective, it does not mean that a workflow exist for each section. For example, the processing a single sample section describes how processing of single sample is performed as part of the full pipeline, but there is no singlesample workflow that a user can execute. The inverse is also possible: while there exists an multisample pipeline, it’s functionality is not limited to what has been described in the section Multisample Processing. This section lists all the available workflows and will try to describe the link with the relevant sections below.

+
+

Ingestion workflows

+

All of the following workflows from the ingestion namespace have been discussed in more detail in the ingestion section:

+ +
+
+

Multiomics workflows

+

There exists no singlesample workflow. However, the prot_singlesample and rna_singlesample pipelines do exist and they map identically to the functionality described in the single-sample antibody capture processing and single-sample gene expression processing sections respectively. If you would like to process your samples as described in the unimodal single sample processing section, you can execute both workflows in tandem for the two modalities.

+

Contrary to the workflows for single sample processing, there exists a multiomics/multisample workflow. However this workflow is not just the multiomics/prot_multisample and multiomics/rna_multisample workflows that have been combined. Instead, it combines the multiomics/prot_multisample, multiomics/rna_multisample and multiomics/integration/initialize_integration workflows. The purpose of this pipeline is to provide an extra ‘entrypoint’ into the full pipeline that skips the singlesample processing, allowing reprocessing samples that have already been processed before. A popular usecase is to manually select one or more celltypes which need to be processed again or the integration of observations from multiple experiments into a single dataset. Keep in mind that concatenation is not included in the multisample pipeline, so when multiple input files are specified they are processed in parallel. If you would like to integrate multiple experiments, you need to first concatenate them in a seperate step:

+
+
+

+
+
+
+
+
+

The “full” pipeline

+

The name of this pipeline is a bit of a misnomer, because it does not include all the steps from ingestion to integration. As will be discussed in the ingestion section, which ingestion strategy you need is dependant on your technology provider and the chosen platform. For integration, there exist many methods and combination of methods, and you may wish to choose which integration methods are applicable for your usecase. As a consequence, these two stages in the analysis of single-cell need to be executed seperatly and not as part of a single unified pipeline. All other steps outlined below on the other hand are included into the “full” pipeline, which can therefore be summarized in the following figure:

+
+
+
+
+
+
flowchart TD  
+  split --> unimodalsinglesample["Unimodal Single Sample Processing"] --> concat --> unimodalmultisample["Unimodal Multi Sample Processing"] --> merging --> integation_setup
+
+
+
Figure 2: Overview of the steps included in the full pipelines from OpenPipeline.
+
+
+
+
+
+
+

Integration workflows

+

For each of the integration methods (and their optional combination with other tools), a seperate pipeline is defined. More information for each of the pipelines is available in the integration methods section.

+ +
+
+
+

Important dataflow components

+

While most components included in openpipelines are involved in data analysis, the sole purpose of other components is to facilitate data flow throughout the pipelines. In a workflow, output for a component is written to disk after it is done performing its task, and is read back in by the next component. However, the relation between the component and the next component is not always a clear one to one relationship. For example: some tools are capable of analyzing a single sample, while others require the input of all samples together. Additionally, not only are the input requirement of tools limiting, performance also needs to be taken into account. Tasks which are performed on each sample separately can be executed in parallel, while if the same task is performed on a single file that contains the data for all samples. In order to facilitate one-to-many or many-to-one relations between components and to allow parallel execution of tasks, component that are specialized in dataflow were implemented.

+
+

Splitting modalities

+

We refer to splitting modalities when multimodal MuData file is split into several unimodal MuData files. The number of output files is equal to the number of modalities present in the input file. Splitting the modalities works on MuData files containing data for multiple samples or for single-sample files.

+
+
+

+
+
+
+
+
+

Merging of modalities

+

Merging refers to combining multiple files with data for one modality into a single output file that contains all input modalities. It is the inverse operation of splitting the modalities.

+
+
+

+
+
+
+
+
+

Concatenation of samples

+

Joining of observations for different samples, stored in their respective MuData file, into a single MuData file for all samples together is called sample concatenation. In practice, this operation is performed for each modality separately. An extra column (with default name sample_id) is added to the annotation of the observations (.obs) to indicate where each observation originated from.

+
+
+

+
+
+
+

Special care must be taken when considering annotations for observations and features while concatenating the samples. Indeed, the data from different samples can contain conflicting information. Openpipeline’s concat component provides an argument other_axis_mode that allows a user to specify what happens when conflicting information is found. The move option for this argument is the default behavior. In this mode, each annotation column (from .obs and .var) is compared across samples. When no conflicts are found or the column is unique for a sample, the column is added output object. When a conflict does occur, all of the columns are gathered from the samples and stored into a dataframe. This dataframe is then stored into .obsm for annotations for the observations and .varm for feature annotations. This way, a user can have a look at the conflicts and decide what to do with them.

+
+
+
+

Ingestion

+

Ingestion is the conversion of raw sequencing data or count tables into MuData objects that can be used for further processing.

+
+
+
+
+
flowchart LR
+    RawCounts1["Raw counts"]
+    BCL[/"BCL"/]
+    Demux[/"Demultiplexing"/]
+    Fastq["Fastq"]
+    Ref["Reference"]
+    Mapping[/"Mapping"/]
+    RawDir["Raw out"]
+    Convert[/"Convert"/]
+    RawCounts1["Raw counts"]
+    BCL --> Demux --> Fastq
+    Fastq & Ref --> Mapping --> RawDir --> Convert --> RawCounts1
+
+
+
+
+
+

Demultiplexing refers to a two-step process:

+
    +
  1. The conversion of the binary base call (BCL) files, output by the sequencing machines, into the text-based FASTQ format.
  2. +
  3. The sorting of reads into different FASTQ files for different libraries pooled together into a single sequencing run.
  4. +
+

In order to perform demultiplexing, several tools have been made available in the demux workflow, where the --demultiplexer can be used to choose your demultiplexer of choice. Currently, three options have been made available:

+
    +
  • bcl2fastq(2): a legacy tool from Illumina that has been replaced by BCL Convert
  • +
  • BCL Convert: general demultiplexing software by Illumina.
  • +
  • Cellranger’s mkfastq: a wrapper around BCL Convert that provides extra convenience features for the processing of 10X single-cell data.
  • +
+

The alignment of reads from the FASTQ files to an appropriate genome reference is called mapping. The result of the mapping process are tables that count the number of times a read has been mapped to a certain feature and metadata information for the cells (observations) and features. There are different format that can be used to store this information together. Since OpenPipeline uses MuData as a common file format throughout its pipelines, a conversion to MuData is included in the mapping pipelines. The choice between workflows for mapping is dependant on your single-cell library provider and technology:

+ +
+

Creating a transcriptomics reference

+

Mapping reads from the FASTQ files to features requires a reference that needs to be provided to the mapping component. Depending on the usecase, you might even need to provide references specific for the modalities that you are trying to analyze. For gene expression data, the reference is a reference genome, together with its appropriate gene annotation. A genome reference is often indexed in order to improve the mapping speed. Additionally, some mapping frameworks provided by the single-cell technology providers require extra preprocessing of the reference before they can be used with their worklow. OpenPipelines provides a make_reference that allows you to create references in many formats which can be used to map your reads to.

+
+
+
+

Processing a single sample

+

Some processing can (or must) be performed without concatenating samples together. Even when having the choice, adding a tool to the single-sample processing is preferred because multiple samples can be processed in parallel, improving the processing speed. In general, the processing is modality specific, meaning that a multi-modal sample is first split into its unimodal counterparts. As described in the multi-sample processing, the resulting files are not merged back together after the single-sample processing is done. Instead, the output files for all samples are gathered per modality and concatenated to create a multi-sample unimodal object.

+
+
+

+
+
+
+
+

Single-sample Gene Expression Processing

+

Single-sample gene expression processing involves two steps: removing cells based on count statistics and flagging observations originating from doublets.

+

The removal of cells based on basic count statistics is split up into two parts: first, cells are flagged for removal by filter_with_counts. It flags observations based on several thresholds:

+
    +
  • The number of genes that have a least a single count. Both a maximum and minimum number of genes for a cell to be removed can be specified.
  • +
  • The percentage of read counts that originated from a mitochodrial genes. Cells can be filtered based on both a maximum or minimum fraction of mitochondrial genes.
  • +
  • The minimum or maximum total number of counts captured per cell. Cells with 0 total counts are always removed.
  • +
+

Flagging cells for removal involved adding a boolean column to the .obs dataframe. After the cells have been flagged for removal, the cells are actually filtered using do_filter, which reads the values in .obs and removed the cells labeled True. This applies the general phylosophy of “separation of concerns”: one component is responsible for labeling the cells, another for removing them. This keeps the codebase for a single component small and its functionality testable.

+

The next and final step in the single-sample gene expression processing is doublet detection using filter_with_scrublet. Like filter_with_counts, it will not remove cells but add a column to .obs (which have the name filter_with_scrublet by default). The single-sample GEX workflow will not remove not be removed during the processing (hence no do_filter). However, you can choose to remove them yourself before doing your analyses by applying a filter with the column in .obs yourself.

+
+
+

+
+
+
+
+
+

Single-sample Antibody Capture Processing

+

The process of filtering antibody capture data is similar to the filtering in the single-sample gene-expression processing, but without doublet detection. In some particular cases you can use your ADT data to perform doublet detection using for example cell-type maskers. More information can be found in the single-cell best practices book.

+
+
+

+
+
+
+
+
+
+

Multisample Processing

+

After the processing of individual samples has been concluded, samples can be concatenated for further processing. Like with the single-sample processing the multisample processing is not performed on multimodal objects, but each modality separately in order to tailor for the specific modality in question. This means that the result from the singlesample processing is merged together per-modality to create unimodal multisample objects. After processing each modality, all of the modalities can finally be merged and a single object is created that is ready for the integration.

+
+
+

+
+
+
+
+

Multisample Gene Expression Processing

+

Processing multisample gene expression involved the following steps:

+
    +
  1. Normalization: Normalization aims to adjust the raw counts in the dataset for variable sampling effects by scaling the observable variance to a specified range. There are different ways to transform the data, but the normalization method is to make sure each observation (cell) has a total count equal to the median of total counts over all genes for observations (cells) before normalization.
  2. +
  3. Log transformation: Calculates \(X = ln(X + 1)\), which converts multiplicative relative changes to additive differences. This allows for interpreting the gene expression in terms of relative, rather than absolute, abundances of genes.
  4. +
  5. Highly variable gene detection: Detects genes that have a large change in expression between samples. By default, OpenPipeline uses the method from Seurat (Satija et al.). As with other “filtering” components, the filter_with_hvg component does not remove features, but rather annotates genes of interest by adding a boolean column to .var.
  6. +
  7. QC metric calculations
  8. +
+
+
+

+
+
+
+
+
+

Multisample Antibody Capture Processing

+

Processing the ADT modality for multiple samples

+
+
+

+
+
+
+
+
+
+

Integration

+
+

Dimensionality Reduction

+

scRNA-seq is a high-throughput sequencing technology that produces datasets with high dimensions in the number of cells and genes. It is true that the data should provide more information, but it also contains more noise and redudant information, making it harder to distill the usefull information. The number of genes and cells can already reduced by gene filtering, but further reduction is a necessity for downstream analysis. Dimensionality reduction projects high-dimensional data into a lower dimensional space (like taking a photo (2D) of some 3D structure). The lower dimensional representation still captures the underlying information of the data, while having fewer dimensions.

+

Several dimensionality reduction methods have been developed and applied to single-cell data analysis. Two of which are being applied in OpenPipeline:

+
    +
  1. Principal Component Analysis (PCA): PCA reduces the dimension of a dataset by creating a new set of variables (principal components, PCs) from a linear combination of the original features in such a way that they are as uncorrelated as possible. The PCs can be ranked in the order by which they explain the largest variability in the original dataset. By keeping the top n PCs, the PCs with the lowest variance are discarded to effectively reduce the dimensionality of the data without losing information.
  2. +
  3. Uniform manifold approximation and projection (UMAP): a non-linear dimensionality technique. It constructs a high dimensional graph representation of the dataset and optimizes the low-dimensional graph representation to be structurally as similar as possible to the original graph. In a review by Xiang et al., 2021 it showed the highest stability and separates best the original cell populations.
  4. +
  5. t-SNE is another popular non-linear, graph based dimensionality technique which is very similar to UMAP, but it has not yet been implemented in OpenPipeline.
  6. +
+
+
+

Initializing integration

+

As will be descibed in more details later on, many integration methods exist and therefore there is no single integration which is executed by default. However, there are common tasks which are run before integration either because they provide required input for many downstream integration methods or because they popular steps that would otherwise be done manually. These operations are executed by default when using the “full pipeline” as part of the initialize_integration subworkflow.

+

PCA is used to reduce the dimensionality of the dataset as described previously. Find Neighbors and Leiden Clustering are useful for the identification of cell types or states in the data. Here we apply a popular method to accomplish this is to first calculate a neighborhood graph on a low dimensinonal representation of the data and then cluster the data based on similarity between data points. Finally, UMAP allows us to visualise the clusters by reducing the dimensionality of the data while still providing an accurate representation of the underlying cell population structure.

+
+
+

+
+
+
+
+
+

Integration Methods

+

Integration is the alignment of cell types across samples. There exist three different types of integration methods, based on the degree of integration across modalities:

+
    +
  1. Unimodal integration across batches. For example: scVI, scanorama, harmony
  2. +
  3. Multimodal integration across batches and modalities. Can be used to integrate joint-profiling data where multiple modalities are measured. For example: totalVI
  4. +
  5. Mosaic integration: data integration across batches and modalities where not all cells are profiled in all modalities and it may be the case that no cells contain profiles in all integrated modalities. Mosaic integration methods have not been made available in OpenPipeline yet. An example of a tool that performs mosaic integration is StabMap.
  6. +
+

In either of the three cases, concatenated samples are required, and merged modalities preferred. A plethora of integration methods exist, which in turn interact with other functionality (like clustering and dimensionality reduction methods) to generate a large number of possible usecases which one pipeline cannot cover in an easy manner. Therefore, there is no single integration step that is part of a global pipeline which is executed by default. Instead, a user can choose from the integration workflows provided, and ‘stack’ integration methods by adding the outputs to different output slots of the MuData object. The following sections will descibe the integration workflows that are available in OpenPipeline.

+
+

Unimodal integration

+

For unimodal integration, scVI, scanorama and harmony have been added to the scvi_leiden, scanorama_leiden, and harmony_leiden workflows respectively. After executing the integration methods themselves, Find Neighbors and Leiden Clustering are run the results of the integration as wel as UMAP in order to be able to visualise the results. The functioning of these components has already been described here.

+
+
+

+
+
+
+
+
+

Multimodal Integration

+

A single multimodal integration method is currently avaiable in OpenPipeline: totalVI. It allows using information from both the gene-expression data and the antibody-capture data together to integrate the cell types. As with the other integration workflows, after running totalVI, Find Neighbors, Leiden Clustering and UMAP are run on the result. However in this case the three components are executed on both of the integrated modalities.

+
+
+

+
+
+
+
+
+
+
+

Putting it all together: the “Full Pipeline”

+
+
+
+
+
+
+
+flowchart TB
+  Raw1[/Sample 1/]:::file --> Split
+  Raw2[/Sample 2/]:::file --> Split2
+  subgraph FullPipeline [Full Pipeline]
+    NoIntegration -.-> MultimodalFile[/Multisample\nMultimodal File/]:::file -.-> MultiSample
+    Split([Split\nmodalities]):::component --gex modality--> ProcGEX1
+    Split([Split\nmodalities]):::component --prot modality--> ProcADT1
+    Split([Split\nmodalities]):::component -- other--> ConcatVDJ
+
+    Split2([Split\nmodalities]):::component --gex modality--> ProcGEX1 
+    Split2([Split\nmodalities]):::component --prot modality--> ProcADT1
+    Split2([Split\nmodalities]):::component -- other--> ConcatVDJ
+    
+
+    subgraph MultiSample [Multisample]
+      subgraph MultisampleRNA [Multisample RNA]
+      end
+      MultisampleRNA:::workflow
+      subgraph MultisampleADT [Multisample ADT]
+      end
+      MultisampleADT:::workflow
+      subgraph Unknown["Untreated modality (e.g. VDJ)"]
+      end
+      Unknown:::logicalgrouping
+    end
+    ConcatVDJ([Concatenate]):::component
+    NoIntegration[Multisample Multimodality]
+
+    ConcatVDJ([Concatenate]):::component --> Unknown
+    ConcatGEX([Concatenate]):::component --> MultisampleRNA
+    ConcatADT([Concatenate]):::component --> MultisampleADT
+
+    MultisampleRNA & MultisampleADT & Unknown--> Merge([Merge\nmodalities]):::component --> NoIntegration:::workflow
+    
+  end
+
+  subgraph Wrapper
+    subgraph Integration[Integration]
+      subgraph IntegrationRNA[Integration RNA]
+          direction LR
+          hamony_leiden_rna[Harmony + Leiden]:::workflow
+          scvi_rna[scVI + Leiden]:::workflow
+          scanorama[Scanorama + Leiden]:::workflow
+          other[...]:::workflow
+      end
+      subgraph IntegrationProt[Integration ADT]
+          direction LR
+          hamony_leiden_prot[Harmony + Leiden]:::workflow
+          otherprot[...]:::workflow
+      end
+      subgraph multimodal_integration[Multimodal integration]
+          totalVI([totalVI]):::component
+      end
+      multimodal_integration:::logicalgrouping
+      IntegrationRNA:::logicalgrouping --choose from--> IntegrationProt:::logicalgrouping
+      NoIntegration ---> totalVI
+    end
+    Integration:::logicalgrouping
+    subgraph LegendBox[Legend]
+      direction LR
+      component([component]):::component
+      multiple_component((Multiple Components)):::component
+      workflow["(Sub)workflow"]:::workflow
+      file[/file/]:::file
+      Logicalgrouping[Logical grouping]:::logicalgrouping
+    end
+  LegendBox:::legend
+  end
+  Wrapper:::hide
+
+
+  NoIntegration --choose from--> IntegrationRNA
+  %% NoIntegration ~~~ LegendBox
+
+  ProcGEX1[Process GEX\nSingle Sample]:::workflow --> ConcatGEX
+  ProcADT1[Process ADT\nSingle Sample]:::workflow --> ConcatADT
+
+
+
+  style FullPipeline fill: #5cc,font-size:1.4em,color:#000;
+  classDef hide fill:transparent,color:transparent,stroke:transparent;
+  classDef legend fill:transparent;
+  classDef file fill: #5c5c5c,color:#fff,stroke-dasharray: 5 5;
+  classDef logicalgrouping fill:transparent,stroke-dasharray: 5 5;
+  classDef workflow fill:#ffffde,color:#000;
+  classDef component fill:#ececff,color:#000;
+
+
+
+
Figure 3: Overview single cell processing steps in OpenPipeline. Rectangles are data objects, parallelograms are Viash modules or subworkflows.
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/fundamentals/concepts.html b/pr-preview/pr-51/fundamentals/concepts.html new file mode 100644 index 00000000..91a94875 --- /dev/null +++ b/pr-preview/pr-51/fundamentals/concepts.html @@ -0,0 +1,614 @@ + + + + + + + + + +OpenPipelines - Concepts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Concepts

+
+ + + +
+ + + + +
+ + +
+ +
+

Goals

+

OpenPipelines strives to provide easy ways to interact with the pipeline and/or codebase for three types of users:

+
    +
  • Pipeline executor: runs the pipeline from a GUI side
  • +
  • Pipeline editor: adapts pipelines with existing components for specific projects
  • +
  • Component developer: develops novel components and or pipelines
  • +
+

This means that openpipelines must be:

+
    +
  • Usable by non-experts
  • +
  • Easy to deploy
  • +
  • Provide reproducable results
  • +
  • Scalable
  • +
  • Easy to maintain and adapt
  • +
+
+
+

Requirements

+

To meet these demands, the following concepts have been implemented at the core of Openpipeline:

+ +
+
+

A common file format: AnnData and MuData 💾

+

One of the core principals of OpenPipelines is to use MuData as a common data format throughout the whole pipeline. This means that the input and output for most components and workflows will be a MuData file and converters from and to other common data formats are provided to improve compatibility with up-and downstream applications. Choosing a common data format greatly diminishes the development complexity because it facilitates interfacing between different tools in a pipeline without needing to convert multiple times.

+

MuData is a format to store annotated multimodal data. It is derived from the AnnData format. If you are unfamiliar with AnnData or MuData, it is recommended to read up on AnnData first as it is the unimodal counterpart of MuData. MuData can be roughly described as collection of several AnnData objects (stored as a associative array in the .mod attribute). MuData provides a hierarchical way to store the data:

+
MuData
+├─ .mod
+│  ├─ modality_1 (AnnData Object)
+│     ├─ .X
+│     ├─ .layers
+│         ├─ layer_1 
+│         ├─ ...
+│     ├─ .var
+│     ├─ .obs
+│     ├─ .obsm
+│     ├─ .varm
+│     ├─ .uns
+│  ├─ modality_2 (AnnData Object)
+├─ .var
+├─ .obs
+├─ .obms
+├─ .varm
+├─ .uns
+
    +
  • .mod: an associative array of AnnData objects. Used in OpenPipelines to store the different modalities (CITE-seq, RNA abundance, …)
  • +
  • .X and .layers: matrices storing the measurements with the columns being the variables measured and the rows being the observations (cells in most cases).
  • +
  • .var: metadata for the variables (i.e. annotation for the columns of .X or any matrix in .layers). The number of rows in the .var datafame (or the length of each entry in the dictionairy) is equal to the number of columns in the measurement matrices.
  • +
  • .obs: metadata for the observations (i.e. annotation for the rows of .X or any matrix in .layers). The number of rows in the .obs datafame (or the length of each entry in the dictionairy) is equal to the number of rows in the measurement matrices.
  • +
  • varm: the multi-dimensional variable annotation. A key-dataframe mapping where the number of rows in each dataframe is equal to the number of columns in the measurement matrices.
  • +
  • obsm: the multi-dimensional observation annotation. A key-dataframe mapping where the number of rows in each dataframe is equal to the number of rows in the measurement matrices.
  • +
  • .uns: A mapping where no restrictions are enforced on the dimensions of the data.
  • +
+
+
+

Modularity and a language independent framework 🔳

+

TODO

+
+
+

A graphical interface 📺

+

TODO

+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/fundamentals/index.html b/pr-preview/pr-51/fundamentals/index.html new file mode 100644 index 00000000..c1fb3edb --- /dev/null +++ b/pr-preview/pr-51/fundamentals/index.html @@ -0,0 +1,533 @@ + + + + + + + + + +OpenPipelines - Fundamentals + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Fundamentals

+
+ + + +
+ + + + +
+ + +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/fundamentals/philosophy.html b/pr-preview/pr-51/fundamentals/philosophy.html new file mode 100644 index 00000000..b9c83acb --- /dev/null +++ b/pr-preview/pr-51/fundamentals/philosophy.html @@ -0,0 +1,560 @@ + + + + + + + + + +OpenPipelines - Philosophy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Philosophy

+
+ + + +
+ + + + +
+ + +
+ +
+

Mission

+

OpenPipelines are best-practice living workflows for single-cell uni- and multi-omics data. Building a best-practice pipeline requires knowledge and time that not one single person can provide, but rather requires input from a community. Additionally, a best-pratice pipeline needs constant maintenance to keep up to date with the latest standards, ideally sourcing input from a ‘living’ benchmark. Continuous improvement necessitates a robust system for sourcing and applying community input both from a technical and organisational standpoint.

+
+
+
+
+
graph TB
+  ben["🌱📈 Living benchmarks"]
+  pra["🌱📖 Living best practices"]
+  pip["🌱⚙️ Living reproducible pipelines"]
+  ben --> pra --> pip
+
+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/fundamentals/roadmap.html b/pr-preview/pr-51/fundamentals/roadmap.html new file mode 100644 index 00000000..e5470487 --- /dev/null +++ b/pr-preview/pr-51/fundamentals/roadmap.html @@ -0,0 +1,563 @@ + + + + + + + + + +OpenPipelines - Roadmap + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Roadmap

+
+ + + +
+ + + + +
+ + +
+ +
+
+
+
+
+
+
flowchart LR
+  classDef done fill:#a3f6cf,stroke:#000000;
+  classDef wip fill:#f4cb93,stroke:#000000;
+  classDef unprocessed fill:#afadff,stroke:#000000;
+
+  Raw1[Sample 1] --> Split1[/Split\nmodalities/]:::done --> ProcGEX1 & ProcRNAV1 & ProcADT1 & ProcATAC1 & ProcVDJ1
+  ProcGEX1[/Process GEX\nprofile/]:::done --> ConcatGEX[/Concatenate\nprofiles/]:::done --> ProcGEX[/Process GEX\nprofiles/]:::done
+  ProcRNAV1[/Process RNAV\nprofile/]:::wip --> ConcatRNAV[/Concatenate\nprofiles/]:::done --> ProcRNAV[/Process RNAV\nprofiles/]:::wip
+  ProcADT1[/Process ADT\nprofile/]:::done --> ConcatADT[/Concatenate\nprofiles/]:::done --> ProcADT[/Process ADT\nprofiles/]:::done
+  ProcATAC1[/Process ATAC\nprofile/]:::unprocessed --> ConcatATAC[/Concatenate\nprofiles/]:::done --> ProcATAC[/Process ATAC\nprofiles/]:::unprocessed
+  ProcVDJ1[/Process VDJ\nprofile/]:::unprocessed --> ConcatVDJ[/Concatenate\nprofiles/]:::done --> ProcVDJ[/Process VDJ\nprofiles/]:::unprocessed
+  ProcGEX & ProcRNAV & ProcADT & ProcATAC & ProcVDJ --> Merge[/Merge\nmodalities/]:::done --> SetupIntegration[/Setup\nintegration/]:::done --> Integration[/Integration/]:::done
+
+
+
Figure 1: Status of implemented components. Green: implemented, orange: work in progress, purple: modality included in output but unprocessed,
+GEX: Gene-expression. RNAV: RNA Velocity. ADT: Antibody-Derived Tags. ATAC: Assay for Transposase-Accessible Chromatin.
+
+
+
+
+
+ + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/images/avatar.svg b/pr-preview/pr-51/images/avatar.svg new file mode 100644 index 00000000..0ab7d651 --- /dev/null +++ b/pr-preview/pr-51/images/avatar.svg @@ -0,0 +1,195 @@ + + + + diff --git a/pr-preview/pr-51/images/logo.svg b/pr-preview/pr-51/images/logo.svg new file mode 100644 index 00000000..39231131 --- /dev/null +++ b/pr-preview/pr-51/images/logo.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pr-preview/pr-51/index.html b/pr-preview/pr-51/index.html new file mode 100644 index 00000000..9f9499d8 --- /dev/null +++ b/pr-preview/pr-51/index.html @@ -0,0 +1,771 @@ + + + + + + + + + +OpenPipelines + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

OpenPipelines

+

Best-practice workflows for single-cell single- and multi-omics data

+
+
+ + +
+ + + + +
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/listings.json b/pr-preview/pr-51/listings.json new file mode 100644 index 00000000..aa919bd1 --- /dev/null +++ b/pr-preview/pr-51/listings.json @@ -0,0 +1,153 @@ +[ + { + "listing": "/index.html", + "items": [ + "/fundamentals/philosophy.html", + "/fundamentals/concepts.html", + "/fundamentals/architecture.html", + "/fundamentals/roadmap.html", + "/fundamentals/index.html", + "/user_guide/getting_started.html", + "/user_guide/ingestion.html", + "/user_guide/processing.html", + "/user_guide/running_pipelines.html", + "/user_guide/downstream.html", + "/user_guide/bug_reports.html", + "/user_guide/index.html", + "/contributing/getting_started.html", + "/contributing/project_structure.html", + "/contributing/creating_components.html", + "/contributing/creating_pipelines.html", + "/contributing/running_tests.html", + "/contributing/pull_requests.html", + "/contributing/index.html", + "/more_information/cheat_sheets.html", + "/more_information/code_of_conduct.html", + "/more_information/data_api.html", + "/more_information/faq.html", + "/more_information/index.html" + ] + }, + { + "listing": "/components/index.html", + "items": [ + "/components/workflows/index.html", + "/components/workflows/ingestion/bd_rhapsody.html", + "/components/workflows/multiomics/integration/bbknn_leiden.html", + "/components/workflows/ingestion/cellranger_mapping.html", + "/components/workflows/ingestion/cellranger_multi.html", + "/components/workflows/ingestion/cellranger_postprocessing.html", + "/components/workflows/ingestion/conversion.html", + "/components/workflows/ingestion/demux.html", + "/components/workflows/multiomics/full_pipeline.html", + "/components/workflows/integration/common/harmony_leiden.html", + "/components/workflows/multiomics/integration/harmony_leiden.html", + "/components/workflows/integration/initialize_integration/initialize_integration.html", + "/components/workflows/multiomics/integration/initialize_integration.html", + "/components/workflows/multiomics/integration.html", + "/components/workflows/multiomics/integration/leiden_scvi.html", + "/components/workflows/ingestion/make_reference.html", + "/components/workflows/multiomics/multisample.html", + "/components/workflows/multiomics/prot_multisample.html", + "/components/workflows/multiomics/prot_singlesample.html", + "/components/workflows/multiomics/rna_multisample.html", + "/components/workflows/multiomics/rna_singlesample.html", + "/components/workflows/integration/scanorama_leiden/scanorama_leiden.html", + "/components/workflows/multiomics/integration/scanorama_leiden.html", + "/components/workflows/integration/scvi/scvi.html", + "/components/workflows/multiomics/integration/totalvi_leiden.html", + "/components/modules/index.html", + "/components/modules/metadata/add_id.html", + "/components/modules/mapping/bd_rhapsody.html", + "/components/modules/neighbors/bbknn.html", + "/components/modules/demux/bcl_convert.html", + "/components/modules/demux/bcl2fastq.html", + "/components/modules/reference/build_bdrhap_reference.html", + "/components/modules/reference/build_cellranger_reference.html", + "/components/modules/qc/calculate_qc_metrics.html", + "/components/modules/correction/cellbender_remove_background.html", + "/components/modules/correction/cellbender_remove_background_v0_2.html", + "/components/modules/mapping/cellranger_count.html", + "/components/modules/mapping/cellranger_count_split.html", + "/components/modules/demux/cellranger_mkfastq.html", + "/components/modules/mapping/cellranger_multi.html", + "/components/modules/query/cellxgene_census.html", + "/components/modules/transform/clr.html", + "/components/modules/compression/compress_h5mu.html", + "/components/modules/dataflow/concat.html", + "/components/modules/transform/delete_layer.html", + "/components/modules/filter/do_filter.html", + "/components/modules/download/download_file.html", + "/components/modules/qc/fastqc.html", + "/components/modules/process_10xh5/filter_10xh5.html", + "/components/modules/filter/filter_with_counts.html", + "/components/modules/filter/filter_with_hvg.html", + "/components/modules/filter/filter_with_scrublet.html", + "/components/modules/neighbors/find_neighbors.html", + "/components/modules/convert/from_10xh5_to_h5mu.html", + "/components/modules/convert/from_10xmtx_to_h5mu.html", + "/components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html", + "/components/modules/convert/from_bdrhap_to_h5mu.html", + "/components/modules/convert/from_cellranger_multi_to_h5mu.html", + "/components/modules/convert/from_h5ad_to_h5mu.html", + "/components/modules/convert/from_h5mu_to_h5ad.html", + "/components/modules/integrate/harmonypy.html", + "/components/modules/mapping/htseq_count.html", + "/components/modules/mapping/htseq_count_to_h5mu.html", + "/components/modules/metadata/join_csv.html", + "/components/modules/metadata/join_uns_to_obs.html", + "/components/modules/labels_transfer/knn.html", + "/components/modules/cluster/leiden.html", + "/components/modules/interpret/lianapy.html", + "/components/modules/transform/log1p.html", + "/components/modules/files/make_params.html", + "/components/modules/reference/make_reference.html", + "/components/modules/dataflow/merge.html", + "/components/modules/report/mermaid.html", + "/components/modules/metadata/move_obsm_to_obs.html", + "/components/modules/mapping/multi_star.html", + "/components/modules/mapping/multi_star_to_h5mu.html", + "/components/modules/qc/multiqc.html", + "/components/modules/transform/normalize_total.html", + "/components/modules/dimred/pca.html", + "/components/modules/annotate/popv.html", + "/components/modules/transfer/publish.html", + "/components/modules/transform/regress_out.html", + "/components/modules/filter/remove_modality.html", + "/components/modules/mapping/samtools_sort.html", + "/components/modules/transform/scale.html", + "/components/modules/integrate/scanorama.html", + "/components/modules/integrate/scarches.html", + "/components/modules/velocity/scvelo.html", + "/components/modules/integrate/scvi.html", + "/components/modules/dataflow/split_modalities.html", + "/components/modules/mapping/star_align.html", + "/components/modules/mapping/star_align_v273a.html", + "/components/modules/mapping/star_build_reference.html", + "/components/modules/filter/subset_h5mu.html", + "/components/modules/download/sync_test_resources.html", + "/components/modules/integrate/totalvi.html", + "/components/modules/dimred/umap.html", + "/components/modules/velocity/velocyto.html", + "/components/modules/convert/velocyto_to_h5mu.html", + "/components/modules/labels_transfer/xgboost.html" + ] + }, + { + "listing": "/team/index.html", + "items": [ + "/team/angela_oliveira_pisco/index.html", + "/team/dries_de_maeyer/index.html", + "/team/dries_schaumont/index.html", + "/team/malte_d_luecken/index.html", + "/team/marijke_van_moerbeke/index.html", + "/team/matthias_beyens/index.html", + "/team/mauro_saporita/index.html", + "/team/povilas_gibas/index.html", + "/team/robrecht_cannoodt/index.html", + "/team/samuel_dsouza/index.html", + "/team/toni_verbeiren/index.html", + "/team/vladimir_shitov/index.html" + ] + } +] \ No newline at end of file diff --git a/pr-preview/pr-51/more_information/cheat_sheets.html b/pr-preview/pr-51/more_information/cheat_sheets.html new file mode 100644 index 00000000..d82071bb --- /dev/null +++ b/pr-preview/pr-51/more_information/cheat_sheets.html @@ -0,0 +1,481 @@ + + + + + + + + + +OpenPipelines - Cheat sheets + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Cheat sheets

+
+ + + +
+ + + + +
+ + +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/more_information/code_of_conduct.html b/pr-preview/pr-51/more_information/code_of_conduct.html new file mode 100644 index 00000000..ab6f43c4 --- /dev/null +++ b/pr-preview/pr-51/more_information/code_of_conduct.html @@ -0,0 +1,481 @@ + + + + + + + + + +OpenPipelines - Code of conduct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Code of conduct

+
+ + + +
+ + + + +
+ + +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/more_information/data_api.html b/pr-preview/pr-51/more_information/data_api.html new file mode 100644 index 00000000..2f843c43 --- /dev/null +++ b/pr-preview/pr-51/more_information/data_api.html @@ -0,0 +1,617 @@ + + + + + + + + + +OpenPipelines - Data API + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Data API

+
+ + + +
+ + + + +
+ + +
+ +
+
+
+ +
+
+Note +
+
+
+

File formats are being discussed in openpipelines-bio/openpipeline#102

+
+
+
+

Dataset

+
obs:
+ index # cell id
+ sample
+ cell_type
+ organism
+ tissue
+
+mod:
+ rna:
+ rnav:
+ prot:
+ atac:
+ vdj:
+
+
+

RNA modality

+
mod:
+ rna:
+   layers:
+     counts
+     normalized
+   obs:
+     <qc metrics>
+     doublet_score
+     doublet_bool
+     cluster
+   var:
+     index # feature_id, preferably an ensembl id
+     feature_name
+     <qc metrics>
+     highly_variable
+     highly_variable_score
+   obsm:
+     X_pca
+     X_integrated
+     X_umap
+     annotation # scvi, bbknn, ...
+   obsp:
+     connectivities
+     distances
+
+
+

ADT modality

+
mod:
+ prot:
+   layers:
+     counts
+   var:
+      index # feature_id
+      feature_name # Associated protein names
+
+
+

VDJ modality

+
mod:
+ vdj:
+   obsm:
+     vdj_t
+     vdj_b
+
+
+

ATAC modality

+
mod:
+ atac:
+   layers:
+     counts
+   var:
+     interval
+
+
+

RNA velocity modality

+
mod:
+ rnav:
+   layers:
+     spliced
+     unspliced
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/more_information/faq.html b/pr-preview/pr-51/more_information/faq.html new file mode 100644 index 00000000..5b60b459 --- /dev/null +++ b/pr-preview/pr-51/more_information/faq.html @@ -0,0 +1,481 @@ + + + + + + + + + +OpenPipelines - FAQ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

FAQ

+
+ + + +
+ + + + +
+ + +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/more_information/index.html b/pr-preview/pr-51/more_information/index.html new file mode 100644 index 00000000..ba9b9b8a --- /dev/null +++ b/pr-preview/pr-51/more_information/index.html @@ -0,0 +1,481 @@ + + + + + + + + + +OpenPipelines - More information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

More information

+
+ + + +
+ + + + +
+ + +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/robots.txt b/pr-preview/pr-51/robots.txt new file mode 100644 index 00000000..e6e781fe --- /dev/null +++ b/pr-preview/pr-51/robots.txt @@ -0,0 +1 @@ +Sitemap: https://openpipelines.bio/sitemap.xml diff --git a/pr-preview/pr-51/search.json b/pr-preview/pr-51/search.json new file mode 100644 index 00000000..4171a83e --- /dev/null +++ b/pr-preview/pr-51/search.json @@ -0,0 +1,3236 @@ +[ + { + "objectID": "contributing/creating_components.html", + "href": "contributing/creating_components.html", + "title": "Creating components", + "section": "", + "text": "One of the core principals of OpenPipelines is to use MuData as a common data format troughout the whole pipeline. See the concepts page for more information on openpipelines uses MuData to store single-cell data." + }, + { + "objectID": "contributing/creating_components.html#the-config", + "href": "contributing/creating_components.html#the-config", + "title": "Creating components", + "section": "The config", + "text": "The config\nfunctionality:\n name: \"my_component\"\n namespace: \"my_namespace\"\n description: \"My new custom component\"\n authors:\n - __merge__: ../../authors/my_name.yaml\n roles: [ author ]\n arguments:\n - name: \"--output\"\n type: file\n example: \"output_file.h5mu\"\n description: \"Location were the output file should be written to.\"\n direction: \"output\"\n resources:\n - type: python_script\n path: script.py\nplatforms:\n - type: docker\n image: python:3.11\n setup:\n - type: python\n packages: mudata~=0.2.3\n - type: nextflow\n directives:\n label: [highcpu, midmem]\n\nBasic information\nEach component should have the name, a namespace, a description and author information defined in the config. Because a single author can contribute to multiple components, the author information is often duplicated across components, which was causing issues with the author information being out of date and not easy to maintain. Therefore, it was decided to move author information to ./src/authors. Each author has a yaml file containing the author information, and the viash __merge__ property is used to merge this information into the viash configs.\nBasic information checklist:\n\nGive the component a name\nAdd the component to an appropriate namespace\nAdd a description\nAdd author information\n\n\n\nArguments and argument groups\nIf you component requires arguments, they should be defined in arguments or argument_groups. Try tro group individual arguments into argument_groups when the number of arguments become too larg (10 or more as a rule of thumb).\nArgument checklist:\n\nAdd a description and name\nEach argument should have the appropriate type.\nInput and output files should be of type file instead of string and use the appropriate direction:\nIf possible: add an example\nIf the argument can accept multiple values, add multiple: true\nIf the possible input for an argument is limited to certain set of values, use choices:\n\n\n\n(Test)resources\nResources define files that are required for a component to perform its function. These can be scripts, but also additional files like settings for tools you might require. Defining resources is both a necessity because viash needs to know what code to execute, but defining resources also has the added benefit that these resources are automatically made available, regardless of the build environment. For example: resources are automatically mounted within a running docker container.\nThere is a difference between defining resources and test_resources. While resources are required for a component to function, test_resources only need to be included when testing the component (with for example viash test) in addition to the regular resources. Having a look at the example above, resources are defined using the resources: property. It takes a list of multiple files or folders.\nIn openpipelines, it was decided to not use a service like git lfs to include large resources into the repository. Instead, if large resources are required, there are two possibilities: * Large resources required for testing are to uploaded into an s3 bucket that is synced automatically before running tests (both locally and on github). Please ping a maintainer when you open a PR and ask them to upload the files for you. * Other large resources that are not needed for testing can be considered as input. This means that an argument of type: file needs to be created. The downside of this method is that viash is not able to natively support remote files f\nResources checklist: - Script resources are located next to the config and added to the config with the correct type (python_script, r_script, …) - Small resources (<50MB) that are not scripts can also be checked in into the repo, next to the\n\n\nBuild information\nTODO" + }, + { + "objectID": "contributing/creating_components.html#the-script-file", + "href": "contributing/creating_components.html#the-script-file", + "title": "Creating components", + "section": "The script file", + "text": "The script file\nTODO" + }, + { + "objectID": "contributing/creating_components.html#author-information", + "href": "contributing/creating_components.html#author-information", + "title": "Creating components", + "section": "Author information", + "text": "Author information\nTODO" + }, + { + "objectID": "CHANGELOG.html", + "href": "CHANGELOG.html", + "title": "OpenPipelines.bio v0.9.0", + "section": "", + "text": "Update component documentation to v0.9.0 release.\n\n\n\n\n\nUpdate to Viash actions 0.4.0." + }, + { + "objectID": "CHANGELOG.html#major-changes", + "href": "CHANGELOG.html#major-changes", + "title": "OpenPipelines.bio v0.9.0", + "section": "", + "text": "Update component documentation to v0.9.0 release." + }, + { + "objectID": "CHANGELOG.html#minor-changes", + "href": "CHANGELOG.html#minor-changes", + "title": "OpenPipelines.bio v0.9.0", + "section": "", + "text": "Update to Viash actions 0.4.0." + }, + { + "objectID": "CHANGELOG.html#major-changes-1", + "href": "CHANGELOG.html#major-changes-1", + "title": "OpenPipelines.bio v0.9.0", + "section": "MAJOR CHANGES", + "text": "MAJOR CHANGES\n\nUpdate component documentation to v0.8.0 release.\nUse git submodule to access openpipeline repo\nPropose new website structure\nUpdate author page" + }, + { + "objectID": "components/modules/neighbors/bbknn.html", + "href": "components/modules/neighbors/bbknn.html", + "title": "Bbknn", + "section": "", + "text": "ID: bbknn\nNamespace: neighbors\n\n\n\nSource" + }, + { + "objectID": "components/modules/neighbors/bbknn.html#example-commands", + "href": "components/modules/neighbors/bbknn.html#example-commands", + "title": "Bbknn", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/neighbors/bbknn/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"path/to/file\"\nmodality: \"rna\"\nobsm_input: \"X_pca\"\nobs_batch: \"batch\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nuns_output: \"neighbors\"\nobsp_distances: \"distances\"\nobsp_connectivities: \"connectivities\"\nn_neighbors_within_batch: 3\nn_pcs: 50\n# n_trim: 123\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/neighbors/bbknn/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/neighbors/bbknn.html#argument-group", + "href": "components/modules/neighbors/bbknn.html#argument-group", + "title": "Bbknn", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--obsm_input\nThe dimensionality reduction in .obsm to use for neighbour detection. Defaults to X_pca.\nstring, default: \"X_pca\"\n\n\n--obs_batch\n.obs column name discriminating between your batches.\nstring, default: \"batch\"\n\n\n--output\nOutput .h5mu file.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--uns_output\nMandatory .uns slot to store various neighbor output objects.\nstring, default: \"neighbors\"\n\n\n--obsp_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"distances\"\n\n\n--obsp_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"connectivities\"\n\n\n--n_neighbors_within_batch\nHow many top neighbours to report for each batch; total number of neighbours in the initial k-nearest-neighbours computation will be this number times the number of batches.\ninteger, default: 3\n\n\n--n_pcs\nHow many dimensions (in case of PCA, principal components) to use in the analysis.\ninteger, default: 50\n\n\n--n_trim\nTrim the neighbours of each cell to these many top connectivities. May help with population independence and improve the tidiness of clustering. The lower the value the more independent the individual populations, at the cost of more conserved batch effect. If None (default), sets the parameter value automatically to 10 times neighbors_within_batch times the number of batches. Set to 0 to skip.\ninteger" + }, + { + "objectID": "components/modules/neighbors/bbknn.html#authors", + "href": "components/modules/neighbors/bbknn.html#authors", + "title": "Bbknn", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (author)\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/transform/scale.html", + "href": "components/modules/transform/scale.html", + "title": "Scale", + "section": "", + "text": "ID: scale\nNamespace: transform\n\n\n\nSource" + }, + { + "objectID": "components/modules/transform/scale.html#example-commands", + "href": "components/modules/transform/scale.html#example-commands", + "title": "Scale", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/transform/scale/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n# max_value: 123.0\nzero_center: true\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/transform/scale/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/transform/scale.html#argument-group", + "href": "components/modules/transform/scale.html#argument-group", + "title": "Scale", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file.\nfile, required, example: \"input.h5mu\"\n\n\n--modality\nList of modalities to process.\nstring, default: \"rna\"\n\n\n--max_value\nClip (truncate) to this value after scaling. Does not clip by default.\ndouble\n\n\n--zero_center\nIf False, omit zero-centering variables, which allows to handle sparse input efficiently.\nboolean, default: TRUE\n\n\n--output\nOutput h5mu file.\nfile, required, default: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"" + }, + { + "objectID": "components/modules/transform/scale.html#authors", + "href": "components/modules/transform/scale.html#authors", + "title": "Scale", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/transform/clr.html", + "href": "components/modules/transform/clr.html", + "title": "Clr", + "section": "", + "text": "ID: clr\nNamespace: transform\n\n\n\nSource" + }, + { + "objectID": "components/modules/transform/clr.html#example-commands", + "href": "components/modules/transform/clr.html#example-commands", + "title": "Clr", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/transform/clr/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"prot\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n# output_layer: \"foo\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/transform/clr/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/transform/clr.html#argument-group", + "href": "components/modules/transform/clr.html#argument-group", + "title": "Clr", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"prot\"\n\n\n--output\nOutput h5mu file.\nfile, required, default: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--output_layer\nOutput layer to use. By default, use X.\nstring" + }, + { + "objectID": "components/modules/transform/clr.html#authors", + "href": "components/modules/transform/clr.html#authors", + "title": "Clr", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/transform/log1p.html", + "href": "components/modules/transform/log1p.html", + "title": "Log1p", + "section": "", + "text": "ID: log1p\nNamespace: transform\n\n\n\nSource\nComputes X = log(X + 1), where log denotes the natural logarithm unless a different base is given" + }, + { + "objectID": "components/modules/transform/log1p.html#example-commands", + "href": "components/modules/transform/log1p.html#example-commands", + "title": "Log1p", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/transform/log1p/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n# input_layer: \"foo\"\n# output_layer: \"foo\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n# base: 2\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/transform/log1p/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/transform/log1p.html#argument-group", + "href": "components/modules/transform/log1p.html#argument-group", + "title": "Log1p", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--input_layer\nInput layer to use. If None, X is normalized\nstring\n\n\n--output_layer\nOutput layer to use. By default, use X.\nstring\n\n\n--output\nOutput h5mu file.\nfile, required, default: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--base\n\ndouble, example: 2" + }, + { + "objectID": "components/modules/transform/log1p.html#authors", + "href": "components/modules/transform/log1p.html#authors", + "title": "Log1p", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (maintainer)\nRobrecht Cannoodt (contributor)" + }, + { + "objectID": "components/modules/dataflow/concat.html", + "href": "components/modules/dataflow/concat.html", + "title": "Concat", + "section": "", + "text": "ID: concat\nNamespace: dataflow\n\n\n\nSource" + }, + { + "objectID": "components/modules/dataflow/concat.html#example-commands", + "href": "components/modules/dataflow/concat.html#example-commands", + "title": "Concat", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/dataflow/concat/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: [\"sample_paths\"]\n# input_id: [\"foo\"]\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nobs_sample_name: \"sample_id\"\nother_axis_mode: \"move\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/dataflow/concat/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/dataflow/concat.html#argument-group", + "href": "components/modules/dataflow/concat.html#argument-group", + "title": "Concat", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nPaths to the different samples to be concatenated.\nfile, required, example: \"sample_paths\"\n\n\n--input_id\nNames of the different samples that have to be concatenated. Must be specified when using ‘–mode move’. In this case, the ids will be used for the columns names of the dataframes registring the conflicts. If specified, must be of same length as --input.\nstring\n\n\n--output\n\nfile, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--obs_sample_name\nName of the .obs key under which to add the sample names.\nstring, default: \"sample_id\"\n\n\n--other_axis_mode\nHow to handle the merging of other axis (var, obs, …). - None: keep no data - same: only keep elements of the matrices which are the same in each of the samples - unique: only keep elements for which there is only 1 possible value (1 value that can occur in multiple samples) - first: keep the annotation from the first sample - only: keep elements that show up in only one of the objects (1 unique element in only 1 sample) - move: identical to ‘same’, but moving the conflicting values to .varm or .obsm\nstring, default: \"move\"" + }, + { + "objectID": "components/modules/dataflow/concat.html#authors", + "href": "components/modules/dataflow/concat.html#authors", + "title": "Concat", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/process_10xh5/filter_10xh5.html", + "href": "components/modules/process_10xh5/filter_10xh5.html", + "title": "Filter 10xh5", + "section": "", + "text": "ID: filter_10xh5\nNamespace: process_10xh5\n\n\n\nSource" + }, + { + "objectID": "components/modules/process_10xh5/filter_10xh5.html#example-commands", + "href": "components/modules/process_10xh5/filter_10xh5.html#example-commands", + "title": "Filter 10xh5", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/process_10xh5/filter_10xh5/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"pbmc_1k_protein_v3_raw_feature_bc_matrix.h5\"\n# output: \"$id.$key.output.h5\"\nmin_library_size: 0\nmin_cells_per_gene: 0\n# keep_feature_types: [\"Antibody Capture\"]\nverbose: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/process_10xh5/filter_10xh5/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/process_10xh5/filter_10xh5.html#argument-group", + "href": "components/modules/process_10xh5/filter_10xh5.html#argument-group", + "title": "Filter 10xh5", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nAn h5 file from the 10x genomics website.\nfile, required, example: \"pbmc_1k_protein_v3_raw_feature_bc_matrix.h5\"\n\n\n--output\nOutput h5 file.\nfile, required, example: \"pbmc_1k_protein_v3_raw_feature_bc_matrix_filtered.h5\"\n\n\n--min_library_size\nMinimum library size.\ninteger, default: 0\n\n\n--min_cells_per_gene\nMinimum number of cells per gene.\ninteger, default: 0\n\n\n--keep_feature_types\nSpecify which feature types will never be filtered out\nstring, example: \"Antibody Capture\"\n\n\n--verbose\nIncrease verbosity\nboolean_true" + }, + { + "objectID": "components/modules/process_10xh5/filter_10xh5.html#authors", + "href": "components/modules/process_10xh5/filter_10xh5.html#authors", + "title": "Filter 10xh5", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (maintainer)" + }, + { + "objectID": "components/modules/metadata/join_uns_to_obs.html", + "href": "components/modules/metadata/join_uns_to_obs.html", + "title": "Join uns to obs", + "section": "", + "text": "ID: join_uns_to_obs\nNamespace: metadata\n\n\n\nSource" + }, + { + "objectID": "components/modules/metadata/join_uns_to_obs.html#example-commands", + "href": "components/modules/metadata/join_uns_to_obs.html#example-commands", + "title": "Join uns to obs", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/metadata/join_uns_to_obs/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\nuns_key: # please fill in - example: \"foo\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/metadata/join_uns_to_obs/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/metadata/join_uns_to_obs.html#argument-group", + "href": "components/modules/metadata/join_uns_to_obs.html#argument-group", + "title": "Join uns to obs", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--uns_key\n\nstring, required\n\n\n--output\nOutput h5mu file.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"" + }, + { + "objectID": "components/modules/metadata/move_obsm_to_obs.html", + "href": "components/modules/metadata/move_obsm_to_obs.html", + "title": "Move obsm to obs", + "section": "", + "text": "ID: move_obsm_to_obs\nNamespace: metadata\n\n\n\nSource\nNewly created columns in .obs will be created from the .obsm key suffixed with an underscore and the name of the columns of the specified .obsm matrix" + }, + { + "objectID": "components/modules/metadata/move_obsm_to_obs.html#example-commands", + "href": "components/modules/metadata/move_obsm_to_obs.html#example-commands", + "title": "Move obsm to obs", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/metadata/move_obsm_to_obs/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# MuData Input\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\nobsm_key: # please fill in - example: \"foo\"\n\n# MuData Output\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/metadata/move_obsm_to_obs/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/metadata/move_obsm_to_obs.html#argument-groups", + "href": "components/modules/metadata/move_obsm_to_obs.html#argument-groups", + "title": "Move obsm to obs", + "section": "Argument groups", + "text": "Argument groups\n\nMuData Input\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--obsm_key\nKey of a data structure to move from .obsm to .obs.\nstring, required\n\n\n\n\n\nMuData Output\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput h5mu file.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"" + }, + { + "objectID": "components/modules/metadata/move_obsm_to_obs.html#authors", + "href": "components/modules/metadata/move_obsm_to_obs.html#authors", + "title": "Move obsm to obs", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author)" + }, + { + "objectID": "components/modules/demux/cellranger_mkfastq.html", + "href": "components/modules/demux/cellranger_mkfastq.html", + "title": "Cellranger mkfastq", + "section": "", + "text": "ID: cellranger_mkfastq\nNamespace: demux\n\n\n\nSource" + }, + { + "objectID": "components/modules/demux/cellranger_mkfastq.html#example-commands", + "href": "components/modules/demux/cellranger_mkfastq.html#example-commands", + "title": "Cellranger mkfastq", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/demux/cellranger_mkfastq/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"/path/to/bcl\"\nsample_sheet: # please fill in - example: \"SampleSheet.csv\"\n# output: \"$id.$key.output.output\"\n# reports: \"$id.$key.reports.reports\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/demux/cellranger_mkfastq/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/demux/cellranger_mkfastq.html#argument-group", + "href": "components/modules/demux/cellranger_mkfastq.html#argument-group", + "title": "Cellranger mkfastq", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nPath to the (untarred) BCL files. Expects ‘RunParameters.xml’ at ‘./’.\nfile, required, example: \"/path/to/bcl\"\n\n\n--sample_sheet\nThe path to the sample sheet.\nfile, required, example: \"SampleSheet.csv\"\n\n\n--output\nThe folder to store the demux results\nfile, required, default: \"fastqs\", example: \"/path/to/output\"\n\n\n--reports\nReports directory\nfile, example: \"reports_dir\"" + }, + { + "objectID": "components/modules/demux/cellranger_mkfastq.html#authors", + "href": "components/modules/demux/cellranger_mkfastq.html#authors", + "title": "Cellranger mkfastq", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nSamuel D’Souza (author)\nRobrecht Cannoodt (author, maintainer)" + }, + { + "objectID": "components/modules/demux/bcl_convert.html", + "href": "components/modules/demux/bcl_convert.html", + "title": "Bcl convert", + "section": "", + "text": "ID: bcl_convert\nNamespace: demux\n\n\n\nSource\nInformation about upgrading from bcl2fastq via https://emea.support.illumina.com/bulletins/2020/10/upgrading-from-bcl2fastq-to-bcl-convert.html and https://support.illumina.com/sequencing/sequencing_software/bcl-convert/compatibility.html" + }, + { + "objectID": "components/modules/demux/bcl_convert.html#example-commands", + "href": "components/modules/demux/bcl_convert.html#example-commands", + "title": "Bcl convert", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/demux/bcl_convert/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"bcl_dir\"\nsample_sheet: # please fill in - example: \"bcl_dir\"\n# output: \"$id.$key.output.output\"\n# reports: \"$id.$key.reports.reports\"\ntest_mode: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/demux/bcl_convert/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/demux/bcl_convert.html#argument-group", + "href": "components/modules/demux/bcl_convert.html#argument-group", + "title": "Bcl convert", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput run directory\nfile, required, example: \"bcl_dir\"\n\n\n--sample_sheet\nPointer to the sample sheet\nfile, required, example: \"bcl_dir\"\n\n\n--output\nOutput directory containig fastq files\nfile, required, example: \"fastq_dir\"\n\n\n--reports\nReports directory\nfile, example: \"reports_dir\"\n\n\n--test_mode\nShould bcl-convert be run in test mode (using –first-tile-only)?\nboolean, default: FALSE" + }, + { + "objectID": "components/modules/demux/bcl_convert.html#authors", + "href": "components/modules/demux/bcl_convert.html#authors", + "title": "Bcl convert", + "section": "Authors", + "text": "Authors\n\nToni Verbeiren (author, maintainer)\nMarijke Van Moerbeke (author)" + }, + { + "objectID": "components/modules/cluster/leiden.html", + "href": "components/modules/cluster/leiden.html", + "title": "Leiden", + "section": "", + "text": "ID: leiden\nNamespace: cluster\n\n\n\nSource\nLeiden is an improved version of the Louvain algorithm [Blondel08]. It has been proposed for single-cell analysis by [Levine15]. This requires having ran neighbors/find_neighbors or neighbors/bbknn first.\nBlondel08: Blondel et al. (2008), Fast unfolding of communities in large networks, J. Stat. Mech.\nLevine15: Levine et al. (2015), Data-Driven Phenotypic Dissection of AML Reveals Progenitor-like Cells that Correlate with Prognosis, Cell.\nTraag18: Traag et al. (2018), From Louvain to Leiden: guaranteeing well-connected communities arXiv.\nWolf18: Wolf et al. (2018), Scanpy: large-scale single-cell gene expression data analysis, Genome Biology." + }, + { + "objectID": "components/modules/cluster/leiden.html#example-commands", + "href": "components/modules/cluster/leiden.html#example-commands", + "title": "Leiden", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/cluster/leiden/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\nobsp_connectivities: \"connectivities\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nobsm_name: \"leiden\"\nresolution: [1]\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/cluster/leiden/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/cluster/leiden.html#argument-group", + "href": "components/modules/cluster/leiden.html#argument-group", + "title": "Leiden", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput file.\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--obsp_connectivities\nIn which .obsp slot the neighbor connectivities can be found.\nstring, default: \"connectivities\"\n\n\n--output\nOutput file.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\n\nstring, example: \"gzip\"\n\n\n--obsm_name\nName of the .obsm key under which to add the cluster labels. The name of the columns in the matrix will correspond to the resolutions.\nstring, default: \"leiden\"\n\n\n--resolution\nA parameter value controlling the coarseness of the clustering. Higher values lead to more clusters. Multiple values will result in clustering being performed multiple times.\ndouble, default: 1" + }, + { + "objectID": "components/modules/cluster/leiden.html#authors", + "href": "components/modules/cluster/leiden.html#authors", + "title": "Leiden", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (maintainer)" + }, + { + "objectID": "components/modules/qc/multiqc.html", + "href": "components/modules/qc/multiqc.html", + "title": "Multiqc", + "section": "", + "text": "ID: multiqc\nNamespace: qc\n\n\n\nSource\nIt searches a given directory for analysis logs and compiles a HTML report. It’s a general use tool, perfect for summarising the output from numerous bioinformatics tools" + }, + { + "objectID": "components/modules/qc/multiqc.html#example-commands", + "href": "components/modules/qc/multiqc.html#example-commands", + "title": "Multiqc", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/qc/multiqc/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: [\"input.txt\"]\n# output: \"$id.$key.output.output\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/qc/multiqc/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/qc/multiqc.html#argument-group", + "href": "components/modules/qc/multiqc.html#argument-group", + "title": "Multiqc", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInputs for MultiQC.\nfile, required, example: \"input.txt\"\n\n\n--output\nCreate report in the specified output directory.\nfile, required, example: \"report\"" + }, + { + "objectID": "components/modules/download/sync_test_resources.html", + "href": "components/modules/download/sync_test_resources.html", + "title": "Sync test resources", + "section": "", + "text": "ID: sync_test_resources\nNamespace: download\n\n\n\nSource" + }, + { + "objectID": "components/modules/download/sync_test_resources.html#example-commands", + "href": "components/modules/download/sync_test_resources.html#example-commands", + "title": "Sync test resources", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/download/sync_test_resources/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: \"s3://openpipelines-data\"\n# output: \"$id.$key.output.output\"\nquiet: false\ndryrun: false\ndelete: false\n# exclude: [\"foo\"]\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/download/sync_test_resources/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/download/sync_test_resources.html#argument-group", + "href": "components/modules/download/sync_test_resources.html#argument-group", + "title": "Sync test resources", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nPath to the S3 bucket to sync from.\nstring, default: \"s3://openpipelines-data\"\n\n\n--output\nPath to the test resource directory.\nfile, default: \"resources_test\"\n\n\n--quiet\nDisplays the operations that would be performed using the specified command without actually running them.\nboolean_true\n\n\n--dryrun\nDoes not display the operations performed from the specified command.\nboolean_true\n\n\n--delete\nFiles that exist in the destination but not in the source are deleted during sync.\nboolean_true\n\n\n--exclude\nExclude all files or objects from the command that matches the specified pattern.\nstring" + }, + { + "objectID": "components/modules/download/sync_test_resources.html#authors", + "href": "components/modules/download/sync_test_resources.html#authors", + "title": "Sync test resources", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (maintainer)" + }, + { + "objectID": "components/modules/compression/compress_h5mu.html", + "href": "components/modules/compression/compress_h5mu.html", + "title": "Compress h5mu", + "section": "", + "text": "ID: compress_h5mu\nNamespace: compression\n\n\n\nSource" + }, + { + "objectID": "components/modules/compression/compress_h5mu.html#example-commands", + "href": "components/modules/compression/compress_h5mu.html#example-commands", + "title": "Compress h5mu", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/compression/compress_h5mu/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"sample_path\"\n# output: \"$id.$key.output.output\"\ncompression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/compression/compress_h5mu/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/compression/compress_h5mu.html#argument-group", + "href": "components/modules/compression/compress_h5mu.html#argument-group", + "title": "Compress h5mu", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nPath to the input .h5mu.\nfile, required, example: \"sample_path\"\n\n\n--output\nlocation of output file.\nfile, required\n\n\n--compression\nCompression type.\nstring, default: \"gzip\"" + }, + { + "objectID": "components/modules/compression/compress_h5mu.html#authors", + "href": "components/modules/compression/compress_h5mu.html#authors", + "title": "Compress h5mu", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/annotate/popv.html", + "href": "components/modules/annotate/popv.html", + "title": "Popv", + "section": "", + "text": "ID: popv\nNamespace: annotate\n\n\n\nSource\nNote that this is a one-shot version of PopV." + }, + { + "objectID": "components/modules/annotate/popv.html#example-commands", + "href": "components/modules/annotate/popv.html#example-commands", + "title": "Popv", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/annotate/popv/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n# input_layer: \"foo\"\n# input_obs_batch: \"foo\"\n# input_var_subset: \"foo\"\n# input_obs_label: \"foo\"\nunknown_celltype_label: \"unknown\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Arguments\nmethods: # please fill in - example: [\"knn_on_scvi\", \"scanvi\"]\n\n# Reference\nreference: # please fill in - example: \"TS_Bladder_filtered.h5ad\"\n# reference_layer: \"foo\"\nreference_obs_label: \"cell_ontology_class\"\nreference_obs_batch: \"donor_assay\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/annotate/popv/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/annotate/popv.html#argument-groups", + "href": "components/modules/annotate/popv.html#argument-groups", + "title": "Popv", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\nArguments related to the input (aka query) dataset.\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file.\nfile, required, example: \"input.h5mu\"\n\n\n--modality\nWhich modality to process.\nstring, default: \"rna\"\n\n\n--input_layer\nWhich layer to use. If no value is provided, the counts are assumed to be in the .X slot. Otherwise, count data is expected to be in .layers[input_layer].\nstring\n\n\n--input_obs_batch\nKey in obs field of input adata for batch information. If no value is provided, batch label is assumed to be unknown.\nstring\n\n\n--input_var_subset\nSubset the input object with this column.\nstring\n\n\n--input_obs_label\nKey in obs field of input adata for label information. This is only used for training scANVI. Unlabelled cells should be set to \"unknown_celltype_label\".\nstring\n\n\n--unknown_celltype_label\nIf input_obs_label is specified, cells with this value will be treated as unknown and will be predicted by the model.\nstring, default: \"unknown\"\n\n\n\n\n\nReference\nArguments related to the reference dataset.\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--reference\nUser-provided reference tissue. The data that will be used as reference to call cell types.\nfile, required, example: \"TS_Bladder_filtered.h5ad\"\n\n\n--reference_layer\nWhich layer to use. If no value is provided, the counts are assumed to be in the .X slot. Otherwise, count data is expected to be in .layers[reference_layer].\nstring\n\n\n--reference_obs_label\nKey in obs field of reference AnnData with cell-type information.\nstring, default: \"cell_ontology_class\"\n\n\n--reference_obs_batch\nKey in obs field of input adata for batch information.\nstring, default: \"donor_assay\"\n\n\n\n\n\nOutputs\nOutput arguments.\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput h5mu file.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\n\nstring, example: \"gzip\"\n\n\n\n\n\nArguments\nOther arguments.\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--methods\nMethods to call cell types. By default, runs to knn_on_scvi and scanvi.\nstring, required, example: \"knn_on_scvi\", example: \"scanvi\"" + }, + { + "objectID": "components/modules/annotate/popv.html#authors", + "href": "components/modules/annotate/popv.html#authors", + "title": "Popv", + "section": "Authors", + "text": "Authors\n\nMatthias Beyens (author)\nRobrecht Cannoodt (author)" + }, + { + "objectID": "components/modules/labels_transfer/xgboost.html", + "href": "components/modules/labels_transfer/xgboost.html", + "title": "Xgboost", + "section": "", + "text": "ID: xgboost\nNamespace: labels_transfer\n\n\n\nSource" + }, + { + "objectID": "components/modules/labels_transfer/xgboost.html#example-commands", + "href": "components/modules/labels_transfer/xgboost.html#example-commands", + "title": "Xgboost", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/labels_transfer/xgboost/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Execution arguments\nforce_retrain: false\nuse_gpu: false\nverbosity: 1\n# model_output: \"$id.$key.model_output.model_output\"\n\n# Learning parameters\nlearning_rate: 0.3\nmin_split_loss: 0\nmax_depth: 6\nmin_child_weight: 1\nmax_delta_step: 0\nsubsample: 1\nsampling_method: \"uniform\"\ncolsample_bytree: 1\ncolsample_bylevel: 1\ncolsample_bynode: 1\nreg_lambda: 1\nreg_alpha: 0\nscale_pos_weight: 1\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/labels_transfer/xgboost/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/labels_transfer/xgboost.html#argument-groups", + "href": "components/modules/labels_transfer/xgboost.html#argument-groups", + "title": "Xgboost", + "section": "Argument groups", + "text": "Argument groups\n\nInput dataset (query) arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nThe query data to transfer the labels to. Should be a .h5mu file.\nfile, required\n\n\n--modality\nWhich modality to use.\nstring, default: \"rna\"\n\n\n--input_obsm_features\nThe .obsm key of the embedding to use for the classifier’s inference. If not provided, the .X slot will be used instead. Make sure that embedding was obtained in the same way as the reference embedding (e.g. by the same model or preprocessing).\nstring, example: \"X_integrated_scanvi\"\n\n\n\n\n\nReference dataset arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--reference\nThe reference data to train classifiers on.\nfile, example: \"https:/zenodo.org/record/6337966/files/HLCA_emb_and_metadata.h5ad\"\n\n\n--reference_obsm_features\nThe .obsm key of the embedding to use for the classifier’s training. Make sure that embedding was obtained in the same way as the query embedding (e.g. by the same model or preprocessing).\nstring, required, default: \"X_integrated_scanvi\"\n\n\n--reference_obs_targets\nThe .obs key of the target labels to tranfer.\nstring, default: \"ann_level_1\", default: \"ann_level_2\", default: \"ann_level_3\", default: \"ann_level_4\", default: \"ann_level_5\", default: \"ann_finest_level\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nThe query data in .h5mu format with predicted labels transfered from the reference.\nfile, required\n\n\n--output_obs_predictions\nIn which .obs slots to store the predicted information. If provided, must have the same length as --reference_obs_targets. If empty, will default to the reference_obs_targets combined with the \"_pred\" suffix.\nstring\n\n\n--output_obs_uncertainty\nIn which .obs slots to store the uncertainty of the predictions. If provided, must have the same length as --reference_obs_targets. If empty, will default to the reference_obs_targets combined with the \"_uncertainty\" suffix.\nstring\n\n\n--output_uns_parameters\nThe .uns key to store additional information about the parameters used for the label transfer.\nstring, default: \"labels_transfer\"\n\n\n\n\n\nExecution arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--force_retrain\nRetrain models on the reference even if model_output directory already has trained classifiers. WARNING! It will rewrite existing classifiers for targets in the model_output directory!\nboolean_true\n\n\n--use_gpu\nUse GPU during models training and inference (recommended).\nboolean, default: FALSE\n\n\n--verbosity\nThe verbosity level for evaluation of the classifier from the range [0,2]\ninteger, default: 1\n\n\n--model_output\nOutput directory for model\nfile, default: \"model\"\n\n\n\n\n\nLearning parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--learning_rate\nStep size shrinkage used in update to prevents overfitting. Range: [0,1]. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the reference\ndouble, default: 0.3\n\n\n--min_split_loss\nMinimum loss reduction required to make a further partition on a leaf node of the tree. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the reference\ndouble, default: 0\n\n\n--max_depth\nMaximum depth of a tree. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the reference\ninteger, default: 6\n\n\n--min_child_weight\nMinimum sum of instance weight (hessian) needed in a child. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the reference\ninteger, default: 1\n\n\n--max_delta_step\nMaximum delta step we allow each leaf output to be. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the reference\ndouble, default: 0\n\n\n--subsample\nSubsample ratio of the training instances. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the reference\ndouble, default: 1\n\n\n--sampling_method\nThe method to use to sample the training instances. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the reference\nstring, default: \"uniform\"\n\n\n--colsample_bytree\nFraction of columns to be subsampled. Range (0, 1]. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the reference\ndouble, default: 1\n\n\n--colsample_bylevel\nSubsample ratio of columns for each level. Range (0, 1]. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the reference\ndouble, default: 1\n\n\n--colsample_bynode\nSubsample ratio of columns for each node (split). Range (0, 1]. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the reference\ndouble, default: 1\n\n\n--reg_lambda\nL2 regularization term on weights. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the reference\ndouble, default: 1\n\n\n--reg_alpha\nL1 regularization term on weights. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the reference\ndouble, default: 0\n\n\n--scale_pos_weight\nControl the balance of positive and negative weights, useful for unbalanced classes. See https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster for the reference\ndouble, default: 1" + }, + { + "objectID": "components/modules/labels_transfer/xgboost.html#authors", + "href": "components/modules/labels_transfer/xgboost.html#authors", + "title": "Xgboost", + "section": "Authors", + "text": "Authors\n\nVladimir Shitov (author)" + }, + { + "objectID": "components/modules/convert/from_cellranger_multi_to_h5mu.html", + "href": "components/modules/convert/from_cellranger_multi_to_h5mu.html", + "title": "From cellranger multi to h5mu", + "section": "", + "text": "ID: from_cellranger_multi_to_h5mu\nNamespace: convert\n\n\n\nSource\nBy default, will map the following library type names to modality names: - Gene Expression: rna - Peaks: atac - Antibody Capture: prot - VDJ: vdj - VDJ-T: vdj_t - VDJ-B: vdj_b - CRISPR Guide Capture: crispr - Multiplexing Capture: hashing\nOther library types have their whitepace removed and dashes replaced by underscores to generate the modality name.\nCurrently does not allow parsing the output from cell barcode demultiplexing." + }, + { + "objectID": "components/modules/convert/from_cellranger_multi_to_h5mu.html#example-commands", + "href": "components/modules/convert/from_cellranger_multi_to_h5mu.html#example-commands", + "title": "From cellranger multi to h5mu", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/convert/from_cellranger_multi_to_h5mu/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input_dir_containing_modalities\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nuns_metrics: \"metrics_cellranger\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/convert/from_cellranger_multi_to_h5mu/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/convert/from_cellranger_multi_to_h5mu.html#argument-group", + "href": "components/modules/convert/from_cellranger_multi_to_h5mu.html#argument-group", + "title": "From cellranger multi to h5mu", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput folder. Must contain the output from a cellranger multi run.\nfile, required, example: \"input_dir_containing_modalities\"\n\n\n--output\nOutput h5mu file.\nfile, example: \"output.h5mu\"\n\n\n--output_compression\n\nstring, example: \"gzip\"\n\n\n--uns_metrics\nName of the .uns slot under which to QC metrics (if any).\nstring, default: \"metrics_cellranger\"" + }, + { + "objectID": "components/modules/convert/from_cellranger_multi_to_h5mu.html#authors", + "href": "components/modules/convert/from_cellranger_multi_to_h5mu.html#authors", + "title": "From cellranger multi to h5mu", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/convert/from_h5ad_to_h5mu.html", + "href": "components/modules/convert/from_h5ad_to_h5mu.html", + "title": "From h5ad to h5mu", + "section": "", + "text": "ID: from_h5ad_to_h5mu\nNamespace: convert\n\n\n\nSource" + }, + { + "objectID": "components/modules/convert/from_h5ad_to_h5mu.html#example-commands", + "href": "components/modules/convert/from_h5ad_to_h5mu.html#example-commands", + "title": "From h5ad to h5mu", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/convert/from_h5ad_to_h5mu/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: [\"input.h5ad\"]\nmodality: [\"rna\"]\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/convert/from_h5ad_to_h5mu/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/convert/from_h5ad_to_h5mu.html#argument-group", + "href": "components/modules/convert/from_h5ad_to_h5mu.html#argument-group", + "title": "From h5ad to h5mu", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5ad files\nfile, required, default: \"input.h5ad\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--output\nOutput MuData file.\nfile, default: \"output.h5mu\"\n\n\n--output_compression\n\nstring, example: \"gzip\"" + }, + { + "objectID": "components/modules/convert/from_h5ad_to_h5mu.html#authors", + "href": "components/modules/convert/from_h5ad_to_h5mu.html#authors", + "title": "From h5ad to h5mu", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (maintainer)" + }, + { + "objectID": "components/modules/convert/velocyto_to_h5mu.html", + "href": "components/modules/convert/velocyto_to_h5mu.html", + "title": "Velocyto to h5mu", + "section": "", + "text": "ID: velocyto_to_h5mu\nNamespace: convert\n\n\n\nSource\nIf an input h5mu file is also provided, the velocity h5ad object will get added to that h5mu instead." + }, + { + "objectID": "components/modules/convert/velocyto_to_h5mu.html#example-commands", + "href": "components/modules/convert/velocyto_to_h5mu.html#example-commands", + "title": "Velocyto to h5mu", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/convert/velocyto_to_h5mu/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput_loom: # please fill in - example: \"input.loom\"\n# input_h5mu: \"input.h5mu\"\nmodality: \"rna_velocity\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nlayer_spliced: \"velo_spliced\"\nlayer_unspliced: \"velo_unspliced\"\nlayer_ambiguous: \"velo_ambiguous\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/convert/velocyto_to_h5mu/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/convert/velocyto_to_h5mu.html#argument-groups", + "href": "components/modules/convert/velocyto_to_h5mu.html#argument-groups", + "title": "Velocyto to h5mu", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input_loom\nPath to the input loom file.\nfile, required, example: \"input.loom\"\n\n\n--input_h5mu\nIf a MuData file is provided,\nfile, example: \"input.h5mu\"\n\n\n--modality\nThe name of the modality to operate on.\nstring, default: \"rna_velocity\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nPath to the output MuData file.\nfile, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--layer_spliced\nOutput layer for the spliced reads.\nstring, default: \"velo_spliced\"\n\n\n--layer_unspliced\nOutput layer for the unspliced reads.\nstring, default: \"velo_unspliced\"\n\n\n--layer_ambiguous\nOutput layer for the ambiguous reads.\nstring, default: \"velo_ambiguous\"" + }, + { + "objectID": "components/modules/convert/velocyto_to_h5mu.html#authors", + "href": "components/modules/convert/velocyto_to_h5mu.html#authors", + "title": "Velocyto to h5mu", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer, author)\nRobrecht Cannoodt (author)\nAngela Oliveira Pisco (contributor)" + }, + { + "objectID": "components/modules/convert/from_bdrhap_to_h5mu.html", + "href": "components/modules/convert/from_bdrhap_to_h5mu.html", + "title": "From bdrhap to h5mu", + "section": "", + "text": "ID: from_bdrhap_to_h5mu\nNamespace: convert\n\n\n\nSource" + }, + { + "objectID": "components/modules/convert/from_bdrhap_to_h5mu.html#example-commands", + "href": "components/modules/convert/from_bdrhap_to_h5mu.html#example-commands", + "title": "From bdrhap to h5mu", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/convert/from_bdrhap_to_h5mu/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"my_id\"\ninput: # please fill in - example: \"input_dir/\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/convert/from_bdrhap_to_h5mu/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/convert/from_bdrhap_to_h5mu.html#argument-groups", + "href": "components/modules/convert/from_bdrhap_to_h5mu.html#argument-groups", + "title": "From bdrhap to h5mu", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nA sample ID.\nstring, required, example: \"my_id\"\n\n\n--input\nThe output of a BD Rhapsody workflow.\nfile, required, example: \"input_dir\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput h5mu file.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\n\nstring, example: \"gzip\"" + }, + { + "objectID": "components/modules/convert/from_bdrhap_to_h5mu.html#authors", + "href": "components/modules/convert/from_bdrhap_to_h5mu.html#authors", + "title": "From bdrhap to h5mu", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (maintainer)" + }, + { + "objectID": "components/modules/correction/cellbender_remove_background_v0_2.html", + "href": "components/modules/correction/cellbender_remove_background_v0_2.html", + "title": "Cellbender remove background v0 2", + "section": "", + "text": "ID: cellbender_remove_background_v0_2\nNamespace: correction\n\n\n\nSource\nThis module removes counts due to ambient RNA molecules and random barcode swapping from (raw) UMI-based scRNA-seq count matrices. At the moment, only the count matrices produced by the CellRanger count pipeline is supported. Support for additional tools and protocols will be added in the future. A quick start tutorial can be found here.\nFleming et al. 2022, bioRxiv." + }, + { + "objectID": "components/modules/correction/cellbender_remove_background_v0_2.html#example-commands", + "href": "components/modules/correction/cellbender_remove_background_v0_2.html#example-commands", + "title": "Cellbender remove background v0 2", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/correction/cellbender_remove_background_v0_2/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nlayer_output: \"corrected\"\nobs_latent_rt_efficiency: \"latent_rt_efficiency\"\nobs_latent_cell_probability: \"latent_cell_probability\"\nobs_latent_scale: \"latent_scale\"\nvar_ambient_expression: \"ambient_expression\"\nobsm_latent_gene_encoding: \"cellbender_latent_gene_encoding\"\n\n# Arguments\n# expected_cells: 1000\n# total_droplets_included: 25000\nexpected_cells_from_qc: true\nmodel: \"full\"\nepochs: 150\nlow_count_threshold: 15\nz_dim: 100\nz_layers: [500]\ntraining_fraction: 0.9\nempty_drop_training_fraction: 0.5\nfpr: [0.01]\nexclude_antibody_capture: false\n# learning_rate: 1.0E-4\ncuda: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/correction/cellbender_remove_background_v0_2/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/correction/cellbender_remove_background_v0_2.html#argument-groups", + "href": "components/modules/correction/cellbender_remove_background_v0_2.html#argument-groups", + "title": "Cellbender remove background v0 2", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file.\nfile, required, example: \"input.h5mu\"\n\n\n--modality\nList of modalities to process.\nstring, default: \"rna\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nFull count matrix as an h5mu file, with background RNA removed. This file contains all the original droplet barcodes.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\n\nstring, example: \"gzip\"\n\n\n--layer_output\nOutput layer\nstring, default: \"corrected\"\n\n\n--obs_latent_rt_efficiency\n\nstring, default: \"latent_rt_efficiency\"\n\n\n--obs_latent_cell_probability\n\nstring, default: \"latent_cell_probability\"\n\n\n--obs_latent_scale\n\nstring, default: \"latent_scale\"\n\n\n--var_ambient_expression\n\nstring, default: \"ambient_expression\"\n\n\n--obsm_latent_gene_encoding\n\nstring, default: \"cellbender_latent_gene_encoding\"\n\n\n\n\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--expected_cells\nNumber of cells expected in the dataset (a rough estimate within a factor of 2 is sufficient).\ninteger, example: 1000\n\n\n--total_droplets_included\nThe number of droplets from the rank-ordered UMI plot that will be analyzed. The largest ‘total_droplets’ droplets will have their cell probabilities inferred as an output.\ninteger, example: 25000\n\n\n--expected_cells_from_qc\nWill use the Cell Ranger QC to determine the estimated number of cells\nboolean, default: TRUE\n\n\n--model\nWhich model is being used for count data. ‘simple’ does not model either ambient RNA or random barcode swapping (for debugging purposes – not recommended). ‘ambient’ assumes background RNA is incorporated into droplets. ‘swapping’ assumes background RNA comes from random barcode swapping. ‘full’ uses a combined ambient and swapping model.\nstring, default: \"full\"\n\n\n--epochs\nNumber of epochs to train.\ninteger, default: 150\n\n\n--low_count_threshold\nDroplets with UMI counts below this number are completely excluded from the analysis. This can help identify the correct prior for empty droplet counts in the rare case where empty counts are extremely high (over 200).\ninteger, default: 15\n\n\n--z_dim\nDimension of latent variable z.\ninteger, default: 100\n\n\n--z_layers\nDimension of hidden layers in the encoder for z.\ninteger, default: 500\n\n\n--training_fraction\nTraining detail: the fraction of the data used for training. The rest is never seen by the inference algorithm. Speeds up learning.\ndouble, default: 0.9\n\n\n--empty_drop_training_fraction\nTraining detail: the fraction of the training data each epoch that is drawn (randomly sampled) from surely empty droplets.\ndouble, default: 0.5\n\n\n--fpr\nTarget false positive rate in (0, 1). A false positive is a true signal count that is erroneously removed. More background removal is accompanied by more signal removal at high values of FPR. You can specify multiple values, which will create multiple output files.\ndouble, default: 0.01\n\n\n--exclude_antibody_capture\nIncluding the flag –exclude-antibody-capture will cause remove-background to operate on gene counts only, ignoring other features.\nboolean_true\n\n\n--learning_rate\nTraining detail: lower learning rate for inference. A OneCycle learning rate schedule is used, where the upper learning rate is ten times this value. (For this value, probably do not exceed 1e-3).\ndouble, example: 1e-04\n\n\n--cuda\nIncluding the flag –cuda will run the inference on a GPU.\nboolean_true" + }, + { + "objectID": "components/modules/filter/remove_modality.html", + "href": "components/modules/filter/remove_modality.html", + "title": "Remove modality", + "section": "", + "text": "ID: remove_modality\nNamespace: filter\n\n\n\nSource" + }, + { + "objectID": "components/modules/filter/remove_modality.html#example-commands", + "href": "components/modules/filter/remove_modality.html#example-commands", + "title": "Remove modality", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/filter/remove_modality/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: # please fill in - example: [\"foo\"]\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/filter/remove_modality/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/filter/remove_modality.html#argument-group", + "href": "components/modules/filter/remove_modality.html#argument-group", + "title": "Remove modality", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, required\n\n\n--output\nOutput h5mu file.\nfile, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"" + }, + { + "objectID": "components/modules/filter/remove_modality.html#authors", + "href": "components/modules/filter/remove_modality.html#authors", + "title": "Remove modality", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/filter/filter_with_scrublet.html", + "href": "components/modules/filter/filter_with_scrublet.html", + "title": "Filter with scrublet", + "section": "", + "text": "ID: filter_with_scrublet\nNamespace: filter\n\n\n\nSource\nThe method tests for potential doublets by using the expression profiles of cells to generate synthetic potential doubles which are tested against cells. The method returns a “doublet score” on which it calls for potential doublets.\nFor the source code please visit https://github.com/AllonKleinLab/scrublet.\nFor 10x we expect the doublet rates to be: Multiplet Rate (%) - # of Cells Loaded - # of Cells Recovered ~0.4% ~800 ~500 ~0.8% ~1,600 ~1,000 ~1.6% ~3,200 ~2,000 ~2.3% ~4,800 ~3,000 ~3.1% ~6,400 ~4,000 ~3.9% ~8,000 ~5,000 ~4.6% ~9,600 ~6,000 ~5.4% ~11,200 ~7,000 ~6.1% ~12,800 ~8,000 ~6.9% ~14,400 ~9,000 ~7.6% ~16,000 ~10,000" + }, + { + "objectID": "components/modules/filter/filter_with_scrublet.html#example-commands", + "href": "components/modules/filter/filter_with_scrublet.html#example-commands", + "title": "Filter with scrublet", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/filter/filter_with_scrublet/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nobs_name_filter: \"filter_with_scrublet\"\ndo_subset: false\nobs_name_doublet_score: \"scrublet_doublet_score\"\nmin_counts: 2\nmin_cells: 3\nmin_gene_variablity_percent: 85\nnum_pca_components: 30\ndistance_metric: \"euclidean\"\nallow_automatic_threshold_detection_fail: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/filter/filter_with_scrublet/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/filter/filter_with_scrublet.html#argument-group", + "href": "components/modules/filter/filter_with_scrublet.html#argument-group", + "title": "Filter with scrublet", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--output\nOutput h5mu file.\nfile, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--obs_name_filter\nIn which .obs slot to store a boolean array corresponding to which observations should be filtered out.\nstring, default: \"filter_with_scrublet\"\n\n\n--do_subset\nWhether to subset before storing the output.\nboolean_true\n\n\n--obs_name_doublet_score\nName of the doublet scores column in the obs slot of the returned object.\nstring, default: \"scrublet_doublet_score\"\n\n\n--min_counts\nThe number of minimal UMI counts per cell that have to be present for initial cell detection.\ninteger, default: 2\n\n\n--min_cells\nThe number of cells in which UMIs for a gene were detected.\ninteger, default: 3\n\n\n--min_gene_variablity_percent\nUsed for gene filtering prior to PCA. Keep the most highly variable genes (in the top min_gene_variability_pctl percentile), as measured by the v-statistic [Klein et al., Cell 2015].\ndouble, default: 85\n\n\n--num_pca_components\nNumber of principal components to use during PCA dimensionality reduction.\ninteger, default: 30\n\n\n--distance_metric\nThe distance metric used for computing similarities.\nstring, default: \"euclidean\"\n\n\n--allow_automatic_threshold_detection_fail\nWhen scrublet fails to automatically determine the double score threshold, allow the component to continue and set the output columns to NA.\nboolean_true" + }, + { + "objectID": "components/modules/filter/filter_with_scrublet.html#authors", + "href": "components/modules/filter/filter_with_scrublet.html#authors", + "title": "Filter with scrublet", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (contributor)\nRobrecht Cannoodt (maintainer, contributor)" + }, + { + "objectID": "components/modules/filter/filter_with_counts.html", + "href": "components/modules/filter/filter_with_counts.html", + "title": "Filter with counts", + "section": "", + "text": "ID: filter_with_counts\nNamespace: filter\n\n\n\nSource\nThis is based on both the UMI counts, the gene counts and the mitochondrial genes (genes starting with mt/MT)" + }, + { + "objectID": "components/modules/filter/filter_with_counts.html#example-commands", + "href": "components/modules/filter/filter_with_counts.html#example-commands", + "title": "Filter with counts", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/filter/filter_with_counts/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n# layer: \"raw_counts\"\n# var_gene_names: \"gene_symbol\"\nmitochondrial_gene_regex: \"^[mM][tT]-\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\ndo_subset: false\nobs_name_filter: \"filter_with_counts\"\nvar_name_filter: \"filter_with_counts\"\n# var_name_mitochondrial_genes: \"foo\"\n\n# Arguments\n# min_counts: 200\n# max_counts: 5000000\n# min_genes_per_cell: 200\n# max_genes_per_cell: 1500000\n# min_cells_per_gene: 3\n# min_fraction_mito: 0\n# max_fraction_mito: 0.2\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/filter/filter_with_counts/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/filter/filter_with_counts.html#argument-groups", + "href": "components/modules/filter/filter_with_counts.html#argument-groups", + "title": "Filter with counts", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--layer\n\nstring, example: \"raw_counts\"\n\n\n--var_gene_names\n.var column name to be used to detect mitochondrial genes instead of .var_names (default if not set). Gene names matching with the regex value from –mitochondrial_gene_regex will be identified as a mitochondrial gene.\nstring, example: \"gene_symbol\"\n\n\n--mitochondrial_gene_regex\nRegex string that identifies mitochondrial genes from –var_gene_names. By default will detect human and mouse mitochondrial genes from a gene symbol.\nstring, default: \"^[mM][tT]-\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput h5mu file.\nfile, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--do_subset\nWhether to subset before storing the output.\nboolean_true\n\n\n--obs_name_filter\nIn which .obs slot to store a boolean array corresponding to which observations should be removed.\nstring, default: \"filter_with_counts\"\n\n\n--var_name_filter\nIn which .var slot to store a boolean array corresponding to which variables should be removed.\nstring, default: \"filter_with_counts\"\n\n\n--var_name_mitochondrial_genes\nIn which .var slot to store a boolean array corresponding the mitochondrial genes. Will only be used if –min_fraction_mito or –max_fraction_mito are specified.\nstring\n\n\n\n\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--min_counts\nMinimum number of counts captured per cell.\ninteger, example: 200\n\n\n--max_counts\nMaximum number of counts captured per cell.\ninteger, example: 5000000\n\n\n--min_genes_per_cell\nMinimum of non-zero values per cell.\ninteger, example: 200\n\n\n--max_genes_per_cell\nMaximum of non-zero values per cell.\ninteger, example: 1500000\n\n\n--min_cells_per_gene\nMinimum of non-zero values per gene.\ninteger, example: 3\n\n\n--min_fraction_mito\nMinimum fraction of UMIs that are mitochondrial.\ndouble, example: 0\n\n\n--max_fraction_mito\nMaximum fraction of UMIs that are mitochondrial.\ndouble, example: 0.2" + }, + { + "objectID": "components/modules/filter/filter_with_counts.html#authors", + "href": "components/modules/filter/filter_with_counts.html#authors", + "title": "Filter with counts", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (author)\nRobrecht Cannoodt (maintainer, author)" + }, + { + "objectID": "components/modules/dimred/pca.html", + "href": "components/modules/dimred/pca.html", + "title": "Pca", + "section": "", + "text": "ID: pca\nNamespace: dimred\n\n\n\nSource\nUses the implementation of scikit-learn [Pedregosa11]" + }, + { + "objectID": "components/modules/dimred/pca.html#example-commands", + "href": "components/modules/dimred/pca.html#example-commands", + "title": "Pca", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/dimred/pca/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n# layer: \"foo\"\n# var_input: \"filter_with_hvg\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nobsm_output: \"X_pca\"\nvarm_output: \"pca_loadings\"\nuns_output: \"pca_variance\"\n# num_components: 25\noverwrite: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/dimred/pca/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/dimred/pca.html#argument-group", + "href": "components/modules/dimred/pca.html#argument-group", + "title": "Pca", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--layer\nUse specified layer for expression values instead of the .X object from the modality.\nstring\n\n\n--var_input\nColumn name in .var matrix that will be used to select which genes to run the PCA on.\nstring, example: \"filter_with_hvg\"\n\n\n--output\nOutput h5mu file.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--obsm_output\nIn which .obsm slot to store the resulting embedding.\nstring, default: \"X_pca\"\n\n\n--varm_output\nIn which .varm slot to store the resulting loadings matrix.\nstring, default: \"pca_loadings\"\n\n\n--uns_output\nIn which .uns slot to store the resulting variance objects.\nstring, default: \"pca_variance\"\n\n\n--num_components\nNumber of principal components to compute. Defaults to 50, or 1 - minimum dimension size of selected representation.\ninteger, example: 25\n\n\n--overwrite\nAllow overwriting .obsm, .varm and .uns slots.\nboolean_true" + }, + { + "objectID": "components/modules/dimred/pca.html#authors", + "href": "components/modules/dimred/pca.html#authors", + "title": "Pca", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (maintainer)" + }, + { + "objectID": "components/modules/reference/make_reference.html", + "href": "components/modules/reference/make_reference.html", + "title": "Make reference", + "section": "", + "text": "ID: make_reference\nNamespace: reference\n\n\n\nSource\nExample input files are: - genome_fasta: https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/GRCh38.primary_assembly.genome.fa.gz - transcriptome_gtf: https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/gencode.v41.annotation.gtf.gz - ercc: https://assets.thermofisher.com/TFS-Assets/LSG/manuals/ERCC92.zip" + }, + { + "objectID": "components/modules/reference/make_reference.html#example-commands", + "href": "components/modules/reference/make_reference.html#example-commands", + "title": "Make reference", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/reference/make_reference/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ngenome_fasta: # please fill in - example: \"genome_fasta.fa.gz\"\ntranscriptome_gtf: # please fill in - example: \"transcriptome.gtf.gz\"\n# ercc: \"ercc.zip\"\n# subset_regex: \"(ERCC-00002|chr1)\"\n# output_fasta: \"$id.$key.output_fasta.gz\"\n# output_gtf: \"$id.$key.output_gtf.gz\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/reference/make_reference/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/reference/make_reference.html#argument-group", + "href": "components/modules/reference/make_reference.html#argument-group", + "title": "Make reference", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--genome_fasta\nReference genome fasta. Example:\nfile, required, example: \"genome_fasta.fa.gz\"\n\n\n--transcriptome_gtf\nReference transcriptome annotation.\nfile, required, example: \"transcriptome.gtf.gz\"\n\n\n--ercc\nERCC sequence and annotation file.\nfile, example: \"ercc.zip\"\n\n\n--subset_regex\nWill subset the reference chromosomes using the given regex.\nstring, example: \"(ERCC-00002|chr1)\"\n\n\n--output_fasta\nOutput genome sequence fasta.\nfile, required, example: \"genome_sequence.fa.gz\"\n\n\n--output_gtf\nOutput transcriptome annotation gtf.\nfile, required, example: \"transcriptome_annotation.gtf.gz\"" + }, + { + "objectID": "components/modules/reference/make_reference.html#authors", + "href": "components/modules/reference/make_reference.html#authors", + "title": "Make reference", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nRobrecht Cannoodt (author, maintainer)" + }, + { + "objectID": "components/modules/reference/build_cellranger_reference.html", + "href": "components/modules/reference/build_cellranger_reference.html", + "title": "Build cellranger reference", + "section": "", + "text": "ID: build_cellranger_reference\nNamespace: reference\n\n\n\nSource\nCreates a new folder named after the genome." + }, + { + "objectID": "components/modules/reference/build_cellranger_reference.html#example-commands", + "href": "components/modules/reference/build_cellranger_reference.html#example-commands", + "title": "Build cellranger reference", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/reference/build_cellranger_reference/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ngenome_fasta: # please fill in - example: \"genome_sequence.fa.gz\"\ntranscriptome_gtf: # please fill in - example: \"transcriptome_annotation.gtf.gz\"\n# output: \"$id.$key.output.output\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/reference/build_cellranger_reference/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/reference/build_cellranger_reference.html#argument-group", + "href": "components/modules/reference/build_cellranger_reference.html#argument-group", + "title": "Build cellranger reference", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--genome_fasta\nReference genome fasta.\nfile, required, example: \"genome_sequence.fa.gz\"\n\n\n--transcriptome_gtf\nReference transcriptome annotation.\nfile, required, example: \"transcriptome_annotation.gtf.gz\"\n\n\n--output\nOutput folder\nfile, required, example: \"cellranger_reference\"" + }, + { + "objectID": "components/modules/reference/build_cellranger_reference.html#authors", + "href": "components/modules/reference/build_cellranger_reference.html#authors", + "title": "Build cellranger reference", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nRobrecht Cannoodt (author, maintainer)" + }, + { + "objectID": "components/modules/integrate/scanorama.html", + "href": "components/modules/integrate/scanorama.html", + "title": "Scanorama", + "section": "", + "text": "ID: scanorama\nNamespace: integrate\n\n\n\nSource" + }, + { + "objectID": "components/modules/integrate/scanorama.html#example-commands", + "href": "components/modules/integrate/scanorama.html#example-commands", + "title": "Scanorama", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/integrate/scanorama/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"path/to/file\"\nmodality: \"rna\"\n# output: \"$id.$key.output.h5ad\"\n# output_compression: \"gzip\"\nobs_batch: \"batch\"\nobsm_input: \"X_pca\"\nobsm_output: \"X_scanorama\"\nknn: 20\nbatch_size: 5000\nsigma: 15\napprox: true\nalpha: 0.1\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/integrate/scanorama/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/integrate/scanorama.html#argument-group", + "href": "components/modules/integrate/scanorama.html#argument-group", + "title": "Scanorama", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--output\nOutput .h5mu file\nfile, required, default: \"output.h5ad\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--obs_batch\nColumn name discriminating between your batches.\nstring, default: \"batch\"\n\n\n--obsm_input\nBasis obsm slot to run scanorama on.\nstring, default: \"X_pca\"\n\n\n--obsm_output\nThe name of the field in adata.obsm where the integrated embeddings will be stored after running this function. Defaults to X_scanorama.\nstring, default: \"X_scanorama\"\n\n\n--knn\nNumber of nearest neighbors to use for matching.\ninteger, default: 20\n\n\n--batch_size\nThe batch size used in the alignment vector computation. Useful when integrating very large (>100k samples) datasets. Set to large value that runs within available memory.\ninteger, default: 5000\n\n\n--sigma\nCorrection smoothing parameter on Gaussian kernel.\ndouble, default: 15\n\n\n--approx\nUse approximate nearest neighbors with Python annoy; greatly speeds up matching runtime.\nboolean, default: TRUE\n\n\n--alpha\nAlignment score minimum cutoff\ndouble, default: 0.1" + }, + { + "objectID": "components/modules/integrate/scanorama.html#authors", + "href": "components/modules/integrate/scanorama.html#authors", + "title": "Scanorama", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (author)\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/integrate/scarches.html", + "href": "components/modules/integrate/scarches.html", + "title": "Scarches", + "section": "", + "text": "ID: scarches\nNamespace: integrate\n\n\n\nSource" + }, + { + "objectID": "components/modules/integrate/scarches.html#example-commands", + "href": "components/modules/integrate/scarches.html#example-commands", + "title": "Scarches", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/integrate/scarches/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput: # please fill in - example: \"path/to/file\"\nmodality: \"rna\"\nreference: # please fill in - example: \"path/to/file\"\ndataset_name: \"test_dataset\"\n\n# Outputs\n# output: \"$id.$key.output.output\"\n# output_compression: \"gzip\"\n# model_output: \"$id.$key.model_output.model_output\"\nobsm_output: \"X_integrated_scanvi\"\n\n# Early stopping arguments\n# early_stopping: true\nearly_stopping_monitor: \"elbo_validation\"\nearly_stopping_patience: 45\nearly_stopping_min_delta: 0.0\n\n# Learning parameters\nmax_epochs: # please fill in - example: 123\nreduce_lr_on_plateau: true\nlr_factor: 0.6\nlr_patience: 30\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/integrate/scarches/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/integrate/scarches.html#argument-groups", + "href": "components/modules/integrate/scarches.html#argument-groups", + "title": "Scarches", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file to use as a query\nfile, required\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--reference\nPath to the directory with reference model or a web link. For HLCA use https://zenodo.org/record/6337966/files/HLCA_reference_model.zip\nfile, required\n\n\n--dataset_name\nName of query dataset to use as a batch name. If not set, name of the input file is used\nstring, default: \"test_dataset\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput h5mu file.\nfile, required\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--model_output\nOutput directory for model\nfile, default: \"model\"\n\n\n--obsm_output\nIn which .obsm slot to store the resulting integrated embedding.\nstring, default: \"X_integrated_scanvi\"\n\n\n\n\n\nEarly stopping arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--early_stopping\nWhether to perform early stopping with respect to the validation set.\nboolean\n\n\n--early_stopping_monitor\nMetric logged during validation set epoch.\nstring, default: \"elbo_validation\"\n\n\n--early_stopping_patience\nNumber of validation epochs with no improvement after which training will be stopped.\ninteger, default: 45\n\n\n--early_stopping_min_delta\nMinimum change in the monitored quantity to qualify as an improvement, i.e. an absolute change of less than min_delta, will count as no improvement.\ndouble, default: 0\n\n\n\n\n\nLearning parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--max_epochs\nNumber of passes through the dataset, defaults to (20000 / number of cells) * 400 or 400; whichever is smallest.\ninteger, required\n\n\n--reduce_lr_on_plateau\nWhether to monitor validation loss and reduce learning rate when validation set lr_scheduler_metric plateaus.\nboolean, default: TRUE\n\n\n--lr_factor\nFactor to reduce learning rate.\ndouble, default: 0.6\n\n\n--lr_patience\nNumber of epochs with no improvement after which learning rate will be reduced.\ndouble, default: 30" + }, + { + "objectID": "components/modules/integrate/scarches.html#authors", + "href": "components/modules/integrate/scarches.html#authors", + "title": "Scarches", + "section": "Authors", + "text": "Authors\n\nVladimir Shitov" + }, + { + "objectID": "components/modules/integrate/harmonypy.html", + "href": "components/modules/integrate/harmonypy.html", + "title": "Harmonypy", + "section": "", + "text": "ID: harmonypy\nNamespace: integrate\n\n\n\nSource\nBased on an implementation in python from https://github.com/slowkow/harmonypy" + }, + { + "objectID": "components/modules/integrate/harmonypy.html#example-commands", + "href": "components/modules/integrate/harmonypy.html#example-commands", + "title": "Harmonypy", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/integrate/harmonypy/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"path/to/file\"\n# output: \"$id.$key.output.output\"\n# output_compression: \"gzip\"\nmodality: \"rna\"\nobsm_input: \"X_pca\"\nobsm_output: \"X_pca_integrated\"\ntheta: [2]\nobs_covariates: # please fill in - example: [\"batch\", \"sample\"]\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/integrate/harmonypy/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/integrate/harmonypy.html#argument-group", + "href": "components/modules/integrate/harmonypy.html#argument-group", + "title": "Harmonypy", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required\n\n\n--output\nOutput h5mu file.\nfile, required\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--obsm_input\nWhich .obsm slot to use as a starting PCA embedding.\nstring, default: \"X_pca\"\n\n\n--obsm_output\nIn which .obsm slot to store the resulting integrated embedding.\nstring, default: \"X_pca_integrated\"\n\n\n--theta\nDiversity clustering penalty parameter. Specify for each variable in group.by.vars. theta=0 does not encourage any diversity. Larger values of theta result in more diverse clusters.\ndouble, default: 2\n\n\n--obs_covariates\nThe .obs field(s) that define the covariate(s) to regress out.\nstring, required, example: \"batch\", example: \"sample\"" + }, + { + "objectID": "components/modules/integrate/harmonypy.html#authors", + "href": "components/modules/integrate/harmonypy.html#authors", + "title": "Harmonypy", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)\nRobrecht Cannoodt (contributor)" + }, + { + "objectID": "components/modules/mapping/multi_star_to_h5mu.html", + "href": "components/modules/mapping/multi_star_to_h5mu.html", + "title": "Multi star to h5mu", + "section": "", + "text": "ID: multi_star_to_h5mu\nNamespace: mapping\n\n\n\nSource" + }, + { + "objectID": "components/modules/mapping/multi_star_to_h5mu.html#example-commands", + "href": "components/modules/mapping/multi_star_to_h5mu.html#example-commands", + "title": "Multi star to h5mu", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/mapping/multi_star_to_h5mu/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"/path/to/foo\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/mapping/multi_star_to_h5mu/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/mapping/multi_star_to_h5mu.html#argument-group", + "href": "components/modules/mapping/multi_star_to_h5mu.html#argument-group", + "title": "Multi star to h5mu", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nThe directory created by multi_star\nfile, required, example: \"/path/to/foo\"\n\n\n--output\nOutput h5mu file.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"" + }, + { + "objectID": "components/modules/mapping/multi_star_to_h5mu.html#authors", + "href": "components/modules/mapping/multi_star_to_h5mu.html#authors", + "title": "Multi star to h5mu", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (author, maintainer)\nAngela Oliveira Pisco (author)" + }, + { + "objectID": "components/modules/mapping/multi_star.html", + "href": "components/modules/mapping/multi_star.html", + "title": "Multi star", + "section": "", + "text": "ID: multi_star\nNamespace: mapping\n\n\n\nSource" + }, + { + "objectID": "components/modules/mapping/multi_star.html#example-commands", + "href": "components/modules/mapping/multi_star.html#example-commands", + "title": "Multi star", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/mapping/multi_star/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Input/Output\ninput_id: # please fill in - example: [\"mysample\", \"mysample\"]\ninput_r1: # please fill in - example: [\"mysample_S1_L001_R1_001.fastq.gz\", \"mysample_S1_L002_R1_001.fastq.gz\"]\n# input_r2: [\"mysample_S1_L001_R2_001.fastq.gz\", \"mysample_S1_L002_R2_001.fastq.gz\"]\nreference_index: # please fill in - example: \"/path/to/reference\"\nreference_gtf: # please fill in - example: \"genes.gtf\"\n# output: \"$id.$key.output.output\"\n\n# Processing arguments\nrun_htseq_count: true\nrun_multiqc: true\nmin_success_rate: 0.5\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/mapping/multi_star/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/mapping/multi_star.html#argument-groups", + "href": "components/modules/mapping/multi_star.html#argument-groups", + "title": "Multi star", + "section": "Argument groups", + "text": "Argument groups\n\nInput/Output\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input_id\nThe ID of the sample being processed. This vector should have the same length as the --input_r1 argument.\nstring, required, example: \"mysample\", example: \"mysample\"\n\n\n--input_r1\nPaths to the sequences to be mapped. If using Illumina paired-end reads, only the R1 files should be passed.\nfile, required, example: \"mysample_S1_L001_R1_001.fastq.gz\", example: \"mysample_S1_L002_R1_001.fastq.gz\"\n\n\n--input_r2\nPaths to the sequences to be mapped. If using Illumina paired-end reads, only the R2 files should be passed.\nfile, example: \"mysample_S1_L001_R2_001.fastq.gz\", example: \"mysample_S1_L002_R2_001.fastq.gz\"\n\n\n--reference_index\nPath to the reference built by star_build_reference. Corresponds to the –genomeDir argument in the STAR command.\nfile, required, example: \"/path/to/reference\"\n\n\n--reference_gtf\nPath to the gtf reference file.\nfile, required, example: \"genes.gtf\"\n\n\n--output\nPath to output directory. Corresponds to the –outFileNamePrefix argument in the STAR command.\nfile, required, example: \"/path/to/foo\"\n\n\n\n\n\nProcessing arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--run_htseq_count\nWhether or not to also run htseq-count after STAR.\nboolean, default: TRUE\n\n\n--run_multiqc\nWhether or not to also run MultiQC at the end.\nboolean, default: TRUE\n\n\n--min_success_rate\nFail when the success rate is below this threshold.\ndouble, default: 0.5\n\n\n\n\n\nRun Parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--runRNGseed\nrandom number generator seed.\ninteger, example: 777\n\n\n\n\n\nGenome Parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--genomeFastaFiles\npath(s) to the fasta files with the genome sequences, separated by spaces. These files should be plain text FASTA files, they cannot be zipped. Required for the genome generation (–runMode genomeGenerate). Can also be used in the mapping (–runMode alignReads) to add extra (new) sequences to the genome (e.g. spike-ins).\nfile\n\n\n\n\n\nSplice Junctions Database\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--sjdbFileChrStartEnd\npath to the files with genomic coordinates (chr start end strand) for the splice junction introns. Multiple files can be supplied and will be concatenated.\nstring\n\n\n--sjdbGTFfile\npath to the GTF file with annotations\nfile\n\n\n--sjdbGTFchrPrefix\nprefix for chromosome names in a GTF file (e.g. ‘chr’ for using ENSMEBL annotations with UCSC genomes)\nstring\n\n\n--sjdbGTFfeatureExon\nfeature type in GTF file to be used as exons for building transcripts\nstring, example: \"exon\"\n\n\n--sjdbGTFtagExonParentTranscript\nGTF attribute name for parent transcript ID (default “transcript_id” works for GTF files)\nstring, example: \"transcript_id\"\n\n\n--sjdbGTFtagExonParentGene\nGTF attribute name for parent gene ID (default “gene_id” works for GTF files)\nstring, example: \"gene_id\"\n\n\n--sjdbGTFtagExonParentGeneName\nGTF attribute name for parent gene name\nstring, example: \"gene_name\"\n\n\n--sjdbGTFtagExonParentGeneType\nGTF attribute name for parent gene type\nstring, example: \"gene_type\", example: \"gene_biotype\"\n\n\n--sjdbOverhang\nlength of the donor/acceptor sequence on each side of the junctions, ideally = (mate_length - 1)\ninteger, example: 100\n\n\n--sjdbScore\nextra alignment score for alignments that cross database junctions\ninteger, example: 2\n\n\n--sjdbInsertSave\nwhich files to save when sjdb junctions are inserted on the fly at the mapping step - Basic … only small junction / transcript files - All … all files including big Genome, SA and SAindex - this will create a complete genome directory\nstring, example: \"Basic\"\n\n\n\n\n\nVariation parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--varVCFfile\npath to the VCF file that contains variation data. The 10th column should contain the genotype information, e.g. 0/1\nstring\n\n\n\n\n\nRead Parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--readFilesType\nformat of input read files - Fastx … FASTA or FASTQ - SAM SE … SAM or BAM single-end reads; for BAM use –readFilesCommand samtools view - SAM PE … SAM or BAM paired-end reads; for BAM use –readFilesCommand samtools view\nstring, example: \"Fastx\"\n\n\n--readFilesSAMattrKeep\nfor –readFilesType SAM SE/PE, which SAM tags to keep in the output BAM, e.g.: –readFilesSAMtagsKeep RG PL - All … keep all tags - None … do not keep any tags\nstring, example: \"All\"\n\n\n--readFilesManifest\npath to the “manifest” file with the names of read files. The manifest file should contain 3 tab-separated columns: paired-end reads: read1_file_name \\(tab\\) read2_file_name \\(tab\\) read_group_line. single-end reads: read1_file_name \\(tab\\) - \\(tab\\) read_group_line. Spaces, but not tabs are allowed in file names. If read_group_line does not start with ID:, it can only contain one ID field, and ID: will be added to it. If read_group_line starts with ID:, it can contain several fields separated by \\(tab\\), and all fields will be be copied verbatim into SAM @RG header line.\nfile\n\n\n--readFilesPrefix\nprefix for the read files names, i.e. it will be added in front of the strings in –readFilesIn\nstring\n\n\n--readFilesCommand\ncommand line to execute for each of the input file. This command should generate FASTA or FASTQ text and send it to stdout For example: zcat - to uncompress .gz files, bzcat - to uncompress .bz2 files, etc.\nstring\n\n\n--readMapNumber\nnumber of reads to map from the beginning of the file -1: map all reads\ninteger, example: -1\n\n\n--readMatesLengthsIn\nEqual/NotEqual - lengths of names,sequences,qualities for both mates are the same / not the same. NotEqual is safe in all situations.\nstring, example: \"NotEqual\"\n\n\n--readNameSeparator\ncharacter(s) separating the part of the read names that will be trimmed in output (read name after space is always trimmed)\nstring, example: \"/\"\n\n\n--readQualityScoreBase\nnumber to be subtracted from the ASCII code to get Phred quality score\ninteger, example: 33\n\n\n\n\n\nRead Clipping\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--clipAdapterType\nadapter clipping type - Hamming … adapter clipping based on Hamming distance, with the number of mismatches controlled by –clip5pAdapterMMp - CellRanger4 … 5p and 3p adapter clipping similar to CellRanger4. Utilizes Opal package by Martin Sosic: https://github.com/Martinsos/opal - None … no adapter clipping, all other clip* parameters are disregarded\nstring, example: \"Hamming\"\n\n\n--clip3pNbases\nnumber(s) of bases to clip from 3p of each mate. If one value is given, it will be assumed the same for both mates.\ninteger, example: 0\n\n\n--clip3pAdapterSeq\nadapter sequences to clip from 3p of each mate. If one value is given, it will be assumed the same for both mates. - polyA … polyA sequence with the length equal to read length\nstring\n\n\n--clip3pAdapterMMp\nmax proportion of mismatches for 3p adapter clipping for each mate. If one value is given, it will be assumed the same for both mates.\ndouble, example: 0.1\n\n\n--clip3pAfterAdapterNbases\nnumber of bases to clip from 3p of each mate after the adapter clipping. If one value is given, it will be assumed the same for both mates.\ninteger, example: 0\n\n\n--clip5pNbases\nnumber(s) of bases to clip from 5p of each mate. If one value is given, it will be assumed the same for both mates.\ninteger, example: 0\n\n\n\n\n\nLimits\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--limitGenomeGenerateRAM\nmaximum available RAM (bytes) for genome generation\nlong, example: NA\n\n\n--limitIObufferSize\nmax available buffers size (bytes) for input/output, per thread\nlong, example: 30000000, example: 50000000\n\n\n--limitOutSAMoneReadBytes\nmax size of the SAM record (bytes) for one read. Recommended value: >(2(LengthMate1+LengthMate2+100)outFilterMultimapNmax\nlong, example: 100000\n\n\n--limitOutSJoneRead\nmax number of junctions for one read (including all multi-mappers)\ninteger, example: 1000\n\n\n--limitOutSJcollapsed\nmax number of collapsed junctions\ninteger, example: 1000000\n\n\n--limitBAMsortRAM\nmaximum available RAM (bytes) for sorting BAM. If =0, it will be set to the genome index size. 0 value can only be used with –genomeLoad NoSharedMemory option.\nlong, example: 0\n\n\n--limitSjdbInsertNsj\nmaximum number of junctions to be inserted to the genome on the fly at the mapping stage, including those from annotations and those detected in the 1st step of the 2-pass run\ninteger, example: 1000000\n\n\n--limitNreadsSoft\nsoft limit on the number of reads\ninteger, example: -1\n\n\n\n\n\nOutput: general\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outTmpKeep\nwhether to keep the temporary files after STAR runs is finished - None … remove all temporary files - All … keep all files\nstring\n\n\n--outStd\nwhich output will be directed to stdout (standard out) - Log … log messages - SAM … alignments in SAM format (which normally are output to Aligned.out.sam file), normal standard output will go into Log.std.out - BAM_Unsorted … alignments in BAM format, unsorted. Requires –outSAMtype BAM Unsorted - BAM_SortedByCoordinate … alignments in BAM format, sorted by coordinate. Requires –outSAMtype BAM SortedByCoordinate - BAM_Quant … alignments to transcriptome in BAM format, unsorted. Requires –quantMode TranscriptomeSAM\nstring, example: \"Log\"\n\n\n--outReadsUnmapped\noutput of unmapped and partially mapped (i.e. mapped only one mate of a paired end read) reads in separate file(s). - None … no output - Fastx … output in separate fasta/fastq files, Unmapped.out.mate1/2\nstring\n\n\n--outQSconversionAdd\nadd this number to the quality score (e.g. to convert from Illumina to Sanger, use -31)\ninteger, example: 0\n\n\n--outMultimapperOrder\norder of multimapping alignments in the output files - Old_2.4 … quasi-random order used before 2.5.0 - Random … random order of alignments for each multi-mapper. Read mates (pairs) are always adjacent, all alignment for each read stay together. This option will become default in the future releases.\nstring, example: \"Old_2.4\"\n\n\n\n\n\nOutput: SAM and BAM\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outSAMmode\nmode of SAM output - None … no SAM output - Full … full SAM output - NoQS … full SAM but without quality scores\nstring, example: \"Full\"\n\n\n--outSAMstrandField\nCufflinks-like strand field flag - None … not used - intronMotif … strand derived from the intron motif. This option changes the output alignments: reads with inconsistent and/or non-canonical introns are filtered out.\nstring\n\n\n--outSAMattributes\na string of desired SAM attributes, in the order desired for the output SAM. Tags can be listed in any combination/order. Presets: - None … no attributes - Standard … NH HI AS nM - All … NH HI AS nM NM MD jM jI MC ch Alignment: - NH … number of loci the reads maps to: =1 for unique mappers, >1 for multimappers. Standard SAM tag. - HI … multiple alignment index, starts with –outSAMattrIHstart (=1 by default). Standard SAM tag. - AS … local alignment score, +1/-1 for matches/mismateches, score* penalties for indels and gaps. For PE reads, total score for two mates. Stadnard SAM tag. - nM … number of mismatches. For PE reads, sum over two mates. - NM … edit distance to the reference (number of mismatched + inserted + deleted bases) for each mate. Standard SAM tag. - MD … string encoding mismatched and deleted reference bases (see standard SAM specifications). Standard SAM tag. - jM … intron motifs for all junctions (i.e. N in CIGAR): 0: non-canonical; 1: GT/AG, 2: CT/AC, 3: GC/AG, 4: CT/GC, 5: AT/AC, 6: GT/AT. If splice junctions database is used, and a junction is annotated, 20 is added to its motif value. - jI … start and end of introns for all junctions (1-based). - XS … alignment strand according to –outSAMstrandField. - MC … mate’s CIGAR string. Standard SAM tag. - ch … marks all segment of all chimeric alingments for –chimOutType WithinBAM output. - cN … number of bases clipped from the read ends: 5’ and 3’ Variation: - vA … variant allele - vG … genomic coordinate of the variant overlapped by the read. - vW … 1 - alignment passes WASP filtering; 2,3,4,5,6,7 - alignment does not pass WASP filtering. Requires –waspOutputMode SAMtag. STARsolo: - CR CY UR UY … sequences and quality scores of cell barcodes and UMIs for the solo* demultiplexing. - GX GN … gene ID and gene name for unique-gene reads. - gx gn … gene IDs and gene names for unique- and multi-gene reads. - CB UB … error-corrected cell barcodes and UMIs for solo* demultiplexing. Requires –outSAMtype BAM SortedByCoordinate. - sM … assessment of CB and UMI. - sS … sequence of the entire barcode (CB,UMI,adapter). - sQ … quality of the entire barcode. ***Unsupported/undocumented: - ha … haplotype (1/2) when mapping to the diploid genome. Requires genome generated with –genomeTransformType Diploid . - rB … alignment block read/genomic coordinates. - vR … read coordinate of the variant.\nstring, example: \"Standard\"\n\n\n--outSAMattrIHstart\nstart value for the IH attribute. 0 may be required by some downstream software, such as Cufflinks or StringTie.\ninteger, example: 1\n\n\n--outSAMunmapped\noutput of unmapped reads in the SAM format 1st word: - None … no output - Within … output unmapped reads within the main SAM file (i.e. Aligned.out.sam) 2nd word: - KeepPairs … record unmapped mate for each alignment, and, in case of unsorted output, keep it adjacent to its mapped mate. Only affects multi-mapping reads.\nstring\n\n\n--outSAMorder\ntype of sorting for the SAM output Paired: one mate after the other for all paired alignments PairedKeepInputOrder: one mate after the other for all paired alignments, the order is kept the same as in the input FASTQ files\nstring, example: \"Paired\"\n\n\n--outSAMprimaryFlag\nwhich alignments are considered primary - all others will be marked with 0x100 bit in the FLAG - OneBestScore … only one alignment with the best score is primary - AllBestScore … all alignments with the best score are primary\nstring, example: \"OneBestScore\"\n\n\n--outSAMreadID\nread ID record type - Standard … first word (until space) from the FASTx read ID line, removing /1,/2 from the end - Number … read number (index) in the FASTx file\nstring, example: \"Standard\"\n\n\n--outSAMmapqUnique\n0 to 255: the MAPQ value for unique mappers\ninteger, example: 255\n\n\n--outSAMflagOR\n0 to 65535: sam FLAG will be bitwise OR’d with this value, i.e. FLAG=FLAG | outSAMflagOR. This is applied after all flags have been set by STAR, and after outSAMflagAND. Can be used to set specific bits that are not set otherwise.\ninteger, example: 0\n\n\n--outSAMflagAND\n0 to 65535: sam FLAG will be bitwise AND’d with this value, i.e. FLAG=FLAG & outSAMflagOR. This is applied after all flags have been set by STAR, but before outSAMflagOR. Can be used to unset specific bits that are not set otherwise.\ninteger, example: 65535\n\n\n--outSAMattrRGline\nSAM/BAM read group line. The first word contains the read group identifier and must start with “ID:”, e.g. –outSAMattrRGline ID:xxx CN:yy “DS:z z z”. xxx will be added as RG tag to each output alignment. Any spaces in the tag values have to be double quoted. Comma separated RG lines correspons to different (comma separated) input files in –readFilesIn. Commas have to be surrounded by spaces, e.g. –outSAMattrRGline ID:xxx , ID:zzz “DS:z z” , ID:yyy DS:yyyy\nstring\n\n\n--outSAMheaderHD\n@HD (header) line of the SAM header\nstring\n\n\n--outSAMheaderPG\nextra @PG (software) line of the SAM header (in addition to STAR)\nstring\n\n\n--outSAMheaderCommentFile\npath to the file with @CO (comment) lines of the SAM header\nstring\n\n\n--outSAMfilter\nfilter the output into main SAM/BAM files - KeepOnlyAddedReferences … only keep the reads for which all alignments are to the extra reference sequences added with –genomeFastaFiles at the mapping stage. - KeepAllAddedReferences … keep all alignments to the extra reference sequences added with –genomeFastaFiles at the mapping stage.\nstring\n\n\n--outSAMmultNmax\nmax number of multiple alignments for a read that will be output to the SAM/BAM files. Note that if this value is not equal to -1, the top scoring alignment will be output first - -1 … all alignments (up to –outFilterMultimapNmax) will be output\ninteger, example: -1\n\n\n--outSAMtlen\ncalculation method for the TLEN field in the SAM/BAM files - 1 … leftmost base of the (+)strand mate to rightmost base of the (-)mate. (+)sign for the (+)strand mate - 2 … leftmost base of any mate to rightmost base of any mate. (+)sign for the mate with the leftmost base. This is different from 1 for overlapping mates with protruding ends\ninteger, example: 1\n\n\n--outBAMcompression\n-1 to 10 BAM compression level, -1=default compression (6?), 0=no compression, 10=maximum compression\ninteger, example: 1\n\n\n--outBAMsortingThreadN\n>=0: number of threads for BAM sorting. 0 will default to min(6,–runThreadN).\ninteger, example: 0\n\n\n--outBAMsortingBinsN\n>0: number of genome bins for coordinate-sorting\ninteger, example: 50\n\n\n\n\n\nBAM processing\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--bamRemoveDuplicatesType\nmark duplicates in the BAM file, for now only works with (i) sorted BAM fed with inputBAMfile, and (ii) for paired-end alignments only - - … no duplicate removal/marking - UniqueIdentical … mark all multimappers, and duplicate unique mappers. The coordinates, FLAG, CIGAR must be identical - UniqueIdenticalNotMulti … mark duplicate unique mappers but not multimappers.\nstring\n\n\n--bamRemoveDuplicatesMate2basesN\nnumber of bases from the 5’ of mate 2 to use in collapsing (e.g. for RAMPAGE)\ninteger, example: 0\n\n\n\n\n\nOutput Wiggle\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outWigType\ntype of signal output, e.g. “bedGraph” OR “bedGraph read1_5p”. Requires sorted BAM: –outSAMtype BAM SortedByCoordinate . 1st word: - None … no signal output - bedGraph … bedGraph format - wiggle … wiggle format 2nd word: - read1_5p … signal from only 5’ of the 1st read, useful for CAGE/RAMPAGE etc - read2 … signal from only 2nd read\nstring\n\n\n--outWigStrand\nstrandedness of wiggle/bedGraph output - Stranded … separate strands, str1 and str2 - Unstranded … collapsed strands\nstring, example: \"Stranded\"\n\n\n--outWigReferencesPrefix\nprefix matching reference names to include in the output wiggle file, e.g. “chr”, default “-” - include all references\nstring\n\n\n--outWigNorm\ntype of normalization for the signal - RPM … reads per million of mapped reads - None … no normalization, “raw” counts\nstring, example: \"RPM\"\n\n\n\n\n\nOutput Filtering\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outFilterType\ntype of filtering - Normal … standard filtering using only current alignment - BySJout … keep only those reads that contain junctions that passed filtering into SJ.out.tab\nstring, example: \"Normal\"\n\n\n--outFilterMultimapScoreRange\nthe score range below the maximum score for multimapping alignments\ninteger, example: 1\n\n\n--outFilterMultimapNmax\nmaximum number of loci the read is allowed to map to. Alignments (all of them) will be output only if the read maps to no more loci than this value. Otherwise no alignments will be output, and the read will be counted as “mapped to too many loci” in the Log.final.out .\ninteger, example: 10\n\n\n--outFilterMismatchNmax\nalignment will be output only if it has no more mismatches than this value.\ninteger, example: 10\n\n\n--outFilterMismatchNoverLmax\nalignment will be output only if its ratio of mismatches to mapped length is less than or equal to this value.\ndouble, example: 0.3\n\n\n--outFilterMismatchNoverReadLmax\nalignment will be output only if its ratio of mismatches to read length is less than or equal to this value.\ndouble, example: 1\n\n\n--outFilterScoreMin\nalignment will be output only if its score is higher than or equal to this value.\ninteger, example: 0\n\n\n--outFilterScoreMinOverLread\nsame as outFilterScoreMin, but normalized to read length (sum of mates’ lengths for paired-end reads)\ndouble, example: 0.66\n\n\n--outFilterMatchNmin\nalignment will be output only if the number of matched bases is higher than or equal to this value.\ninteger, example: 0\n\n\n--outFilterMatchNminOverLread\nsam as outFilterMatchNmin, but normalized to the read length (sum of mates’ lengths for paired-end reads).\ndouble, example: 0.66\n\n\n--outFilterIntronMotifs\nfilter alignment using their motifs - None … no filtering - RemoveNoncanonical … filter out alignments that contain non-canonical junctions - RemoveNoncanonicalUnannotated … filter out alignments that contain non-canonical unannotated junctions when using annotated splice junctions database. The annotated non-canonical junctions will be kept.\nstring\n\n\n--outFilterIntronStrands\nfilter alignments - RemoveInconsistentStrands … remove alignments that have junctions with inconsistent strands - None … no filtering\nstring, example: \"RemoveInconsistentStrands\"\n\n\n\n\n\nOutput splice junctions (SJ.out.tab)\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outSJtype\ntype of splice junction output - Standard … standard SJ.out.tab output - None … no splice junction output\nstring, example: \"Standard\"\n\n\n\n\n\nOutput Filtering: Splice Junctions\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outSJfilterReads\nwhich reads to consider for collapsed splice junctions output - All … all reads, unique- and multi-mappers - Unique … uniquely mapping reads only\nstring, example: \"All\"\n\n\n--outSJfilterOverhangMin\nminimum overhang length for splice junctions on both sides for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif does not apply to annotated junctions\ninteger, example: 30, example: 12, example: 12, example: 12\n\n\n--outSJfilterCountUniqueMin\nminimum uniquely mapping read count per junction for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif Junctions are output if one of outSJfilterCountUniqueMin OR outSJfilterCountTotalMin conditions are satisfied does not apply to annotated junctions\ninteger, example: 3, example: 1, example: 1, example: 1\n\n\n--outSJfilterCountTotalMin\nminimum total (multi-mapping+unique) read count per junction for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif Junctions are output if one of outSJfilterCountUniqueMin OR outSJfilterCountTotalMin conditions are satisfied does not apply to annotated junctions\ninteger, example: 3, example: 1, example: 1, example: 1\n\n\n--outSJfilterDistToOtherSJmin\nminimum allowed distance to other junctions’ donor/acceptor does not apply to annotated junctions\ninteger, example: 10, example: 0, example: 5, example: 10\n\n\n--outSJfilterIntronMaxVsReadN\nmaximum gap allowed for junctions supported by 1,2,3,,,N reads i.e. by default junctions supported by 1 read can have gaps <=50000b, by 2 reads: <=100000b, by 3 reads: <=200000. by >=4 reads any gap <=alignIntronMax does not apply to annotated junctions\ninteger, example: 50000, example: 100000, example: 200000\n\n\n\n\n\nScoring\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--scoreGap\nsplice junction penalty (independent on intron motif)\ninteger, example: 0\n\n\n--scoreGapNoncan\nnon-canonical junction penalty (in addition to scoreGap)\ninteger, example: -8\n\n\n--scoreGapGCAG\nGC/AG and CT/GC junction penalty (in addition to scoreGap)\ninteger, example: -4\n\n\n--scoreGapATAC\nAT/AC and GT/AT junction penalty (in addition to scoreGap)\ninteger, example: -8\n\n\n--scoreGenomicLengthLog2scale\nextra score logarithmically scaled with genomic length of the alignment: scoreGenomicLengthLog2scale*log2(genomicLength)\ninteger, example: 0\n\n\n--scoreDelOpen\ndeletion open penalty\ninteger, example: -2\n\n\n--scoreDelBase\ndeletion extension penalty per base (in addition to scoreDelOpen)\ninteger, example: -2\n\n\n--scoreInsOpen\ninsertion open penalty\ninteger, example: -2\n\n\n--scoreInsBase\ninsertion extension penalty per base (in addition to scoreInsOpen)\ninteger, example: -2\n\n\n--scoreStitchSJshift\nmaximum score reduction while searching for SJ boundaries in the stitching step\ninteger, example: 1\n\n\n\n\n\nAlignments and Seeding\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--seedSearchStartLmax\ndefines the search start point through the read - the read is split into pieces no longer than this value\ninteger, example: 50\n\n\n--seedSearchStartLmaxOverLread\nseedSearchStartLmax normalized to read length (sum of mates’ lengths for paired-end reads)\ndouble, example: 1\n\n\n--seedSearchLmax\ndefines the maximum length of the seeds, if =0 seed length is not limited\ninteger, example: 0\n\n\n--seedMultimapNmax\nonly pieces that map fewer than this value are utilized in the stitching procedure\ninteger, example: 10000\n\n\n--seedPerReadNmax\nmax number of seeds per read\ninteger, example: 1000\n\n\n--seedPerWindowNmax\nmax number of seeds per window\ninteger, example: 50\n\n\n--seedNoneLociPerWindow\nmax number of one seed loci per window\ninteger, example: 10\n\n\n--seedSplitMin\nmin length of the seed sequences split by Ns or mate gap\ninteger, example: 12\n\n\n--seedMapMin\nmin length of seeds to be mapped\ninteger, example: 5\n\n\n--alignIntronMin\nminimum intron size, genomic gap is considered intron if its length>=alignIntronMin, otherwise it is considered Deletion\ninteger, example: 21\n\n\n--alignIntronMax\nmaximum intron size, if 0, max intron size will be determined by (2^winBinNbits)*winAnchorDistNbins\ninteger, example: 0\n\n\n--alignMatesGapMax\nmaximum gap between two mates, if 0, max intron gap will be determined by (2^winBinNbits)*winAnchorDistNbins\ninteger, example: 0\n\n\n--alignSJoverhangMin\nminimum overhang (i.e. block size) for spliced alignments\ninteger, example: 5\n\n\n--alignSJstitchMismatchNmax\nmaximum number of mismatches for stitching of the splice junctions (-1: no limit). (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif.\ninteger, example: 0, example: -1, example: 0, example: 0\n\n\n--alignSJDBoverhangMin\nminimum overhang (i.e. block size) for annotated (sjdb) spliced alignments\ninteger, example: 3\n\n\n--alignSplicedMateMapLmin\nminimum mapped length for a read mate that is spliced\ninteger, example: 0\n\n\n--alignSplicedMateMapLminOverLmate\nalignSplicedMateMapLmin normalized to mate length\ndouble, example: 0.66\n\n\n--alignWindowsPerReadNmax\nmax number of windows per read\ninteger, example: 10000\n\n\n--alignTranscriptsPerWindowNmax\nmax number of transcripts per window\ninteger, example: 100\n\n\n--alignTranscriptsPerReadNmax\nmax number of different alignments per read to consider\ninteger, example: 10000\n\n\n--alignEndsType\ntype of read ends alignment - Local … standard local alignment with soft-clipping allowed - EndToEnd … force end-to-end read alignment, do not soft-clip - Extend5pOfRead1 … fully extend only the 5p of the read1, all other ends: local alignment - Extend5pOfReads12 … fully extend only the 5p of the both read1 and read2, all other ends: local alignment\nstring, example: \"Local\"\n\n\n--alignEndsProtrude\nallow protrusion of alignment ends, i.e. start (end) of the +strand mate downstream of the start (end) of the -strand mate 1st word: int: maximum number of protrusion bases allowed 2nd word: string: - ConcordantPair … report alignments with non-zero protrusion as concordant pairs - DiscordantPair … report alignments with non-zero protrusion as discordant pairs\nstring, example: \"0 ConcordantPair\"\n\n\n--alignSoftClipAtReferenceEnds\nallow the soft-clipping of the alignments past the end of the chromosomes - Yes … allow - No … prohibit, useful for compatibility with Cufflinks\nstring, example: \"Yes\"\n\n\n--alignInsertionFlush\nhow to flush ambiguous insertion positions - None … insertions are not flushed - Right … insertions are flushed to the right\nstring\n\n\n\n\n\nPaired-End reads\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--peOverlapNbasesMin\nminimum number of overlapping bases to trigger mates merging and realignment. Specify >0 value to switch on the “merginf of overlapping mates” algorithm.\ninteger, example: 0\n\n\n--peOverlapMMp\nmaximum proportion of mismatched bases in the overlap area\ndouble, example: 0.01\n\n\n\n\n\nWindows, Anchors, Binning\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--winAnchorMultimapNmax\nmax number of loci anchors are allowed to map to\ninteger, example: 50\n\n\n--winBinNbits\n=log2(winBin), where winBin is the size of the bin for the windows/clustering, each window will occupy an integer number of bins.\ninteger, example: 16\n\n\n--winAnchorDistNbins\nmax number of bins between two anchors that allows aggregation of anchors into one window\ninteger, example: 9\n\n\n--winFlankNbins\nlog2(winFlank), where win Flank is the size of the left and right flanking regions for each window\ninteger, example: 4\n\n\n--winReadCoverageRelativeMin\nminimum relative coverage of the read sequence by the seeds in a window, for STARlong algorithm only.\ndouble, example: 0.5\n\n\n--winReadCoverageBasesMin\nminimum number of bases covered by the seeds in a window , for STARlong algorithm only.\ninteger, example: 0\n\n\n\n\n\nChimeric Alignments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--chimOutType\ntype of chimeric output - Junctions … Chimeric.out.junction - SeparateSAMold … output old SAM into separate Chimeric.out.sam file - WithinBAM … output into main aligned BAM files (Aligned.*.bam) - WithinBAM HardClip … (default) hard-clipping in the CIGAR for supplemental chimeric alignments (default if no 2nd word is present) - WithinBAM SoftClip … soft-clipping in the CIGAR for supplemental chimeric alignments\nstring, example: \"Junctions\"\n\n\n--chimSegmentMin\nminimum length of chimeric segment length, if ==0, no chimeric output\ninteger, example: 0\n\n\n--chimScoreMin\nminimum total (summed) score of the chimeric segments\ninteger, example: 0\n\n\n--chimScoreDropMax\nmax drop (difference) of chimeric score (the sum of scores of all chimeric segments) from the read length\ninteger, example: 20\n\n\n--chimScoreSeparation\nminimum difference (separation) between the best chimeric score and the next one\ninteger, example: 10\n\n\n--chimScoreJunctionNonGTAG\npenalty for a non-GT/AG chimeric junction\ninteger, example: -1\n\n\n--chimJunctionOverhangMin\nminimum overhang for a chimeric junction\ninteger, example: 20\n\n\n--chimSegmentReadGapMax\nmaximum gap in the read sequence between chimeric segments\ninteger, example: 0\n\n\n--chimFilter\ndifferent filters for chimeric alignments - None … no filtering - banGenomicN … Ns are not allowed in the genome sequence around the chimeric junction\nstring, example: \"banGenomicN\"\n\n\n--chimMainSegmentMultNmax\nmaximum number of multi-alignments for the main chimeric segment. =1 will prohibit multimapping main segments.\ninteger, example: 10\n\n\n--chimMultimapNmax\nmaximum number of chimeric multi-alignments - 0 … use the old scheme for chimeric detection which only considered unique alignments\ninteger, example: 0\n\n\n--chimMultimapScoreRange\nthe score range for multi-mapping chimeras below the best chimeric score. Only works with –chimMultimapNmax > 1\ninteger, example: 1\n\n\n--chimNonchimScoreDropMin\nto trigger chimeric detection, the drop in the best non-chimeric alignment score with respect to the read length has to be greater than this value\ninteger, example: 20\n\n\n--chimOutJunctionFormat\nformatting type for the Chimeric.out.junction file - 0 … no comment lines/headers - 1 … comment lines at the end of the file: command line and Nreads: total, unique/multi-mapping\ninteger, example: 0\n\n\n\n\n\nQuantification of Annotations\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--quantMode\ntypes of quantification requested - - … none - TranscriptomeSAM … output SAM/BAM alignments to transcriptome into a separate file - GeneCounts … count reads per gene\nstring\n\n\n--quantTranscriptomeBAMcompression\n-2 to 10 transcriptome BAM compression level - -2 … no BAM output - -1 … default compression (6?) - 0 … no compression - 10 … maximum compression\ninteger, example: 1\n\n\n--quantTranscriptomeBan\nprohibit various alignment type - IndelSoftclipSingleend … prohibit indels, soft clipping and single-end alignments - compatible with RSEM - Singleend … prohibit single-end alignments\nstring, example: \"IndelSoftclipSingleend\"\n\n\n\n\n\n2-pass Mapping\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--twopassMode\n2-pass mapping mode. - None … 1-pass mapping - Basic … basic 2-pass mapping, with all 1st pass junctions inserted into the genome indices on the fly\nstring\n\n\n--twopass1readsN\nnumber of reads to process for the 1st step. Use very large number (or default -1) to map all reads in the first step.\ninteger, example: -1\n\n\n\n\n\nWASP parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--waspOutputMode\nWASP allele-specific output type. This is re-implementation of the original WASP mappability filtering by Bryce van de Geijn, Graham McVicker, Yoav Gilad & Jonathan K Pritchard. Please cite the original WASP paper: Nature Methods 12, 1061-1063 (2015), https://www.nature.com/articles/nmeth.3582 . - SAMtag … add WASP tags to the alignments that pass WASP filtering\nstring\n\n\n\n\n\nSTARsolo (single cell RNA-seq) parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--soloType\ntype of single-cell RNA-seq - CB_UMI_Simple … (a.k.a. Droplet) one UMI and one Cell Barcode of fixed length in read2, e.g. Drop-seq and 10X Chromium. - CB_UMI_Complex … multiple Cell Barcodes of varying length, one UMI of fixed length and one adapter sequence of fixed length are allowed in read2 only (e.g. inDrop, ddSeq). - CB_samTagOut … output Cell Barcode as CR and/or CB SAm tag. No UMI counting. –readFilesIn cDNA_read1 [cDNA_read2 if paired-end] CellBarcode_read . Requires –outSAMtype BAM Unsorted [and/or SortedByCoordinate] - SmartSeq … Smart-seq: each cell in a separate FASTQ (paired- or single-end), barcodes are corresponding read-groups, no UMI sequences, alignments deduplicated according to alignment start and end (after extending soft-clipped bases)\nstring\n\n\n--soloCBwhitelist\nfile(s) with whitelist(s) of cell barcodes. Only –soloType CB_UMI_Complex allows more than one whitelist file. - None … no whitelist: all cell barcodes are allowed\nstring\n\n\n--soloCBstart\ncell barcode start base\ninteger, example: 1\n\n\n--soloCBlen\ncell barcode length\ninteger, example: 16\n\n\n--soloUMIstart\nUMI start base\ninteger, example: 17\n\n\n--soloUMIlen\nUMI length\ninteger, example: 10\n\n\n--soloBarcodeReadLength\nlength of the barcode read - 1 … equal to sum of soloCBlen+soloUMIlen - 0 … not defined, do not check\ninteger, example: 1\n\n\n--soloBarcodeMate\nidentifies which read mate contains the barcode (CB+UMI) sequence - 0 … barcode sequence is on separate read, which should always be the last file in the –readFilesIn listed - 1 … barcode sequence is a part of mate 1 - 2 … barcode sequence is a part of mate 2\ninteger, example: 0\n\n\n--soloCBposition\nposition of Cell Barcode(s) on the barcode read. Presently only works with –soloType CB_UMI_Complex, and barcodes are assumed to be on Read2. Format for each barcode: startAnchor_startPosition_endAnchor_endPosition start(end)Anchor defines the Anchor Base for the CB: 0: read start; 1: read end; 2: adapter start; 3: adapter end start(end)Position is the 0-based position with of the CB start(end) with respect to the Anchor Base String for different barcodes are separated by space. Example: inDrop (Zilionis et al, Nat. Protocols, 2017): –soloCBposition 0_0_2_-1 3_1_3_8\nstring\n\n\n--soloUMIposition\nposition of the UMI on the barcode read, same as soloCBposition Example: inDrop (Zilionis et al, Nat. Protocols, 2017): –soloCBposition 3_9_3_14\nstring\n\n\n--soloAdapterSequence\nadapter sequence to anchor barcodes. Only one adapter sequence is allowed.\nstring\n\n\n--soloAdapterMismatchesNmax\nmaximum number of mismatches allowed in adapter sequence.\ninteger, example: 1\n\n\n--soloCBmatchWLtype\nmatching the Cell Barcodes to the WhiteList - Exact … only exact matches allowed - 1MM … only one match in whitelist with 1 mismatched base allowed. Allowed CBs have to have at least one read with exact match. - 1MM_multi … multiple matches in whitelist with 1 mismatched base allowed, posterior probability calculation is used choose one of the matches. Allowed CBs have to have at least one read with exact match. This option matches best with CellRanger 2.2.0 - 1MM_multi_pseudocounts … same as 1MM_Multi, but pseudocounts of 1 are added to all whitelist barcodes. - 1MM_multi_Nbase_pseudocounts … same as 1MM_multi_pseudocounts, multimatching to WL is allowed for CBs with N-bases. This option matches best with CellRanger >= 3.0.0 - EditDist_2 … allow up to edit distance of 3 fpr each of the barcodes. May include one deletion + one insertion. Only works with –soloType CB_UMI_Complex. Matches to multiple passlist barcdoes are not allowed. Similar to ParseBio Split-seq pipeline.\nstring, example: \"1MM_multi\"\n\n\n--soloInputSAMattrBarcodeSeq\nwhen inputting reads from a SAM file (–readsFileType SAM SE/PE), these SAM attributes mark the barcode sequence (in proper order). For instance, for 10X CellRanger or STARsolo BAMs, use –soloInputSAMattrBarcodeSeq CR UR . This parameter is required when running STARsolo with input from SAM.\nstring\n\n\n--soloInputSAMattrBarcodeQual\nwhen inputting reads from a SAM file (–readsFileType SAM SE/PE), these SAM attributes mark the barcode qualities (in proper order). For instance, for 10X CellRanger or STARsolo BAMs, use –soloInputSAMattrBarcodeQual CY UY . If this parameter is ‘-’ (default), the quality ‘H’ will be assigned to all bases.\nstring\n\n\n--soloStrand\nstrandedness of the solo libraries: - Unstranded … no strand information - Forward … read strand same as the original RNA molecule - Reverse … read strand opposite to the original RNA molecule\nstring, example: \"Forward\"\n\n\n--soloFeatures\ngenomic features for which the UMI counts per Cell Barcode are collected - Gene … genes: reads match the gene transcript - SJ … splice junctions: reported in SJ.out.tab - GeneFull … full gene (pre-mRNA): count all reads overlapping genes’ exons and introns - GeneFull_ExonOverIntron … full gene (pre-mRNA): count all reads overlapping genes’ exons and introns: prioritize 100% overlap with exons - GeneFull_Ex50pAS … full gene (pre-RNA): count all reads overlapping genes’ exons and introns: prioritize >50% overlap with exons. Do not count reads with 100% exonic overlap in the antisense direction.\nstring, example: \"Gene\"\n\n\n--soloMultiMappers\ncounting method for reads mapping to multiple genes - Unique … count only reads that map to unique genes - Uniform … uniformly distribute multi-genic UMIs to all genes - Rescue … distribute UMIs proportionally to unique+uniform counts (~ first iteration of EM) - PropUnique … distribute UMIs proportionally to unique mappers, if present, and uniformly if not. - EM … multi-gene UMIs are distributed using Expectation Maximization algorithm\nstring, example: \"Unique\"\n\n\n--soloUMIdedup\ntype of UMI deduplication (collapsing) algorithm - 1MM_All … all UMIs with 1 mismatch distance to each other are collapsed (i.e. counted once). - 1MM_Directional_UMItools … follows the “directional” method from the UMI-tools by Smith, Heger and Sudbery (Genome Research 2017). - 1MM_Directional … same as 1MM_Directional_UMItools, but with more stringent criteria for duplicate UMIs - Exact … only exactly matching UMIs are collapsed. - NoDedup … no deduplication of UMIs, count all reads. - 1MM_CR … CellRanger2-4 algorithm for 1MM UMI collapsing.\nstring, example: \"1MM_All\"\n\n\n--soloUMIfiltering\ntype of UMI filtering (for reads uniquely mapping to genes) - - … basic filtering: remove UMIs with N and homopolymers (similar to CellRanger 2.2.0). - MultiGeneUMI … basic + remove lower-count UMIs that map to more than one gene. - MultiGeneUMI_All … basic + remove all UMIs that map to more than one gene. - MultiGeneUMI_CR … basic + remove lower-count UMIs that map to more than one gene, matching CellRanger > 3.0.0 . Only works with –soloUMIdedup 1MM_CR\nstring\n\n\n--soloOutFileNames\nfile names for STARsolo output: file_name_prefix gene_names barcode_sequences cell_feature_count_matrix\nstring, example: \"Solo.out/\", example: \"features.tsv\", example: \"barcodes.tsv\", example: \"matrix.mtx\"\n\n\n--soloCellFilter\ncell filtering type and parameters - None … do not output filtered cells - TopCells … only report top cells by UMI count, followed by the exact number of cells - CellRanger2.2 … simple filtering of CellRanger 2.2. Can be followed by numbers: number of expected cells, robust maximum percentile for UMI count, maximum to minimum ratio for UMI count The harcoded values are from CellRanger: nExpectedCells=3000; maxPercentile=0.99; maxMinRatio=10 - EmptyDrops_CR … EmptyDrops filtering in CellRanger flavor. Please cite the original EmptyDrops paper: A.T.L Lun et al, Genome Biology, 20, 63 (2019): https://genomebiology.biomedcentral.com/articles/10.1186/s13059-019-1662-y Can be followed by 10 numeric parameters: nExpectedCells maxPercentile maxMinRatio indMin indMax umiMin umiMinFracMedian candMaxN FDR simN The harcoded values are from CellRanger: 3000 0.99 10 45000 90000 500 0.01 20000 0.01 10000\nstring, example: \"CellRanger2.2\", example: \"3000\", example: \"0.99\", example: \"10\"\n\n\n--soloOutFormatFeaturesGeneField3\nfield 3 in the Gene features.tsv file. If “-”, then no 3rd field is output.\nstring, example: \"Gene Expression\"\n\n\n--soloCellReadStats\nOutput reads statistics for each CB - Standard … standard output\nstring\n\n\n\n\n\nHTSeq arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--stranded\nWhether the data is from a strand-specific assay. ‘reverse’ means ‘yes’ with reversed strand interpretation.\nstring, default: \"yes\"\n\n\n--minimum_alignment_quality\nSkip all reads with MAPQ alignment quality lower than the given minimum value. MAPQ is the 5th column of a SAM/BAM file and its usage depends on the software used to map the reads.\ninteger, default: 10\n\n\n--type\nFeature type (3rd column in GTF file) to be used, all features of other type are ignored (default, suitable for Ensembl GTF files: exon)\nstring, example: \"exon\"\n\n\n--id_attribute\nGTF attribute to be used as feature ID (default, suitable for Ensembl GTF files: gene_id). All feature of the right type (see -t option) within the same GTF attribute will be added together. The typical way of using this option is to count all exonic reads from each gene and add the exons but other uses are possible as well. You can call this option multiple times: in that case, the combination of all attributes separated by colons (:) will be used as a unique identifier, e.g. for exons you might use -i gene_id -i exon_number.\nstring, example: \"gene_id\"\n\n\n--additional_attributes\nAdditional feature attributes (suitable for Ensembl GTF files: gene_name). Use multiple times for more than one additional attribute. These attributes are only used as annotations in the output, while the determination of how the counts are added together is done based on option -i.\nstring, example: \"gene_name\"\n\n\n--add_chromosome_info\nStore information about the chromosome of each feature as an additional attribute (e.g. colunm in the TSV output file).\nboolean_true\n\n\n--mode\nMode to handle reads overlapping more than one feature.\nstring, default: \"union\"\n\n\n--non_unique\nWhether and how to score reads that are not uniquely aligned or ambiguously assigned to features.\nstring, default: \"none\"\n\n\n--secondary_alignments\nWhether to score secondary alignments (0x100 flag).\nstring\n\n\n--supplementary_alignments\nWhether to score supplementary alignments (0x800 flag).\nstring\n\n\n--counts_output_sparse\nStore the counts as a sparse matrix (mtx, h5ad, loom).\nboolean_true" + }, + { + "objectID": "components/modules/mapping/multi_star.html#authors", + "href": "components/modules/mapping/multi_star.html#authors", + "title": "Multi star", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nRobrecht Cannoodt (author, maintainer)" + }, + { + "objectID": "components/modules/mapping/cellranger_multi.html", + "href": "components/modules/mapping/cellranger_multi.html", + "title": "Cellranger multi", + "section": "", + "text": "ID: cellranger_multi\nNamespace: mapping\n\n\n\nSource" + }, + { + "objectID": "components/modules/mapping/cellranger_multi.html#example-commands", + "href": "components/modules/mapping/cellranger_multi.html#example-commands", + "title": "Cellranger multi", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/mapping/cellranger_multi/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Outputs\n# output: \"$id.$key.output.output\"\n\n# Input files\ninput: # please fill in - example: [\"mysample_S1_L001_R1_001.fastq.gz\", \"mysample_S1_L001_R2_001.fastq.gz\"]\ngex_reference: # please fill in - example: \"reference_genome.tar.gz\"\n# vdj_reference: \"reference_vdj.tar.gz\"\n# vdj_inner_enrichment_primers: \"enrichment_primers.txt\"\n# feature_reference: \"feature_reference.csv\"\n\n# Library arguments\nlibrary_id: # please fill in - example: [\"mysample1\"]\nlibrary_type: # please fill in - example: [\"Gene Expression\"]\n# library_subsample: [\"0.5\"]\n# library_lanes: [\"1-4\"]\n\n# Gene expression arguments\n# gex_expect_cells: 3000\ngex_chemistry: \"auto\"\ngex_secondary_analysis: false\ngex_generate_bam: false\ngex_include_introns: true\n\n# Cell multiplexing parameters\n# cell_multiplex_sample_id: \"foo\"\n# cell_multiplex_oligo_ids: \"foo\"\n# cell_multiplex_description: \"foo\"\n\n# Executor arguments\ndryrun: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/mapping/cellranger_multi/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/mapping/cellranger_multi.html#argument-groups", + "href": "components/modules/mapping/cellranger_multi.html#argument-groups", + "title": "Cellranger multi", + "section": "Argument groups", + "text": "Argument groups\n\nInput files\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nThe FASTQ files to be analyzed. FASTQ files should conform to the naming conventions of bcl2fastq and mkfastq: [Sample Name]_S[Sample Index]_L00[Lane Number]_[Read Type]_001.fastq.gz\nfile, required, example: \"mysample_S1_L001_R1_001.fastq.gz\", example: \"mysample_S1_L001_R2_001.fastq.gz\"\n\n\n--gex_reference\nGenome refence index built by Cell Ranger mkref.\nfile, required, example: \"reference_genome.tar.gz\"\n\n\n--vdj_reference\nVDJ refence index built by Cell Ranger mkref.\nfile, example: \"reference_vdj.tar.gz\"\n\n\n--vdj_inner_enrichment_primers\nV(D)J Immune Profiling libraries: if inner enrichment primers other than those provided in the 10x Genomics kits are used, they need to be specified here as a text file with one primer per line.\nfile, example: \"enrichment_primers.txt\"\n\n\n--feature_reference\nPath to the Feature reference CSV file, declaring Feature Barcode constructs and associated barcodes. Required only for Antibody Capture or CRISPR Guide Capture libraries. See https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/using/feature-bc-analysis#feature-ref for more information.\nfile, example: \"feature_reference.csv\"\n\n\n\n\n\nLibrary arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--library_id\nThe Illumina sample name to analyze. This must exactly match the ‘Sample Name’ part of the FASTQ files specified in the --input argument.\nstring, required, example: \"mysample1\"\n\n\n--library_type\nThe underlying feature type of the library. Possible values: “Gene Expression”, “VDJ”, “VDJ-T”, “VDJ-B”, “Antibody Capture”, “CRISPR Guide Capture”, “Multiplexing Capture”\nstring, required, example: \"Gene Expression\"\n\n\n--library_subsample\nOptional. The rate at which reads from the provided FASTQ files are sampled. Must be strictly greater than 0 and less than or equal to 1.\nstring, example: \"0.5\"\n\n\n--library_lanes\nLanes associated with this sample. Defaults to using all lanes.\nstring, example: \"1-4\"\n\n\n\n\n\nGene expression arguments\nArguments relevant to the analysis of gene expression data.\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--gex_expect_cells\nExpected number of recovered cells, used as input to cell calling algorithm.\ninteger, example: 3000\n\n\n--gex_chemistry\nAssay configuration. - auto: autodetect mode - threeprime: Single Cell 3’ - fiveprime: Single Cell 5’ - SC3Pv1: Single Cell 3’ v1 - SC3Pv2: Single Cell 3’ v2 - SC3Pv3: Single Cell 3’ v3 - SC3Pv3LT: Single Cell 3’ v3 LT - SC3Pv3HT: Single Cell 3’ v3 HT - SC5P-PE: Single Cell 5’ paired-end - SC5P-R2: Single Cell 5’ R2-only - SC-FB: Single Cell Antibody-only 3’ v2 or 5’ See https://kb.10xgenomics.com/hc/en-us/articles/115003764132-How-does-Cell-Ranger-auto-detect-chemistry- for more information.\nstring, default: \"auto\"\n\n\n--gex_secondary_analysis\nWhether or not to run the secondary analysis e.g. clustering.\nboolean, default: FALSE\n\n\n--gex_generate_bam\nWhether to generate a BAM file.\nboolean, default: FALSE\n\n\n--gex_include_introns\nInclude intronic reads in count (default=true unless –target-panel is specified in which case default=false)\nboolean, default: TRUE\n\n\n\n\n\nCell multiplexing parameters\nArguments related to cell multiplexing.\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--cell_multiplex_sample_id\nA name to identify a multiplexed sample. Must be alphanumeric with hyphens and/or underscores, and less than 64 characters. Required for Cell Multiplexing libraries.\nstring\n\n\n--cell_multiplex_oligo_ids\nThe Cell Multiplexing oligo IDs used to multiplex this sample. If multiple CMOs were used for a sample, separate IDs with a pipe (e.g., CMO301|CMO302). Required for Cell Multiplexing libraries.\nstring\n\n\n--cell_multiplex_description\nA description for the sample.\nstring\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nThe folder to store the alignment results.\nfile, required, example: \"/path/to/output\"\n\n\n\n\n\nExecutor arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--dryrun\nIf true, the output directory will only contain the CWL input files, but the pipeline itself will not be executed.\nboolean_true" + }, + { + "objectID": "components/modules/mapping/cellranger_multi.html#authors", + "href": "components/modules/mapping/cellranger_multi.html#authors", + "title": "Cellranger multi", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nRobrecht Cannoodt (author, maintainer)\nDries De Maeyer (author)" + }, + { + "objectID": "components/modules/mapping/star_align.html", + "href": "components/modules/mapping/star_align.html", + "title": "Star align", + "section": "", + "text": "ID: star_align\nNamespace: mapping\n\n\n\nSource" + }, + { + "objectID": "components/modules/mapping/star_align.html#example-commands", + "href": "components/modules/mapping/star_align.html#example-commands", + "title": "Star align", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/mapping/star_align/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Input/Output\ninput: # please fill in - example: [\"mysample_S1_L001_R1_001.fastq.gz\", \"mysample_S1_L001_R2_001.fastq.gz\"]\nreference: # please fill in - example: \"/path/to/reference\"\n# output: \"$id.$key.output.output\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/mapping/star_align/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/mapping/star_align.html#argument-groups", + "href": "components/modules/mapping/star_align.html#argument-groups", + "title": "Star align", + "section": "Argument groups", + "text": "Argument groups\n\nInput/Output\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nThe FASTQ files to be analyzed. Corresponds to the –readFilesIn argument in the STAR command.\nfile, required, example: \"mysample_S1_L001_R1_001.fastq.gz\", example: \"mysample_S1_L001_R2_001.fastq.gz\"\n\n\n--reference\nPath to the reference built by star_build_reference. Corresponds to the –genomeDir argument in the STAR command.\nfile, required, example: \"/path/to/reference\"\n\n\n--output\nPath to output directory. Corresponds to the –outFileNamePrefix argument in the STAR command.\nfile, required, example: \"/path/to/foo\"\n\n\n\n\n\nRun Parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--runRNGseed\nrandom number generator seed.\ninteger, example: 777\n\n\n\n\n\nGenome Parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--genomeLoad\nmode of shared memory usage for the genome files. Only used with –runMode alignReads. - LoadAndKeep … load genome into shared and keep it in memory after run - LoadAndRemove … load genome into shared but remove it after run - LoadAndExit … load genome into shared memory and exit, keeping the genome in memory for future runs - Remove … do not map anything, just remove loaded genome from memory - NoSharedMemory … do not use shared memory, each job will have its own private copy of the genome\nstring, example: \"NoSharedMemory\"\n\n\n--genomeFastaFiles\npath(s) to the fasta files with the genome sequences, separated by spaces. These files should be plain text FASTA files, they cannot be zipped. Required for the genome generation (–runMode genomeGenerate). Can also be used in the mapping (–runMode alignReads) to add extra (new) sequences to the genome (e.g. spike-ins).\nfile\n\n\n--genomeFileSizes\ngenome files exact sizes in bytes. Typically, this should not be defined by the user.\ninteger, example: 0\n\n\n--genomeTransformOutput\nwhich output to transform back to original genome - SAM … SAM/BAM alignments - SJ … splice junctions (SJ.out.tab) - None … no transformation of the output\nstring\n\n\n--genomeChrSetMitochondrial\nnames of the mitochondrial chromosomes. Presently only used for STARsolo statistics output/\nstring, example: \"chrM\", example: \"M\", example: \"MT\"\n\n\n\n\n\nSplice Junctions Database\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--sjdbFileChrStartEnd\npath to the files with genomic coordinates (chr start end strand) for the splice junction introns. Multiple files can be supplied and will be concatenated.\nstring\n\n\n--sjdbGTFfile\npath to the GTF file with annotations\nfile\n\n\n--sjdbGTFchrPrefix\nprefix for chromosome names in a GTF file (e.g. ‘chr’ for using ENSMEBL annotations with UCSC genomes)\nstring\n\n\n--sjdbGTFfeatureExon\nfeature type in GTF file to be used as exons for building transcripts\nstring, example: \"exon\"\n\n\n--sjdbGTFtagExonParentTranscript\nGTF attribute name for parent transcript ID (default “transcript_id” works for GTF files)\nstring, example: \"transcript_id\"\n\n\n--sjdbGTFtagExonParentGene\nGTF attribute name for parent gene ID (default “gene_id” works for GTF files)\nstring, example: \"gene_id\"\n\n\n--sjdbGTFtagExonParentGeneName\nGTF attribute name for parent gene name\nstring, example: \"gene_name\"\n\n\n--sjdbGTFtagExonParentGeneType\nGTF attribute name for parent gene type\nstring, example: \"gene_type\", example: \"gene_biotype\"\n\n\n--sjdbOverhang\nlength of the donor/acceptor sequence on each side of the junctions, ideally = (mate_length - 1)\ninteger, example: 100\n\n\n--sjdbScore\nextra alignment score for alignments that cross database junctions\ninteger, example: 2\n\n\n--sjdbInsertSave\nwhich files to save when sjdb junctions are inserted on the fly at the mapping step - Basic … only small junction / transcript files - All … all files including big Genome, SA and SAindex - this will create a complete genome directory\nstring, example: \"Basic\"\n\n\n\n\n\nVariation parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--varVCFfile\npath to the VCF file that contains variation data. The 10th column should contain the genotype information, e.g. 0/1\nstring\n\n\n\n\n\nRead Parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--readFilesType\nformat of input read files - Fastx … FASTA or FASTQ - SAM SE … SAM or BAM single-end reads; for BAM use –readFilesCommand samtools view - SAM PE … SAM or BAM paired-end reads; for BAM use –readFilesCommand samtools view\nstring, example: \"Fastx\"\n\n\n--readFilesSAMattrKeep\nfor –readFilesType SAM SE/PE, which SAM tags to keep in the output BAM, e.g.: –readFilesSAMtagsKeep RG PL - All … keep all tags - None … do not keep any tags\nstring, example: \"All\"\n\n\n--readFilesManifest\npath to the “manifest” file with the names of read files. The manifest file should contain 3 tab-separated columns: paired-end reads: read1_file_name \\(tab\\) read2_file_name \\(tab\\) read_group_line. single-end reads: read1_file_name \\(tab\\) - \\(tab\\) read_group_line. Spaces, but not tabs are allowed in file names. If read_group_line does not start with ID:, it can only contain one ID field, and ID: will be added to it. If read_group_line starts with ID:, it can contain several fields separated by \\(tab\\), and all fields will be be copied verbatim into SAM @RG header line.\nfile\n\n\n--readFilesPrefix\nprefix for the read files names, i.e. it will be added in front of the strings in –readFilesIn\nstring\n\n\n--readFilesCommand\ncommand line to execute for each of the input file. This command should generate FASTA or FASTQ text and send it to stdout For example: zcat - to uncompress .gz files, bzcat - to uncompress .bz2 files, etc.\nstring\n\n\n--readMapNumber\nnumber of reads to map from the beginning of the file -1: map all reads\ninteger, example: -1\n\n\n--readMatesLengthsIn\nEqual/NotEqual - lengths of names,sequences,qualities for both mates are the same / not the same. NotEqual is safe in all situations.\nstring, example: \"NotEqual\"\n\n\n--readNameSeparator\ncharacter(s) separating the part of the read names that will be trimmed in output (read name after space is always trimmed)\nstring, example: \"/\"\n\n\n--readQualityScoreBase\nnumber to be subtracted from the ASCII code to get Phred quality score\ninteger, example: 33\n\n\n\n\n\nRead Clipping\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--clipAdapterType\nadapter clipping type - Hamming … adapter clipping based on Hamming distance, with the number of mismatches controlled by –clip5pAdapterMMp - CellRanger4 … 5p and 3p adapter clipping similar to CellRanger4. Utilizes Opal package by Martin Sosic: https://github.com/Martinsos/opal - None … no adapter clipping, all other clip* parameters are disregarded\nstring, example: \"Hamming\"\n\n\n--clip3pNbases\nnumber(s) of bases to clip from 3p of each mate. If one value is given, it will be assumed the same for both mates.\ninteger, example: 0\n\n\n--clip3pAdapterSeq\nadapter sequences to clip from 3p of each mate. If one value is given, it will be assumed the same for both mates. - polyA … polyA sequence with the length equal to read length\nstring\n\n\n--clip3pAdapterMMp\nmax proportion of mismatches for 3p adapter clipping for each mate. If one value is given, it will be assumed the same for both mates.\ndouble, example: 0.1\n\n\n--clip3pAfterAdapterNbases\nnumber of bases to clip from 3p of each mate after the adapter clipping. If one value is given, it will be assumed the same for both mates.\ninteger, example: 0\n\n\n--clip5pNbases\nnumber(s) of bases to clip from 5p of each mate. If one value is given, it will be assumed the same for both mates.\ninteger, example: 0\n\n\n\n\n\nLimits\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--limitGenomeGenerateRAM\nmaximum available RAM (bytes) for genome generation\nlong, example: NA\n\n\n--limitIObufferSize\nmax available buffers size (bytes) for input/output, per thread\nlong, example: 30000000, example: 50000000\n\n\n--limitOutSAMoneReadBytes\nmax size of the SAM record (bytes) for one read. Recommended value: >(2(LengthMate1+LengthMate2+100)outFilterMultimapNmax\nlong, example: 100000\n\n\n--limitOutSJoneRead\nmax number of junctions for one read (including all multi-mappers)\ninteger, example: 1000\n\n\n--limitOutSJcollapsed\nmax number of collapsed junctions\ninteger, example: 1000000\n\n\n--limitBAMsortRAM\nmaximum available RAM (bytes) for sorting BAM. If =0, it will be set to the genome index size. 0 value can only be used with –genomeLoad NoSharedMemory option.\nlong, example: 0\n\n\n--limitSjdbInsertNsj\nmaximum number of junctions to be inserted to the genome on the fly at the mapping stage, including those from annotations and those detected in the 1st step of the 2-pass run\ninteger, example: 1000000\n\n\n--limitNreadsSoft\nsoft limit on the number of reads\ninteger, example: -1\n\n\n\n\n\nOutput: general\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outTmpKeep\nwhether to keep the temporary files after STAR runs is finished - None … remove all temporary files - All … keep all files\nstring\n\n\n--outStd\nwhich output will be directed to stdout (standard out) - Log … log messages - SAM … alignments in SAM format (which normally are output to Aligned.out.sam file), normal standard output will go into Log.std.out - BAM_Unsorted … alignments in BAM format, unsorted. Requires –outSAMtype BAM Unsorted - BAM_SortedByCoordinate … alignments in BAM format, sorted by coordinate. Requires –outSAMtype BAM SortedByCoordinate - BAM_Quant … alignments to transcriptome in BAM format, unsorted. Requires –quantMode TranscriptomeSAM\nstring, example: \"Log\"\n\n\n--outReadsUnmapped\noutput of unmapped and partially mapped (i.e. mapped only one mate of a paired end read) reads in separate file(s). - None … no output - Fastx … output in separate fasta/fastq files, Unmapped.out.mate1/2\nstring\n\n\n--outQSconversionAdd\nadd this number to the quality score (e.g. to convert from Illumina to Sanger, use -31)\ninteger, example: 0\n\n\n--outMultimapperOrder\norder of multimapping alignments in the output files - Old_2.4 … quasi-random order used before 2.5.0 - Random … random order of alignments for each multi-mapper. Read mates (pairs) are always adjacent, all alignment for each read stay together. This option will become default in the future releases.\nstring, example: \"Old_2.4\"\n\n\n\n\n\nOutput: SAM and BAM\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outSAMtype\ntype of SAM/BAM output 1st word: - BAM … output BAM without sorting - SAM … output SAM without sorting - None … no SAM/BAM output 2nd, 3rd: - Unsorted … standard unsorted - SortedByCoordinate … sorted by coordinate. This option will allocate extra memory for sorting which can be specified by –limitBAMsortRAM.\nstring, example: \"SAM\"\n\n\n--outSAMmode\nmode of SAM output - None … no SAM output - Full … full SAM output - NoQS … full SAM but without quality scores\nstring, example: \"Full\"\n\n\n--outSAMstrandField\nCufflinks-like strand field flag - None … not used - intronMotif … strand derived from the intron motif. This option changes the output alignments: reads with inconsistent and/or non-canonical introns are filtered out.\nstring\n\n\n--outSAMattributes\na string of desired SAM attributes, in the order desired for the output SAM. Tags can be listed in any combination/order. Presets: - None … no attributes - Standard … NH HI AS nM - All … NH HI AS nM NM MD jM jI MC ch Alignment: - NH … number of loci the reads maps to: =1 for unique mappers, >1 for multimappers. Standard SAM tag. - HI … multiple alignment index, starts with –outSAMattrIHstart (=1 by default). Standard SAM tag. - AS … local alignment score, +1/-1 for matches/mismateches, score* penalties for indels and gaps. For PE reads, total score for two mates. Stadnard SAM tag. - nM … number of mismatches. For PE reads, sum over two mates. - NM … edit distance to the reference (number of mismatched + inserted + deleted bases) for each mate. Standard SAM tag. - MD … string encoding mismatched and deleted reference bases (see standard SAM specifications). Standard SAM tag. - jM … intron motifs for all junctions (i.e. N in CIGAR): 0: non-canonical; 1: GT/AG, 2: CT/AC, 3: GC/AG, 4: CT/GC, 5: AT/AC, 6: GT/AT. If splice junctions database is used, and a junction is annotated, 20 is added to its motif value. - jI … start and end of introns for all junctions (1-based). - XS … alignment strand according to –outSAMstrandField. - MC … mate’s CIGAR string. Standard SAM tag. - ch … marks all segment of all chimeric alingments for –chimOutType WithinBAM output. - cN … number of bases clipped from the read ends: 5’ and 3’ Variation: - vA … variant allele - vG … genomic coordinate of the variant overlapped by the read. - vW … 1 - alignment passes WASP filtering; 2,3,4,5,6,7 - alignment does not pass WASP filtering. Requires –waspOutputMode SAMtag. STARsolo: - CR CY UR UY … sequences and quality scores of cell barcodes and UMIs for the solo* demultiplexing. - GX GN … gene ID and gene name for unique-gene reads. - gx gn … gene IDs and gene names for unique- and multi-gene reads. - CB UB … error-corrected cell barcodes and UMIs for solo* demultiplexing. Requires –outSAMtype BAM SortedByCoordinate. - sM … assessment of CB and UMI. - sS … sequence of the entire barcode (CB,UMI,adapter). - sQ … quality of the entire barcode. ***Unsupported/undocumented: - ha … haplotype (1/2) when mapping to the diploid genome. Requires genome generated with –genomeTransformType Diploid . - rB … alignment block read/genomic coordinates. - vR … read coordinate of the variant.\nstring, example: \"Standard\"\n\n\n--outSAMattrIHstart\nstart value for the IH attribute. 0 may be required by some downstream software, such as Cufflinks or StringTie.\ninteger, example: 1\n\n\n--outSAMunmapped\noutput of unmapped reads in the SAM format 1st word: - None … no output - Within … output unmapped reads within the main SAM file (i.e. Aligned.out.sam) 2nd word: - KeepPairs … record unmapped mate for each alignment, and, in case of unsorted output, keep it adjacent to its mapped mate. Only affects multi-mapping reads.\nstring\n\n\n--outSAMorder\ntype of sorting for the SAM output Paired: one mate after the other for all paired alignments PairedKeepInputOrder: one mate after the other for all paired alignments, the order is kept the same as in the input FASTQ files\nstring, example: \"Paired\"\n\n\n--outSAMprimaryFlag\nwhich alignments are considered primary - all others will be marked with 0x100 bit in the FLAG - OneBestScore … only one alignment with the best score is primary - AllBestScore … all alignments with the best score are primary\nstring, example: \"OneBestScore\"\n\n\n--outSAMreadID\nread ID record type - Standard … first word (until space) from the FASTx read ID line, removing /1,/2 from the end - Number … read number (index) in the FASTx file\nstring, example: \"Standard\"\n\n\n--outSAMmapqUnique\n0 to 255: the MAPQ value for unique mappers\ninteger, example: 255\n\n\n--outSAMflagOR\n0 to 65535: sam FLAG will be bitwise OR’d with this value, i.e. FLAG=FLAG | outSAMflagOR. This is applied after all flags have been set by STAR, and after outSAMflagAND. Can be used to set specific bits that are not set otherwise.\ninteger, example: 0\n\n\n--outSAMflagAND\n0 to 65535: sam FLAG will be bitwise AND’d with this value, i.e. FLAG=FLAG & outSAMflagOR. This is applied after all flags have been set by STAR, but before outSAMflagOR. Can be used to unset specific bits that are not set otherwise.\ninteger, example: 65535\n\n\n--outSAMattrRGline\nSAM/BAM read group line. The first word contains the read group identifier and must start with “ID:”, e.g. –outSAMattrRGline ID:xxx CN:yy “DS:z z z”. xxx will be added as RG tag to each output alignment. Any spaces in the tag values have to be double quoted. Comma separated RG lines correspons to different (comma separated) input files in –readFilesIn. Commas have to be surrounded by spaces, e.g. –outSAMattrRGline ID:xxx , ID:zzz “DS:z z” , ID:yyy DS:yyyy\nstring\n\n\n--outSAMheaderHD\n@HD (header) line of the SAM header\nstring\n\n\n--outSAMheaderPG\nextra @PG (software) line of the SAM header (in addition to STAR)\nstring\n\n\n--outSAMheaderCommentFile\npath to the file with @CO (comment) lines of the SAM header\nstring\n\n\n--outSAMfilter\nfilter the output into main SAM/BAM files - KeepOnlyAddedReferences … only keep the reads for which all alignments are to the extra reference sequences added with –genomeFastaFiles at the mapping stage. - KeepAllAddedReferences … keep all alignments to the extra reference sequences added with –genomeFastaFiles at the mapping stage.\nstring\n\n\n--outSAMmultNmax\nmax number of multiple alignments for a read that will be output to the SAM/BAM files. Note that if this value is not equal to -1, the top scoring alignment will be output first - -1 … all alignments (up to –outFilterMultimapNmax) will be output\ninteger, example: -1\n\n\n--outSAMtlen\ncalculation method for the TLEN field in the SAM/BAM files - 1 … leftmost base of the (+)strand mate to rightmost base of the (-)mate. (+)sign for the (+)strand mate - 2 … leftmost base of any mate to rightmost base of any mate. (+)sign for the mate with the leftmost base. This is different from 1 for overlapping mates with protruding ends\ninteger, example: 1\n\n\n--outBAMcompression\n-1 to 10 BAM compression level, -1=default compression (6?), 0=no compression, 10=maximum compression\ninteger, example: 1\n\n\n--outBAMsortingThreadN\n>=0: number of threads for BAM sorting. 0 will default to min(6,–runThreadN).\ninteger, example: 0\n\n\n--outBAMsortingBinsN\n>0: number of genome bins for coordinate-sorting\ninteger, example: 50\n\n\n\n\n\nBAM processing\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--bamRemoveDuplicatesType\nmark duplicates in the BAM file, for now only works with (i) sorted BAM fed with inputBAMfile, and (ii) for paired-end alignments only - - … no duplicate removal/marking - UniqueIdentical … mark all multimappers, and duplicate unique mappers. The coordinates, FLAG, CIGAR must be identical - UniqueIdenticalNotMulti … mark duplicate unique mappers but not multimappers.\nstring\n\n\n--bamRemoveDuplicatesMate2basesN\nnumber of bases from the 5’ of mate 2 to use in collapsing (e.g. for RAMPAGE)\ninteger, example: 0\n\n\n\n\n\nOutput Wiggle\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outWigType\ntype of signal output, e.g. “bedGraph” OR “bedGraph read1_5p”. Requires sorted BAM: –outSAMtype BAM SortedByCoordinate . 1st word: - None … no signal output - bedGraph … bedGraph format - wiggle … wiggle format 2nd word: - read1_5p … signal from only 5’ of the 1st read, useful for CAGE/RAMPAGE etc - read2 … signal from only 2nd read\nstring\n\n\n--outWigStrand\nstrandedness of wiggle/bedGraph output - Stranded … separate strands, str1 and str2 - Unstranded … collapsed strands\nstring, example: \"Stranded\"\n\n\n--outWigReferencesPrefix\nprefix matching reference names to include in the output wiggle file, e.g. “chr”, default “-” - include all references\nstring\n\n\n--outWigNorm\ntype of normalization for the signal - RPM … reads per million of mapped reads - None … no normalization, “raw” counts\nstring, example: \"RPM\"\n\n\n\n\n\nOutput Filtering\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outFilterType\ntype of filtering - Normal … standard filtering using only current alignment - BySJout … keep only those reads that contain junctions that passed filtering into SJ.out.tab\nstring, example: \"Normal\"\n\n\n--outFilterMultimapScoreRange\nthe score range below the maximum score for multimapping alignments\ninteger, example: 1\n\n\n--outFilterMultimapNmax\nmaximum number of loci the read is allowed to map to. Alignments (all of them) will be output only if the read maps to no more loci than this value. Otherwise no alignments will be output, and the read will be counted as “mapped to too many loci” in the Log.final.out .\ninteger, example: 10\n\n\n--outFilterMismatchNmax\nalignment will be output only if it has no more mismatches than this value.\ninteger, example: 10\n\n\n--outFilterMismatchNoverLmax\nalignment will be output only if its ratio of mismatches to mapped length is less than or equal to this value.\ndouble, example: 0.3\n\n\n--outFilterMismatchNoverReadLmax\nalignment will be output only if its ratio of mismatches to read length is less than or equal to this value.\ndouble, example: 1\n\n\n--outFilterScoreMin\nalignment will be output only if its score is higher than or equal to this value.\ninteger, example: 0\n\n\n--outFilterScoreMinOverLread\nsame as outFilterScoreMin, but normalized to read length (sum of mates’ lengths for paired-end reads)\ndouble, example: 0.66\n\n\n--outFilterMatchNmin\nalignment will be output only if the number of matched bases is higher than or equal to this value.\ninteger, example: 0\n\n\n--outFilterMatchNminOverLread\nsam as outFilterMatchNmin, but normalized to the read length (sum of mates’ lengths for paired-end reads).\ndouble, example: 0.66\n\n\n--outFilterIntronMotifs\nfilter alignment using their motifs - None … no filtering - RemoveNoncanonical … filter out alignments that contain non-canonical junctions - RemoveNoncanonicalUnannotated … filter out alignments that contain non-canonical unannotated junctions when using annotated splice junctions database. The annotated non-canonical junctions will be kept.\nstring\n\n\n--outFilterIntronStrands\nfilter alignments - RemoveInconsistentStrands … remove alignments that have junctions with inconsistent strands - None … no filtering\nstring, example: \"RemoveInconsistentStrands\"\n\n\n\n\n\nOutput splice junctions (SJ.out.tab)\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outSJtype\ntype of splice junction output - Standard … standard SJ.out.tab output - None … no splice junction output\nstring, example: \"Standard\"\n\n\n\n\n\nOutput Filtering: Splice Junctions\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outSJfilterReads\nwhich reads to consider for collapsed splice junctions output - All … all reads, unique- and multi-mappers - Unique … uniquely mapping reads only\nstring, example: \"All\"\n\n\n--outSJfilterOverhangMin\nminimum overhang length for splice junctions on both sides for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif does not apply to annotated junctions\ninteger, example: 30, example: 12, example: 12, example: 12\n\n\n--outSJfilterCountUniqueMin\nminimum uniquely mapping read count per junction for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif Junctions are output if one of outSJfilterCountUniqueMin OR outSJfilterCountTotalMin conditions are satisfied does not apply to annotated junctions\ninteger, example: 3, example: 1, example: 1, example: 1\n\n\n--outSJfilterCountTotalMin\nminimum total (multi-mapping+unique) read count per junction for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif Junctions are output if one of outSJfilterCountUniqueMin OR outSJfilterCountTotalMin conditions are satisfied does not apply to annotated junctions\ninteger, example: 3, example: 1, example: 1, example: 1\n\n\n--outSJfilterDistToOtherSJmin\nminimum allowed distance to other junctions’ donor/acceptor does not apply to annotated junctions\ninteger, example: 10, example: 0, example: 5, example: 10\n\n\n--outSJfilterIntronMaxVsReadN\nmaximum gap allowed for junctions supported by 1,2,3,,,N reads i.e. by default junctions supported by 1 read can have gaps <=50000b, by 2 reads: <=100000b, by 3 reads: <=200000. by >=4 reads any gap <=alignIntronMax does not apply to annotated junctions\ninteger, example: 50000, example: 100000, example: 200000\n\n\n\n\n\nScoring\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--scoreGap\nsplice junction penalty (independent on intron motif)\ninteger, example: 0\n\n\n--scoreGapNoncan\nnon-canonical junction penalty (in addition to scoreGap)\ninteger, example: -8\n\n\n--scoreGapGCAG\nGC/AG and CT/GC junction penalty (in addition to scoreGap)\ninteger, example: -4\n\n\n--scoreGapATAC\nAT/AC and GT/AT junction penalty (in addition to scoreGap)\ninteger, example: -8\n\n\n--scoreGenomicLengthLog2scale\nextra score logarithmically scaled with genomic length of the alignment: scoreGenomicLengthLog2scale*log2(genomicLength)\ninteger, example: 0\n\n\n--scoreDelOpen\ndeletion open penalty\ninteger, example: -2\n\n\n--scoreDelBase\ndeletion extension penalty per base (in addition to scoreDelOpen)\ninteger, example: -2\n\n\n--scoreInsOpen\ninsertion open penalty\ninteger, example: -2\n\n\n--scoreInsBase\ninsertion extension penalty per base (in addition to scoreInsOpen)\ninteger, example: -2\n\n\n--scoreStitchSJshift\nmaximum score reduction while searching for SJ boundaries in the stitching step\ninteger, example: 1\n\n\n\n\n\nAlignments and Seeding\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--seedSearchStartLmax\ndefines the search start point through the read - the read is split into pieces no longer than this value\ninteger, example: 50\n\n\n--seedSearchStartLmaxOverLread\nseedSearchStartLmax normalized to read length (sum of mates’ lengths for paired-end reads)\ndouble, example: 1\n\n\n--seedSearchLmax\ndefines the maximum length of the seeds, if =0 seed length is not limited\ninteger, example: 0\n\n\n--seedMultimapNmax\nonly pieces that map fewer than this value are utilized in the stitching procedure\ninteger, example: 10000\n\n\n--seedPerReadNmax\nmax number of seeds per read\ninteger, example: 1000\n\n\n--seedPerWindowNmax\nmax number of seeds per window\ninteger, example: 50\n\n\n--seedNoneLociPerWindow\nmax number of one seed loci per window\ninteger, example: 10\n\n\n--seedSplitMin\nmin length of the seed sequences split by Ns or mate gap\ninteger, example: 12\n\n\n--seedMapMin\nmin length of seeds to be mapped\ninteger, example: 5\n\n\n--alignIntronMin\nminimum intron size, genomic gap is considered intron if its length>=alignIntronMin, otherwise it is considered Deletion\ninteger, example: 21\n\n\n--alignIntronMax\nmaximum intron size, if 0, max intron size will be determined by (2^winBinNbits)*winAnchorDistNbins\ninteger, example: 0\n\n\n--alignMatesGapMax\nmaximum gap between two mates, if 0, max intron gap will be determined by (2^winBinNbits)*winAnchorDistNbins\ninteger, example: 0\n\n\n--alignSJoverhangMin\nminimum overhang (i.e. block size) for spliced alignments\ninteger, example: 5\n\n\n--alignSJstitchMismatchNmax\nmaximum number of mismatches for stitching of the splice junctions (-1: no limit). (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif.\ninteger, example: 0, example: -1, example: 0, example: 0\n\n\n--alignSJDBoverhangMin\nminimum overhang (i.e. block size) for annotated (sjdb) spliced alignments\ninteger, example: 3\n\n\n--alignSplicedMateMapLmin\nminimum mapped length for a read mate that is spliced\ninteger, example: 0\n\n\n--alignSplicedMateMapLminOverLmate\nalignSplicedMateMapLmin normalized to mate length\ndouble, example: 0.66\n\n\n--alignWindowsPerReadNmax\nmax number of windows per read\ninteger, example: 10000\n\n\n--alignTranscriptsPerWindowNmax\nmax number of transcripts per window\ninteger, example: 100\n\n\n--alignTranscriptsPerReadNmax\nmax number of different alignments per read to consider\ninteger, example: 10000\n\n\n--alignEndsType\ntype of read ends alignment - Local … standard local alignment with soft-clipping allowed - EndToEnd … force end-to-end read alignment, do not soft-clip - Extend5pOfRead1 … fully extend only the 5p of the read1, all other ends: local alignment - Extend5pOfReads12 … fully extend only the 5p of the both read1 and read2, all other ends: local alignment\nstring, example: \"Local\"\n\n\n--alignEndsProtrude\nallow protrusion of alignment ends, i.e. start (end) of the +strand mate downstream of the start (end) of the -strand mate 1st word: int: maximum number of protrusion bases allowed 2nd word: string: - ConcordantPair … report alignments with non-zero protrusion as concordant pairs - DiscordantPair … report alignments with non-zero protrusion as discordant pairs\nstring, example: \"0 ConcordantPair\"\n\n\n--alignSoftClipAtReferenceEnds\nallow the soft-clipping of the alignments past the end of the chromosomes - Yes … allow - No … prohibit, useful for compatibility with Cufflinks\nstring, example: \"Yes\"\n\n\n--alignInsertionFlush\nhow to flush ambiguous insertion positions - None … insertions are not flushed - Right … insertions are flushed to the right\nstring\n\n\n\n\n\nPaired-End reads\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--peOverlapNbasesMin\nminimum number of overlapping bases to trigger mates merging and realignment. Specify >0 value to switch on the “merginf of overlapping mates” algorithm.\ninteger, example: 0\n\n\n--peOverlapMMp\nmaximum proportion of mismatched bases in the overlap area\ndouble, example: 0.01\n\n\n\n\n\nWindows, Anchors, Binning\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--winAnchorMultimapNmax\nmax number of loci anchors are allowed to map to\ninteger, example: 50\n\n\n--winBinNbits\n=log2(winBin), where winBin is the size of the bin for the windows/clustering, each window will occupy an integer number of bins.\ninteger, example: 16\n\n\n--winAnchorDistNbins\nmax number of bins between two anchors that allows aggregation of anchors into one window\ninteger, example: 9\n\n\n--winFlankNbins\nlog2(winFlank), where win Flank is the size of the left and right flanking regions for each window\ninteger, example: 4\n\n\n--winReadCoverageRelativeMin\nminimum relative coverage of the read sequence by the seeds in a window, for STARlong algorithm only.\ndouble, example: 0.5\n\n\n--winReadCoverageBasesMin\nminimum number of bases covered by the seeds in a window , for STARlong algorithm only.\ninteger, example: 0\n\n\n\n\n\nChimeric Alignments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--chimOutType\ntype of chimeric output - Junctions … Chimeric.out.junction - SeparateSAMold … output old SAM into separate Chimeric.out.sam file - WithinBAM … output into main aligned BAM files (Aligned.*.bam) - WithinBAM HardClip … (default) hard-clipping in the CIGAR for supplemental chimeric alignments (default if no 2nd word is present) - WithinBAM SoftClip … soft-clipping in the CIGAR for supplemental chimeric alignments\nstring, example: \"Junctions\"\n\n\n--chimSegmentMin\nminimum length of chimeric segment length, if ==0, no chimeric output\ninteger, example: 0\n\n\n--chimScoreMin\nminimum total (summed) score of the chimeric segments\ninteger, example: 0\n\n\n--chimScoreDropMax\nmax drop (difference) of chimeric score (the sum of scores of all chimeric segments) from the read length\ninteger, example: 20\n\n\n--chimScoreSeparation\nminimum difference (separation) between the best chimeric score and the next one\ninteger, example: 10\n\n\n--chimScoreJunctionNonGTAG\npenalty for a non-GT/AG chimeric junction\ninteger, example: -1\n\n\n--chimJunctionOverhangMin\nminimum overhang for a chimeric junction\ninteger, example: 20\n\n\n--chimSegmentReadGapMax\nmaximum gap in the read sequence between chimeric segments\ninteger, example: 0\n\n\n--chimFilter\ndifferent filters for chimeric alignments - None … no filtering - banGenomicN … Ns are not allowed in the genome sequence around the chimeric junction\nstring, example: \"banGenomicN\"\n\n\n--chimMainSegmentMultNmax\nmaximum number of multi-alignments for the main chimeric segment. =1 will prohibit multimapping main segments.\ninteger, example: 10\n\n\n--chimMultimapNmax\nmaximum number of chimeric multi-alignments - 0 … use the old scheme for chimeric detection which only considered unique alignments\ninteger, example: 0\n\n\n--chimMultimapScoreRange\nthe score range for multi-mapping chimeras below the best chimeric score. Only works with –chimMultimapNmax > 1\ninteger, example: 1\n\n\n--chimNonchimScoreDropMin\nto trigger chimeric detection, the drop in the best non-chimeric alignment score with respect to the read length has to be greater than this value\ninteger, example: 20\n\n\n--chimOutJunctionFormat\nformatting type for the Chimeric.out.junction file - 0 … no comment lines/headers - 1 … comment lines at the end of the file: command line and Nreads: total, unique/multi-mapping\ninteger, example: 0\n\n\n\n\n\nQuantification of Annotations\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--quantMode\ntypes of quantification requested - - … none - TranscriptomeSAM … output SAM/BAM alignments to transcriptome into a separate file - GeneCounts … count reads per gene\nstring\n\n\n--quantTranscriptomeBAMcompression\n-2 to 10 transcriptome BAM compression level - -2 … no BAM output - -1 … default compression (6?) - 0 … no compression - 10 … maximum compression\ninteger, example: 1\n\n\n--quantTranscriptomeBan\nprohibit various alignment type - IndelSoftclipSingleend … prohibit indels, soft clipping and single-end alignments - compatible with RSEM - Singleend … prohibit single-end alignments\nstring, example: \"IndelSoftclipSingleend\"\n\n\n\n\n\n2-pass Mapping\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--twopassMode\n2-pass mapping mode. - None … 1-pass mapping - Basic … basic 2-pass mapping, with all 1st pass junctions inserted into the genome indices on the fly\nstring\n\n\n--twopass1readsN\nnumber of reads to process for the 1st step. Use very large number (or default -1) to map all reads in the first step.\ninteger, example: -1\n\n\n\n\n\nWASP parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--waspOutputMode\nWASP allele-specific output type. This is re-implementation of the original WASP mappability filtering by Bryce van de Geijn, Graham McVicker, Yoav Gilad & Jonathan K Pritchard. Please cite the original WASP paper: Nature Methods 12, 1061-1063 (2015), https://www.nature.com/articles/nmeth.3582 . - SAMtag … add WASP tags to the alignments that pass WASP filtering\nstring\n\n\n\n\n\nSTARsolo (single cell RNA-seq) parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--soloType\ntype of single-cell RNA-seq - CB_UMI_Simple … (a.k.a. Droplet) one UMI and one Cell Barcode of fixed length in read2, e.g. Drop-seq and 10X Chromium. - CB_UMI_Complex … multiple Cell Barcodes of varying length, one UMI of fixed length and one adapter sequence of fixed length are allowed in read2 only (e.g. inDrop, ddSeq). - CB_samTagOut … output Cell Barcode as CR and/or CB SAm tag. No UMI counting. –readFilesIn cDNA_read1 [cDNA_read2 if paired-end] CellBarcode_read . Requires –outSAMtype BAM Unsorted [and/or SortedByCoordinate] - SmartSeq … Smart-seq: each cell in a separate FASTQ (paired- or single-end), barcodes are corresponding read-groups, no UMI sequences, alignments deduplicated according to alignment start and end (after extending soft-clipped bases)\nstring\n\n\n--soloCBwhitelist\nfile(s) with whitelist(s) of cell barcodes. Only –soloType CB_UMI_Complex allows more than one whitelist file. - None … no whitelist: all cell barcodes are allowed\nstring\n\n\n--soloCBstart\ncell barcode start base\ninteger, example: 1\n\n\n--soloCBlen\ncell barcode length\ninteger, example: 16\n\n\n--soloUMIstart\nUMI start base\ninteger, example: 17\n\n\n--soloUMIlen\nUMI length\ninteger, example: 10\n\n\n--soloBarcodeReadLength\nlength of the barcode read - 1 … equal to sum of soloCBlen+soloUMIlen - 0 … not defined, do not check\ninteger, example: 1\n\n\n--soloBarcodeMate\nidentifies which read mate contains the barcode (CB+UMI) sequence - 0 … barcode sequence is on separate read, which should always be the last file in the –readFilesIn listed - 1 … barcode sequence is a part of mate 1 - 2 … barcode sequence is a part of mate 2\ninteger, example: 0\n\n\n--soloCBposition\nposition of Cell Barcode(s) on the barcode read. Presently only works with –soloType CB_UMI_Complex, and barcodes are assumed to be on Read2. Format for each barcode: startAnchor_startPosition_endAnchor_endPosition start(end)Anchor defines the Anchor Base for the CB: 0: read start; 1: read end; 2: adapter start; 3: adapter end start(end)Position is the 0-based position with of the CB start(end) with respect to the Anchor Base String for different barcodes are separated by space. Example: inDrop (Zilionis et al, Nat. Protocols, 2017): –soloCBposition 0_0_2_-1 3_1_3_8\nstring\n\n\n--soloUMIposition\nposition of the UMI on the barcode read, same as soloCBposition Example: inDrop (Zilionis et al, Nat. Protocols, 2017): –soloCBposition 3_9_3_14\nstring\n\n\n--soloAdapterSequence\nadapter sequence to anchor barcodes. Only one adapter sequence is allowed.\nstring\n\n\n--soloAdapterMismatchesNmax\nmaximum number of mismatches allowed in adapter sequence.\ninteger, example: 1\n\n\n--soloCBmatchWLtype\nmatching the Cell Barcodes to the WhiteList - Exact … only exact matches allowed - 1MM … only one match in whitelist with 1 mismatched base allowed. Allowed CBs have to have at least one read with exact match. - 1MM_multi … multiple matches in whitelist with 1 mismatched base allowed, posterior probability calculation is used choose one of the matches. Allowed CBs have to have at least one read with exact match. This option matches best with CellRanger 2.2.0 - 1MM_multi_pseudocounts … same as 1MM_Multi, but pseudocounts of 1 are added to all whitelist barcodes. - 1MM_multi_Nbase_pseudocounts … same as 1MM_multi_pseudocounts, multimatching to WL is allowed for CBs with N-bases. This option matches best with CellRanger >= 3.0.0 - EditDist_2 … allow up to edit distance of 3 fpr each of the barcodes. May include one deletion + one insertion. Only works with –soloType CB_UMI_Complex. Matches to multiple passlist barcdoes are not allowed. Similar to ParseBio Split-seq pipeline.\nstring, example: \"1MM_multi\"\n\n\n--soloInputSAMattrBarcodeSeq\nwhen inputting reads from a SAM file (–readsFileType SAM SE/PE), these SAM attributes mark the barcode sequence (in proper order). For instance, for 10X CellRanger or STARsolo BAMs, use –soloInputSAMattrBarcodeSeq CR UR . This parameter is required when running STARsolo with input from SAM.\nstring\n\n\n--soloInputSAMattrBarcodeQual\nwhen inputting reads from a SAM file (–readsFileType SAM SE/PE), these SAM attributes mark the barcode qualities (in proper order). For instance, for 10X CellRanger or STARsolo BAMs, use –soloInputSAMattrBarcodeQual CY UY . If this parameter is ‘-’ (default), the quality ‘H’ will be assigned to all bases.\nstring\n\n\n--soloStrand\nstrandedness of the solo libraries: - Unstranded … no strand information - Forward … read strand same as the original RNA molecule - Reverse … read strand opposite to the original RNA molecule\nstring, example: \"Forward\"\n\n\n--soloFeatures\ngenomic features for which the UMI counts per Cell Barcode are collected - Gene … genes: reads match the gene transcript - SJ … splice junctions: reported in SJ.out.tab - GeneFull … full gene (pre-mRNA): count all reads overlapping genes’ exons and introns - GeneFull_ExonOverIntron … full gene (pre-mRNA): count all reads overlapping genes’ exons and introns: prioritize 100% overlap with exons - GeneFull_Ex50pAS … full gene (pre-RNA): count all reads overlapping genes’ exons and introns: prioritize >50% overlap with exons. Do not count reads with 100% exonic overlap in the antisense direction.\nstring, example: \"Gene\"\n\n\n--soloMultiMappers\ncounting method for reads mapping to multiple genes - Unique … count only reads that map to unique genes - Uniform … uniformly distribute multi-genic UMIs to all genes - Rescue … distribute UMIs proportionally to unique+uniform counts (~ first iteration of EM) - PropUnique … distribute UMIs proportionally to unique mappers, if present, and uniformly if not. - EM … multi-gene UMIs are distributed using Expectation Maximization algorithm\nstring, example: \"Unique\"\n\n\n--soloUMIdedup\ntype of UMI deduplication (collapsing) algorithm - 1MM_All … all UMIs with 1 mismatch distance to each other are collapsed (i.e. counted once). - 1MM_Directional_UMItools … follows the “directional” method from the UMI-tools by Smith, Heger and Sudbery (Genome Research 2017). - 1MM_Directional … same as 1MM_Directional_UMItools, but with more stringent criteria for duplicate UMIs - Exact … only exactly matching UMIs are collapsed. - NoDedup … no deduplication of UMIs, count all reads. - 1MM_CR … CellRanger2-4 algorithm for 1MM UMI collapsing.\nstring, example: \"1MM_All\"\n\n\n--soloUMIfiltering\ntype of UMI filtering (for reads uniquely mapping to genes) - - … basic filtering: remove UMIs with N and homopolymers (similar to CellRanger 2.2.0). - MultiGeneUMI … basic + remove lower-count UMIs that map to more than one gene. - MultiGeneUMI_All … basic + remove all UMIs that map to more than one gene. - MultiGeneUMI_CR … basic + remove lower-count UMIs that map to more than one gene, matching CellRanger > 3.0.0 . Only works with –soloUMIdedup 1MM_CR\nstring\n\n\n--soloOutFileNames\nfile names for STARsolo output: file_name_prefix gene_names barcode_sequences cell_feature_count_matrix\nstring, example: \"Solo.out/\", example: \"features.tsv\", example: \"barcodes.tsv\", example: \"matrix.mtx\"\n\n\n--soloCellFilter\ncell filtering type and parameters - None … do not output filtered cells - TopCells … only report top cells by UMI count, followed by the exact number of cells - CellRanger2.2 … simple filtering of CellRanger 2.2. Can be followed by numbers: number of expected cells, robust maximum percentile for UMI count, maximum to minimum ratio for UMI count The harcoded values are from CellRanger: nExpectedCells=3000; maxPercentile=0.99; maxMinRatio=10 - EmptyDrops_CR … EmptyDrops filtering in CellRanger flavor. Please cite the original EmptyDrops paper: A.T.L Lun et al, Genome Biology, 20, 63 (2019): https://genomebiology.biomedcentral.com/articles/10.1186/s13059-019-1662-y Can be followed by 10 numeric parameters: nExpectedCells maxPercentile maxMinRatio indMin indMax umiMin umiMinFracMedian candMaxN FDR simN The harcoded values are from CellRanger: 3000 0.99 10 45000 90000 500 0.01 20000 0.01 10000\nstring, example: \"CellRanger2.2\", example: \"3000\", example: \"0.99\", example: \"10\"\n\n\n--soloOutFormatFeaturesGeneField3\nfield 3 in the Gene features.tsv file. If “-”, then no 3rd field is output.\nstring, example: \"Gene Expression\"\n\n\n--soloCellReadStats\nOutput reads statistics for each CB - Standard … standard output\nstring" + }, + { + "objectID": "components/modules/mapping/star_align.html#authors", + "href": "components/modules/mapping/star_align.html#authors", + "title": "Star align", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nRobrecht Cannoodt (author, maintainer)" + }, + { + "objectID": "components/modules/mapping/samtools_sort.html", + "href": "components/modules/mapping/samtools_sort.html", + "title": "Samtools sort", + "section": "", + "text": "ID: samtools_sort\nNamespace: mapping\n\n\n\nSource\nReads are sorted by leftmost coordinates, or by read name when --sort_by_read_names is used.\nAn appropriate @HD-SO sort order header tag will be added or an existing one updated if necessary.\nNote that to generate an index file (by specifying --output_bai), the default coordinate sort must be used. Thus the --sort_by_read_names and --sort_by <TAG> options are incompatible with --output_bai." + }, + { + "objectID": "components/modules/mapping/samtools_sort.html#example-commands", + "href": "components/modules/mapping/samtools_sort.html#example-commands", + "title": "Samtools sort", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/mapping/samtools_sort/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\nminimizer_cluster: false\n# minimizer_kmer: 20\nsort_by_read_names: false\n# sort_by: \"foo\"\nno_pg: false\n\n# Input\ninput: # please fill in - example: \"input.bam\"\n\n# Output\n# output_bam: \"$id.$key.output_bam.bam\"\n# output_bai: \"$id.$key.output_bai.bai\"\n# output_format: \"bam\"\n# compression: 5\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/mapping/samtools_sort/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/mapping/samtools_sort.html#argument-groups", + "href": "components/modules/mapping/samtools_sort.html#argument-groups", + "title": "Samtools sort", + "section": "Argument groups", + "text": "Argument groups\n\nInput\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nPath to the SAM/BAM/CRAM files containing the mapped reads.\nfile, required, example: \"input.bam\"\n\n\n\n\n\nOutput\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output_bam\nFilename to output the counts to.\nfile, required, example: \"output.bam\"\n\n\n--output_bai\nBAI-format index for BAM file.\nfile, example: \"output.bam.bai\"\n\n\n--output_format\nThe output format. By default, samtools tries to select a format based on the -o filename extension; if output is to standard output or no format can be deduced, bam is selected.\nstring, example: \"bam\"\n\n\n--compression\nCompression level, from 0 (uncompressed) to 9 (best\ninteger, example: 5\n\n\n\n\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--minimizer_cluster\nSort unmapped reads (those in chromosome “*“) by their sequence minimiser (Schleimer et al., 2003; Roberts et al., 2004), also reverse complementing as appropriate. This has the effect of collating some similar data together, improving the compressibility of the unmapped sequence. The minimiser kmer size is adjusted using the -K option. Note data compressed in this manner may need to be name collated prior to conversion back to fastq. Mapped sequences are sorted by chromosome and position.\nboolean_true\n\n\n--minimizer_kmer\nSets the kmer size to be used in the -M option.\ninteger, example: 20\n\n\n--sort_by_read_names\nSort by read names (i.e., the QNAME field) rather than by chromosomal coordinates.\nboolean_true\n\n\n--sort_by\nSort first by this value in the alignment tag, then by position or name (if also using -n).\nstring\n\n\n--no_pg\nDo not add a @PG line to the header of the output file.\nboolean_true" + }, + { + "objectID": "components/modules/mapping/samtools_sort.html#authors", + "href": "components/modules/mapping/samtools_sort.html#authors", + "title": "Samtools sort", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (author, maintainer)\nAngela Oliveira Pisco (author)" + }, + { + "objectID": "components/modules/mapping/cellranger_count_split.html", + "href": "components/modules/mapping/cellranger_count_split.html", + "title": "Cellranger count split", + "section": "", + "text": "ID: cellranger_count_split\nNamespace: mapping\n\n\n\nSource" + }, + { + "objectID": "components/modules/mapping/cellranger_count_split.html#example-commands", + "href": "components/modules/mapping/cellranger_count_split.html#example-commands", + "title": "Cellranger count split", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/mapping/cellranger_count_split/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input_dir\"\n# filtered_h5: \"$id.$key.filtered_h5.h5\"\n# metrics_summary: \"$id.$key.metrics_summary.csv\"\n# molecule_info: \"$id.$key.molecule_info.h5\"\n# bam: \"$id.$key.bam.bam\"\n# bai: \"$id.$key.bai.bai\"\n# raw_h5: \"$id.$key.raw_h5.h5\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/mapping/cellranger_count_split/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/mapping/cellranger_count_split.html#argument-group", + "href": "components/modules/mapping/cellranger_count_split.html#argument-group", + "title": "Cellranger count split", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nOutput directory from a Cell Ranger count run.\nfile, required, example: \"input_dir\"\n\n\n--filtered_h5\n\nfile, example: \"filtered_feature_bc_matrix.h5\"\n\n\n--metrics_summary\n\nfile, example: \"metrics_summary.csv\"\n\n\n--molecule_info\n\nfile, example: \"molecule_info.h5\"\n\n\n--bam\n\nfile, example: \"possorted_genome_bam.bam\"\n\n\n--bai\n\nfile, example: \"possorted_genome_bam.bam.bai\"\n\n\n--raw_h5\n\nfile, example: \"raw_feature_bc_matrix.h5\"" + }, + { + "objectID": "components/modules/mapping/cellranger_count_split.html#authors", + "href": "components/modules/mapping/cellranger_count_split.html#authors", + "title": "Cellranger count split", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nSamuel D’Souza (author)\nRobrecht Cannoodt (author, maintainer)" + }, + { + "objectID": "components/modules/velocity/velocyto.html", + "href": "components/modules/velocity/velocyto.html", + "title": "Velocyto", + "section": "", + "text": "ID: velocyto\nNamespace: velocity\n\n\n\nSource" + }, + { + "objectID": "components/modules/velocity/velocyto.html#example-commands", + "href": "components/modules/velocity/velocyto.html#example-commands", + "title": "Velocyto", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/velocity/velocyto/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"path/to/file\"\ntranscriptome: # please fill in - example: \"path/to/file\"\n# barcode: \"path/to/file\"\nwithout_umi: false\n# output: \"$id.$key.output.output\"\nlogic: \"Default\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/velocity/velocyto/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/velocity/velocyto.html#argument-group", + "href": "components/modules/velocity/velocyto.html#argument-group", + "title": "Velocyto", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nPath to BAM file\nfile, required\n\n\n--transcriptome\nPath to GTF file\nfile, required\n\n\n--barcode\nValid barcodes file, to filter the bam. If –bcfile is not specified all the cell barcodes will be included. Cell barcodes should be specified in the bcfile as the ‘CB’ tag for each read\nfile\n\n\n--without_umi\nfoo\nboolean_true\n\n\n--output\nVelocyto loom file\nfile, required\n\n\n--logic\nThe logic to use for the filtering.\nstring, default: \"Default\"" + }, + { + "objectID": "components/modules/velocity/velocyto.html#authors", + "href": "components/modules/velocity/velocyto.html#authors", + "title": "Velocyto", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (maintainer)" + }, + { + "objectID": "components/workflows/integration/common/harmony_leiden.html", + "href": "components/workflows/integration/common/harmony_leiden.html", + "title": "Harmony leiden", + "section": "", + "text": "ID: harmony_leiden\nNamespace: integration/common\n\n\n\nSource" + }, + { + "objectID": "components/workflows/integration/common/harmony_leiden.html#example-commands", + "href": "components/workflows/integration/common/harmony_leiden.html#example-commands", + "title": "Harmony leiden", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.9.0 -latest \\\n -main-script workflows/multiomics/integration/harmony_leiden/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"dataset.h5mu\"\nlayer: \"log_normalized\"\nmodality: \"rna\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n\n# Neighbour calculation\nuns_neighbors: \"harmonypy_integration_neighbors\"\nobsp_neighbor_distances: \"harmonypy_integration_distances\"\nobsp_neighbor_connectivities: \"harmonypy_integration_connectivities\"\n\n# Harmony integration options\nembedding: \"X_pca\"\nobsm_integrated: \"X_pca_integrated\"\nobs_covariates: # please fill in - example: [\"batch\", \"sample\"]\ntheta: [2]\n\n# Clustering options\nobs_cluster: \"harmony_integration_leiden\"\nleiden_resolution: [1]\n\n# Umap options\nobsm_umap: \"X_leiden_harmony_umap\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.9.0 -latest \\\n -profile docker \\\n -main-script workflows/multiomics/integration/harmony_leiden/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/integration/common/harmony_leiden.html#argument-groups", + "href": "components/workflows/integration/common/harmony_leiden.html#argument-groups", + "title": "Harmony leiden", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"dataset.h5mu\"\n\n\n--layer\nuse specified layer for expression values instead of the .X object from the modality.\nstring, default: \"log_normalized\"\n\n\n--modality\nWhich modality to process.\nstring, default: \"rna\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nNeighbour calculation\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--uns_neighbors\nIn which .uns slot to store various neighbor output objects.\nstring, default: \"harmonypy_integration_neighbors\"\n\n\n--obsp_neighbor_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"harmonypy_integration_distances\"\n\n\n--obsp_neighbor_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"harmonypy_integration_connectivities\"\n\n\n\n\n\nHarmony integration options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--embedding\nEmbedding to use as input\nstring, default: \"X_pca\"\n\n\n--obsm_integrated\nIn which .obsm slot to store the resulting integrated embedding.\nstring, default: \"X_pca_integrated\"\n\n\n--obs_covariates\nThe .obs field(s) that define the covariate(s) to regress out.\nstring, required, example: \"batch\", example: \"sample\"\n\n\n--theta\nDiversity clustering penalty parameter. Specify for each variable in group.by.vars. theta=0 does not encourage any diversity. Larger values of theta result in more diverse clusters.”\ndouble, default: 2\n\n\n\n\n\nClustering options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obs_cluster\nName of the .obs key under which to add the cluster labels.\nstring, default: \"harmony_integration_leiden\"\n\n\n--leiden_resolution\nControl the coarseness of the clustering. Higher values lead to more clusters.\ndouble, default: 1\n\n\n\n\n\nUmap options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_umap\nIn which .obsm slot to store the resulting UMAP embedding.\nstring, default: \"X_leiden_harmony_umap\"" + }, + { + "objectID": "components/workflows/integration/common/harmony_leiden.html#authors", + "href": "components/workflows/integration/common/harmony_leiden.html#authors", + "title": "Harmony leiden", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author)" + }, + { + "objectID": "components/workflows/integration/common/harmony_leiden.html#visualisation", + "href": "components/workflows/integration/common/harmony_leiden.html#visualisation", + "title": "Harmony leiden", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p12(harmonypy)\n p22(find_neighbors)\n p32(leiden)\n p42(umap)\n p52(move_obsm_to_obs)\n p60(Output)\n p0-->p2\n p2-->p4\n p4-->p12\n p12-->p22\n p22-->p32\n p32-->p42\n p42-->p52\n p52-->p60" + }, + { + "objectID": "components/workflows/integration/initialize_integration/initialize_integration.html", + "href": "components/workflows/integration/initialize_integration/initialize_integration.html", + "title": "Initialize integration", + "section": "", + "text": "ID: initialize_integration\nNamespace: integration/initialize_integration\n\n\n\nSource" + }, + { + "objectID": "components/workflows/integration/initialize_integration/initialize_integration.html#example-commands", + "href": "components/workflows/integration/initialize_integration/initialize_integration.html#example-commands", + "title": "Initialize integration", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.9.0 -latest \\\n -main-script workflows/multiomics/integration/initialize_integration/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"dataset.h5mu\"\nlayer: \"log_normalized\"\nmodality: \"rna\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n\n# PCA options\nobsm_pca: \"X_pca\"\n# var_pca_feature_selection: \"foo\"\n\n# Neighbour calculation\nuns_neighbors: \"neighbors\"\nobsp_neighbor_distances: \"distances\"\nobsp_neighbor_connectivities: \"connectivities\"\n\n# Umap options\nobsm_umap: \"X_umap\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.9.0 -latest \\\n -profile docker \\\n -main-script workflows/multiomics/integration/initialize_integration/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/integration/initialize_integration/initialize_integration.html#argument-groups", + "href": "components/workflows/integration/initialize_integration/initialize_integration.html#argument-groups", + "title": "Initialize integration", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"dataset.h5mu\"\n\n\n--layer\nuse specified layer for expression values instead of the .X object from the modality.\nstring, default: \"log_normalized\"\n\n\n--modality\nWhich modality to process.\nstring, default: \"rna\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nPCA options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_pca\nIn which .obsm slot to store the resulting PCA embedding.\nstring, default: \"X_pca\"\n\n\n--var_pca_feature_selection\nColumn name in .var matrix that will be used to select which genes to run the PCA on.\nstring\n\n\n\n\n\nNeighbour calculation\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--uns_neighbors\nIn which .uns slot to store various neighbor output objects.\nstring, default: \"neighbors\"\n\n\n--obsp_neighbor_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"distances\"\n\n\n--obsp_neighbor_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"connectivities\"\n\n\n\n\n\nUmap options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_umap\nIn which .obsm slot to store the resulting UMAP embedding.\nstring, default: \"X_umap\"" + }, + { + "objectID": "components/workflows/integration/initialize_integration/initialize_integration.html#authors", + "href": "components/workflows/integration/initialize_integration/initialize_integration.html#authors", + "title": "Initialize integration", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author)" + }, + { + "objectID": "components/workflows/integration/initialize_integration/initialize_integration.html#visualisation", + "href": "components/workflows/integration/initialize_integration/initialize_integration.html#visualisation", + "title": "Initialize integration", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p12(pca)\n p22(find_neighbors)\n p32(umap)\n p40(Output)\n p0-->p2\n p2-->p4\n p4-->p12\n p12-->p22\n p22-->p32\n p32-->p40" + }, + { + "objectID": "components/workflows/ingestion/bd_rhapsody.html", + "href": "components/workflows/ingestion/bd_rhapsody.html", + "title": "BD Rhapsody", + "section": "", + "text": "ID: bd_rhapsody\nNamespace: ingestion\n\n\n\nSource\nA wrapper for the BD Rhapsody Analysis CWL v1.10.1 pipeline.\nThis pipeline can be used for a targeted analysis (with --mode targeted) or for a whole transcriptome analysis (with --mode wta).\nThe reference_genome and transcriptome_annotation files can be generated with the make_reference pipeline. Alternatively, BD also provides standard references which can be downloaded from these locations:" + }, + { + "objectID": "components/workflows/ingestion/bd_rhapsody.html#example-commands", + "href": "components/workflows/ingestion/bd_rhapsody.html#example-commands", + "title": "BD Rhapsody", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/ingestion/bd_rhapsody/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nmode: # please fill in - example: \"wta\"\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: [\"input.fastq.gz\"]\nreference: # please fill in - example: [\"reference_genome.tar.gz|reference.fasta\"]\n# transcriptome_annotation: \"transcriptome.gtf\"\n# abseq_reference: [\"abseq_reference.fasta\"]\n# supplemental_reference: [\"supplemental_reference.fasta\"]\nsample_prefix: \"sample\"\n\n# Outputs\n# output_raw: \"$id.$key.output_raw.output_raw\"\n# output_h5mu: \"$id.$key.output_h5mu.h5mu\"\n\n# Putative cell calling settings\n# putative_cell_call: \"mRNA\"\n# exact_cell_count: 10000\ndisable_putative_calling: false\n\n# Subsample arguments\n# subsample: 0.01\n# subsample_seed: 3445\n\n# Multiplex arguments\n# sample_tags_version: \"human\"\n# tag_names: [\"4-mySample\", \"9-myOtherSample\", \"6-alsoThisSample\"]\n\n# VDJ arguments\n# vdj_version: \"human\"\n\n# CWL-runner arguments\nparallel: true\ntimestamps: false\ndryrun: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/ingestion/bd_rhapsody/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/ingestion/bd_rhapsody.html#argument-groups", + "href": "components/workflows/ingestion/bd_rhapsody.html#argument-groups", + "title": "BD Rhapsody", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--mode\nWhether to run a whole transcriptome analysis (WTA) or a targeted analysis.\nstring, required, example: \"wta\"\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to your read files in the FASTQ.GZ format. You may specify as many R1/R2 read pairs as you want.\nfile, required, example: \"input.fastq.gz\"\n\n\n--reference\nRefence to map to. For --mode wta, this is the path to STAR index as a tar.gz file. For --mode targeted, this is the path to mRNA reference file for pre-designed, supplemental, or custom panel, in FASTA format\nfile, required, example: \"reference_genome.tar.gz|reference.fasta\"\n\n\n--transcriptome_annotation\nPath to GTF annotation file (only for --mode wta).\nfile, example: \"transcriptome.gtf\"\n\n\n--abseq_reference\nPath to the AbSeq reference file in FASTA format. Only needed if BD AbSeq Ab-Oligos are used.\nfile, example: \"abseq_reference.fasta\"\n\n\n--supplemental_reference\nPath to the supplemental reference file in FASTA format. Only needed if there are additional transgene sequences used in the experiment (only for --mode wta).\nfile, example: \"supplemental_reference.fasta\"\n\n\n--sample_prefix\nSpecify a run name to use as the output file base name. Use only letters, numbers, or hyphens. Do not use special characters or spaces.\nstring, default: \"sample\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output_raw\nThe BD Rhapsody output folder as it comes out of the BD Rhapsody pipeline\nfile, required, example: \"output_dir\"\n\n\n--output_h5mu\nThe converted h5mu file.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nPutative cell calling settings\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--putative_cell_call\nSpecify the dataset to be used for putative cell calling. For putative cell calling using an AbSeq dataset, please provide an AbSeq_Reference fasta file above.\nstring, example: \"mRNA\"\n\n\n--exact_cell_count\nExact cell count - Set a specific number (>=1) of cells as putative, based on those with the highest error-corrected read count\ninteger, example: 10000\n\n\n--disable_putative_calling\nDisable Refined Putative Cell Calling - Determine putative cells using only the basic algorithm (minimum second derivative along the cumulative reads curve). The refined algorithm attempts to remove false positives and recover false negatives, but may not be ideal for certain complex mixtures of cell types. Does not apply if Exact Cell Count is set.\nboolean_true\n\n\n\n\n\nSubsample arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--subsample\nA number >1 or fraction (0 < n < 1) to indicate the number or percentage of reads to subsample.\ndouble, example: 0.01\n\n\n--subsample_seed\nA seed for replicating a previous subsampled run.\ninteger, example: 3445\n\n\n\n\n\nMultiplex arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--sample_tags_version\nSpecify if multiplexed run.\nstring, example: \"human\"\n\n\n--tag_names\nTag_Names (optional) - Specify the tag number followed by ‘-’ and the desired sample name to appear in Sample_Tag_Metrics.csv. Do not use the special characters: &, (), [], {}, <>, ?, |\nstring, example: \"4-mySample\", example: \"9-myOtherSample\", example: \"6-alsoThisSample\"\n\n\n\n\n\nVDJ arguments\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--vdj_version\nSpecify if VDJ run.\nstring, example: \"human\"\n\n\n\n\n\nCWL-runner arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--parallel\nRun jobs in parallel.\nboolean, default: TRUE\n\n\n--timestamps\nAdd timestamps to the errors, warnings, and notifications.\nboolean_true\n\n\n--dryrun\nIf true, the output directory will only contain the CWL input files, but the pipeline itself will not be executed.\nboolean_true" + }, + { + "objectID": "components/workflows/ingestion/bd_rhapsody.html#authors", + "href": "components/workflows/ingestion/bd_rhapsody.html#authors", + "title": "BD Rhapsody", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (maintainer)" + }, + { + "objectID": "components/workflows/ingestion/bd_rhapsody.html#visualisation", + "href": "components/workflows/ingestion/bd_rhapsody.html#visualisation", + "title": "BD Rhapsody", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p10(bd_rhapsody)\n p12(join)\n p20(from_bdrhap_to_h5mu)\n p22(join)\n p28(Output)\n p0-->p2\n p2-->p4\n p4-->p12\n p4-->p10\n p10-->p12\n p12-->p22\n p12-->p20\n p20-->p22\n p22-->p28" + }, + { + "objectID": "components/workflows/ingestion/conversion.html", + "href": "components/workflows/ingestion/conversion.html", + "title": "Conversion", + "section": "", + "text": "ID: conversion\nNamespace: ingestion\n\n\n\nSource" + }, + { + "objectID": "components/workflows/ingestion/conversion.html#example-commands", + "href": "components/workflows/ingestion/conversion.html#example-commands", + "title": "Conversion", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/ingestion/conversion/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: [\"input.h5mu\"]\ninput_type: # please fill in - example: \"foo\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n\n# Conversion from h5ad\n# modality: [\"foo\"]\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/ingestion/conversion/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/ingestion/conversion.html#argument-groups", + "href": "components/workflows/ingestion/conversion.html#argument-groups", + "title": "Conversion", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"input.h5mu\"\n\n\n--input_type\nType of the input file\nstring, required\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nName or template for the output files.\nfile, example: \"output.h5mu\"\n\n\n\n\n\nConversion from h5ad\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--modality\nName of the modality where the h5ad is stored in the h5mu object.\nstring" + }, + { + "objectID": "components/workflows/ingestion/conversion.html#authors", + "href": "components/workflows/ingestion/conversion.html#authors", + "title": "Conversion", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author, maintainer)\nDries De Maeyer (author)" + }, + { + "objectID": "components/workflows/ingestion/conversion.html#visualisation", + "href": "components/workflows/ingestion/conversion.html#visualisation", + "title": "Conversion", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p5(filter)\n p10(from_10xh5_to_h5mu)\n p12(join)\n p35(mix)\n p15(filter)\n p20(from_10xmtx_to_h5mu)\n p22(join)\n p25(filter)\n p30(from_h5ad_to_h5mu)\n p32(join)\n p37(toSortedList)\n p39(Output)\n p4-->p5\n p4-->p15\n p4-->p25\n p0-->p2\n p2-->p4\n p5-->p12\n p5-->p10\n p10-->p12\n p12-->p35\n p15-->p22\n p15-->p20\n p20-->p22\n p22-->p35\n p25-->p32\n p25-->p30\n p30-->p32\n p32-->p35\n p35-->p37\n p37-->p39" + }, + { + "objectID": "components/workflows/ingestion/cellranger_postprocessing.html", + "href": "components/workflows/ingestion/cellranger_postprocessing.html", + "title": "Cell Ranger post-processing", + "section": "", + "text": "ID: cellranger_postprocessing\nNamespace: ingestion\n\n\n\nSource" + }, + { + "objectID": "components/workflows/ingestion/cellranger_postprocessing.html#example-commands", + "href": "components/workflows/ingestion/cellranger_postprocessing.html#example-commands", + "title": "Cell Ranger post-processing", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/ingestion/cellranger_postprocessing/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"input.h5mu\"\n\n# Outputs\n# output: \"$id.$key.output.output\"\n\n# Correction arguments\nperform_correction: false\ncellbender_epochs: 150\n\n# Filtering arguments\n# min_genes: 100\n# min_counts: 1000\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/ingestion/cellranger_postprocessing/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/ingestion/cellranger_postprocessing.html#argument-groups", + "href": "components/workflows/ingestion/cellranger_postprocessing.html#argument-groups", + "title": "Cell Ranger post-processing", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nInput h5mu file created by running Cell Ranger and converting its output to h5mu.\nfile, required, example: \"input.h5mu\"\n\n\n\n\n\nOutputs\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nThe converted h5mu file.\nfile\n\n\n\n\n\nCorrection arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--perform_correction\nWhether or not to run CellBender to perform count correction.\nboolean_true\n\n\n--cellbender_epochs\nNumber of epochs to run CellBender for.\ninteger, default: 150\n\n\n\n\n\nFiltering arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--min_genes\nMinimum number of counts required for a cell to pass filtering.\ninteger, example: 100\n\n\n--min_counts\nMinimum number of genes expressed required for a cell to pass filtering.\ninteger, example: 1000" + }, + { + "objectID": "components/workflows/ingestion/cellranger_postprocessing.html#authors", + "href": "components/workflows/ingestion/cellranger_postprocessing.html#authors", + "title": "Cell Ranger post-processing", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nRobrecht Cannoodt (author, maintainer)" + }, + { + "objectID": "components/workflows/ingestion/cellranger_postprocessing.html#visualisation", + "href": "components/workflows/ingestion/cellranger_postprocessing.html#visualisation", + "title": "Cell Ranger post-processing", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p6(from_10xh5_to_h5mu)\n p8(join)\n p12(toSortedList)\n p14(flatMap)\n p15(filter)\n p21(cellbender_remove_background)\n p23(join)\n p27(mix)\n p26(filter)\n p28(filter)\n p34(filter_with_counts)\n p36(join)\n p40(mix)\n p39(filter)\n p46(publish)\n p48(join)\n p54(Output)\n p14-->p15\n p14-->p26\n p26-->p27\n p27-->p28\n p27-->p39\n p39-->p40\n p0-->p8\n p0-->p6\n p6-->p8\n p8-->p12\n p12-->p14\n p15-->p23\n p15-->p21\n p21-->p23\n p23-->p27\n p28-->p36\n p28-->p34\n p34-->p36\n p36-->p40\n p40-->p48\n p40-->p46\n p46-->p48\n p48-->p54" + }, + { + "objectID": "components/workflows/multiomics/rna_multisample.html", + "href": "components/workflows/multiomics/rna_multisample.html", + "title": "Rna multisample", + "section": "", + "text": "ID: rna_multisample\nNamespace: multiomics\n\n\n\nSource" + }, + { + "objectID": "components/workflows/multiomics/rna_multisample.html#example-commands", + "href": "components/workflows/multiomics/rna_multisample.html#example-commands", + "title": "Rna multisample", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/multiomics/rna_multisample/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"concatenated\"\ninput: # please fill in - example: \"dataset.h5mu\"\n\n# Output\n# output: \"$id.$key.output.h5mu\"\n\n# Filtering highly variable genes\nfilter_with_hvg_var_output: \"filter_with_hvg\"\nfilter_with_hvg_obs_batch_key: \"sample_id\"\nfilter_with_hvg_flavor: \"seurat\"\n# filter_with_hvg_n_top_genes: 123\n\n# QC metrics calculation options\nvar_qc_metrics: [\"filter_with_hvg\"]\ntop_n_vars: [50, 100, 200, 500]\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/multiomics/rna_multisample/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/multiomics/rna_multisample.html#argument-groups", + "href": "components/workflows/multiomics/rna_multisample.html#argument-groups", + "title": "Rna multisample", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the concatenated file\nstring, required, example: \"concatenated\"\n\n\n--input\nPath to the samples.\nfile, required, example: \"dataset.h5mu\"\n\n\n\n\n\nOutput\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nFiltering highly variable genes\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--filter_with_hvg_var_output\nIn which .var slot to store a boolean array corresponding to the highly variable genes.\nstring, default: \"filter_with_hvg\"\n\n\n--filter_with_hvg_obs_batch_key\nIf specified, highly-variable genes are selected within each batch separately and merged. This simple process avoids the selection of batch-specific genes and acts as a lightweight batch correction method. For all flavors, genes are first sorted by how many batches they are a HVG. For dispersion-based flavors ties are broken by normalized dispersion. If flavor = ‘seurat_v3’, ties are broken by the median (across batches) rank based on within-batch normalized variance.\nstring, default: \"sample_id\"\n\n\n--filter_with_hvg_flavor\nChoose the flavor for identifying highly variable genes. For the dispersion based methods in their default workflows, Seurat passes the cutoffs whereas Cell Ranger passes n_top_genes.\nstring, default: \"seurat\"\n\n\n--filter_with_hvg_n_top_genes\nNumber of highly-variable genes to keep. Mandatory if filter_with_hvg_flavor is set to ‘seurat_v3’.\ninteger\n\n\n\n\n\nQC metrics calculation options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--var_qc_metrics\nKeys to select a boolean (containing only True or False) column from .var. For each cell, calculate the proportion of total values for genes which are labeled ‘True’, compared to the total sum of the values for all genes.\nstring, default: \"filter_with_hvg\", example: \"ercc,highly_variable\"\n\n\n--top_n_vars\nNumber of top vars to be used to calculate cumulative proportions. If not specified, proportions are not calculated. --top_n_vars 20,50 finds cumulative proportion to the 20th and 50th most expressed vars.\ninteger, default: 50, default: 100, default: 200, default: 500" + }, + { + "objectID": "components/workflows/multiomics/rna_multisample.html#authors", + "href": "components/workflows/multiomics/rna_multisample.html#authors", + "title": "Rna multisample", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (author)\nRobrecht Cannoodt (author, maintainer)\nDries Schaumont (author)" + }, + { + "objectID": "components/workflows/multiomics/rna_multisample.html#visualisation", + "href": "components/workflows/multiomics/rna_multisample.html#visualisation", + "title": "Rna multisample", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p3(toSortedList)\n p5(flatMap)\n p7(toSortedList)\n p9(Output)\n p15(normalize_total)\n p17(join)\n p25(log1p)\n p27(join)\n p35(delete_layer)\n p37(join)\n p45(filter_with_hvg)\n p47(join)\n p55(rna_calculate_qc_metrics)\n p57(join)\n p64(Output)\n p0-->p3\n p3-->p5\n p5-->p7\n p7-->p9\n p5-->p17\n p5-->p15\n p15-->p17\n p17-->p27\n p17-->p25\n p25-->p27\n p27-->p37\n p27-->p35\n p35-->p37\n p37-->p47\n p37-->p45\n p45-->p47\n p47-->p57\n p47-->p55\n p55-->p57\n p57-->p64" + }, + { + "objectID": "components/workflows/multiomics/prot_singlesample.html", + "href": "components/workflows/multiomics/prot_singlesample.html", + "title": "Prot singlesample", + "section": "", + "text": "ID: prot_singlesample\nNamespace: multiomics\n\n\n\nSource" + }, + { + "objectID": "components/workflows/multiomics/prot_singlesample.html#example-commands", + "href": "components/workflows/multiomics/prot_singlesample.html#example-commands", + "title": "Prot singlesample", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/multiomics/prot_singlesample/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Input\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"dataset.h5mu\"\n\n# Output\n# output: \"$id.$key.output.h5mu\"\n\n# Filtering options\n# min_counts: 200\n# max_counts: 5000000\n# min_proteins_per_cell: 200\n# max_proteins_per_cell: 1500000\n# min_cells_per_protein: 3\n# min_fraction_mito: 0\n# max_fraction_mito: 0.2\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/multiomics/prot_singlesample/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/multiomics/prot_singlesample.html#argument-groups", + "href": "components/workflows/multiomics/prot_singlesample.html#argument-groups", + "title": "Prot singlesample", + "section": "Argument groups", + "text": "Argument groups\n\nInput\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"dataset.h5mu\"\n\n\n\n\n\nOutput\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nFiltering options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--min_counts\nMinimum number of counts captured per cell.\ninteger, example: 200\n\n\n--max_counts\nMaximum number of counts captured per cell.\ninteger, example: 5000000\n\n\n--min_proteins_per_cell\nMinimum of non-zero values per cell.\ninteger, example: 200\n\n\n--max_proteins_per_cell\nMaximum of non-zero values per cell.\ninteger, example: 1500000\n\n\n--min_cells_per_protein\nMinimum of non-zero values per gene.\ninteger, example: 3\n\n\n--min_fraction_mito\nMinimum fraction of proteins that are mitochondrial.\ndouble, example: 0\n\n\n--max_fraction_mito\nMaximum fraction of proteins that are mitochondrial.\ndouble, example: 0.2" + }, + { + "objectID": "components/workflows/multiomics/prot_singlesample.html#authors", + "href": "components/workflows/multiomics/prot_singlesample.html#authors", + "title": "Prot singlesample", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (author)\nRobrecht Cannoodt (author, maintainer)\nDries Schaumont (author)" + }, + { + "objectID": "components/workflows/multiomics/prot_singlesample.html#visualisation", + "href": "components/workflows/multiomics/prot_singlesample.html#visualisation", + "title": "Prot singlesample", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p3(toSortedList)\n p5(flatMap)\n p12(filter_with_counts)\n p14(join)\n p22(do_filter)\n p24(join)\n p30(toSortedList)\n p32(Output)\n p0-->p3\n p3-->p5\n p5-->p14\n p5-->p12\n p12-->p14\n p14-->p24\n p14-->p22\n p22-->p24\n p24-->p30\n p30-->p32" + }, + { + "objectID": "components/workflows/multiomics/integration/initialize_integration.html", + "href": "components/workflows/multiomics/integration/initialize_integration.html", + "title": "Initialize integration", + "section": "", + "text": "ID: initialize_integration\nNamespace: multiomics/integration\n\n\n\nSource" + }, + { + "objectID": "components/workflows/multiomics/integration/initialize_integration.html#example-commands", + "href": "components/workflows/multiomics/integration/initialize_integration.html#example-commands", + "title": "Initialize integration", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/multiomics/integration/initialize_integration/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"dataset.h5mu\"\nlayer: \"log_normalized\"\nmodality: \"rna\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n\n# PCA options\nobsm_pca: \"X_pca\"\n# var_pca_feature_selection: \"foo\"\npca_overwrite: false\n\n# Neighbour calculation\nuns_neighbors: \"neighbors\"\nobsp_neighbor_distances: \"distances\"\nobsp_neighbor_connectivities: \"connectivities\"\n\n# Umap options\nobsm_umap: \"X_umap\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/multiomics/integration/initialize_integration/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/multiomics/integration/initialize_integration.html#argument-groups", + "href": "components/workflows/multiomics/integration/initialize_integration.html#argument-groups", + "title": "Initialize integration", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"dataset.h5mu\"\n\n\n--layer\nuse specified layer for expression values instead of the .X object from the modality.\nstring, default: \"log_normalized\"\n\n\n--modality\nWhich modality to process.\nstring, default: \"rna\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nPCA options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_pca\nIn which .obsm slot to store the resulting PCA embedding.\nstring, default: \"X_pca\"\n\n\n--var_pca_feature_selection\nColumn name in .var matrix that will be used to select which genes to run the PCA on.\nstring\n\n\n--pca_overwrite\nAllow overwriting slots for PCA output.\nboolean_true\n\n\n\n\n\nNeighbour calculation\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--uns_neighbors\nIn which .uns slot to store various neighbor output objects.\nstring, default: \"neighbors\"\n\n\n--obsp_neighbor_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"distances\"\n\n\n--obsp_neighbor_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"connectivities\"\n\n\n\n\n\nUmap options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_umap\nIn which .obsm slot to store the resulting UMAP embedding.\nstring, default: \"X_umap\"" + }, + { + "objectID": "components/workflows/multiomics/integration/initialize_integration.html#authors", + "href": "components/workflows/multiomics/integration/initialize_integration.html#authors", + "title": "Initialize integration", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author)" + }, + { + "objectID": "components/workflows/multiomics/integration/initialize_integration.html#visualisation", + "href": "components/workflows/multiomics/integration/initialize_integration.html#visualisation", + "title": "Initialize integration", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p11(pca)\n p13(join)\n p21(find_neighbors)\n p23(join)\n p31(umap)\n p33(join)\n p38(toSortedList)\n p40(Output)\n p0-->p2\n p2-->p4\n p4-->p13\n p4-->p11\n p11-->p13\n p13-->p23\n p13-->p21\n p21-->p23\n p23-->p33\n p23-->p31\n p31-->p33\n p33-->p38\n p38-->p40" + }, + { + "objectID": "components/workflows/multiomics/integration/bbknn_leiden.html", + "href": "components/workflows/multiomics/integration/bbknn_leiden.html", + "title": "Bbknn leiden", + "section": "", + "text": "ID: bbknn_leiden\nNamespace: multiomics/integration\n\n\n\nSource" + }, + { + "objectID": "components/workflows/multiomics/integration/bbknn_leiden.html#example-commands", + "href": "components/workflows/multiomics/integration/bbknn_leiden.html#example-commands", + "title": "Bbknn leiden", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/multiomics/integration/bbknn_leiden/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"dataset.h5mu\"\nlayer: \"log_normalized\"\nmodality: \"rna\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n\n# Bbknn\nobsm_input: \"X_pca\"\nobs_batch: \"sample_id\"\nuns_output: \"bbknn_integration_neighbors\"\nobsp_distances: \"bbknn_integration_distances\"\nobsp_connectivities: \"bbknn_integration_connectivities\"\nn_neighbors_within_batch: 3\nn_pcs: 50\n# n_trim: 123\n\n# Clustering options\nobs_cluster: \"bbknn_integration_leiden\"\nleiden_resolution: 1\n\n# UMAP options\nobsm_umap: \"X_leiden_bbknn_umap\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/multiomics/integration/bbknn_leiden/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/multiomics/integration/bbknn_leiden.html#argument-groups", + "href": "components/workflows/multiomics/integration/bbknn_leiden.html#argument-groups", + "title": "Bbknn leiden", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"dataset.h5mu\"\n\n\n--layer\nuse specified layer for expression values instead of the .X object from the modality.\nstring, default: \"log_normalized\"\n\n\n--modality\nWhich modality to process.\nstring, default: \"rna\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nBbknn\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_input\nThe dimensionality reduction in .obsm to use for neighbour detection. Defaults to X_pca.\nstring, default: \"X_pca\"\n\n\n--obs_batch\n.obs column name discriminating between your batches.\nstring, default: \"sample_id\"\n\n\n--uns_output\nMandatory .uns slot to store various neighbor output objects.\nstring, default: \"bbknn_integration_neighbors\"\n\n\n--obsp_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"bbknn_integration_distances\"\n\n\n--obsp_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"bbknn_integration_connectivities\"\n\n\n--n_neighbors_within_batch\nHow many top neighbours to report for each batch; total number of neighbours in the initial k-nearest-neighbours computation will be this number times the number of batches.\ninteger, default: 3\n\n\n--n_pcs\nHow many dimensions (in case of PCA, principal components) to use in the analysis.\ninteger, default: 50\n\n\n--n_trim\nTrim the neighbours of each cell to these many top connectivities. May help with population independence and improve the tidiness of clustering. The lower the value the more independent the individual populations, at the cost of more conserved batch effect. If None (default), sets the parameter value automatically to 10 times neighbors_within_batch times the number of batches. Set to 0 to skip.\ninteger\n\n\n\n\n\nClustering options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obs_cluster\nPrefix for the .obs keys under which to add the cluster labels. Newly created columns in .obs will be created from the specified value for ‘–obs_cluster’ suffixed with an underscore and one of the resolutions resolutions specified in ‘–leiden_resolution’.\nstring, default: \"bbknn_integration_leiden\"\n\n\n--leiden_resolution\nControl the coarseness of the clustering. Higher values lead to more clusters.\ndouble, default: 1\n\n\n\n\n\nUMAP options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_umap\nIn which .obsm slot to store the resulting UMAP embedding.\nstring, default: \"X_leiden_bbknn_umap\"" + }, + { + "objectID": "components/workflows/multiomics/integration/bbknn_leiden.html#authors", + "href": "components/workflows/multiomics/integration/bbknn_leiden.html#authors", + "title": "Bbknn leiden", + "section": "Authors", + "text": "Authors\n\nMauro Saporita (author)\nPovilas Gibas (author)" + }, + { + "objectID": "components/workflows/multiomics/integration/bbknn_leiden.html#visualisation", + "href": "components/workflows/multiomics/integration/bbknn_leiden.html#visualisation", + "title": "Bbknn leiden", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p10(bbknn)\n p12(join)\n p20(leiden)\n p22(join)\n p30(umap)\n p32(join)\n p40(move_obsm_to_obs)\n p42(join)\n p48(Output)\n p0-->p2\n p2-->p4\n p4-->p12\n p4-->p10\n p10-->p12\n p12-->p22\n p12-->p20\n p20-->p22\n p22-->p32\n p22-->p30\n p30-->p32\n p32-->p42\n p32-->p40\n p40-->p42\n p42-->p48" + }, + { + "objectID": "components/workflows/multiomics/integration/leiden_scvi.html", + "href": "components/workflows/multiomics/integration/leiden_scvi.html", + "title": "Leiden scvi", + "section": "", + "text": "ID: leiden_scvi\nNamespace: multiomics/integration\n\n\n\nSource" + }, + { + "objectID": "components/workflows/multiomics/integration/leiden_scvi.html#example-commands", + "href": "components/workflows/multiomics/integration/leiden_scvi.html#example-commands", + "title": "Leiden scvi", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/multiomics/integration/scvi_leiden/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"dataset.h5mu\"\nlayer: \"log_normalized\"\nmodality: \"rna\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# output_model: \"$id.$key.output_model.output_model\"\n\n# Neighbour calculation\nuns_neighbors: \"scvi_integration_neighbors\"\nobsp_neighbor_distances: \"scvi_integration_distances\"\nobsp_neighbor_connectivities: \"scvi_integration_connectivities\"\n\n# Scvi integration options\nobs_batch: # please fill in - example: \"foo\"\nobsm_output: \"X_scvi_integrated\"\n# early_stopping: true\nearly_stopping_monitor: \"elbo_validation\"\nearly_stopping_patience: 45\nearly_stopping_min_delta: 0.0\n# max_epochs: 123\nreduce_lr_on_plateau: true\nlr_factor: 0.6\nlr_patience: 30\n\n# Clustering options\nobs_cluster: \"scvi_integration_leiden\"\nleiden_resolution: [1]\n\n# Umap options\nobsm_umap: \"X_scvi_umap\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/multiomics/integration/scvi_leiden/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/multiomics/integration/leiden_scvi.html#argument-groups", + "href": "components/workflows/multiomics/integration/leiden_scvi.html#argument-groups", + "title": "Leiden scvi", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"dataset.h5mu\"\n\n\n--layer\nuse specified layer for expression values instead of the .X object from the modality.\nstring, default: \"log_normalized\"\n\n\n--modality\nWhich modality to process.\nstring, default: \"rna\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n--output_model\nFolder where the state of the trained model will be saved to.\nfile, required, example: \"output_dir\"\n\n\n\n\n\nNeighbour calculation\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--uns_neighbors\nIn which .uns slot to store various neighbor output objects.\nstring, default: \"scvi_integration_neighbors\"\n\n\n--obsp_neighbor_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"scvi_integration_distances\"\n\n\n--obsp_neighbor_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"scvi_integration_connectivities\"\n\n\n\n\n\nScvi integration options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obs_batch\nColumn name discriminating between your batches.\nstring, required\n\n\n--obsm_output\nIn which .obsm slot to store the resulting integrated embedding.\nstring, default: \"X_scvi_integrated\"\n\n\n--early_stopping\nWhether to perform early stopping with respect to the validation set.\nboolean\n\n\n--early_stopping_monitor\nMetric logged during validation set epoch.\nstring, default: \"elbo_validation\"\n\n\n--early_stopping_patience\nNumber of validation epochs with no improvement after which training will be stopped.\ninteger, default: 45\n\n\n--early_stopping_min_delta\nMinimum change in the monitored quantity to qualify as an improvement, i.e. an absolute change of less than min_delta, will count as no improvement.\ndouble, default: 0\n\n\n--max_epochs\nNumber of passes through the dataset, defaults to (20000 / number of cells) * 400 or 400; whichever is smallest.\ninteger\n\n\n--reduce_lr_on_plateau\nWhether to monitor validation loss and reduce learning rate when validation set lr_scheduler_metric plateaus.\nboolean, default: TRUE\n\n\n--lr_factor\nFactor to reduce learning rate.\ndouble, default: 0.6\n\n\n--lr_patience\nNumber of epochs with no improvement after which learning rate will be reduced.\ndouble, default: 30\n\n\n\n\n\nClustering options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obs_cluster\nPrefix for the .obs keys under which to add the cluster labels. Newly created columns in .obs will be created from the specified value for ‘–obs_cluster’ suffixed with an underscore and one of the resolutions resolutions specified in ‘–leiden_resolution’.\nstring, default: \"scvi_integration_leiden\"\n\n\n--leiden_resolution\nControl the coarseness of the clustering. Higher values lead to more clusters.\ndouble, default: 1\n\n\n\n\n\nUmap options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_umap\nIn which .obsm slot to store the resulting UMAP embedding.\nstring, default: \"X_scvi_umap\"" + }, + { + "objectID": "components/workflows/multiomics/integration/leiden_scvi.html#authors", + "href": "components/workflows/multiomics/integration/leiden_scvi.html#authors", + "title": "Leiden scvi", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author)" + }, + { + "objectID": "components/workflows/multiomics/integration/leiden_scvi.html#visualisation", + "href": "components/workflows/multiomics/integration/leiden_scvi.html#visualisation", + "title": "Leiden scvi", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p3(toSortedList)\n p5(flatMap)\n p12(scvi)\n p14(join)\n p23(find_neighbors)\n p25(join)\n p33(leiden)\n p35(join)\n p43(umap)\n p45(join)\n p53(move_obsm_to_obs)\n p55(join)\n p62(Output)\n p0-->p3\n p3-->p5\n p5-->p14\n p5-->p12\n p12-->p14\n p14-->p25\n p14-->p23\n p23-->p25\n p25-->p35\n p25-->p33\n p33-->p35\n p35-->p45\n p35-->p43\n p43-->p45\n p45-->p55\n p45-->p53\n p53-->p55\n p55-->p62" + }, + { + "objectID": "components/workflows/multiomics/prot_multisample.html", + "href": "components/workflows/multiomics/prot_multisample.html", + "title": "Prot multisample", + "section": "", + "text": "ID: prot_multisample\nNamespace: multiomics\n\n\n\nSource" + }, + { + "objectID": "components/workflows/multiomics/prot_multisample.html#example-commands", + "href": "components/workflows/multiomics/prot_multisample.html#example-commands", + "title": "Prot multisample", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/multiomics/prot_multisample/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"concatenated\"\ninput: # please fill in - example: \"dataset.h5mu\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n\n# QC metrics calculation options\ntop_n_vars: [50, 100, 200, 500]\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/multiomics/prot_multisample/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/multiomics/prot_multisample.html#argument-groups", + "href": "components/workflows/multiomics/prot_multisample.html#argument-groups", + "title": "Prot multisample", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the concatenated file\nstring, required, example: \"concatenated\"\n\n\n--input\nPath to the samples.\nfile, required, example: \"dataset.h5mu\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nQC metrics calculation options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--top_n_vars\nNumber of top vars to be used to calculate cumulative proportions. If not specified, proportions are not calculated. --top_n_vars 20,50 finds cumulative proportion to the 20th and 50th most expressed vars.\ninteger, default: 50, default: 100, default: 200, default: 500" + }, + { + "objectID": "components/workflows/multiomics/prot_multisample.html#authors", + "href": "components/workflows/multiomics/prot_multisample.html#authors", + "title": "Prot multisample", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author)" + }, + { + "objectID": "components/workflows/multiomics/prot_multisample.html#visualisation", + "href": "components/workflows/multiomics/prot_multisample.html#visualisation", + "title": "Prot multisample", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p3(toSortedList)\n p5(flatMap)\n p7(toSortedList)\n p9(Output)\n p15(clr)\n p17(join)\n p25(prot_calculate_qc_metrics)\n p27(join)\n p34(Output)\n p0-->p3\n p3-->p5\n p5-->p7\n p7-->p9\n p5-->p17\n p5-->p15\n p15-->p17\n p17-->p27\n p17-->p25\n p25-->p27\n p27-->p34" + }, + { + "objectID": "components/workflows/multiomics/rna_singlesample.html", + "href": "components/workflows/multiomics/rna_singlesample.html", + "title": "Rna singlesample", + "section": "", + "text": "ID: rna_singlesample\nNamespace: multiomics\n\n\n\nSource" + }, + { + "objectID": "components/workflows/multiomics/rna_singlesample.html#example-commands", + "href": "components/workflows/multiomics/rna_singlesample.html#example-commands", + "title": "Rna singlesample", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/multiomics/rna_singlesample/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Input\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"dataset.h5mu\"\n\n# Output\n# output: \"$id.$key.output.h5mu\"\n\n# Filtering options\n# min_counts: 200\n# max_counts: 5000000\n# min_genes_per_cell: 200\n# max_genes_per_cell: 1500000\n# min_cells_per_gene: 3\n# min_fraction_mito: 0\n# max_fraction_mito: 0.2\n\n# Mitochondrial gene detection\n# var_name_mitochondrial_genes: \"foo\"\n# var_gene_names: \"gene_symbol\"\nmitochondrial_gene_regex: \"^[mM][tT]-\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/multiomics/rna_singlesample/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/multiomics/rna_singlesample.html#argument-groups", + "href": "components/workflows/multiomics/rna_singlesample.html#argument-groups", + "title": "Rna singlesample", + "section": "Argument groups", + "text": "Argument groups\n\nInput\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"dataset.h5mu\"\n\n\n\n\n\nOutput\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nFiltering options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--min_counts\nMinimum number of counts captured per cell.\ninteger, example: 200\n\n\n--max_counts\nMaximum number of counts captured per cell.\ninteger, example: 5000000\n\n\n--min_genes_per_cell\nMinimum of non-zero values per cell.\ninteger, example: 200\n\n\n--max_genes_per_cell\nMaximum of non-zero values per cell.\ninteger, example: 1500000\n\n\n--min_cells_per_gene\nMinimum of non-zero values per gene.\ninteger, example: 3\n\n\n--min_fraction_mito\nMinimum fraction of UMIs that are mitochondrial.\ndouble, example: 0\n\n\n--max_fraction_mito\nMaximum fraction of UMIs that are mitochondrial.\ndouble, example: 0.2\n\n\n\n\n\nMitochondrial gene detection\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--var_name_mitochondrial_genes\nIn which .var slot to store a boolean array corresponding the mitochondrial genes.\nstring\n\n\n--var_gene_names\n.var column name to be used to detect mitochondrial genes instead of .var_names (default if not set). Gene names matching with the regex value from –mitochondrial_gene_regex will be identified as a mitochondrial gene.\nstring, example: \"gene_symbol\"\n\n\n--mitochondrial_gene_regex\nRegex string that identifies mitochondrial genes from –var_gene_names. By default will detect human and mouse mitochondrial genes from a gene symbol.\nstring, default: \"^[mM][tT]-\"" + }, + { + "objectID": "components/workflows/multiomics/rna_singlesample.html#authors", + "href": "components/workflows/multiomics/rna_singlesample.html#authors", + "title": "Rna singlesample", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (author)\nRobrecht Cannoodt (author, maintainer)\nDries Schaumont (author)" + }, + { + "objectID": "components/workflows/multiomics/rna_singlesample.html#visualisation", + "href": "components/workflows/multiomics/rna_singlesample.html#visualisation", + "title": "Rna singlesample", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p3(toSortedList)\n p5(flatMap)\n p12(filter_with_counts)\n p14(join)\n p22(do_filter)\n p24(join)\n p32(filter_with_scrublet)\n p34(join)\n p42(Output)\n p0-->p3\n p3-->p5\n p5-->p14\n p5-->p12\n p12-->p14\n p14-->p24\n p14-->p22\n p22-->p24\n p24-->p34\n p24-->p32\n p32-->p34\n p34-->p42" + }, + { + "objectID": "user_guide/bug_reports.html", + "href": "user_guide/bug_reports.html", + "title": "Bug reports", + "section": "", + "text": "Issues with Openpipelines are being tracked on Github. In order for an issue to be fixed in a timely manner, creating a complete and reproducable is essential." + }, + { + "objectID": "user_guide/running_pipelines.html", + "href": "user_guide/running_pipelines.html", + "title": "Running pipelines", + "section": "", + "text": "Note\n\n\n\nTODO: Fill in these sections.\n\nExamples should be using an OpenPipelines release or the main_build branch.\nPoint to the “Components” tab\n\n\n\n\nInstalling Viash and Nextflow\nBefore you try running OpenPipelines, please install Viash and Nextflow first.\n\nRunning pipelines from the CLI\nbin/nextflow run . \\\n -main-script workflows/integration/multimodal_integration/main.nf \\\n -profile docker \\\n -resume \n --publish_dir foo/\n --input \"bar\"\n --output \"test.txt\"\n\n\nRunning pipelines from Nextflow Tower\n\n\nUsing param_list to pass large parameter sets\nUsing Viash’s VDSL3 nextflow platform, an optional -param_list argument can be used to pass a large number of inputs to a workflow. Additionally, the pipeline parameter values can be set for each input to the workflow independently. A param_list can either be a list of maps, a csv file, a json file, a yaml file, or simply a yaml blob:\n\nA csv file should have column names which correspond to the different arguments of this pipeline. Example: --param_list data.csv with columns id,input.\nA json or a yaml file should be a list of maps, each of which has keys corresponding to the arguments of the pipeline. Example: --param_list data.json with contents [ {'id': 'foo', 'input': 'foo.txt'}, {'id': 'bar', 'input': 'bar.txt'} ].\nA yaml blob can also be passed directly as a string. Example: --param_list \"[ {'id': 'foo', 'input': 'foo.txt'}, {'id': 'bar', 'input': 'bar.txt'} ]\".\nA list of maps can be in a nextflow.config file, where the keys of each map corresponds to the arguments of the pipeline. Example in a nextflow.config file: param_list: [ ['id': 'foo', 'input': 'foo.txt'], ['id': 'bar', 'input': 'bar.txt'] ].\n\nWhen passing a csv, json or yaml file, relative path names are relativized to the location of the parameter file. No relativation is performed when param_list is a list of maps (as-is) or a yaml blob.\nUsing a param_list can be combined with setting parameters that are set for all parameter sets. These ‘gobal’ parameters will always be overwritten with their counterpart that was specified in a more specific manner for a single parameter set. For example, using --param_list \"[ {'id': 'foo', 'input': 'foo.txt'}, {'id': 'bar'} ]\" --input 'global.txt' will result in the following parameter sets being processed:\n\nid: foo, input: foo.txt\nid: bar, input: global.txt" + }, + { + "objectID": "user_guide/index.html#using-the-nf-tower-user-interface", + "href": "user_guide/index.html#using-the-nf-tower-user-interface", + "title": "User Guide", + "section": "Using the nf-tower user-interface", + "text": "Using the nf-tower user-interface" + }, + { + "objectID": "user_guide/index.html#using-the-nf-tower-cli-tw", + "href": "user_guide/index.html#using-the-nf-tower-cli-tw", + "title": "User Guide", + "section": "Using the nf-tower CLI (tw)", + "text": "Using the nf-tower CLI (tw)" + }, + { + "objectID": "user_guide/index.html#using-the-nextflow-cli", + "href": "user_guide/index.html#using-the-nextflow-cli", + "title": "User Guide", + "section": "Using the nextflow CLI", + "text": "Using the nextflow CLI" + }, + { + "objectID": "fundamentals/roadmap.html", + "href": "fundamentals/roadmap.html", + "title": "Roadmap", + "section": "", + "text": "flowchart LR\n classDef done fill:#a3f6cf,stroke:#000000;\n classDef wip fill:#f4cb93,stroke:#000000;\n classDef unprocessed fill:#afadff,stroke:#000000;\n\n Raw1[Sample 1] --> Split1[/Split\\nmodalities/]:::done --> ProcGEX1 & ProcRNAV1 & ProcADT1 & ProcATAC1 & ProcVDJ1\n ProcGEX1[/Process GEX\\nprofile/]:::done --> ConcatGEX[/Concatenate\\nprofiles/]:::done --> ProcGEX[/Process GEX\\nprofiles/]:::done\n ProcRNAV1[/Process RNAV\\nprofile/]:::wip --> ConcatRNAV[/Concatenate\\nprofiles/]:::done --> ProcRNAV[/Process RNAV\\nprofiles/]:::wip\n ProcADT1[/Process ADT\\nprofile/]:::done --> ConcatADT[/Concatenate\\nprofiles/]:::done --> ProcADT[/Process ADT\\nprofiles/]:::done\n ProcATAC1[/Process ATAC\\nprofile/]:::unprocessed --> ConcatATAC[/Concatenate\\nprofiles/]:::done --> ProcATAC[/Process ATAC\\nprofiles/]:::unprocessed\n ProcVDJ1[/Process VDJ\\nprofile/]:::unprocessed --> ConcatVDJ[/Concatenate\\nprofiles/]:::done --> ProcVDJ[/Process VDJ\\nprofiles/]:::unprocessed\n ProcGEX & ProcRNAV & ProcADT & ProcATAC & ProcVDJ --> Merge[/Merge\\nmodalities/]:::done --> SetupIntegration[/Setup\\nintegration/]:::done --> Integration[/Integration/]:::done\n\n\nFigure 1: Status of implemented components. Green: implemented, orange: work in progress, purple: modality included in output but unprocessed,\nGEX: Gene-expression. RNAV: RNA Velocity. ADT: Antibody-Derived Tags. ATAC: Assay for Transposase-Accessible Chromatin." + }, + { + "objectID": "fundamentals/architecture.html", + "href": "fundamentals/architecture.html", + "title": "Architecture", + "section": "", + "text": "OpenPipeline is a pipeline for the processing of multimodal single-cell data that scales to a great many of samples. Covering the architecture requires us to explain many angles, including: what the expected inputs and outputs are for each workflow are, how do the workflows relate to each other, and what the state of the data is at each step of the pipeline. Here is an overview of the general steps involved in processing sequencing data into a single integrated object. We will discuss each of the steps further below.\nflowchart TD \n ingest[\"Ingestion\"] --> split --> unimodalsinglesample[\"Unimodal Single Sample Processing\"] --> concat --> unimodalmultisample[\"Unimodal Multi Sample Processing\"] --> merging --> integation_setup[\"Integration Setup\"] --> integration[\"Integration\"] --> downstreamprocessing[\"Downstream Processing\"]\n\n\nFigure 1: Overview of the steps included in OpenPipeline for the analysis of single cell multiomics data." + }, + { + "objectID": "fundamentals/architecture.html#ingestion-workflows", + "href": "fundamentals/architecture.html#ingestion-workflows", + "title": "Architecture", + "section": "Ingestion workflows", + "text": "Ingestion workflows\nAll of the following workflows from the ingestion namespace have been discussed in more detail in the ingestion section:\n\ningestion/bd_rhapsody\ningestion/cellranger_mapping\ningestion/cellranger_multi\ningestion/demux\ningestion/make_reference" + }, + { + "objectID": "fundamentals/architecture.html#multiomics-workflows", + "href": "fundamentals/architecture.html#multiomics-workflows", + "title": "Architecture", + "section": "Multiomics workflows", + "text": "Multiomics workflows\nThere exists no singlesample workflow. However, the prot_singlesample and rna_singlesample pipelines do exist and they map identically to the functionality described in the single-sample antibody capture processing and single-sample gene expression processing sections respectively. If you would like to process your samples as described in the unimodal single sample processing section, you can execute both workflows in tandem for the two modalities.\nContrary to the workflows for single sample processing, there exists a multiomics/multisample workflow. However this workflow is not just the multiomics/prot_multisample and multiomics/rna_multisample workflows that have been combined. Instead, it combines the multiomics/prot_multisample, multiomics/rna_multisample and multiomics/integration/initialize_integration workflows. The purpose of this pipeline is to provide an extra ‘entrypoint’ into the full pipeline that skips the singlesample processing, allowing reprocessing samples that have already been processed before. A popular usecase is to manually select one or more celltypes which need to be processed again or the integration of observations from multiple experiments into a single dataset. Keep in mind that concatenation is not included in the multisample pipeline, so when multiple input files are specified they are processed in parallel. If you would like to integrate multiple experiments, you need to first concatenate them in a seperate step:" + }, + { + "objectID": "fundamentals/architecture.html#the-full-pipeline", + "href": "fundamentals/architecture.html#the-full-pipeline", + "title": "Architecture", + "section": "The “full” pipeline", + "text": "The “full” pipeline\nThe name of this pipeline is a bit of a misnomer, because it does not include all the steps from ingestion to integration. As will be discussed in the ingestion section, which ingestion strategy you need is dependant on your technology provider and the chosen platform. For integration, there exist many methods and combination of methods, and you may wish to choose which integration methods are applicable for your usecase. As a consequence, these two stages in the analysis of single-cell need to be executed seperatly and not as part of a single unified pipeline. All other steps outlined below on the other hand are included into the “full” pipeline, which can therefore be summarized in the following figure:\n\n\n\n\n\nflowchart TD \n split --> unimodalsinglesample[\"Unimodal Single Sample Processing\"] --> concat --> unimodalmultisample[\"Unimodal Multi Sample Processing\"] --> merging --> integation_setup\n\n\nFigure 2: Overview of the steps included in the full pipelines from OpenPipeline." + }, + { + "objectID": "fundamentals/architecture.html#integration-workflows", + "href": "fundamentals/architecture.html#integration-workflows", + "title": "Architecture", + "section": "Integration workflows", + "text": "Integration workflows\nFor each of the integration methods (and their optional combination with other tools), a seperate pipeline is defined. More information for each of the pipelines is available in the integration methods section.\n\nmultiomics/integration/bbknn_leiden\nmultiomics/integration/harmony_leiden\nmultiomics/integration/scanorama_leiden\nmultiomics/integration/scvi_leiden\nmultiomics/integration/totalvi_leiden\nmultiomics/integration/initialize_integration" + }, + { + "objectID": "fundamentals/architecture.html#sec-splitting", + "href": "fundamentals/architecture.html#sec-splitting", + "title": "Architecture", + "section": "Splitting modalities", + "text": "Splitting modalities\nWe refer to splitting modalities when multimodal MuData file is split into several unimodal MuData files. The number of output files is equal to the number of modalities present in the input file. Splitting the modalities works on MuData files containing data for multiple samples or for single-sample files." + }, + { + "objectID": "fundamentals/architecture.html#sec-merging", + "href": "fundamentals/architecture.html#sec-merging", + "title": "Architecture", + "section": "Merging of modalities", + "text": "Merging of modalities\nMerging refers to combining multiple files with data for one modality into a single output file that contains all input modalities. It is the inverse operation of splitting the modalities." + }, + { + "objectID": "fundamentals/architecture.html#concatenation-of-samples", + "href": "fundamentals/architecture.html#concatenation-of-samples", + "title": "Architecture", + "section": "Concatenation of samples", + "text": "Concatenation of samples\nJoining of observations for different samples, stored in their respective MuData file, into a single MuData file for all samples together is called sample concatenation. In practice, this operation is performed for each modality separately. An extra column (with default name sample_id) is added to the annotation of the observations (.obs) to indicate where each observation originated from.\n\n\n\n\n\n\nSpecial care must be taken when considering annotations for observations and features while concatenating the samples. Indeed, the data from different samples can contain conflicting information. Openpipeline’s concat component provides an argument other_axis_mode that allows a user to specify what happens when conflicting information is found. The move option for this argument is the default behavior. In this mode, each annotation column (from .obs and .var) is compared across samples. When no conflicts are found or the column is unique for a sample, the column is added output object. When a conflict does occur, all of the columns are gathered from the samples and stored into a dataframe. This dataframe is then stored into .obsm for annotations for the observations and .varm for feature annotations. This way, a user can have a look at the conflicts and decide what to do with them." + }, + { + "objectID": "fundamentals/architecture.html#creating-a-transcriptomics-reference", + "href": "fundamentals/architecture.html#creating-a-transcriptomics-reference", + "title": "Architecture", + "section": "Creating a transcriptomics reference", + "text": "Creating a transcriptomics reference\nMapping reads from the FASTQ files to features requires a reference that needs to be provided to the mapping component. Depending on the usecase, you might even need to provide references specific for the modalities that you are trying to analyze. For gene expression data, the reference is a reference genome, together with its appropriate gene annotation. A genome reference is often indexed in order to improve the mapping speed. Additionally, some mapping frameworks provided by the single-cell technology providers require extra preprocessing of the reference before they can be used with their worklow. OpenPipelines provides a make_reference that allows you to create references in many formats which can be used to map your reads to." + }, + { + "objectID": "fundamentals/architecture.html#sec-single-sample-gex", + "href": "fundamentals/architecture.html#sec-single-sample-gex", + "title": "Architecture", + "section": "Single-sample Gene Expression Processing", + "text": "Single-sample Gene Expression Processing\nSingle-sample gene expression processing involves two steps: removing cells based on count statistics and flagging observations originating from doublets.\nThe removal of cells based on basic count statistics is split up into two parts: first, cells are flagged for removal by filter_with_counts. It flags observations based on several thresholds:\n\nThe number of genes that have a least a single count. Both a maximum and minimum number of genes for a cell to be removed can be specified.\nThe percentage of read counts that originated from a mitochodrial genes. Cells can be filtered based on both a maximum or minimum fraction of mitochondrial genes.\nThe minimum or maximum total number of counts captured per cell. Cells with 0 total counts are always removed.\n\nFlagging cells for removal involved adding a boolean column to the .obs dataframe. After the cells have been flagged for removal, the cells are actually filtered using do_filter, which reads the values in .obs and removed the cells labeled True. This applies the general phylosophy of “separation of concerns”: one component is responsible for labeling the cells, another for removing them. This keeps the codebase for a single component small and its functionality testable.\nThe next and final step in the single-sample gene expression processing is doublet detection using filter_with_scrublet. Like filter_with_counts, it will not remove cells but add a column to .obs (which have the name filter_with_scrublet by default). The single-sample GEX workflow will not remove not be removed during the processing (hence no do_filter). However, you can choose to remove them yourself before doing your analyses by applying a filter with the column in .obs yourself." + }, + { + "objectID": "fundamentals/architecture.html#sec-single-sample-adt", + "href": "fundamentals/architecture.html#sec-single-sample-adt", + "title": "Architecture", + "section": "Single-sample Antibody Capture Processing", + "text": "Single-sample Antibody Capture Processing\nThe process of filtering antibody capture data is similar to the filtering in the single-sample gene-expression processing, but without doublet detection. In some particular cases you can use your ADT data to perform doublet detection using for example cell-type maskers. More information can be found in the single-cell best practices book." + }, + { + "objectID": "fundamentals/architecture.html#multisample-gene-expression-processing", + "href": "fundamentals/architecture.html#multisample-gene-expression-processing", + "title": "Architecture", + "section": "Multisample Gene Expression Processing", + "text": "Multisample Gene Expression Processing\nProcessing multisample gene expression involved the following steps:\n\nNormalization: Normalization aims to adjust the raw counts in the dataset for variable sampling effects by scaling the observable variance to a specified range. There are different ways to transform the data, but the normalization method is to make sure each observation (cell) has a total count equal to the median of total counts over all genes for observations (cells) before normalization.\nLog transformation: Calculates \\(X = ln(X + 1)\\), which converts multiplicative relative changes to additive differences. This allows for interpreting the gene expression in terms of relative, rather than absolute, abundances of genes.\nHighly variable gene detection: Detects genes that have a large change in expression between samples. By default, OpenPipeline uses the method from Seurat (Satija et al.). As with other “filtering” components, the filter_with_hvg component does not remove features, but rather annotates genes of interest by adding a boolean column to .var.\nQC metric calculations" + }, + { + "objectID": "fundamentals/architecture.html#multisample-antibody-capture-processing", + "href": "fundamentals/architecture.html#multisample-antibody-capture-processing", + "title": "Architecture", + "section": "Multisample Antibody Capture Processing", + "text": "Multisample Antibody Capture Processing\nProcessing the ADT modality for multiple samples" + }, + { + "objectID": "fundamentals/architecture.html#sec-dimensionality-reduction", + "href": "fundamentals/architecture.html#sec-dimensionality-reduction", + "title": "Architecture", + "section": "Dimensionality Reduction", + "text": "Dimensionality Reduction\nscRNA-seq is a high-throughput sequencing technology that produces datasets with high dimensions in the number of cells and genes. It is true that the data should provide more information, but it also contains more noise and redudant information, making it harder to distill the usefull information. The number of genes and cells can already reduced by gene filtering, but further reduction is a necessity for downstream analysis. Dimensionality reduction projects high-dimensional data into a lower dimensional space (like taking a photo (2D) of some 3D structure). The lower dimensional representation still captures the underlying information of the data, while having fewer dimensions.\nSeveral dimensionality reduction methods have been developed and applied to single-cell data analysis. Two of which are being applied in OpenPipeline:\n\nPrincipal Component Analysis (PCA): PCA reduces the dimension of a dataset by creating a new set of variables (principal components, PCs) from a linear combination of the original features in such a way that they are as uncorrelated as possible. The PCs can be ranked in the order by which they explain the largest variability in the original dataset. By keeping the top n PCs, the PCs with the lowest variance are discarded to effectively reduce the dimensionality of the data without losing information.\nUniform manifold approximation and projection (UMAP): a non-linear dimensionality technique. It constructs a high dimensional graph representation of the dataset and optimizes the low-dimensional graph representation to be structurally as similar as possible to the original graph. In a review by Xiang et al., 2021 it showed the highest stability and separates best the original cell populations.\nt-SNE is another popular non-linear, graph based dimensionality technique which is very similar to UMAP, but it has not yet been implemented in OpenPipeline." + }, + { + "objectID": "fundamentals/architecture.html#sec-initializing-integration", + "href": "fundamentals/architecture.html#sec-initializing-integration", + "title": "Architecture", + "section": "Initializing integration", + "text": "Initializing integration\nAs will be descibed in more details later on, many integration methods exist and therefore there is no single integration which is executed by default. However, there are common tasks which are run before integration either because they provide required input for many downstream integration methods or because they popular steps that would otherwise be done manually. These operations are executed by default when using the “full pipeline” as part of the initialize_integration subworkflow.\nPCA is used to reduce the dimensionality of the dataset as described previously. Find Neighbors and Leiden Clustering are useful for the identification of cell types or states in the data. Here we apply a popular method to accomplish this is to first calculate a neighborhood graph on a low dimensinonal representation of the data and then cluster the data based on similarity between data points. Finally, UMAP allows us to visualise the clusters by reducing the dimensionality of the data while still providing an accurate representation of the underlying cell population structure." + }, + { + "objectID": "fundamentals/architecture.html#sec-integration-methods", + "href": "fundamentals/architecture.html#sec-integration-methods", + "title": "Architecture", + "section": "Integration Methods", + "text": "Integration Methods\nIntegration is the alignment of cell types across samples. There exist three different types of integration methods, based on the degree of integration across modalities:\n\nUnimodal integration across batches. For example: scVI, scanorama, harmony\nMultimodal integration across batches and modalities. Can be used to integrate joint-profiling data where multiple modalities are measured. For example: totalVI\nMosaic integration: data integration across batches and modalities where not all cells are profiled in all modalities and it may be the case that no cells contain profiles in all integrated modalities. Mosaic integration methods have not been made available in OpenPipeline yet. An example of a tool that performs mosaic integration is StabMap.\n\nIn either of the three cases, concatenated samples are required, and merged modalities preferred. A plethora of integration methods exist, which in turn interact with other functionality (like clustering and dimensionality reduction methods) to generate a large number of possible usecases which one pipeline cannot cover in an easy manner. Therefore, there is no single integration step that is part of a global pipeline which is executed by default. Instead, a user can choose from the integration workflows provided, and ‘stack’ integration methods by adding the outputs to different output slots of the MuData object. The following sections will descibe the integration workflows that are available in OpenPipeline.\n\nUnimodal integration\nFor unimodal integration, scVI, scanorama and harmony have been added to the scvi_leiden, scanorama_leiden, and harmony_leiden workflows respectively. After executing the integration methods themselves, Find Neighbors and Leiden Clustering are run the results of the integration as wel as UMAP in order to be able to visualise the results. The functioning of these components has already been described here.\n\n\n\n\n\n\n\n\nMultimodal Integration\nA single multimodal integration method is currently avaiable in OpenPipeline: totalVI. It allows using information from both the gene-expression data and the antibody-capture data together to integrate the cell types. As with the other integration workflows, after running totalVI, Find Neighbors, Leiden Clustering and UMAP are run on the result. However in this case the three components are executed on both of the integrated modalities." + }, + { + "objectID": "fundamentals/concepts.html", + "href": "fundamentals/concepts.html", + "title": "Concepts", + "section": "", + "text": "Goals\nOpenPipelines strives to provide easy ways to interact with the pipeline and/or codebase for three types of users:\n\nPipeline executor: runs the pipeline from a GUI side\nPipeline editor: adapts pipelines with existing components for specific projects\nComponent developer: develops novel components and or pipelines\n\nThis means that openpipelines must be:\n\nUsable by non-experts\nEasy to deploy\nProvide reproducable results\nScalable\nEasy to maintain and adapt\n\n\n\nRequirements\nTo meet these demands, the following concepts have been implemented at the core of Openpipeline:\n\n🌍 A language independent framework\n💾 A versitile storage solution\n🔳 Modularity\n🔀 A best-practice pipeline layout\n⌛ Versioning\n✅ Automatic testing\n💬 Community input\n📺 A graphical interace\n\n\n\nA common file format: AnnData and MuData 💾\nOne of the core principals of OpenPipelines is to use MuData as a common data format throughout the whole pipeline. This means that the input and output for most components and workflows will be a MuData file and converters from and to other common data formats are provided to improve compatibility with up-and downstream applications. Choosing a common data format greatly diminishes the development complexity because it facilitates interfacing between different tools in a pipeline without needing to convert multiple times.\nMuData is a format to store annotated multimodal data. It is derived from the AnnData format. If you are unfamiliar with AnnData or MuData, it is recommended to read up on AnnData first as it is the unimodal counterpart of MuData. MuData can be roughly described as collection of several AnnData objects (stored as a associative array in the .mod attribute). MuData provides a hierarchical way to store the data:\nMuData\n├─ .mod\n│ ├─ modality_1 (AnnData Object)\n│ ├─ .X\n│ ├─ .layers\n│ ├─ layer_1 \n│ ├─ ...\n│ ├─ .var\n│ ├─ .obs\n│ ├─ .obsm\n│ ├─ .varm\n│ ├─ .uns\n│ ├─ modality_2 (AnnData Object)\n├─ .var\n├─ .obs\n├─ .obms\n├─ .varm\n├─ .uns\n\n.mod: an associative array of AnnData objects. Used in OpenPipelines to store the different modalities (CITE-seq, RNA abundance, …)\n.X and .layers: matrices storing the measurements with the columns being the variables measured and the rows being the observations (cells in most cases).\n.var: metadata for the variables (i.e. annotation for the columns of .X or any matrix in .layers). The number of rows in the .var datafame (or the length of each entry in the dictionairy) is equal to the number of columns in the measurement matrices.\n.obs: metadata for the observations (i.e. annotation for the rows of .X or any matrix in .layers). The number of rows in the .obs datafame (or the length of each entry in the dictionairy) is equal to the number of rows in the measurement matrices.\nvarm: the multi-dimensional variable annotation. A key-dataframe mapping where the number of rows in each dataframe is equal to the number of columns in the measurement matrices.\nobsm: the multi-dimensional observation annotation. A key-dataframe mapping where the number of rows in each dataframe is equal to the number of rows in the measurement matrices.\n.uns: A mapping where no restrictions are enforced on the dimensions of the data.\n\n\n\nModularity and a language independent framework 🔳\nTODO\n\n\nA graphical interface 📺\nTODO" + }, + { + "objectID": "index.html", + "href": "index.html", + "title": "OpenPipelines", + "section": "", + "text": "Fundamentals\n \n \n \n \n Philosophy\n \n \n \n \n Concepts\n \n \n \n \n Architecture\n \n \n \n \n Roadmap\n \n \n \n\nNo matching items\n\n\n\n\n\n \n User Guide\n \n \n \n \n Getting started\n \n \n \n \n Ingestion\n \n \n \n \n Processing\n \n \n \n \n Running pipelines\n \n \n \n \n Downstream\n \n \n \n \n Bug reports\n \n \n \n\nNo matching items\n\n\n\n\n\n \n Contributing\n \n \n \n \n Getting started\n \n \n \n \n Project structure\n \n \n \n \n Creating components\n \n \n \n \n Creating pipelines\n \n \n \n \n Running tests\n \n \n \n \n Publishing your changes\n \n \n \n\nNo matching items\n\n\n\n\n\n \n More information\n \n \n \n \n Cheat sheets\n \n \n \n \n Code of conduct\n \n \n \n \n Data API\n \n \n \n \n FAQ\n \n \n \n\nNo matching items" + }, + { + "objectID": "fundamentals/philosophy.html", + "href": "fundamentals/philosophy.html", + "title": "Philosophy", + "section": "", + "text": "Mission\nOpenPipelines are best-practice living workflows for single-cell uni- and multi-omics data. Building a best-practice pipeline requires knowledge and time that not one single person can provide, but rather requires input from a community. Additionally, a best-pratice pipeline needs constant maintenance to keep up to date with the latest standards, ideally sourcing input from a ‘living’ benchmark. Continuous improvement necessitates a robust system for sourcing and applying community input both from a technical and organisational standpoint.\n\n\n\n\ngraph TB\n ben[\"🌱📈 Living benchmarks\"]\n pra[\"🌱📖 Living best practices\"]\n pip[\"🌱⚙️ Living reproducible pipelines\"]\n ben --> pra --> pip" + }, + { + "objectID": "more_information/data_api.html", + "href": "more_information/data_api.html", + "title": "Data API", + "section": "", + "text": "Note\n\n\n\nFile formats are being discussed in openpipelines-bio/openpipeline#102" + }, + { + "objectID": "more_information/data_api.html#dataset", + "href": "more_information/data_api.html#dataset", + "title": "Data API", + "section": "Dataset", + "text": "Dataset\nobs:\n index # cell id\n sample\n cell_type\n organism\n tissue\n\nmod:\n rna:\n rnav:\n prot:\n atac:\n vdj:" + }, + { + "objectID": "more_information/data_api.html#rna-modality", + "href": "more_information/data_api.html#rna-modality", + "title": "Data API", + "section": "RNA modality", + "text": "RNA modality\nmod:\n rna:\n layers:\n counts\n normalized\n obs:\n <qc metrics>\n doublet_score\n doublet_bool\n cluster\n var:\n index # feature_id, preferably an ensembl id\n feature_name\n <qc metrics>\n highly_variable\n highly_variable_score\n obsm:\n X_pca\n X_integrated\n X_umap\n annotation # scvi, bbknn, ...\n obsp:\n connectivities\n distances" + }, + { + "objectID": "more_information/data_api.html#adt-modality", + "href": "more_information/data_api.html#adt-modality", + "title": "Data API", + "section": "ADT modality", + "text": "ADT modality\nmod:\n prot:\n layers:\n counts\n var:\n index # feature_id\n feature_name # Associated protein names" + }, + { + "objectID": "more_information/data_api.html#vdj-modality", + "href": "more_information/data_api.html#vdj-modality", + "title": "Data API", + "section": "VDJ modality", + "text": "VDJ modality\nmod:\n vdj:\n obsm:\n vdj_t\n vdj_b" + }, + { + "objectID": "more_information/data_api.html#atac-modality", + "href": "more_information/data_api.html#atac-modality", + "title": "Data API", + "section": "ATAC modality", + "text": "ATAC modality\nmod:\n atac:\n layers:\n counts\n var:\n interval" + }, + { + "objectID": "more_information/data_api.html#rna-velocity-modality", + "href": "more_information/data_api.html#rna-velocity-modality", + "title": "Data API", + "section": "RNA velocity modality", + "text": "RNA velocity modality\nmod:\n rnav:\n layers:\n spliced\n unspliced" + }, + { + "objectID": "components/index.html", + "href": "components/index.html", + "title": "Components", + "section": "", + "text": "Order By\n Default\n \n Name\n \n \n \n \n \n \n \n\n\n\n\n\nName\n\n\nNamespace\n\n\nDescription\n\n\n\n\n\n\nWorkflows\n\n\n \n\n\n\n\n\n\n\nBD Rhapsody\n\n\nIngestion\n\n\nA generic pipeline for running BD Rhapsody WTA or Targeted mapping, with support for AbSeq, VDJ and/or SMK.\n\n\n\n\nBbknn leiden\n\n\nMultiomics/integration\n\n\nRun bbknn followed by leiden clustering and run umap on the result.\n\n\n\n\nCell Ranger mapping\n\n\nIngestion\n\n\nA pipeline for running Cell Ranger mapping.\n\n\n\n\nCell Ranger multi\n\n\nIngestion\n\n\nA pipeline for running Cell Ranger multi.\n\n\n\n\nCell Ranger post-processing\n\n\nIngestion\n\n\nPost-processing Cell Ranger datasets.\n\n\n\n\nConversion\n\n\nIngestion\n\n\nA pipeline to convert different file formats to .h5mu.\n\n\n\n\nDemux\n\n\nIngestion\n\n\nA generic pipeline for running bcl2fastq, bcl-convert or Cell Ranger mkfastq.\n\n\n\n\nFull pipeline\n\n\nMultiomics\n\n\nA pipeline to analyse multiple multiomics samples.\n\n\n\n\nHarmony leiden\n\n\nIntegration/common\n\n\nRun harmony integration followed by neighbour calculations, leiden clustering and run umap on the result.\n\n\n\n\nHarmony leiden\n\n\nMultiomics/integration\n\n\nRun harmony integration followed by neighbour calculations, leiden clustering and run umap on the result.\n\n\n\n\nInitialize integration\n\n\nIntegration/initialize integration\n\n\nRun calculations that output information required for most integration methods: PCA, nearest neighbour and UMAP.\n\n\n\n\nInitialize integration\n\n\nMultiomics/integration\n\n\nRun calculations that output information required for most integration methods: PCA, nearest neighbour and UMAP.\n\n\n\n\nIntegration\n\n\nMultiomics\n\n\nA pipeline for demultiplexing multimodal multi-sample RNA transcriptomics data.\n\n\n\n\nLeiden scvi\n\n\nMultiomics/integration\n\n\nRun scvi integration followed by neighbour calculations, leiden clustering and run umap on the result.\n\n\n\n\nMake reference\n\n\nIngestion\n\n\nBuild a transcriptomics reference into one of many formats\n\n\n\n\nMultisample\n\n\nMultiomics\n\n\nThis workflow serves as an entrypoint into the ‘full_pipeline’ in order to re-run the multisample processing and the integration setup.\n\n\n\n\nProt multisample\n\n\nMultiomics\n\n\nProcessing unimodal multi-sample ADT data.\n\n\n\n\nProt singlesample\n\n\nMultiomics\n\n\nProcessing unimodal single-sample CITE-seq data.\n\n\n\n\nRna multisample\n\n\nMultiomics\n\n\nProcessing unimodal multi-sample RNA transcriptomics data.\n\n\n\n\nRna singlesample\n\n\nMultiomics\n\n\nProcessing unimodal single-sample RNA transcriptomics data.\n\n\n\n\nScanorama leiden\n\n\nIntegration/scanorama leiden\n\n\nRun scanorama integration followed by neighbour calculations, leiden clustering and run umap on the result.\n\n\n\n\nScanorama leiden\n\n\nMultiomics/integration\n\n\nRun scanorama integration followed by neighbour calculations, leiden clustering and run umap on the result.\n\n\n\n\nScvi\n\n\nIntegration/scvi\n\n\nRun scvi integration followed by neighbour calculations and run umap on the result.\n\n\n\n\nTotalvi leiden\n\n\nMultiomics/integration\n\n\nRun totalVI integration followed by neighbour calculations, leiden clustering and run umap on the result.\n\n\n\n\n\nNo matching items" + }, + { + "objectID": "components/index.html#workflows", + "href": "components/index.html#workflows", + "title": "Components", + "section": "", + "text": "Order By\n Default\n \n Name\n \n \n \n \n \n \n \n\n\n\n\n\nName\n\n\nNamespace\n\n\nDescription\n\n\n\n\n\n\nWorkflows\n\n\n \n\n\n\n\n\n\n\nBD Rhapsody\n\n\nIngestion\n\n\nA generic pipeline for running BD Rhapsody WTA or Targeted mapping, with support for AbSeq, VDJ and/or SMK.\n\n\n\n\nBbknn leiden\n\n\nMultiomics/integration\n\n\nRun bbknn followed by leiden clustering and run umap on the result.\n\n\n\n\nCell Ranger mapping\n\n\nIngestion\n\n\nA pipeline for running Cell Ranger mapping.\n\n\n\n\nCell Ranger multi\n\n\nIngestion\n\n\nA pipeline for running Cell Ranger multi.\n\n\n\n\nCell Ranger post-processing\n\n\nIngestion\n\n\nPost-processing Cell Ranger datasets.\n\n\n\n\nConversion\n\n\nIngestion\n\n\nA pipeline to convert different file formats to .h5mu.\n\n\n\n\nDemux\n\n\nIngestion\n\n\nA generic pipeline for running bcl2fastq, bcl-convert or Cell Ranger mkfastq.\n\n\n\n\nFull pipeline\n\n\nMultiomics\n\n\nA pipeline to analyse multiple multiomics samples.\n\n\n\n\nHarmony leiden\n\n\nIntegration/common\n\n\nRun harmony integration followed by neighbour calculations, leiden clustering and run umap on the result.\n\n\n\n\nHarmony leiden\n\n\nMultiomics/integration\n\n\nRun harmony integration followed by neighbour calculations, leiden clustering and run umap on the result.\n\n\n\n\nInitialize integration\n\n\nIntegration/initialize integration\n\n\nRun calculations that output information required for most integration methods: PCA, nearest neighbour and UMAP.\n\n\n\n\nInitialize integration\n\n\nMultiomics/integration\n\n\nRun calculations that output information required for most integration methods: PCA, nearest neighbour and UMAP.\n\n\n\n\nIntegration\n\n\nMultiomics\n\n\nA pipeline for demultiplexing multimodal multi-sample RNA transcriptomics data.\n\n\n\n\nLeiden scvi\n\n\nMultiomics/integration\n\n\nRun scvi integration followed by neighbour calculations, leiden clustering and run umap on the result.\n\n\n\n\nMake reference\n\n\nIngestion\n\n\nBuild a transcriptomics reference into one of many formats\n\n\n\n\nMultisample\n\n\nMultiomics\n\n\nThis workflow serves as an entrypoint into the ‘full_pipeline’ in order to re-run the multisample processing and the integration setup.\n\n\n\n\nProt multisample\n\n\nMultiomics\n\n\nProcessing unimodal multi-sample ADT data.\n\n\n\n\nProt singlesample\n\n\nMultiomics\n\n\nProcessing unimodal single-sample CITE-seq data.\n\n\n\n\nRna multisample\n\n\nMultiomics\n\n\nProcessing unimodal multi-sample RNA transcriptomics data.\n\n\n\n\nRna singlesample\n\n\nMultiomics\n\n\nProcessing unimodal single-sample RNA transcriptomics data.\n\n\n\n\nScanorama leiden\n\n\nIntegration/scanorama leiden\n\n\nRun scanorama integration followed by neighbour calculations, leiden clustering and run umap on the result.\n\n\n\n\nScanorama leiden\n\n\nMultiomics/integration\n\n\nRun scanorama integration followed by neighbour calculations, leiden clustering and run umap on the result.\n\n\n\n\nScvi\n\n\nIntegration/scvi\n\n\nRun scvi integration followed by neighbour calculations and run umap on the result.\n\n\n\n\nTotalvi leiden\n\n\nMultiomics/integration\n\n\nRun totalVI integration followed by neighbour calculations, leiden clustering and run umap on the result.\n\n\n\n\n\nNo matching items" + }, + { + "objectID": "components/index.html#modules", + "href": "components/index.html#modules", + "title": "Components", + "section": "Modules", + "text": "Modules\n\n\n \n \n \n Order By\n Default\n \n Name\n \n \n \n \n \n \n \n\n\n\n\n\nName\n\n\nNamespace\n\n\nDescription\n\n\n\n\n\n\nModules\n\n\n \n\n\n\n\n\n\n\nAdd id\n\n\nMetadata\n\n\nAdd id of .obs.\n\n\n\n\nBD Rhapsody\n\n\nMapping\n\n\nA wrapper for the BD Rhapsody Analysis CWL v1.10.1 pipeline\n\n\n\n\nBbknn\n\n\nNeighbors\n\n\nBBKNN network generation\n\n\n\n\nBcl convert\n\n\nDemux\n\n\nConvert bcl files to fastq files using bcl-convert.\n\n\n\n\nBcl2fastq\n\n\nDemux\n\n\nConvert bcl files to fastq files using bcl2fastq\n\n\n\n\nBuild bdrhap reference\n\n\nReference\n\n\nCompile a reference into a STAR index compatible with the BD Rhapsody pipeline.\n\n\n\n\nBuild cellranger reference\n\n\nReference\n\n\nBuild a Cell Ranger-compatible reference folder from user-supplied genome FASTA and gene GTF files.\n\n\n\n\nCalculate qc metrics\n\n\nQc\n\n\nAdd basic quality control metrics to an .h5mu file.\n\n\n\n\nCellbender remove background\n\n\nCorrection\n\n\nEliminating technical artifacts from high-throughput single-cell RNA sequencing data.\n\n\n\n\nCellbender remove background v0 2\n\n\nCorrection\n\n\nEliminating technical artifacts from high-throughput single-cell RNA sequencing data.\n\n\n\n\nCellranger count\n\n\nMapping\n\n\nAlign fastq files using Cell Ranger count.\n\n\n\n\nCellranger count split\n\n\nMapping\n\n\nSplit 10x Cell Ranger output directory into separate output fields.\n\n\n\n\nCellranger mkfastq\n\n\nDemux\n\n\nDemultiplex raw sequencing data\n\n\n\n\nCellranger multi\n\n\nMapping\n\n\nAlign fastq files using Cell Ranger multi.\n\n\n\n\nCellxgene census\n\n\nQuery\n\n\nQuery CellxGene Census or user-specified TileDBSoma object, and eventually fetch cell and gene metadata or/and expression counts.\n\n\n\n\nClr\n\n\nTransform\n\n\nPerform CLR normalization on CITE-seq data (Stoeckius et al., 2017)\n\n\n\n\nCompress h5mu\n\n\nCompression\n\n\nCompress a MuData file.\n\n\n\n\nConcat\n\n\nDataflow\n\n\nConcatenates several uni-modal samples in .h5mu files into a single file\n\n\n\n\nDelete layer\n\n\nTransform\n\n\nDelete an anndata layer from one or more modalities\n\n\n\n\nDo filter\n\n\nFilter\n\n\nRemove observations and variables based on specified .obs and .var columns\n\n\n\n\nDownload file\n\n\nDownload\n\n\nDownload a file\n\n\n\n\nFastqc\n\n\nQc\n\n\nFastqc component, please see https://www.bioinformatics.babraham.ac.uk/projects/fastqc/.\n\n\n\n\nFilter 10xh5\n\n\nProcess 10xh5\n\n\nFilter a 10x h5 dataset\n\n\n\n\nFilter with counts\n\n\nFilter\n\n\nFilter scRNA-seq data based on the primary QC metrics.\n\n\n\n\nFilter with hvg\n\n\nFilter\n\n\nAnnotate highly variable genes [Satija15] [Zheng17] [Stuart19].\n\n\n\n\nFilter with scrublet\n\n\nFilter\n\n\nDoublet detection using the Scrublet method (Wolock, Lopez and Klein, 2019).\n\n\n\n\nFind neighbors\n\n\nNeighbors\n\n\nCompute a neighborhood graph of observations [McInnes18].\n\n\n\n\nFrom 10xh5 to h5mu\n\n\nConvert\n\n\nConverts a 10x h5 into an h5mu file\n\n\n\n\nFrom 10xmtx to h5mu\n\n\nConvert\n\n\nConverts a 10x mtx into an h5mu file\n\n\n\n\nFrom bd to 10x molecular barcode tags\n\n\nConvert\n\n\nConvert the molecular barcode sequence SAM tag from BD format (MA) to 10X format (UB)\n\n\n\n\nFrom bdrhap to h5mu\n\n\nConvert\n\n\nConvert the output of a BD Rhapsody WTA pipeline to a MuData h5 file\n\n\n\n\nFrom cellranger multi to h5mu\n\n\nConvert\n\n\nConverts the output from cellranger multi to a single .h5mu file.\n\n\n\n\nFrom h5ad to h5mu\n\n\nConvert\n\n\nConverts a single layer h5ad file into a single MuData object\n\n\n\n\nFrom h5mu to h5ad\n\n\nConvert\n\n\nConverts a h5mu file into a h5ad file\n\n\n\n\nHarmonypy\n\n\nIntegrate\n\n\nPerforms Harmony integration based as described in https://github.com/immunogenomics/harmony.\n\n\n\n\nHtseq count\n\n\nMapping\n\n\nQuantify gene expression for subsequent testing for differential expression.\n\n\n\n\nHtseq count to h5mu\n\n\nMapping\n\n\nConvert the htseq table to a h5mu\n\n\n\n\nJoin csv\n\n\nMetadata\n\n\nJoin a csv containing metadata to the .obs or .var field of a mudata file.\n\n\n\n\nJoin uns to obs\n\n\nMetadata\n\n\nJoin a data frame of length 1 (1 row index value) in .uns containing metadata to the .obs of a mudata file.\n\n\n\n\nKnn\n\n\nLabels transfer\n\n\nPerforms label transfer from reference to query using KNN classifier\n\n\n\n\nLeiden\n\n\nCluster\n\n\nCluster cells using the Leiden algorithm [Traag18] implemented in the Scanpy framework [Wolf18].\n\n\n\n\nLianapy\n\n\nInterpret\n\n\nPerforms LIANA integration based as described in https://github.com/saezlab/liana-py\n\n\n\n\nLog1p\n\n\nTransform\n\n\nLogarithmize the data matrix.\n\n\n\n\nMake params\n\n\nFiles\n\n\nLooks for files in a directory and turn it in a params file.\n\n\n\n\nMake reference\n\n\nReference\n\n\nPreprocess and build a transcriptome reference.\n\n\n\n\nMerge\n\n\nDataflow\n\n\nCombine one or more single-modality .h5mu files together into one .h5mu file\n\n\n\n\nMermaid\n\n\nReport\n\n\nGenerates a network from mermaid code\n\n\n\n\nMove obsm to obs\n\n\nMetadata\n\n\nMove a matrix from .obsm to .obs.\n\n\n\n\nMulti star\n\n\nMapping\n\n\nAlign fastq files using STAR.\n\n\n\n\nMulti star to h5mu\n\n\nMapping\n\n\nConvert the output of multi_star to a h5mu\n\n\n\n\nMultiqc\n\n\nQc\n\n\nMultiQC aggregates results from bioinformatics analyses across many samples into a single report.\n\n\n\n\nNormalize total\n\n\nTransform\n\n\nNormalize counts per cell.\n\n\n\n\nPca\n\n\nDimred\n\n\nComputes PCA coordinates, loadings and variance decomposition.\n\n\n\n\nPopv\n\n\nAnnotate\n\n\nPerforms popular major vote cell typing on single cell sequence data using multiple algorithms.\n\n\n\n\nPublish\n\n\nTransfer\n\n\nPublish an artifact and optionally rename with parameters\n\n\n\n\nRegress out\n\n\nTransform\n\n\nRegress out (mostly) unwanted sources of variation.\n\n\n\n\nRemove modality\n\n\nFilter\n\n\nRemove a modality from a .h5mu file\n\n\n\n\nSamtools sort\n\n\nMapping\n\n\nSort and (optionally) index alignments.\n\n\n\n\nScale\n\n\nTransform\n\n\nScale data to unit variance and zero mean\n\n\n\n\nScanorama\n\n\nIntegrate\n\n\nUse Scanorama to integrate different experiments\n\n\n\n\nScarches\n\n\nIntegrate\n\n\nPerforms reference mapping with scArches\n\n\n\n\nScvelo\n\n\nVelocity\n\n\n\n\n\n\n\nScvi\n\n\nIntegrate\n\n\nPerforms scvi integration as done in the human lung cell atlas https://github.com/LungCellAtlas/HLCA\n\n\n\n\nSplit modalities\n\n\nDataflow\n\n\nSplit the modalities from a single .h5mu multimodal sample into seperate .h5mu files.\n\n\n\n\nStar align\n\n\nMapping\n\n\nAlign fastq files using STAR.\n\n\n\n\nStar align v273a\n\n\nMapping\n\n\nAlign fastq files using STAR.\n\n\n\n\nStar build reference\n\n\nMapping\n\n\nCreate a reference for STAR from a set of fasta files.\n\n\n\n\nSubset h5mu\n\n\nFilter\n\n\nCreate a subset of a mudata file by selecting the first number of observations\n\n\n\n\nSync test resources\n\n\nDownload\n\n\nSynchronise the test resources from s3://openpipelines-data to resources_test\n\n\n\n\nTotalvi\n\n\nIntegrate\n\n\nPerforms mapping to the reference by totalvi model: https://docs.scvi-tools.org/en/stable/tutorials/notebooks/scarches_scvi_tools.html#Reference-mapping-with-TOTALVI\n\n\n\n\nUmap\n\n\nDimred\n\n\nUMAP (Uniform Manifold Approximation and Projection) is a manifold learning technique suitable for visualizing high-dimensional data.\n\n\n\n\nVelocyto\n\n\nVelocity\n\n\nRuns the velocity analysis on a BAM file, outputting a loom file.\n\n\n\n\nVelocyto to h5mu\n\n\nConvert\n\n\nConvert a velocyto loom file to a h5mu file.\n\n\n\n\nXgboost\n\n\nLabels transfer\n\n\nPerforms label transfer from reference to query using XGBoost classifier\n\n\n\n\n\nNo matching items" + }, + { + "objectID": "components/workflows/multiomics/integration.html", + "href": "components/workflows/multiomics/integration.html", + "title": "Integration", + "section": "", + "text": "ID: integration\nNamespace: multiomics\n\n\n\nSource" + }, + { + "objectID": "components/workflows/multiomics/integration.html#example-commands", + "href": "components/workflows/multiomics/integration.html#example-commands", + "title": "Integration", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.8.0 -latest \\\n -main-script workflows/multiomics/integration/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"dataset.h5mu\"\nlayer: \"log_normalized\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n\n# PCA options\nobsm_pca: \"X_pca\"\n# var_pca_feature_selection: \"foo\"\n\n# Harmony integration options\nobsm_integrated: \"X_pca_integrated\"\nobs_covariates: # please fill in - example: [\"batch\", \"sample\"]\nrna_theta: [2]\n\n# Neighbour calculation\nuns_neighbors: \"neighbors\"\nobsp_neighbor_distances: \"distances\"\nobsp_neighbor_connectivities: \"connectivities\"\n\n# Clustering options\nobs_cluster: \"leiden\"\nleiden_resolution: 1\n\n# Umap options\nobsm_umap: \"X_umap\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.8.0 -latest \\\n -profile docker \\\n -main-script workflows/multiomics/integration/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/multiomics/integration.html#argument-groups", + "href": "components/workflows/multiomics/integration.html#argument-groups", + "title": "Integration", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"dataset.h5mu\"\n\n\n--layer\nuse specified layer for expression values instead of the .X object from the modality.\nstring, default: \"log_normalized\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nPCA options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_pca\nIn which .obsm slot to store the resulting PCA embedding.\nstring, default: \"X_pca\"\n\n\n--var_pca_feature_selection\nColumn name in .var matrix that will be used to select which genes to run the PCA on.\nstring\n\n\n\n\n\nHarmony integration options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_integrated\nIn which .obsm slot to store the resulting integrated embedding.\nstring, default: \"X_pca_integrated\"\n\n\n--obs_covariates\nThe .obs field(s) that define the covariate(s) to regress out.\nstring, required, example: \"batch\", example: \"sample\"\n\n\n--rna_theta\nDiversity clustering penalty parameter. Specify for each variable in group.by.vars. theta=0 does not encourage any diversity. Larger values of theta result in more diverse clusters.”\ndouble, default: 2\n\n\n\n\n\nNeighbour calculation\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--uns_neighbors\nIn which .uns slot to store various neighbor output objects.\nstring, default: \"neighbors\"\n\n\n--obsp_neighbor_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"distances\"\n\n\n--obsp_neighbor_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"connectivities\"\n\n\n\n\n\nClustering options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obs_cluster\nName of the .obs key under which to add the cluster labels.\nstring, default: \"leiden\"\n\n\n--leiden_resolution\nControl the coarseness of the clustering. Higher values lead to more clusters.\ndouble, default: 1\n\n\n\n\n\nUmap options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_umap\nIn which .obsm slot to store the resulting UMAP embedding.\nstring, default: \"X_umap\"" + }, + { + "objectID": "components/workflows/multiomics/integration.html#authors", + "href": "components/workflows/multiomics/integration.html#authors", + "title": "Integration", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (author)\nRobrecht Cannoodt (author, maintainer)\nDries Schaumont (author)" + }, + { + "objectID": "components/workflows/multiomics/integration.html#visualisation", + "href": "components/workflows/multiomics/integration.html#visualisation", + "title": "Integration", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p15(join)\n p13(pca)\n p18(filter)\n p29(concat)\n p19(filter)\n p27(join)\n p25(harmonypy)\n p38(join)\n p36(find_neighbors)\n p48(join)\n p46(leiden)\n p58(join)\n p56(umap)\n p64(Output)\n p18-->p29\n p0-->p2\n p2-->p4\n p4-->p15\n p4-->p13\n p13-->p15\n p15-->p18\n p15-->p19\n p19-->p27\n p19-->p25\n p25-->p27\n p27-->p29\n p29-->p38\n p29-->p36\n p36-->p38\n p38-->p48\n p38-->p46\n p46-->p48\n p48-->p58\n p48-->p56\n p56-->p58\n p58-->p64" + }, + { + "objectID": "components/workflows/multiomics/full_pipeline.html", + "href": "components/workflows/multiomics/full_pipeline.html", + "title": "Full pipeline", + "section": "", + "text": "ID: full_pipeline\nNamespace: multiomics\n\n\n\nSource" + }, + { + "objectID": "components/workflows/multiomics/full_pipeline.html#example-commands", + "href": "components/workflows/multiomics/full_pipeline.html#example-commands", + "title": "Full pipeline", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/multiomics/full_pipeline/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"input.h5mu\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n\n# Sample ID options\nadd_id_to_obs: true\nadd_id_obs_output: \"sample_id\"\nadd_id_make_observation_keys_unique: true\n\n# RNA filtering options\n# rna_min_counts: 200\n# rna_max_counts: 5000000\n# rna_min_genes_per_cell: 200\n# rna_max_genes_per_cell: 1500000\n# rna_min_cells_per_gene: 3\n# rna_min_fraction_mito: 0\n# rna_max_fraction_mito: 0.2\n\n# CITE-seq filtering options\n# prot_min_counts: 3\n# prot_max_counts: 5000000\n# prot_min_proteins_per_cell: 200\n# prot_max_proteins_per_cell: 100000000\n# prot_min_cells_per_protein: 3\n\n# Highly variable gene detection\nfilter_with_hvg_var_output: \"filter_with_hvg\"\nfilter_with_hvg_obs_batch_key: \"sample_id\"\n\n# Mitochondrial Gene Detection\n# var_name_mitochondrial_genes: \"foo\"\n# var_gene_names: \"gene_symbol\"\nmitochondrial_gene_regex: \"^[mM][tT]-\"\n\n# QC metrics calculation options\n# var_qc_metrics: [\"ercc\", \"highly_variable\"]\ntop_n_vars: [50, 100, 200, 500]\n\n# PCA options\npca_overwrite: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/multiomics/full_pipeline/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/multiomics/full_pipeline.html#argument-groups", + "href": "components/workflows/multiomics/full_pipeline.html#argument-groups", + "title": "Full pipeline", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"input.h5mu\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nSample ID options\nOptions for adding the id to .obs on the MuData object. Having a sample id present in a requirement of several components for this pipeline.\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--add_id_to_obs\nAdd the value passed with –id to .obs.\nboolean, default: TRUE\n\n\n--add_id_obs_output\n.Obs column to add the sample IDs to. Required and only used when –add_id_to_obs is set to ‘true’\nstring, default: \"sample_id\"\n\n\n--add_id_make_observation_keys_unique\nJoin the id to the .obs index (.obs_names). Only used when –add_id_to_obs is set to ‘true’.\nboolean, default: TRUE\n\n\n\n\n\nRNA filtering options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--rna_min_counts\nMinimum number of counts captured per cell.\ninteger, example: 200\n\n\n--rna_max_counts\nMaximum number of counts captured per cell.\ninteger, example: 5000000\n\n\n--rna_min_genes_per_cell\nMinimum of non-zero values per cell.\ninteger, example: 200\n\n\n--rna_max_genes_per_cell\nMaximum of non-zero values per cell.\ninteger, example: 1500000\n\n\n--rna_min_cells_per_gene\nMinimum of non-zero values per gene.\ninteger, example: 3\n\n\n--rna_min_fraction_mito\nMinimum fraction of UMIs that are mitochondrial.\ndouble, example: 0\n\n\n--rna_max_fraction_mito\nMaximum fraction of UMIs that are mitochondrial.\ndouble, example: 0.2\n\n\n\n\n\nCITE-seq filtering options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--prot_min_counts\nMinimum number of counts per cell.\ninteger, example: 3\n\n\n--prot_max_counts\nMinimum number of counts per cell.\ninteger, example: 5000000\n\n\n--prot_min_proteins_per_cell\nMinimum of non-zero values per cell.\ninteger, example: 200\n\n\n--prot_max_proteins_per_cell\nMaximum of non-zero values per cell.\ninteger, example: 100000000\n\n\n--prot_min_cells_per_protein\nMinimum of non-zero values per protein.\ninteger, example: 3\n\n\n\n\n\nHighly variable gene detection\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--filter_with_hvg_var_output\nIn which .var slot to store a boolean array corresponding to the highly variable genes.\nstring, default: \"filter_with_hvg\"\n\n\n--filter_with_hvg_obs_batch_key\nIf specified, highly-variable genes are selected within each batch separately and merged. This simple process avoids the selection of batch-specific genes and acts as a lightweight batch correction method.\nstring, default: \"sample_id\"\n\n\n\n\n\nMitochondrial Gene Detection\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--var_name_mitochondrial_genes\nIn which .var slot to store a boolean array corresponding the mitochondrial genes.\nstring\n\n\n--var_gene_names\n.var column name to be used to detect mitochondrial genes instead of .var_names (default if not set). Gene names matching with the regex value from –mitochondrial_gene_regex will be identified as a mitochondrial gene.\nstring, example: \"gene_symbol\"\n\n\n--mitochondrial_gene_regex\nRegex string that identifies mitochondrial genes from –var_gene_names. By default will detect human and mouse mitochondrial genes from a gene symbol.\nstring, default: \"^[mM][tT]-\"\n\n\n\n\n\nQC metrics calculation options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--var_qc_metrics\nKeys to select a boolean (containing only True or False) column from .var. For each cell, calculate the proportion of total values for genes which are labeled ‘True’, compared to the total sum of the values for all genes. Defaults to the combined values specified for –var_name_mitochondrial_genes and –filter_with_hvg_var_output.\nstring, example: \"ercc,highly_variable\"\n\n\n--top_n_vars\nNumber of top vars to be used to calculate cumulative proportions. If not specified, proportions are not calculated. --top_n_vars 20,50 finds cumulative proportion to the 20th and 50th most expressed vars.\ninteger, default: 50, default: 100, default: 200, default: 500\n\n\n\n\n\nPCA options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--pca_overwrite\nAllow overwriting slots for PCA output.\nboolean_true" + }, + { + "objectID": "components/workflows/multiomics/full_pipeline.html#authors", + "href": "components/workflows/multiomics/full_pipeline.html#authors", + "title": "Full pipeline", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author, maintainer)" + }, + { + "objectID": "components/workflows/multiomics/full_pipeline.html#visualisation", + "href": "components/workflows/multiomics/full_pipeline.html#visualisation", + "title": "Full pipeline", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p7(toSortedList)\n p9(Output)\n p11(filter)\n p17(add_id)\n p19(join)\n p23(mix)\n p22(filter)\n p25(filter)\n p30(split_modalities)\n p32(join)\n p39(concat)\n p35(filter)\n p37(test_wf:run_wf:split_modalities_workflow:splitStub)\n p40(flatMap)\n p41(filter)\n p44(toSortedList)\n p46(flatMap)\n p53(filter_with_counts)\n p55(join)\n p63(do_filter)\n p65(join)\n p73(filter_with_scrublet)\n p75(join)\n p110(concat)\n p79(filter)\n p82(toSortedList)\n p84(flatMap)\n p91(test_wf:run_wf:singlesample_processing_workflow:prot_singlesample:filter_with_counts:filter_with_counts_process1)\n p93(join)\n p101(test_wf:run_wf:singlesample_processing_workflow:prot_singlesample:do_filter:do_filter_process1)\n p103(join)\n p108(filter)\n p112(groupTuple)\n p118(concat)\n p120(join)\n p125(filter)\n p128(toSortedList)\n p130(flatMap)\n p132(toSortedList)\n p134(Output)\n p140(normalize_total)\n p142(join)\n p150(log1p)\n p152(join)\n p160(delete_layer)\n p162(join)\n p170(filter_with_hvg)\n p172(join)\n p180(rna_calculate_qc_metrics)\n p182(join)\n p223(concat)\n p188(filter)\n p191(toSortedList)\n p193(flatMap)\n p195(toSortedList)\n p197(Output)\n p203(clr)\n p205(join)\n p213(prot_calculate_qc_metrics)\n p215(join)\n p221(filter)\n p224(toSortedList)\n p230(merge)\n p232(join)\n p235(filter)\n p239(toSortedList)\n p241(flatMap)\n p248(pca)\n p250(join)\n p258(find_neighbors)\n p260(join)\n p268(umap)\n p270(join)\n p275(concat)\n p274(filter)\n p276(filter)\n p280(toSortedList)\n p282(flatMap)\n p289(pca)\n p291(join)\n p299(find_neighbors)\n p301(join)\n p309(test_wf:run_wf:integration_setup_workflow:initialize_integration_prot:umap:umap_process1)\n p311(join)\n p316(concat)\n p315(filter)\n p322(publish)\n p324(join)\n p329(toSortedList)\n p331(Output)\n p22-->p23\n p39-->p40\n p40-->p41\n p40-->p79\n p40-->p108\n p223-->p224\n p274-->p275\n p275-->p276\n p275-->p315\n p315-->p316\n p0-->p2\n p2-->p4\n p4-->p7\n p7-->p9\n p4-->p11\n p4-->p22\n p11-->p19\n p11-->p17\n p17-->p19\n p19-->p23\n p23-->p25\n p23-->p35\n p25-->p32\n p25-->p30\n p30-->p32\n p32-->p39\n p35-->p37\n p37-->p39\n p41-->p44\n p44-->p46\n p46-->p55\n p46-->p53\n p53-->p55\n p55-->p65\n p55-->p63\n p63-->p65\n p65-->p75\n p65-->p73\n p73-->p75\n p75-->p110\n p79-->p82\n p82-->p84\n p84-->p93\n p84-->p91\n p91-->p93\n p93-->p103\n p93-->p101\n p101-->p103\n p103-->p110\n p108-->p110\n p110-->p112\n p112-->p120\n p112-->p118\n p118-->p120\n p120-->p125\n p120-->p188\n p120-->p221\n p125-->p128\n p128-->p130\n p130-->p132\n p132-->p134\n p130-->p142\n p130-->p140\n p140-->p142\n p142-->p152\n p142-->p150\n p150-->p152\n p152-->p162\n p152-->p160\n p160-->p162\n p162-->p172\n p162-->p170\n p170-->p172\n p172-->p182\n p172-->p180\n p180-->p182\n p182-->p223\n p188-->p191\n p191-->p193\n p193-->p195\n p195-->p197\n p193-->p205\n p193-->p203\n p203-->p205\n p205-->p215\n p205-->p213\n p213-->p215\n p215-->p223\n p221-->p223\n p224-->p232\n p224-->p230\n p230-->p232\n p232-->p235\n p232-->p274\n p235-->p239\n p239-->p241\n p241-->p250\n p241-->p248\n p248-->p250\n p250-->p260\n p250-->p258\n p258-->p260\n p260-->p270\n p260-->p268\n p268-->p270\n p270-->p275\n p276-->p280\n p280-->p282\n p282-->p291\n p282-->p289\n p289-->p291\n p291-->p301\n p291-->p299\n p299-->p301\n p301-->p311\n p301-->p309\n p309-->p311\n p311-->p316\n p316-->p324\n p316-->p322\n p322-->p324\n p324-->p329\n p329-->p331" + }, + { + "objectID": "components/workflows/multiomics/integration/harmony_leiden.html", + "href": "components/workflows/multiomics/integration/harmony_leiden.html", + "title": "Harmony leiden", + "section": "", + "text": "ID: harmony_leiden\nNamespace: multiomics/integration\n\n\n\nSource" + }, + { + "objectID": "components/workflows/multiomics/integration/harmony_leiden.html#example-commands", + "href": "components/workflows/multiomics/integration/harmony_leiden.html#example-commands", + "title": "Harmony leiden", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/multiomics/integration/harmony_leiden/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"dataset.h5mu\"\nlayer: \"log_normalized\"\nmodality: \"rna\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n\n# Neighbour calculation\nuns_neighbors: \"harmonypy_integration_neighbors\"\nobsp_neighbor_distances: \"harmonypy_integration_distances\"\nobsp_neighbor_connectivities: \"harmonypy_integration_connectivities\"\n\n# Harmony integration options\nembedding: \"X_pca\"\nobsm_integrated: \"X_pca_integrated\"\nobs_covariates: # please fill in - example: [\"batch\", \"sample\"]\ntheta: [2]\n\n# Clustering options\nobs_cluster: \"harmony_integration_leiden\"\nleiden_resolution: [1]\n\n# Umap options\nobsm_umap: \"X_leiden_harmony_umap\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/multiomics/integration/harmony_leiden/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/multiomics/integration/harmony_leiden.html#argument-groups", + "href": "components/workflows/multiomics/integration/harmony_leiden.html#argument-groups", + "title": "Harmony leiden", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"dataset.h5mu\"\n\n\n--layer\nuse specified layer for expression values instead of the .X object from the modality.\nstring, default: \"log_normalized\"\n\n\n--modality\nWhich modality to process.\nstring, default: \"rna\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nNeighbour calculation\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--uns_neighbors\nIn which .uns slot to store various neighbor output objects.\nstring, default: \"harmonypy_integration_neighbors\"\n\n\n--obsp_neighbor_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"harmonypy_integration_distances\"\n\n\n--obsp_neighbor_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"harmonypy_integration_connectivities\"\n\n\n\n\n\nHarmony integration options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--embedding\nEmbedding to use as input\nstring, default: \"X_pca\"\n\n\n--obsm_integrated\nIn which .obsm slot to store the resulting integrated embedding.\nstring, default: \"X_pca_integrated\"\n\n\n--obs_covariates\nThe .obs field(s) that define the covariate(s) to regress out.\nstring, required, example: \"batch\", example: \"sample\"\n\n\n--theta\nDiversity clustering penalty parameter. Specify for each variable in group.by.vars. theta=0 does not encourage any diversity. Larger values of theta result in more diverse clusters.”\ndouble, default: 2\n\n\n\n\n\nClustering options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obs_cluster\nPrefix for the .obs keys under which to add the cluster labels. Newly created columns in .obs will be created from the specified value for ‘–obs_cluster’ suffixed with an underscore and one of the resolutions resolutions specified in ‘–leiden_resolution’.\nstring, default: \"harmony_integration_leiden\"\n\n\n--leiden_resolution\nControl the coarseness of the clustering. Higher values lead to more clusters.\ndouble, default: 1\n\n\n\n\n\nUmap options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_umap\nIn which .obsm slot to store the resulting UMAP embedding.\nstring, default: \"X_leiden_harmony_umap\"" + }, + { + "objectID": "components/workflows/multiomics/integration/harmony_leiden.html#authors", + "href": "components/workflows/multiomics/integration/harmony_leiden.html#authors", + "title": "Harmony leiden", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author)" + }, + { + "objectID": "components/workflows/multiomics/integration/harmony_leiden.html#visualisation", + "href": "components/workflows/multiomics/integration/harmony_leiden.html#visualisation", + "title": "Harmony leiden", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p10(harmonypy)\n p12(join)\n p20(find_neighbors)\n p22(join)\n p30(leiden)\n p32(join)\n p40(umap)\n p42(join)\n p50(move_obsm_to_obs)\n p52(join)\n p58(Output)\n p0-->p2\n p2-->p4\n p4-->p12\n p4-->p10\n p10-->p12\n p12-->p22\n p12-->p20\n p20-->p22\n p22-->p32\n p22-->p30\n p30-->p32\n p32-->p42\n p32-->p40\n p40-->p42\n p42-->p52\n p42-->p50\n p50-->p52\n p52-->p58" + }, + { + "objectID": "components/workflows/multiomics/integration/scanorama_leiden.html", + "href": "components/workflows/multiomics/integration/scanorama_leiden.html", + "title": "Scanorama leiden", + "section": "", + "text": "ID: scanorama_leiden\nNamespace: multiomics/integration\n\n\n\nSource" + }, + { + "objectID": "components/workflows/multiomics/integration/scanorama_leiden.html#example-commands", + "href": "components/workflows/multiomics/integration/scanorama_leiden.html#example-commands", + "title": "Scanorama leiden", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/multiomics/integration/scanorama_leiden/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"dataset.h5mu\"\nlayer: \"log_normalized\"\nmodality: \"rna\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n\n# Neighbour calculation\nuns_neighbors: \"scanorama_integration_neighbors\"\nobsp_neighbor_distances: \"scanorama_integration_distances\"\nobsp_neighbor_connectivities: \"scanorama_integration_connectivities\"\n\n# Scanorama integration options\nobs_batch: \"sample_id\"\nobsm_input: \"X_pca\"\nobsm_output: \"X_scanorama\"\nknn: 20\nbatch_size: 5000\nsigma: 15\napprox: true\nalpha: 0.1\n\n# Clustering options\nobs_cluster: \"scanorama_integration_leiden\"\nleiden_resolution: [1]\n\n# Umap options\nobsm_umap: \"X_leiden_scanorama_umap\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/multiomics/integration/scanorama_leiden/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/multiomics/integration/scanorama_leiden.html#argument-groups", + "href": "components/workflows/multiomics/integration/scanorama_leiden.html#argument-groups", + "title": "Scanorama leiden", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"dataset.h5mu\"\n\n\n--layer\nuse specified layer for expression values instead of the .X object from the modality.\nstring, default: \"log_normalized\"\n\n\n--modality\nWhich modality to process.\nstring, default: \"rna\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nNeighbour calculation\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--uns_neighbors\nIn which .uns slot to store various neighbor output objects.\nstring, default: \"scanorama_integration_neighbors\"\n\n\n--obsp_neighbor_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"scanorama_integration_distances\"\n\n\n--obsp_neighbor_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"scanorama_integration_connectivities\"\n\n\n\n\n\nScanorama integration options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obs_batch\nColumn name discriminating between your batches.\nstring, default: \"sample_id\"\n\n\n--obsm_input\n.obsm slot that points to embedding to run scanorama on.\nstring, default: \"X_pca\"\n\n\n--obsm_output\nThe name of the field in adata.obsm where the integrated embeddings will be stored after running this function. Defaults to X_scanorama.\nstring, default: \"X_scanorama\"\n\n\n--knn\nNumber of nearest neighbors to use for matching.\ninteger, default: 20\n\n\n--batch_size\nThe batch size used in the alignment vector computation. Useful when integrating very large (>100k samples) datasets. Set to large value that runs within available memory.\ninteger, default: 5000\n\n\n--sigma\nCorrection smoothing parameter on Gaussian kernel.\ndouble, default: 15\n\n\n--approx\nUse approximate nearest neighbors with Python annoy; greatly speeds up matching runtime.\nboolean, default: TRUE\n\n\n--alpha\nAlignment score minimum cutoff\ndouble, default: 0.1\n\n\n\n\n\nClustering options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obs_cluster\nPrefix for the .obs keys under which to add the cluster labels. Newly created columns in .obs will be created from the specified value for ‘–obs_cluster’ suffixed with an underscore and one of the resolutions specified in ‘–leiden_resolution’.\nstring, default: \"scanorama_integration_leiden\"\n\n\n--leiden_resolution\nControl the coarseness of the clustering. Higher values lead to more clusters.\ndouble, default: 1\n\n\n\n\n\nUmap options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_umap\nIn which .obsm slot to store the resulting UMAP embedding.\nstring, default: \"X_leiden_scanorama_umap\"" + }, + { + "objectID": "components/workflows/multiomics/integration/scanorama_leiden.html#authors", + "href": "components/workflows/multiomics/integration/scanorama_leiden.html#authors", + "title": "Scanorama leiden", + "section": "Authors", + "text": "Authors\n\nMauro Saporita (author)\nPovilas Gibas (author)" + }, + { + "objectID": "components/workflows/multiomics/integration/scanorama_leiden.html#visualisation", + "href": "components/workflows/multiomics/integration/scanorama_leiden.html#visualisation", + "title": "Scanorama leiden", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p11(scanorama)\n p13(join)\n p21(find_neighbors)\n p23(join)\n p31(leiden)\n p33(join)\n p41(umap)\n p43(join)\n p51(move_obsm_to_obs)\n p53(join)\n p60(Output)\n p0-->p2\n p2-->p4\n p4-->p13\n p4-->p11\n p11-->p13\n p13-->p23\n p13-->p21\n p21-->p23\n p23-->p33\n p23-->p31\n p31-->p33\n p33-->p43\n p33-->p41\n p41-->p43\n p43-->p53\n p43-->p51\n p51-->p53\n p53-->p60" + }, + { + "objectID": "components/workflows/multiomics/integration/totalvi_leiden.html", + "href": "components/workflows/multiomics/integration/totalvi_leiden.html", + "title": "Totalvi leiden", + "section": "", + "text": "ID: totalvi_leiden\nNamespace: multiomics/integration\n\n\n\nSource" + }, + { + "objectID": "components/workflows/multiomics/integration/totalvi_leiden.html#example-commands", + "href": "components/workflows/multiomics/integration/totalvi_leiden.html#example-commands", + "title": "Totalvi leiden", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/multiomics/integration/totalvi_leiden/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"dataset.h5mu\"\nlayer: \"log_normalized\"\nmodality: \"rna\"\nprot_modality: \"prot\"\nreference: # please fill in - example: \"path/to/file\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# reference_model_path: \"$id.$key.reference_model_path.reference_model_path\"\n# query_model_path: \"$id.$key.query_model_path.query_model_path\"\n\n# General TotalVI Options\nobs_batch: \"sample_id\"\nmax_epochs: 400\nmax_query_epochs: 200\nweight_decay: 0.0\nforce_retrain: false\n# var_input: \"foo\"\n\n# TotalVI integration options RNA\nrna_reference_modality: \"rna\"\nrna_obsm_output: \"X_totalvi\"\n\n# TotalVI integration options ADT\nprot_reference_modality: \"prot\"\nprot_obsm_output: \"X_totalvi\"\n\n# Neighbour calculation RNA\nrna_uns_neighbors: \"totalvi_integration_neighbors\"\nrna_obsp_neighbor_distances: \"totalvi_integration_distances\"\nrna_obsp_neighbor_connectivities: \"totalvi_integration_connectivities\"\n\n# Neighbour calculation ADT\nprot_uns_neighbors: \"totalvi_integration_neighbors\"\nprot_obsp_neighbor_distances: \"totalvi_integration_distances\"\nprot_obsp_neighbor_connectivities: \"totalvi_integration_connectivities\"\n\n# Clustering options RNA\nrna_obs_cluster: \"totalvi_integration_leiden\"\nrna_leiden_resolution: [1]\n\n# Clustering options ADT\nprot_obs_cluster: \"totalvi_integration_leiden\"\nprot_leiden_resolution: [1]\n\n# Umap options\nobsm_umap: \"X_totalvi_umap\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/multiomics/integration/totalvi_leiden/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/multiomics/integration/totalvi_leiden.html#argument-groups", + "href": "components/workflows/multiomics/integration/totalvi_leiden.html#argument-groups", + "title": "Totalvi leiden", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"dataset.h5mu\"\n\n\n--layer\nuse specified layer for expression values instead of the .X object from the modality.\nstring, default: \"log_normalized\"\n\n\n--modality\nWhich modality to process.\nstring, default: \"rna\"\n\n\n--prot_modality\nWhich modality to process.\nstring, default: \"prot\"\n\n\n--reference\nInput h5mu file with reference data to train the TOTALVI model.\nfile, required\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n--reference_model_path\nDirectory with the reference model. If not exists, trained model will be saved there\nfile, default: \"totalvi_model_reference\"\n\n\n--query_model_path\nDirectory, where the query model will be saved\nfile, default: \"totalvi_model_query\"\n\n\n\n\n\nGeneral TotalVI Options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obs_batch\n.Obs column name discriminating between your batches.\nstring, default: \"sample_id\"\n\n\n--max_epochs\nNumber of passes through the dataset\ninteger, default: 400\n\n\n--max_query_epochs\nNumber of passes through the dataset, when fine-tuning model for query\ninteger, default: 200\n\n\n--weight_decay\nWeight decay, when fine-tuning model for query\ndouble, default: 0\n\n\n--force_retrain\nIf true, retrain the model and save it to reference_model_path\nboolean_true\n\n\n--var_input\nBoolean .var column to subset data with (e.g. containing highly variable genes). By default, do not subset genes.\nstring\n\n\n\n\n\nTotalVI integration options RNA\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--rna_reference_modality\n\nstring, default: \"rna\"\n\n\n--rna_obsm_output\nIn which .obsm slot to store the normalized RNA from TOTALVI.\nstring, default: \"X_totalvi\"\n\n\n\n\n\nTotalVI integration options ADT\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--prot_reference_modality\nName of the modality containing proteins in the reference\nstring, default: \"prot\"\n\n\n--prot_obsm_output\nIn which .obsm slot to store the normalized protein data from TOTALVI.\nstring, default: \"X_totalvi\"\n\n\n\n\n\nNeighbour calculation RNA\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--rna_uns_neighbors\nIn which .uns slot to store various neighbor output objects.\nstring, default: \"totalvi_integration_neighbors\"\n\n\n--rna_obsp_neighbor_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"totalvi_integration_distances\"\n\n\n--rna_obsp_neighbor_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"totalvi_integration_connectivities\"\n\n\n\n\n\nNeighbour calculation ADT\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--prot_uns_neighbors\nIn which .uns slot to store various neighbor output objects.\nstring, default: \"totalvi_integration_neighbors\"\n\n\n--prot_obsp_neighbor_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"totalvi_integration_distances\"\n\n\n--prot_obsp_neighbor_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"totalvi_integration_connectivities\"\n\n\n\n\n\nClustering options RNA\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--rna_obs_cluster\nPrefix for the .obs keys under which to add the cluster labels. Newly created columns in .obs will be created from the specified value for ‘–obs_cluster’ suffixed with an underscore and one of the resolutions resolutions specified in ‘–leiden_resolution’.\nstring, default: \"totalvi_integration_leiden\"\n\n\n--rna_leiden_resolution\nControl the coarseness of the clustering. Higher values lead to more clusters.\ndouble, default: 1\n\n\n\n\n\nClustering options ADT\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--prot_obs_cluster\nPrefix for the .obs keys under which to add the cluster labels. Newly created columns in .obs will be created from the specified value for ‘–obs_cluster’ suffixed with an underscore and one of the resolutions resolutions specified in ‘–leiden_resolution’.\nstring, default: \"totalvi_integration_leiden\"\n\n\n--prot_leiden_resolution\nControl the coarseness of the clustering. Higher values lead to more clusters.\ndouble, default: 1\n\n\n\n\n\nUmap options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_umap\nIn which .obsm slot to store the resulting UMAP embedding.\nstring, default: \"X_totalvi_umap\"" + }, + { + "objectID": "components/workflows/multiomics/integration/totalvi_leiden.html#authors", + "href": "components/workflows/multiomics/integration/totalvi_leiden.html#authors", + "title": "Totalvi leiden", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author)" + }, + { + "objectID": "components/workflows/multiomics/integration/totalvi_leiden.html#visualisation", + "href": "components/workflows/multiomics/integration/totalvi_leiden.html#visualisation", + "title": "Totalvi leiden", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p3(toSortedList)\n p5(flatMap)\n p12(totalvi)\n p14(join)\n p23(find_neighbors)\n p25(join)\n p33(leiden)\n p35(join)\n p43(umap)\n p45(join)\n p53(move_obsm_to_obs)\n p55(join)\n p64(test_wf:run_wf:test_wf:run_wf:neighbors_leiden_umap:find_neighbors:find_neighbors_process1)\n p66(join)\n p74(test_wf:run_wf:test_wf:run_wf:neighbors_leiden_umap:leiden:leiden_process1)\n p76(join)\n p84(test_wf:run_wf:test_wf:run_wf:neighbors_leiden_umap:umap:umap_process1)\n p86(join)\n p94(test_wf:run_wf:test_wf:run_wf:neighbors_leiden_umap:move_obsm_to_obs:move_obsm_to_obs_process1)\n p96(join)\n p104(publish)\n p106(join)\n p112(Output)\n p0-->p3\n p3-->p5\n p5-->p14\n p5-->p12\n p12-->p14\n p14-->p25\n p14-->p23\n p23-->p25\n p25-->p35\n p25-->p33\n p33-->p35\n p35-->p45\n p35-->p43\n p43-->p45\n p45-->p55\n p45-->p53\n p53-->p55\n p55-->p66\n p55-->p64\n p64-->p66\n p66-->p76\n p66-->p74\n p74-->p76\n p76-->p86\n p76-->p84\n p84-->p86\n p86-->p96\n p86-->p94\n p94-->p96\n p96-->p106\n p96-->p104\n p104-->p106\n p106-->p112" + }, + { + "objectID": "components/workflows/multiomics/multisample.html", + "href": "components/workflows/multiomics/multisample.html", + "title": "Multisample", + "section": "", + "text": "ID: multisample\nNamespace: multiomics\n\n\n\nSource\nAn input .h5mu file will first be split in order to run the multisample processing per modality. Next, the modalities are merged again and the integration setup pipeline is executed. Please note that this workflow assumes that samples from multiple pipelines are already concatenated." + }, + { + "objectID": "components/workflows/multiomics/multisample.html#example-commands", + "href": "components/workflows/multiomics/multisample.html#example-commands", + "title": "Multisample", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/multiomics/multisample/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"input.h5mu\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n\n# Highly variable gene detection\nfilter_with_hvg_var_output: \"filter_with_hvg\"\nfilter_with_hvg_obs_batch_key: \"sample_id\"\n\n# QC metrics calculation options\nvar_qc_metrics: [\"filter_with_hvg\"]\ntop_n_vars: [50, 100, 200, 500]\n\n# PCA options\npca_overwrite: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/multiomics/multisample/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/multiomics/multisample.html#argument-groups", + "href": "components/workflows/multiomics/multisample.html#argument-groups", + "title": "Multisample", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"input.h5mu\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nHighly variable gene detection\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--filter_with_hvg_var_output\nIn which .var slot to store a boolean array corresponding to the highly variable genes.\nstring, default: \"filter_with_hvg\"\n\n\n--filter_with_hvg_obs_batch_key\nIf specified, highly-variable genes are selected within each batch separately and merged. This simple process avoids the selection of batch-specific genes and acts as a lightweight batch correction method.\nstring, default: \"sample_id\"\n\n\n\n\n\nQC metrics calculation options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--var_qc_metrics\nKeys to select a boolean (containing only True or False) column from .var. For each cell, calculate the proportion of total values for genes which are labeled ‘True’, compared to the total sum of the values for all genes.\nstring, default: \"filter_with_hvg\", example: \"ercc,highly_variable\"\n\n\n--top_n_vars\nNumber of top vars to be used to calculate cumulative proportions. If not specified, proportions are not calculated. --top_n_vars 20,50 finds cumulative proportion to the 20th and 50th most expressed vars.\ninteger, default: 50, default: 100, default: 200, default: 500\n\n\n\n\n\nPCA options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--pca_overwrite\nAllow overwriting slots for PCA output.\nboolean_true" + }, + { + "objectID": "components/workflows/multiomics/multisample.html#authors", + "href": "components/workflows/multiomics/multisample.html#authors", + "title": "Multisample", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author, maintainer)" + }, + { + "objectID": "components/workflows/multiomics/multisample.html#visualisation", + "href": "components/workflows/multiomics/multisample.html#visualisation", + "title": "Multisample", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p7(filter)\n p12(split_modalities)\n p14(join)\n p21(concat)\n p17(filter)\n p19(test_wf:run_wf:split_modalities_workflow:splitStub)\n p22(flatMap)\n p23(filter)\n p26(toSortedList)\n p28(flatMap)\n p30(toSortedList)\n p32(Output)\n p38(normalize_total)\n p40(join)\n p48(log1p)\n p50(join)\n p58(delete_layer)\n p60(join)\n p68(filter_with_hvg)\n p70(join)\n p78(rna_calculate_qc_metrics)\n p80(join)\n p121(concat)\n p86(filter)\n p89(toSortedList)\n p91(flatMap)\n p93(toSortedList)\n p95(Output)\n p101(clr)\n p103(join)\n p111(prot_calculate_qc_metrics)\n p113(join)\n p119(filter)\n p122(groupTuple)\n p128(merge)\n p130(join)\n p133(filter)\n p137(toSortedList)\n p139(flatMap)\n p146(pca)\n p148(join)\n p156(find_neighbors)\n p158(join)\n p166(umap)\n p168(join)\n p173(concat)\n p172(filter)\n p174(filter)\n p178(toSortedList)\n p180(flatMap)\n p187(pca)\n p189(join)\n p197(find_neighbors)\n p199(join)\n p207(test_wf:run_wf:integration_setup_workflow:initialize_integration_prot:umap:umap_process1)\n p209(join)\n p214(concat)\n p213(filter)\n p220(publish)\n p222(join)\n p227(toSortedList)\n p229(Output)\n p21-->p22\n p22-->p23\n p22-->p86\n p22-->p119\n p121-->p122\n p172-->p173\n p173-->p174\n p173-->p213\n p213-->p214\n p0-->p2\n p2-->p4\n p4-->p7\n p4-->p17\n p7-->p14\n p7-->p12\n p12-->p14\n p14-->p21\n p17-->p19\n p19-->p21\n p23-->p26\n p26-->p28\n p28-->p30\n p30-->p32\n p28-->p40\n p28-->p38\n p38-->p40\n p40-->p50\n p40-->p48\n p48-->p50\n p50-->p60\n p50-->p58\n p58-->p60\n p60-->p70\n p60-->p68\n p68-->p70\n p70-->p80\n p70-->p78\n p78-->p80\n p80-->p121\n p86-->p89\n p89-->p91\n p91-->p93\n p93-->p95\n p91-->p103\n p91-->p101\n p101-->p103\n p103-->p113\n p103-->p111\n p111-->p113\n p113-->p121\n p119-->p121\n p122-->p130\n p122-->p128\n p128-->p130\n p130-->p133\n p130-->p172\n p133-->p137\n p137-->p139\n p139-->p148\n p139-->p146\n p146-->p148\n p148-->p158\n p148-->p156\n p156-->p158\n p158-->p168\n p158-->p166\n p166-->p168\n p168-->p173\n p174-->p178\n p178-->p180\n p180-->p189\n p180-->p187\n p187-->p189\n p189-->p199\n p189-->p197\n p197-->p199\n p199-->p209\n p199-->p207\n p207-->p209\n p209-->p214\n p214-->p222\n p214-->p220\n p220-->p222\n p222-->p227\n p227-->p229" + }, + { + "objectID": "components/workflows/ingestion/cellranger_mapping.html", + "href": "components/workflows/ingestion/cellranger_mapping.html", + "title": "Cell Ranger mapping", + "section": "", + "text": "ID: cellranger_mapping\nNamespace: ingestion\n\n\n\nSource" + }, + { + "objectID": "components/workflows/ingestion/cellranger_mapping.html#example-commands", + "href": "components/workflows/ingestion/cellranger_mapping.html#example-commands", + "title": "Cell Ranger mapping", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/ingestion/cellranger_mapping/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: [\"sample_S1_L001_R1_001.fastq.gz\", \"sample_S1_L001_R2_001.fastq.gz\"]\nreference: # please fill in - example: \"reference.tar.gz\"\n\n# Outputs\n# output_raw: \"$id.$key.output_raw.output_raw\"\n# output_h5mu: \"$id.$key.output_h5mu.h5mu\"\nobsm_metrics: \"metrics_summary\"\noutput_type: \"raw\"\n\n# Cell Ranger arguments\n# expect_cells: 3000\nchemistry: \"auto\"\nsecondary_analysis: false\ngenerate_bam: true\ninclude_introns: true\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/ingestion/cellranger_mapping/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/ingestion/cellranger_mapping.html#argument-groups", + "href": "components/workflows/ingestion/cellranger_mapping.html#argument-groups", + "title": "Cell Ranger mapping", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nThe fastq.gz files to align. Can also be a single directory containing fastq.gz files.\nfile, required, example: \"sample_S1_L001_R1_001.fastq.gz\", example: \"sample_S1_L001_R2_001.fastq.gz\"\n\n\n--reference\nThe path to Cell Ranger reference tar.gz file.\nfile, required, example: \"reference.tar.gz\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output_raw\nLocation where the output folder from Cell Ranger will be stored.\nfile, required, example: \"output_dir\"\n\n\n--output_h5mu\nThe output from Cell Ranger, converted to h5mu.\nfile, required, example: \"output.h5mu\"\n\n\n--obsm_metrics\nName of the .obsm slot under which to QC metrics (if any).\nstring, default: \"metrics_summary\"\n\n\n--output_type\nWhich Cell Ranger output to use for converting to h5mu.\nstring, default: \"raw\"\n\n\n\n\n\nCell Ranger arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--expect_cells\nExpected number of recovered cells, used as input to cell calling algorithm.\ninteger, example: 3000\n\n\n--chemistry\nAssay configuration. - auto: autodetect mode - threeprime: Single Cell 3’ - fiveprime: Single Cell 5’ - SC3Pv1: Single Cell 3’ v1 - SC3Pv2: Single Cell 3’ v2 - SC3Pv3: Single Cell 3’ v3 - SC3Pv3LT: Single Cell 3’ v3 LT - SC3Pv3HT: Single Cell 3’ v3 HT - SC5P-PE: Single Cell 5’ paired-end - SC5P-R2: Single Cell 5’ R2-only - SC-FB: Single Cell Antibody-only 3’ v2 or 5’ See https://kb.10xgenomics.com/hc/en-us/articles/115003764132-How-does-Cell-Ranger-auto-detect-chemistry- for more information.\nstring, default: \"auto\"\n\n\n--secondary_analysis\nWhether or not to run the secondary analysis e.g. clustering.\nboolean, default: FALSE\n\n\n--generate_bam\nWhether to generate a BAM file.\nboolean, default: TRUE\n\n\n--include_introns\nInclude intronic reads in count (default=true unless –target-panel is specified in which case default=false)\nboolean, default: TRUE" + }, + { + "objectID": "components/workflows/ingestion/cellranger_mapping.html#authors", + "href": "components/workflows/ingestion/cellranger_mapping.html#authors", + "title": "Cell Ranger mapping", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nRobrecht Cannoodt (author, maintainer)\nDries De Maeyer (author)" + }, + { + "objectID": "components/workflows/ingestion/cellranger_mapping.html#visualisation", + "href": "components/workflows/ingestion/cellranger_mapping.html#visualisation", + "title": "Cell Ranger mapping", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p11(cellranger_count)\n p13(join)\n p20(cellranger_count_split)\n p22(join)\n p30(from_10xh5_to_h5mu)\n p32(join)\n p39(Output)\n p0-->p2\n p2-->p4\n p4-->p13\n p4-->p11\n p11-->p13\n p13-->p22\n p13-->p20\n p20-->p22\n p22-->p32\n p22-->p30\n p30-->p32\n p32-->p39" + }, + { + "objectID": "components/workflows/ingestion/cellranger_multi.html", + "href": "components/workflows/ingestion/cellranger_multi.html", + "title": "Cell Ranger multi", + "section": "", + "text": "ID: cellranger_multi\nNamespace: ingestion\n\n\n\nSource" + }, + { + "objectID": "components/workflows/ingestion/cellranger_multi.html#example-commands", + "href": "components/workflows/ingestion/cellranger_multi.html#example-commands", + "title": "Cell Ranger multi", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/ingestion/cellranger_multi/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: [\"sample_S1_L001_R1_001.fastq.gz\", \"sample_S1_L001_R2_001.fastq.gz\"]\ngex_reference: # please fill in - example: \"reference_genome.tar.gz\"\n# vdj_reference: \"reference_vdj.tar.gz\"\n# feature_reference: \"feature_reference.csv\"\n# vdj_inner_enrichment_primers: \"enrichment_primers.txt\"\n\n# Outputs\n# output_raw: \"$id.$key.output_raw.output_raw\"\n# output_h5mu: \"$id.$key.output_h5mu.h5mu\"\nuns_metrics: \"metrics_cellranger\"\n\n# Cell multiplexing parameters\n# cell_multiplex_sample_id: \"foo\"\n# cell_multiplex_oligo_ids: \"foo\"\n# cell_multiplex_description: \"foo\"\n\n# Gene expression arguments\n# gex_expect_cells: 3000\ngex_chemistry: \"auto\"\ngex_secondary_analysis: false\ngex_generate_bam: true\ngex_include_introns: true\n\n# Library arguments\nlibrary_id: # please fill in - example: [\"mysample1\"]\nlibrary_type: # please fill in - example: [\"Gene Expression\"]\n# library_subsample: [\"0.5\"]\n# library_lanes: [\"1-4\"]\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/ingestion/cellranger_multi/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/ingestion/cellranger_multi.html#argument-groups", + "href": "components/workflows/ingestion/cellranger_multi.html#argument-groups", + "title": "Cell Ranger multi", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nThe fastq.gz files to align. Can also be a single directory containing fastq.gz files.\nfile, required, example: \"sample_S1_L001_R1_001.fastq.gz\", example: \"sample_S1_L001_R2_001.fastq.gz\"\n\n\n--gex_reference\nGenome refence index built by Cell Ranger mkref.\nfile, required, example: \"reference_genome.tar.gz\"\n\n\n--vdj_reference\nVDJ refence index built by Cell Ranger mkref.\nfile, example: \"reference_vdj.tar.gz\"\n\n\n--feature_reference\nPath to the Feature reference CSV file, declaring Feature Barcode constructs and associated barcodes. Required only for Antibody Capture or CRISPR Guide Capture libraries. See https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/using/feature-bc-analysis#feature-ref for more information.\nfile, example: \"feature_reference.csv\"\n\n\n--vdj_inner_enrichment_primers\nV(D)J Immune Profiling libraries: if inner enrichment primers other than those provided in the 10x Genomics kits are used, they need to be specified here as a text file with one primer per line.\nfile, example: \"enrichment_primers.txt\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output_raw\nThe raw output folder.\nfile, required, example: \"output_dir\"\n\n\n--output_h5mu\nThe converted h5mu file.\nfile, required, example: \"output.h5mu\"\n\n\n--uns_metrics\nName of the .uns slot under which to QC metrics (if any).\nstring, default: \"metrics_cellranger\"\n\n\n\n\n\nCell multiplexing parameters\nArguments related to cell multiplexing.\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--cell_multiplex_sample_id\nA name to identify a multiplexed sample. Must be alphanumeric with hyphens and/or underscores, and less than 64 characters. Required for Cell Multiplexing libraries.\nstring\n\n\n--cell_multiplex_oligo_ids\nThe Cell Multiplexing oligo IDs used to multiplex this sample. If multiple CMOs were used for a sample, separate IDs with a pipe (e.g., CMO301|CMO302). Required for Cell Multiplexing libraries.\nstring\n\n\n--cell_multiplex_description\nA description for the sample.\nstring\n\n\n\n\n\nGene expression arguments\nArguments relevant to the analysis of gene expression data.\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--gex_expect_cells\nExpected number of recovered cells, used as input to cell calling algorithm.\ninteger, example: 3000\n\n\n--gex_chemistry\nAssay configuration. - auto: autodetect mode - threeprime: Single Cell 3’ - fiveprime: Single Cell 5’ - SC3Pv1: Single Cell 3’ v1 - SC3Pv2: Single Cell 3’ v2 - SC3Pv3: Single Cell 3’ v3 - SC3Pv3LT: Single Cell 3’ v3 LT - SC3Pv3HT: Single Cell 3’ v3 HT - SC5P-PE: Single Cell 5’ paired-end - SC5P-R2: Single Cell 5’ R2-only - SC-FB: Single Cell Antibody-only 3’ v2 or 5’ See https://kb.10xgenomics.com/hc/en-us/articles/115003764132-How-does-Cell-Ranger-auto-detect-chemistry- for more information.\nstring, default: \"auto\"\n\n\n--gex_secondary_analysis\nWhether or not to run the secondary analysis e.g. clustering.\nboolean, default: FALSE\n\n\n--gex_generate_bam\nWhether to generate a BAM file.\nboolean, default: TRUE\n\n\n--gex_include_introns\nInclude intronic reads in count (default=true unless –target-panel is specified in which case default=false)\nboolean, default: TRUE\n\n\n\n\n\nLibrary arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--library_id\nThe Illumina sample name to analyze. This must exactly match the ‘Sample Name’ part of the FASTQ files specified in the --input argument.\nstring, required, example: \"mysample1\"\n\n\n--library_type\nThe underlying feature type of the library. Possible values: “Gene Expression”, “VDJ”, “VDJ-T”, “VDJ-B”, “Antibody Capture”, “CRISPR Guide Capture”, “Multiplexing Capture”\nstring, required, example: \"Gene Expression\"\n\n\n--library_subsample\nOptional. The rate at which reads from the provided FASTQ files are sampled. Must be strictly greater than 0 and less than or equal to 1.\nstring, example: \"0.5\"\n\n\n--library_lanes\nLanes associated with this sample. Defaults to using all lanes.\nstring, example: \"1-4\"" + }, + { + "objectID": "components/workflows/ingestion/cellranger_multi.html#authors", + "href": "components/workflows/ingestion/cellranger_multi.html#authors", + "title": "Cell Ranger multi", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author)" + }, + { + "objectID": "components/workflows/ingestion/cellranger_multi.html#visualisation", + "href": "components/workflows/ingestion/cellranger_multi.html#visualisation", + "title": "Cell Ranger multi", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p11(cellranger_multi)\n p13(join)\n p20(from_cellranger_multi_to_h5mu)\n p22(join)\n p29(Output)\n p0-->p2\n p2-->p4\n p4-->p13\n p4-->p11\n p11-->p13\n p13-->p22\n p13-->p20\n p20-->p22\n p22-->p29" + }, + { + "objectID": "components/workflows/ingestion/make_reference.html", + "href": "components/workflows/ingestion/make_reference.html", + "title": "Make reference", + "section": "", + "text": "ID: make_reference\nNamespace: ingestion\n\n\n\nSource" + }, + { + "objectID": "components/workflows/ingestion/make_reference.html#example-commands", + "href": "components/workflows/ingestion/make_reference.html#example-commands", + "title": "Make reference", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/ingestion/make_reference/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ngenome_fasta: # please fill in - example: \"https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/GRCh38.primary_assembly.genome.fa.gz\"\ntranscriptome_gtf: # please fill in - example: \"https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/gencode.v41.annotation.gtf.gz\"\n# ercc: \"https://assets.thermofisher.com/TFS-Assets/LSG/manuals/ERCC92.zip\"\n\n# Outputs\ntarget: [\"star\"]\n# output_fasta: \"$id.$key.output_fasta.gz\"\n# output_gtf: \"$id.$key.output_gtf.gz\"\n# output_cellranger: \"$id.$key.output_cellranger.gz\"\n# output_bd_rhapsody: \"$id.$key.output_bd_rhapsody.gz\"\n# output_star: \"$id.$key.output_star.gz\"\n\n# Arguments\n# subset_regex: \"(ERCC-00002|chr1)\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/ingestion/make_reference/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/ingestion/make_reference.html#argument-groups", + "href": "components/workflows/ingestion/make_reference.html#argument-groups", + "title": "Make reference", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the reference.\nstring, required, example: \"foo\"\n\n\n--genome_fasta\nReference genome fasta.\nfile, required, example: \"https:/ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/GRCh38.primary_assembly.genome.fa.gz\"\n\n\n--transcriptome_gtf\nReference transcriptome annotation.\nfile, required, example: \"https:/ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/gencode.v41.annotation.gtf.gz\"\n\n\n--ercc\nERCC sequence and annotation file.\nfile, example: \"https:/assets.thermofisher.com/TFS-Assets/LSG/manuals/ERCC92.zip\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--target\nWhich reference indices to generate.\nstring, default: \"star\"\n\n\n--output_fasta\nOutput genome sequence fasta.\nfile, example: \"genome_sequence.fa.gz\"\n\n\n--output_gtf\nOutput transcriptome annotation gtf.\nfile, example: \"transcriptome_annotation.gtf.gz\"\n\n\n--output_cellranger\nOutput index\nfile, example: \"cellranger_index.tar.gz\"\n\n\n--output_bd_rhapsody\nOutput index\nfile, example: \"bdrhap_index.tar.gz\"\n\n\n--output_star\nOutput index\nfile, example: \"star_index.tar.gz\"\n\n\n\n\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--subset_regex\nWill subset the reference chromosomes using the given regex.\nstring, example: \"(ERCC-00002|chr1)\"" + }, + { + "objectID": "components/workflows/ingestion/make_reference.html#authors", + "href": "components/workflows/ingestion/make_reference.html#authors", + "title": "Make reference", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nRobrecht Cannoodt (author, maintainer)" + }, + { + "objectID": "components/workflows/ingestion/make_reference.html#visualisation", + "href": "components/workflows/ingestion/make_reference.html#visualisation", + "title": "Make reference", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p11(make_reference)\n p13(join)\n p17(filter)\n p22(build_cellranger_reference)\n p24(join)\n p54(join)\n p29(filter)\n p34(build_bdrhap_reference)\n p36(join)\n p55(join)\n p41(filter)\n p46(star_build_reference)\n p48(join)\n p56(join)\n p57(join)\n p62(Output)\n p54-->p55\n p55-->p56\n p56-->p57\n p0-->p2\n p2-->p4\n p4-->p13\n p4-->p11\n p11-->p13\n p13-->p17\n p17-->p24\n p17-->p22\n p22-->p24\n p24-->p54\n p13-->p29\n p29-->p36\n p29-->p34\n p34-->p36\n p36-->p55\n p13-->p41\n p41-->p48\n p41-->p46\n p46-->p48\n p48-->p56\n p0-->p57\n p13-->p54\n p57-->p62" + }, + { + "objectID": "components/workflows/ingestion/demux.html", + "href": "components/workflows/ingestion/demux.html", + "title": "Demux", + "section": "", + "text": "ID: demux\nNamespace: ingestion\n\n\n\nSource\nConvert .bcl files to .fastq files using bcl2fastq, bcl-convert or Cell Ranger mkfastq." + }, + { + "objectID": "components/workflows/ingestion/demux.html#example-commands", + "href": "components/workflows/ingestion/demux.html#example-commands", + "title": "Demux", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script ./workflows/ingestion/demux/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"bcl_dir\"\nsample_sheet: # please fill in - example: \"bcl_dir\"\ndemultiplexer: \"bcl2fastq\"\n# ignore_missing: true\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script ./workflows/ingestion/demux/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/ingestion/demux.html#argument-group", + "href": "components/workflows/ingestion/demux.html#argument-group", + "title": "Demux", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nInput run directory\nfile, required, example: \"bcl_dir\"\n\n\n--sample_sheet\nPointer to the sample sheet\nfile, required, example: \"bcl_dir\"\n\n\n--demultiplexer\nThe multiplexer to use, one of bclconvert or mkfastq\nstring, default: \"bcl2fastq\"\n\n\n--ignore_missing\nShould the demultiplexer ignore missing entities (filter, …)\nboolean" + }, + { + "objectID": "components/workflows/ingestion/demux.html#authors", + "href": "components/workflows/ingestion/demux.html#authors", + "title": "Demux", + "section": "Authors", + "text": "Authors\n\nToni Verbeiren (author, maintainer)\nMarijke Van Moerbeke (author)\nAngela Oliveira Pisco (author)\nSamuel D’Souza (author)\nRobrecht Cannoodt (author)" + }, + { + "objectID": "components/workflows/ingestion/demux.html#visualisation", + "href": "components/workflows/ingestion/demux.html#visualisation", + "title": "Demux", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p5(filter)\n p10(cellranger_mkfastq)\n p12(join)\n p35(mix)\n p15(filter)\n p20(bcl_convert)\n p22(join)\n p25(filter)\n p30(bcl2fastq)\n p32(join)\n p41(fastqc)\n p43(join)\n p46(Output)\n p48(toSortedList)\n p54(multiqc)\n p56(join)\n p59(Output)\n p63(Output)\n p4-->p5\n p4-->p15\n p4-->p25\n p0-->p2\n p2-->p4\n p5-->p12\n p5-->p10\n p10-->p12\n p12-->p35\n p15-->p22\n p15-->p20\n p20-->p22\n p22-->p35\n p25-->p32\n p25-->p30\n p30-->p32\n p32-->p35\n p35-->p43\n p35-->p41\n p41-->p43\n p43-->p46\n p35-->p48\n p48-->p56\n p48-->p54\n p54-->p56\n p56-->p59\n p35-->p63" + }, + { + "objectID": "components/workflows/integration/scvi/scvi.html", + "href": "components/workflows/integration/scvi/scvi.html", + "title": "Scvi", + "section": "", + "text": "ID: scvi\nNamespace: integration/scvi\n\n\n\nSource" + }, + { + "objectID": "components/workflows/integration/scvi/scvi.html#example-commands", + "href": "components/workflows/integration/scvi/scvi.html#example-commands", + "title": "Scvi", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.9.0 -latest \\\n -main-script workflows/multiomics/integration/scvi/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"dataset.h5mu\"\nlayer: \"log_normalized\"\nmodality: \"rna\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# output_model: \"$id.$key.output_model.output_model\"\n\n# Neighbour calculation\nuns_neighbors: \"scvi_integration_neighbors\"\nobsp_neighbor_distances: \"scvi_integration_distances\"\nobsp_neighbor_connectivities: \"scvi_integration_connectivities\"\n\n# Scvi integration options\nobs_batch: # please fill in - example: \"foo\"\nobsm_output: \"X_scvi_integrated\"\n# early_stopping: true\nearly_stopping_monitor: \"elbo_validation\"\nearly_stopping_patience: 45\nearly_stopping_min_delta: 0.0\n# max_epochs: 123\nreduce_lr_on_plateau: true\nlr_factor: 0.6\nlr_patience: 30\n\n# Umap options\nobsm_umap: \"X_scvi_umap\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.9.0 -latest \\\n -profile docker \\\n -main-script workflows/multiomics/integration/scvi/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/integration/scvi/scvi.html#argument-groups", + "href": "components/workflows/integration/scvi/scvi.html#argument-groups", + "title": "Scvi", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"dataset.h5mu\"\n\n\n--layer\nuse specified layer for expression values instead of the .X object from the modality.\nstring, default: \"log_normalized\"\n\n\n--modality\nWhich modality to process.\nstring, default: \"rna\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n--output_model\nFolder where the state of the trained model will be saved to.\nfile, required, example: \"output_dir\"\n\n\n\n\n\nNeighbour calculation\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--uns_neighbors\nIn which .uns slot to store various neighbor output objects.\nstring, default: \"scvi_integration_neighbors\"\n\n\n--obsp_neighbor_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"scvi_integration_distances\"\n\n\n--obsp_neighbor_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"scvi_integration_connectivities\"\n\n\n\n\n\nScvi integration options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obs_batch\nColumn name discriminating between your batches.\nstring, required\n\n\n--obsm_output\nIn which .obsm slot to store the resulting integrated embedding.\nstring, default: \"X_scvi_integrated\"\n\n\n--early_stopping\nWhether to perform early stopping with respect to the validation set.\nboolean\n\n\n--early_stopping_monitor\nMetric logged during validation set epoch.\nstring, default: \"elbo_validation\"\n\n\n--early_stopping_patience\nNumber of validation epochs with no improvement after which training will be stopped.\ninteger, default: 45\n\n\n--early_stopping_min_delta\nMinimum change in the monitored quantity to qualify as an improvement, i.e. an absolute change of less than min_delta, will count as no improvement.\ndouble, default: 0\n\n\n--max_epochs\nNumber of passes through the dataset, defaults to (20000 / number of cells) * 400 or 400; whichever is smallest.\ninteger\n\n\n--reduce_lr_on_plateau\nWhether to monitor validation loss and reduce learning rate when validation set lr_scheduler_metric plateaus.\nboolean, default: TRUE\n\n\n--lr_factor\nFactor to reduce learning rate.\ndouble, default: 0.6\n\n\n--lr_patience\nNumber of epochs with no improvement after which learning rate will be reduced.\ndouble, default: 30\n\n\n\n\n\nUmap options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_umap\nIn which .obsm slot to store the resulting UMAP embedding.\nstring, default: \"X_scvi_umap\"" + }, + { + "objectID": "components/workflows/integration/scvi/scvi.html#authors", + "href": "components/workflows/integration/scvi/scvi.html#authors", + "title": "Scvi", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author)" + }, + { + "objectID": "components/workflows/integration/scvi/scvi.html#visualisation", + "href": "components/workflows/integration/scvi/scvi.html#visualisation", + "title": "Scvi", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p3(toSortedList)\n p5(flatMap)\n p13(scvi)\n p24(find_neighbors)\n p34(umap)\n p42(Output)\n p0-->p3\n p3-->p5\n p5-->p13\n p13-->p24\n p24-->p34\n p34-->p42" + }, + { + "objectID": "components/workflows/integration/scanorama_leiden/scanorama_leiden.html", + "href": "components/workflows/integration/scanorama_leiden/scanorama_leiden.html", + "title": "Scanorama leiden", + "section": "", + "text": "ID: scanorama_leiden\nNamespace: integration/scanorama_leiden\n\n\n\nSource" + }, + { + "objectID": "components/workflows/integration/scanorama_leiden/scanorama_leiden.html#example-commands", + "href": "components/workflows/integration/scanorama_leiden/scanorama_leiden.html#example-commands", + "title": "Scanorama leiden", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.9.0 -latest \\\n -main-script workflows/multiomics/integration/scanorama_leiden/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nid: # please fill in - example: \"foo\"\ninput: # please fill in - example: \"dataset.h5mu\"\nlayer: \"log_normalized\"\nmodality: \"rna\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n\n# Neighbour calculation\nuns_neighbors: \"scanorama_integration_neighbors\"\nobsp_neighbor_distances: \"scanorama_integration_distances\"\nobsp_neighbor_connectivities: \"scanorama_integration_connectivities\"\n\n# Scanorama integration options\nobs_batch: \"sample_id\"\nobsm_input: \"X_pca\"\nobsm_output: \"X_scanorama\"\nknn: 20\nbatch_size: 5000\nsigma: 15\napprox: true\nalpha: 0.1\n\n# Clustering options\nobs_cluster: \"scanorama_integration_leiden\"\nleiden_resolution: [1]\n\n# Umap options\nobsm_umap: \"X_leiden_scanorama_umap\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.9.0 -latest \\\n -profile docker \\\n -main-script workflows/multiomics/integration/scanorama_leiden/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/workflows/integration/scanorama_leiden/scanorama_leiden.html#argument-groups", + "href": "components/workflows/integration/scanorama_leiden/scanorama_leiden.html#argument-groups", + "title": "Scanorama leiden", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--id\nID of the sample.\nstring, required, example: \"foo\"\n\n\n--input\nPath to the sample.\nfile, required, example: \"dataset.h5mu\"\n\n\n--layer\nuse specified layer for expression values instead of the .X object from the modality.\nstring, default: \"log_normalized\"\n\n\n--modality\nWhich modality to process.\nstring, default: \"rna\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nDestination path to the output.\nfile, required, example: \"output.h5mu\"\n\n\n\n\n\nNeighbour calculation\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--uns_neighbors\nIn which .uns slot to store various neighbor output objects.\nstring, default: \"scanorama_integration_neighbors\"\n\n\n--obsp_neighbor_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"scanorama_integration_distances\"\n\n\n--obsp_neighbor_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"scanorama_integration_connectivities\"\n\n\n\n\n\nScanorama integration options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obs_batch\nColumn name discriminating between your batches.\nstring, default: \"sample_id\"\n\n\n--obsm_input\n.osbm slot that points to embedding to run scanorama on.\nstring, default: \"X_pca\"\n\n\n--obsm_output\nThe name of the field in adata.obsm where the integrated embeddings will be stored after running this function. Defaults to X_scanorama.\nstring, default: \"X_scanorama\"\n\n\n--knn\nNumber of nearest neighbors to use for matching.\ninteger, default: 20\n\n\n--batch_size\nThe batch size used in the alignment vector computation. Useful when integrating very large (>100k samples) datasets. Set to large value that runs within available memory.\ninteger, default: 5000\n\n\n--sigma\nCorrection smoothing parameter on Gaussian kernel.\ndouble, default: 15\n\n\n--approx\nUse approximate nearest neighbors with Python annoy; greatly speeds up matching runtime.\nboolean, default: TRUE\n\n\n--alpha\nAlignment score minimum cutoff\ndouble, default: 0.1\n\n\n\n\n\nClustering options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obs_cluster\nName of the .obs key under which to add the cluster labels.\nstring, default: \"scanorama_integration_leiden\"\n\n\n--leiden_resolution\nControl the coarseness of the clustering. Higher values lead to more clusters.\ndouble, default: 1\n\n\n\n\n\nUmap options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--obsm_umap\nIn which .obsm slot to store the resulting UMAP embedding.\nstring, default: \"X_leiden_scanorama_umap\"" + }, + { + "objectID": "components/workflows/integration/scanorama_leiden/scanorama_leiden.html#authors", + "href": "components/workflows/integration/scanorama_leiden/scanorama_leiden.html#authors", + "title": "Scanorama leiden", + "section": "Authors", + "text": "Authors\n\nMauro Saporita (author)\nPovilas Gibas (author)" + }, + { + "objectID": "components/workflows/integration/scanorama_leiden/scanorama_leiden.html#visualisation", + "href": "components/workflows/integration/scanorama_leiden/scanorama_leiden.html#visualisation", + "title": "Scanorama leiden", + "section": "Visualisation", + "text": "Visualisation\n\n\n\n\nflowchart LR\n p0(Input)\n p2(toSortedList)\n p4(flatMap)\n p12(scanorama)\n p22(find_neighbors)\n p32(leiden)\n p42(umap)\n p52(move_obsm_to_obs)\n p60(Output)\n p0-->p2\n p2-->p4\n p4-->p12\n p12-->p22\n p22-->p32\n p32-->p42\n p42-->p52\n p52-->p60" + }, + { + "objectID": "components/modules/velocity/scvelo.html", + "href": "components/modules/velocity/scvelo.html", + "title": "Scvelo", + "section": "", + "text": "ID: scvelo\nNamespace: velocity\n\n\n\nSource" + }, + { + "objectID": "components/modules/velocity/scvelo.html#example-commands", + "href": "components/modules/velocity/scvelo.html#example-commands", + "title": "Scvelo", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/velocity/scvelo/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput: # please fill in - example: \"path/to/file\"\n\n# Outputs\n# output: \"$id.$key.output.output\"\n# output_compression: \"gzip\"\n\n# Filtering and normalization\n# min_counts: 123\n# min_counts_u: 123\n# min_cells: 123\n# min_cells_u: 123\n# min_shared_counts: 123\n# min_shared_cells: 123\n# n_top_genes: 123\nlog_transform: true\n\n# Fitting parameters\n# n_principal_components: 123\nn_neighbors: 30\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/velocity/scvelo/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/velocity/scvelo.html#argument-groups", + "href": "components/modules/velocity/scvelo.html#argument-groups", + "title": "Scvelo", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nVelocyto loom file.\nfile, required\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput directory. If it does not exist, will be created.\nfile, required\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n\n\n\nFiltering and normalization\nArguments for filtering, normalization an log transform (see scvelo.pp.filter_and_normalize function)\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--min_counts\nMinimum number of counts required for a gene to pass filtering (spliced).\ninteger\n\n\n--min_counts_u\nMinimum number of counts required for a gene to pass filtering (unspliced).\ninteger\n\n\n--min_cells\nMinimum number of cells expressed required to pass filtering (spliced).\ninteger\n\n\n--min_cells_u\nMinimum number of cells expressed required to pass filtering (unspliced).\ninteger\n\n\n--min_shared_counts\nMinimum number of counts (both unspliced and spliced) required for a gene.\ninteger\n\n\n--min_shared_cells\nMinimum number of cells required to be expressed (both unspliced and spliced).\ninteger\n\n\n--n_top_genes\nNumber of genes to keep.\ninteger\n\n\n--log_transform\nDo not log transform counts.\nboolean, default: TRUE\n\n\n\n\n\nFitting parameters\nArguments for fitting the data\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--n_principal_components\nNumber of principal components to use for calculating moments.\ninteger\n\n\n--n_neighbors\nNumber of neighbors to use. First/second-order moments are computed for each cell across its nearest neighbors, where the neighbor graph is obtained from euclidean distances in PCA space.\ninteger, default: 30" + }, + { + "objectID": "components/modules/velocity/scvelo.html#authors", + "href": "components/modules/velocity/scvelo.html#authors", + "title": "Scvelo", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/interpret/lianapy.html", + "href": "components/modules/interpret/lianapy.html", + "title": "Lianapy", + "section": "", + "text": "ID: lianapy\nNamespace: interpret\n\n\n\nSource" + }, + { + "objectID": "components/modules/interpret/lianapy.html#example-commands", + "href": "components/modules/interpret/lianapy.html#example-commands", + "title": "Lianapy", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/interpret/lianapy/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"path/to/file\"\n# output: \"$id.$key.output.output\"\noutput_compression: \"gzip\"\nmodality: \"rna\"\n# layer: \"foo\"\ngroupby: \"bulk_labels\"\nresource_name: \"consensus\"\ngene_symbol: \"gene_symbol\"\nexpr_prop: 0.1\nmin_cells: 5\naggregate_method: \"rra\"\nreturn_all_lrs: false\nn_perms: 100\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/interpret/lianapy/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/interpret/lianapy.html#argument-group", + "href": "components/modules/interpret/lianapy.html#argument-group", + "title": "Lianapy", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required\n\n\n--output\nOutput h5mu file.\nfile, required\n\n\n--output_compression\n\nstring, default: \"gzip\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--layer\nLayer in anndata.AnnData.layers to use. If None, use mudata.mod[modality].X.\nstring\n\n\n--groupby\nThe key of the observations grouping to consider.\nstring, default: \"bulk_labels\"\n\n\n--resource_name\nName of the resource to be loaded and use for ligand-receptor inference.\nstring, default: \"consensus\"\n\n\n--gene_symbol\nColumn name in var DataFrame in which gene symbol are stored.\nstring, default: \"gene_symbol\"\n\n\n--expr_prop\nMinimum expression proportion for the ligands/receptors (and their subunits) in the corresponding cell identities. Set to ‘0’, to return unfiltered results.\ndouble, default: 0.1\n\n\n--min_cells\nMinimum cells per cell identity (‘groupby’) to be considered for downstream analysis.\ninteger, default: 5\n\n\n--aggregate_method\nMethod aggregation approach, one of [‘mean’, ‘rra’], where ‘mean’ represents the mean rank, while ‘rra’ is the RobustRankAggregate (Kolde et al., 2014) of the interactions.\nstring, default: \"rra\"\n\n\n--return_all_lrs\nBool whether to return all LRs, or only those that surpass the ‘expr_prop’ threshold. Those interactions that do not pass the ‘expr_prop’ threshold will be assigned to the worst score of the ones that do. ‘False’ by default.\nboolean, default: FALSE\n\n\n--n_perms\nNumber of permutations for the permutation test. Note that this is relevant only for permutation-based methods - e.g. ’CellPhoneDB\ninteger, default: 100" + }, + { + "objectID": "components/modules/interpret/lianapy.html#authors", + "href": "components/modules/interpret/lianapy.html#authors", + "title": "Lianapy", + "section": "Authors", + "text": "Authors\n\nMauro Saporita (author)\nPovilas Gibas (author)" + }, + { + "objectID": "components/modules/mapping/cellranger_count.html", + "href": "components/modules/mapping/cellranger_count.html", + "title": "Cellranger count", + "section": "", + "text": "ID: cellranger_count\nNamespace: mapping\n\n\n\nSource" + }, + { + "objectID": "components/modules/mapping/cellranger_count.html#example-commands", + "href": "components/modules/mapping/cellranger_count.html#example-commands", + "title": "Cellranger count", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/mapping/cellranger_count/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput: # please fill in - example: [\"sample_S1_L001_R1_001.fastq.gz\", \"sample_S1_L001_R2_001.fastq.gz\"]\nreference: # please fill in - example: \"reference.tar.gz\"\n\n# Outputs\n# output: \"$id.$key.output.output\"\n\n# Arguments\n# expect_cells: 3000\nchemistry: \"auto\"\nsecondary_analysis: false\ngenerate_bam: true\ninclude_introns: true\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/mapping/cellranger_count/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/mapping/cellranger_count.html#argument-groups", + "href": "components/modules/mapping/cellranger_count.html#argument-groups", + "title": "Cellranger count", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nThe fastq.gz files to align. Can also be a single directory containing fastq.gz files.\nfile, required, example: \"sample_S1_L001_R1_001.fastq.gz\", example: \"sample_S1_L001_R2_001.fastq.gz\"\n\n\n--reference\nThe path to Cell Ranger reference tar.gz file. Can also be a directory.\nfile, required, example: \"reference.tar.gz\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nThe folder to store the alignment results.\nfile, required, example: \"/path/to/output\"\n\n\n\n\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--expect_cells\nExpected number of recovered cells, used as input to cell calling algorithm.\ninteger, example: 3000\n\n\n--chemistry\nAssay configuration. - auto: autodetect mode - threeprime: Single Cell 3’ - fiveprime: Single Cell 5’ - SC3Pv1: Single Cell 3’ v1 - SC3Pv2: Single Cell 3’ v2 - SC3Pv3: Single Cell 3’ v3 - SC3Pv3LT: Single Cell 3’ v3 LT - SC3Pv3HT: Single Cell 3’ v3 HT - SC5P-PE: Single Cell 5’ paired-end - SC5P-R2: Single Cell 5’ R2-only - SC-FB: Single Cell Antibody-only 3’ v2 or 5’ See https://kb.10xgenomics.com/hc/en-us/articles/115003764132-How-does-Cell-Ranger-auto-detect-chemistry- for more information.\nstring, default: \"auto\"\n\n\n--secondary_analysis\nWhether or not to run the secondary analysis e.g. clustering.\nboolean, default: FALSE\n\n\n--generate_bam\nWhether to generate a BAM file.\nboolean, default: TRUE\n\n\n--include_introns\nInclude intronic reads in count (default=true unless –target-panel is specified in which case default=false)\nboolean, default: TRUE" + }, + { + "objectID": "components/modules/mapping/cellranger_count.html#authors", + "href": "components/modules/mapping/cellranger_count.html#authors", + "title": "Cellranger count", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nSamuel D’Souza (author)\nRobrecht Cannoodt (author, maintainer)" + }, + { + "objectID": "components/modules/mapping/htseq_count_to_h5mu.html", + "href": "components/modules/mapping/htseq_count_to_h5mu.html", + "title": "Htseq count to h5mu", + "section": "", + "text": "ID: htseq_count_to_h5mu\nNamespace: mapping\n\n\n\nSource" + }, + { + "objectID": "components/modules/mapping/htseq_count_to_h5mu.html#example-commands", + "href": "components/modules/mapping/htseq_count_to_h5mu.html#example-commands", + "title": "Htseq count to h5mu", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/mapping/htseq_count_to_h5mu/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Input\ninput_id: # please fill in - example: [\"foo\"]\ninput_counts: # please fill in - example: [\"counts.tsv\"]\nreference: # please fill in - example: \"gencode_v41_star\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/mapping/htseq_count_to_h5mu/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/mapping/htseq_count_to_h5mu.html#argument-groups", + "href": "components/modules/mapping/htseq_count_to_h5mu.html#argument-groups", + "title": "Htseq count to h5mu", + "section": "Argument groups", + "text": "Argument groups\n\nInput\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input_id\nThe obs index for the counts\nstring, required, example: \"foo\"\n\n\n--input_counts\nThe counts as a TSV file as output by HTSeq.\nfile, required, example: \"counts.tsv\"\n\n\n--reference\nThe GTF file.\nfile, required, example: \"gencode_v41_star\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput h5mu file.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"" + }, + { + "objectID": "components/modules/mapping/htseq_count_to_h5mu.html#authors", + "href": "components/modules/mapping/htseq_count_to_h5mu.html#authors", + "title": "Htseq count to h5mu", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (author, maintainer)\nAngela Oliveira Pisco (author)" + }, + { + "objectID": "components/modules/mapping/htseq_count.html", + "href": "components/modules/mapping/htseq_count.html", + "title": "Htseq count", + "section": "", + "text": "ID: htseq_count\nNamespace: mapping\n\n\n\nSource\nThis script takes one or more alignment files in SAM/BAM format and a feature file in GFF format and calculates for each feature the number of reads mapping to it.\nSee http://htseq.readthedocs.io/en/master/count.html for details." + }, + { + "objectID": "components/modules/mapping/htseq_count.html#example-commands", + "href": "components/modules/mapping/htseq_count.html#example-commands", + "title": "Htseq count", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/mapping/htseq_count/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\norder: \"name\"\nstranded: \"yes\"\nminimum_alignment_quality: 10\n# type: \"exon\"\n# id_attribute: [\"gene_id\"]\n# additional_attributes: [\"gene_name\"]\nadd_chromosome_info: false\nmode: \"union\"\nnon_unique: \"none\"\n# secondary_alignments: \"foo\"\n# supplementary_alignments: \"foo\"\ncounts_output_sparse: false\n\n# Input\ninput: # please fill in - example: [\"mysample1.BAM\", \"mysample2.BAM\"]\nreference: # please fill in - example: \"reference.gtf\"\n\n# Output\n# output: \"$id.$key.output.tsv\"\n# output_delimiter: \" \"\n# output_sam: [\"$id.$key.output_sam_*.BAM\"]\n# output_sam_format: \"foo\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/mapping/htseq_count/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/mapping/htseq_count.html#argument-groups", + "href": "components/modules/mapping/htseq_count.html#argument-groups", + "title": "Htseq count", + "section": "Argument groups", + "text": "Argument groups\n\nInput\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nPath to the SAM/BAM files containing the mapped reads.\nfile, required, example: \"mysample1.BAM\", example: \"mysample2.BAM\"\n\n\n--reference\nPath to the GTF file containing the features.\nfile, required, example: \"reference.gtf\"\n\n\n\n\n\nOutput\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nFilename to output the counts to.\nfile, required, example: \"htseq-count.tsv\"\n\n\n--output_delimiter\nColumn delimiter in output.\nstring, example: \" \"\n\n\n--output_sam\nWrite out all SAM alignment records into SAM/BAM files (one per input file needed), annotating each line with its feature assignment (as an optional field with tag ‘XF’). See the -p option to use BAM instead of SAM.\nfile, example: \"mysample1_out.BAM\", example: \"mysample2_out.BAM\"\n\n\n--output_sam_format\nFormat to use with the –output_sam argument.\nstring\n\n\n\n\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--order\nSorting order of . Paired-end sequencing data must be sorted either by position or by read name, and the sorting order must be specified. Ignored for single-end data.\nstring, default: \"name\"\n\n\n--stranded\nWhether the data is from a strand-specific assay. ‘reverse’ means ‘yes’ with reversed strand interpretation.\nstring, default: \"yes\"\n\n\n--minimum_alignment_quality\nSkip all reads with MAPQ alignment quality lower than the given minimum value. MAPQ is the 5th column of a SAM/BAM file and its usage depends on the software used to map the reads.\ninteger, default: 10\n\n\n--type\nFeature type (3rd column in GTF file) to be used, all features of other type are ignored (default, suitable for Ensembl GTF files: exon)\nstring, example: \"exon\"\n\n\n--id_attribute\nGTF attribute to be used as feature ID (default, suitable for Ensembl GTF files: gene_id). All feature of the right type (see -t option) within the same GTF attribute will be added together. The typical way of using this option is to count all exonic reads from each gene and add the exons but other uses are possible as well. You can call this option multiple times: in that case, the combination of all attributes separated by colons (:) will be used as a unique identifier, e.g. for exons you might use -i gene_id -i exon_number.\nstring, example: \"gene_id\"\n\n\n--additional_attributes\nAdditional feature attributes (suitable for Ensembl GTF files: gene_name). Use multiple times for more than one additional attribute. These attributes are only used as annotations in the output, while the determination of how the counts are added together is done based on option -i.\nstring, example: \"gene_name\"\n\n\n--add_chromosome_info\nStore information about the chromosome of each feature as an additional attribute (e.g. colunm in the TSV output file).\nboolean_true\n\n\n--mode\nMode to handle reads overlapping more than one feature.\nstring, default: \"union\"\n\n\n--non_unique\nWhether and how to score reads that are not uniquely aligned or ambiguously assigned to features.\nstring, default: \"none\"\n\n\n--secondary_alignments\nWhether to score secondary alignments (0x100 flag).\nstring\n\n\n--supplementary_alignments\nWhether to score supplementary alignments (0x800 flag).\nstring\n\n\n--counts_output_sparse\nStore the counts as a sparse matrix (mtx, h5ad, loom).\nboolean_true" + }, + { + "objectID": "components/modules/mapping/htseq_count.html#authors", + "href": "components/modules/mapping/htseq_count.html#authors", + "title": "Htseq count", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (author, maintainer)\nAngela Oliveira Pisco (author)" + }, + { + "objectID": "components/modules/mapping/star_build_reference.html", + "href": "components/modules/mapping/star_build_reference.html", + "title": "Star build reference", + "section": "", + "text": "ID: star_build_reference\nNamespace: mapping\n\n\n\nSource" + }, + { + "objectID": "components/modules/mapping/star_build_reference.html#example-commands", + "href": "components/modules/mapping/star_build_reference.html#example-commands", + "title": "Star build reference", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/mapping/star_build_reference/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Input/Output\ngenome_fasta: # please fill in - example: [\"chr1.fasta\", \"chr2.fasta\"]\n# transcriptome_gtf: \"path/to/file\"\n# output: \"$id.$key.output.output\"\n\n# Genome indexing arguments\ngenomeSAindexNbases: 14\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/mapping/star_build_reference/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/mapping/star_build_reference.html#argument-groups", + "href": "components/modules/mapping/star_build_reference.html#argument-groups", + "title": "Star build reference", + "section": "Argument groups", + "text": "Argument groups\n\nInput/Output\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--genome_fasta\nThe fasta files to be included in the reference. Corresponds to the –genomeFastaFiles argument in the STAR command.\nfile, required, example: \"chr1.fasta\", example: \"chr2.fasta\"\n\n\n--transcriptome_gtf\nSpecifies the path to the file with annotated transcripts in the standard GTF format. STAR will extract splice junctions from this file and use them to greatly improve accuracy of the mapping. Corresponds to the –sjdbGTFfile argument in the STAR command.\nfile\n\n\n--output\nPath to output directory. Corresponds to the –genomeDir argument in the STAR command.\nfile, required, example: \"/path/to/foo\"\n\n\n\n\n\nGenome indexing arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--genomeSAindexNbases\nLength (bases) of the SA pre-indexing string. Typically between 10 and 15. Longer strings will use much more memory, but allow faster searches. For small genomes, the parameter {genomeSAindexNbases must be scaled down to min(14, log2(GenomeLength)/2 - 1).\ninteger, default: 14" + }, + { + "objectID": "components/modules/mapping/star_build_reference.html#authors", + "href": "components/modules/mapping/star_build_reference.html#authors", + "title": "Star build reference", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author)" + }, + { + "objectID": "components/modules/mapping/star_align_v273a.html", + "href": "components/modules/mapping/star_align_v273a.html", + "title": "Star align v273a", + "section": "", + "text": "ID: star_align_v273a\nNamespace: mapping\n\n\n\nSource" + }, + { + "objectID": "components/modules/mapping/star_align_v273a.html#example-commands", + "href": "components/modules/mapping/star_align_v273a.html#example-commands", + "title": "Star align v273a", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/mapping/star_align_v273a/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Input/Output\ninput: # please fill in - example: [\"mysample_S1_L001_R1_001.fastq.gz\", \"mysample_S1_L001_R2_001.fastq.gz\"]\nreference: # please fill in - example: \"/path/to/reference\"\n# output: \"$id.$key.output.output\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/mapping/star_align_v273a/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/mapping/star_align_v273a.html#argument-groups", + "href": "components/modules/mapping/star_align_v273a.html#argument-groups", + "title": "Star align v273a", + "section": "Argument groups", + "text": "Argument groups\n\nInput/Output\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nThe FASTQ files to be analyzed. Corresponds to the –readFilesIn in the STAR command.\nfile, required, example: \"mysample_S1_L001_R1_001.fastq.gz\", example: \"mysample_S1_L001_R2_001.fastq.gz\"\n\n\n--reference\nPath to the reference built by star_build_reference. Corresponds to the –genomeDir in the STAR command.\nfile, required, example: \"/path/to/reference\"\n\n\n--output\nPath to output directory. Corresponds to the –outFileNamePrefix in the STAR command.\nfile, required, example: \"/path/to/foo\"\n\n\n\n\n\nRun Parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--runRNGseed\nrandom number generator seed.\ninteger, example: 777\n\n\n\n\n\nGenome Parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--genomeLoad\nmode of shared memory usage for the genome files. Only used with –runMode alignReads. - LoadAndKeep … load genome into shared and keep it in memory after run - LoadAndRemove … load genome into shared but remove it after run - LoadAndExit … load genome into shared memory and exit, keeping the genome in memory for future runs - Remove … do not map anything, just remove loaded genome from memory - NoSharedMemory … do not use shared memory, each job will have its own private copy of the genome\nstring, example: \"NoSharedMemory\"\n\n\n--genomeFastaFiles\npath(s) to the fasta files with the genome sequences, separated by spaces. These files should be plain text FASTA files, they cannot be zipped. Required for the genome generation (–runMode genomeGenerate). Can also be used in the mapping (–runMode alignReads) to add extra (new) sequences to the genome (e.g. spike-ins).\nfile\n\n\n--genomeFileSizes\ngenome files exact sizes in bytes. Typically, this should not be defined by the user.\ninteger, example: 0\n\n\n--genomeTransformOutput\nwhich output to transform back to original genome - SAM … SAM/BAM alignments - SJ … splice junctions (SJ.out.tab) - None … no transformation of the output\nstring\n\n\n--genomeChrSetMitochondrial\nnames of the mitochondrial chromosomes. Presently only used for STARsolo statistics output/\nstring, example: \"chrM\", example: \"M\", example: \"MT\"\n\n\n\n\n\nSplice Junctions Database\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--sjdbFileChrStartEnd\npath to the files with genomic coordinates (chr start end strand) for the splice junction introns. Multiple files can be supplied and will be concatenated.\nstring\n\n\n--sjdbGTFfile\npath to the GTF file with annotations\nfile\n\n\n--sjdbGTFchrPrefix\nprefix for chromosome names in a GTF file (e.g. ‘chr’ for using ENSMEBL annotations with UCSC genomes)\nstring\n\n\n--sjdbGTFfeatureExon\nfeature type in GTF file to be used as exons for building transcripts\nstring, example: \"exon\"\n\n\n--sjdbGTFtagExonParentTranscript\nGTF attribute name for parent transcript ID (default “transcript_id” works for GTF files)\nstring, example: \"transcript_id\"\n\n\n--sjdbGTFtagExonParentGene\nGTF attribute name for parent gene ID (default “gene_id” works for GTF files)\nstring, example: \"gene_id\"\n\n\n--sjdbGTFtagExonParentGeneName\nGTF attribute name for parent gene name\nstring, example: \"gene_name\"\n\n\n--sjdbGTFtagExonParentGeneType\nGTF attribute name for parent gene type\nstring, example: \"gene_type\", example: \"gene_biotype\"\n\n\n--sjdbOverhang\nlength of the donor/acceptor sequence on each side of the junctions, ideally = (mate_length - 1)\ninteger, example: 100\n\n\n--sjdbScore\nextra alignment score for alignments that cross database junctions\ninteger, example: 2\n\n\n--sjdbInsertSave\nwhich files to save when sjdb junctions are inserted on the fly at the mapping step - Basic … only small junction / transcript files - All … all files including big Genome, SA and SAindex - this will create a complete genome directory\nstring, example: \"Basic\"\n\n\n\n\n\nVariation parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--varVCFfile\npath to the VCF file that contains variation data. The 10th column should contain the genotype information, e.g. 0/1\nstring\n\n\n\n\n\nRead Parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--readFilesType\nformat of input read files - Fastx … FASTA or FASTQ - SAM SE … SAM or BAM single-end reads; for BAM use –readFilesCommand samtools view - SAM PE … SAM or BAM paired-end reads; for BAM use –readFilesCommand samtools view\nstring, example: \"Fastx\"\n\n\n--readFilesSAMattrKeep\nfor –readFilesType SAM SE/PE, which SAM tags to keep in the output BAM, e.g.: –readFilesSAMtagsKeep RG PL - All … keep all tags - None … do not keep any tags\nstring, example: \"All\"\n\n\n--readFilesManifest\npath to the “manifest” file with the names of read files. The manifest file should contain 3 tab-separated columns: paired-end reads: read1_file_name \\(tab\\) read2_file_name \\(tab\\) read_group_line. single-end reads: read1_file_name \\(tab\\) - \\(tab\\) read_group_line. Spaces, but not tabs are allowed in file names. If read_group_line does not start with ID:, it can only contain one ID field, and ID: will be added to it. If read_group_line starts with ID:, it can contain several fields separated by \\(tab\\), and all fields will be be copied verbatim into SAM @RG header line.\nfile\n\n\n--readFilesPrefix\nprefix for the read files names, i.e. it will be added in front of the strings in –readFilesIn\nstring\n\n\n--readFilesCommand\ncommand line to execute for each of the input file. This command should generate FASTA or FASTQ text and send it to stdout For example: zcat - to uncompress .gz files, bzcat - to uncompress .bz2 files, etc.\nstring\n\n\n--readMapNumber\nnumber of reads to map from the beginning of the file -1: map all reads\ninteger, example: -1\n\n\n--readMatesLengthsIn\nEqual/NotEqual - lengths of names,sequences,qualities for both mates are the same / not the same. NotEqual is safe in all situations.\nstring, example: \"NotEqual\"\n\n\n--readNameSeparator\ncharacter(s) separating the part of the read names that will be trimmed in output (read name after space is always trimmed)\nstring, example: \"/\"\n\n\n--readQualityScoreBase\nnumber to be subtracted from the ASCII code to get Phred quality score\ninteger, example: 33\n\n\n\n\n\nRead Clipping\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--clipAdapterType\nadapter clipping type - Hamming … adapter clipping based on Hamming distance, with the number of mismatches controlled by –clip5pAdapterMMp - CellRanger4 … 5p and 3p adapter clipping similar to CellRanger4. Utilizes Opal package by Martin Sosic: https://github.com/Martinsos/opal - None … no adapter clipping, all other clip* parameters are disregarded\nstring, example: \"Hamming\"\n\n\n--clip3pNbases\nnumber(s) of bases to clip from 3p of each mate. If one value is given, it will be assumed the same for both mates.\ninteger, example: 0\n\n\n--clip3pAdapterSeq\nadapter sequences to clip from 3p of each mate. If one value is given, it will be assumed the same for both mates. - polyA … polyA sequence with the length equal to read length\nstring\n\n\n--clip3pAdapterMMp\nmax proportion of mismatches for 3p adapter clipping for each mate. If one value is given, it will be assumed the same for both mates.\ndouble, example: 0.1\n\n\n--clip3pAfterAdapterNbases\nnumber of bases to clip from 3p of each mate after the adapter clipping. If one value is given, it will be assumed the same for both mates.\ninteger, example: 0\n\n\n--clip5pNbases\nnumber(s) of bases to clip from 5p of each mate. If one value is given, it will be assumed the same for both mates.\ninteger, example: 0\n\n\n\n\n\nLimits\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--limitGenomeGenerateRAM\nmaximum available RAM (bytes) for genome generation\nlong, example: NA\n\n\n--limitIObufferSize\nmax available buffers size (bytes) for input/output, per thread\nlong, example: 30000000, example: 50000000\n\n\n--limitOutSAMoneReadBytes\nmax size of the SAM record (bytes) for one read. Recommended value: >(2(LengthMate1+LengthMate2+100)outFilterMultimapNmax\nlong, example: 100000\n\n\n--limitOutSJoneRead\nmax number of junctions for one read (including all multi-mappers)\ninteger, example: 1000\n\n\n--limitOutSJcollapsed\nmax number of collapsed junctions\ninteger, example: 1000000\n\n\n--limitBAMsortRAM\nmaximum available RAM (bytes) for sorting BAM. If =0, it will be set to the genome index size. 0 value can only be used with –genomeLoad NoSharedMemory option.\nlong, example: 0\n\n\n--limitSjdbInsertNsj\nmaximum number of junctions to be inserted to the genome on the fly at the mapping stage, including those from annotations and those detected in the 1st step of the 2-pass run\ninteger, example: 1000000\n\n\n--limitNreadsSoft\nsoft limit on the number of reads\ninteger, example: -1\n\n\n\n\n\nOutput: general\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outTmpKeep\nwhether to keep the temporary files after STAR runs is finished - None … remove all temporary files - All … keep all files\nstring\n\n\n--outStd\nwhich output will be directed to stdout (standard out) - Log … log messages - SAM … alignments in SAM format (which normally are output to Aligned.out.sam file), normal standard output will go into Log.std.out - BAM_Unsorted … alignments in BAM format, unsorted. Requires –outSAMtype BAM Unsorted - BAM_SortedByCoordinate … alignments in BAM format, sorted by coordinate. Requires –outSAMtype BAM SortedByCoordinate - BAM_Quant … alignments to transcriptome in BAM format, unsorted. Requires –quantMode TranscriptomeSAM\nstring, example: \"Log\"\n\n\n--outReadsUnmapped\noutput of unmapped and partially mapped (i.e. mapped only one mate of a paired end read) reads in separate file(s). - None … no output - Fastx … output in separate fasta/fastq files, Unmapped.out.mate1/2\nstring\n\n\n--outQSconversionAdd\nadd this number to the quality score (e.g. to convert from Illumina to Sanger, use -31)\ninteger, example: 0\n\n\n--outMultimapperOrder\norder of multimapping alignments in the output files - Old_2.4 … quasi-random order used before 2.5.0 - Random … random order of alignments for each multi-mapper. Read mates (pairs) are always adjacent, all alignment for each read stay together. This option will become default in the future releases.\nstring, example: \"Old_2.4\"\n\n\n\n\n\nOutput: SAM and BAM\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outSAMtype\ntype of SAM/BAM output 1st word: - BAM … output BAM without sorting - SAM … output SAM without sorting - None … no SAM/BAM output 2nd, 3rd: - Unsorted … standard unsorted - SortedByCoordinate … sorted by coordinate. This option will allocate extra memory for sorting which can be specified by –limitBAMsortRAM.\nstring, example: \"SAM\"\n\n\n--outSAMmode\nmode of SAM output - None … no SAM output - Full … full SAM output - NoQS … full SAM but without quality scores\nstring, example: \"Full\"\n\n\n--outSAMstrandField\nCufflinks-like strand field flag - None … not used - intronMotif … strand derived from the intron motif. This option changes the output alignments: reads with inconsistent and/or non-canonical introns are filtered out.\nstring\n\n\n--outSAMattributes\na string of desired SAM attributes, in the order desired for the output SAM. Tags can be listed in any combination/order. Presets: - None … no attributes - Standard … NH HI AS nM - All … NH HI AS nM NM MD jM jI MC ch Alignment: - NH … number of loci the reads maps to: =1 for unique mappers, >1 for multimappers. Standard SAM tag. - HI … multiple alignment index, starts with –outSAMattrIHstart (=1 by default). Standard SAM tag. - AS … local alignment score, +1/-1 for matches/mismateches, score* penalties for indels and gaps. For PE reads, total score for two mates. Stadnard SAM tag. - nM … number of mismatches. For PE reads, sum over two mates. - NM … edit distance to the reference (number of mismatched + inserted + deleted bases) for each mate. Standard SAM tag. - MD … string encoding mismatched and deleted reference bases (see standard SAM specifications). Standard SAM tag. - jM … intron motifs for all junctions (i.e. N in CIGAR): 0: non-canonical; 1: GT/AG, 2: CT/AC, 3: GC/AG, 4: CT/GC, 5: AT/AC, 6: GT/AT. If splice junctions database is used, and a junction is annotated, 20 is added to its motif value. - jI … start and end of introns for all junctions (1-based). - XS … alignment strand according to –outSAMstrandField. - MC … mate’s CIGAR string. Standard SAM tag. - ch … marks all segment of all chimeric alingments for –chimOutType WithinBAM output. - cN … number of bases clipped from the read ends: 5’ and 3’ Variation: - vA … variant allele - vG … genomic coordinate of the variant overlapped by the read. - vW … 1 - alignment passes WASP filtering; 2,3,4,5,6,7 - alignment does not pass WASP filtering. Requires –waspOutputMode SAMtag. STARsolo: - CR CY UR UY … sequences and quality scores of cell barcodes and UMIs for the solo* demultiplexing. - GX GN … gene ID and gene name for unique-gene reads. - gx gn … gene IDs and gene names for unique- and multi-gene reads. - CB UB … error-corrected cell barcodes and UMIs for solo* demultiplexing. Requires –outSAMtype BAM SortedByCoordinate. - sM … assessment of CB and UMI. - sS … sequence of the entire barcode (CB,UMI,adapter). - sQ … quality of the entire barcode. ***Unsupported/undocumented: - ha … haplotype (1/2) when mapping to the diploid genome. Requires genome generated with –genomeTransformType Diploid . - rB … alignment block read/genomic coordinates. - vR … read coordinate of the variant.\nstring, example: \"Standard\"\n\n\n--outSAMattrIHstart\nstart value for the IH attribute. 0 may be required by some downstream software, such as Cufflinks or StringTie.\ninteger, example: 1\n\n\n--outSAMunmapped\noutput of unmapped reads in the SAM format 1st word: - None … no output - Within … output unmapped reads within the main SAM file (i.e. Aligned.out.sam) 2nd word: - KeepPairs … record unmapped mate for each alignment, and, in case of unsorted output, keep it adjacent to its mapped mate. Only affects multi-mapping reads.\nstring\n\n\n--outSAMorder\ntype of sorting for the SAM output Paired: one mate after the other for all paired alignments PairedKeepInputOrder: one mate after the other for all paired alignments, the order is kept the same as in the input FASTQ files\nstring, example: \"Paired\"\n\n\n--outSAMprimaryFlag\nwhich alignments are considered primary - all others will be marked with 0x100 bit in the FLAG - OneBestScore … only one alignment with the best score is primary - AllBestScore … all alignments with the best score are primary\nstring, example: \"OneBestScore\"\n\n\n--outSAMreadID\nread ID record type - Standard … first word (until space) from the FASTx read ID line, removing /1,/2 from the end - Number … read number (index) in the FASTx file\nstring, example: \"Standard\"\n\n\n--outSAMmapqUnique\n0 to 255: the MAPQ value for unique mappers\ninteger, example: 255\n\n\n--outSAMflagOR\n0 to 65535: sam FLAG will be bitwise OR’d with this value, i.e. FLAG=FLAG | outSAMflagOR. This is applied after all flags have been set by STAR, and after outSAMflagAND. Can be used to set specific bits that are not set otherwise.\ninteger, example: 0\n\n\n--outSAMflagAND\n0 to 65535: sam FLAG will be bitwise AND’d with this value, i.e. FLAG=FLAG & outSAMflagOR. This is applied after all flags have been set by STAR, but before outSAMflagOR. Can be used to unset specific bits that are not set otherwise.\ninteger, example: 65535\n\n\n--outSAMattrRGline\nSAM/BAM read group line. The first word contains the read group identifier and must start with “ID:”, e.g. –outSAMattrRGline ID:xxx CN:yy “DS:z z z”. xxx will be added as RG tag to each output alignment. Any spaces in the tag values have to be double quoted. Comma separated RG lines correspons to different (comma separated) input files in –readFilesIn. Commas have to be surrounded by spaces, e.g. –outSAMattrRGline ID:xxx , ID:zzz “DS:z z” , ID:yyy DS:yyyy\nstring\n\n\n--outSAMheaderHD\n@HD (header) line of the SAM header\nstring\n\n\n--outSAMheaderPG\nextra @PG (software) line of the SAM header (in addition to STAR)\nstring\n\n\n--outSAMheaderCommentFile\npath to the file with @CO (comment) lines of the SAM header\nstring\n\n\n--outSAMfilter\nfilter the output into main SAM/BAM files - KeepOnlyAddedReferences … only keep the reads for which all alignments are to the extra reference sequences added with –genomeFastaFiles at the mapping stage. - KeepAllAddedReferences … keep all alignments to the extra reference sequences added with –genomeFastaFiles at the mapping stage.\nstring\n\n\n--outSAMmultNmax\nmax number of multiple alignments for a read that will be output to the SAM/BAM files. Note that if this value is not equal to -1, the top scoring alignment will be output first - -1 … all alignments (up to –outFilterMultimapNmax) will be output\ninteger, example: -1\n\n\n--outSAMtlen\ncalculation method for the TLEN field in the SAM/BAM files - 1 … leftmost base of the (+)strand mate to rightmost base of the (-)mate. (+)sign for the (+)strand mate - 2 … leftmost base of any mate to rightmost base of any mate. (+)sign for the mate with the leftmost base. This is different from 1 for overlapping mates with protruding ends\ninteger, example: 1\n\n\n--outBAMcompression\n-1 to 10 BAM compression level, -1=default compression (6?), 0=no compression, 10=maximum compression\ninteger, example: 1\n\n\n--outBAMsortingThreadN\n>=0: number of threads for BAM sorting. 0 will default to min(6,–runThreadN).\ninteger, example: 0\n\n\n--outBAMsortingBinsN\n>0: number of genome bins for coordinate-sorting\ninteger, example: 50\n\n\n\n\n\nBAM processing\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--bamRemoveDuplicatesType\nmark duplicates in the BAM file, for now only works with (i) sorted BAM fed with inputBAMfile, and (ii) for paired-end alignments only - - … no duplicate removal/marking - UniqueIdentical … mark all multimappers, and duplicate unique mappers. The coordinates, FLAG, CIGAR must be identical - UniqueIdenticalNotMulti … mark duplicate unique mappers but not multimappers.\nstring\n\n\n--bamRemoveDuplicatesMate2basesN\nnumber of bases from the 5’ of mate 2 to use in collapsing (e.g. for RAMPAGE)\ninteger, example: 0\n\n\n\n\n\nOutput Wiggle\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outWigType\ntype of signal output, e.g. “bedGraph” OR “bedGraph read1_5p”. Requires sorted BAM: –outSAMtype BAM SortedByCoordinate . 1st word: - None … no signal output - bedGraph … bedGraph format - wiggle … wiggle format 2nd word: - read1_5p … signal from only 5’ of the 1st read, useful for CAGE/RAMPAGE etc - read2 … signal from only 2nd read\nstring\n\n\n--outWigStrand\nstrandedness of wiggle/bedGraph output - Stranded … separate strands, str1 and str2 - Unstranded … collapsed strands\nstring, example: \"Stranded\"\n\n\n--outWigReferencesPrefix\nprefix matching reference names to include in the output wiggle file, e.g. “chr”, default “-” - include all references\nstring\n\n\n--outWigNorm\ntype of normalization for the signal - RPM … reads per million of mapped reads - None … no normalization, “raw” counts\nstring, example: \"RPM\"\n\n\n\n\n\nOutput Filtering\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outFilterType\ntype of filtering - Normal … standard filtering using only current alignment - BySJout … keep only those reads that contain junctions that passed filtering into SJ.out.tab\nstring, example: \"Normal\"\n\n\n--outFilterMultimapScoreRange\nthe score range below the maximum score for multimapping alignments\ninteger, example: 1\n\n\n--outFilterMultimapNmax\nmaximum number of loci the read is allowed to map to. Alignments (all of them) will be output only if the read maps to no more loci than this value. Otherwise no alignments will be output, and the read will be counted as “mapped to too many loci” in the Log.final.out .\ninteger, example: 10\n\n\n--outFilterMismatchNmax\nalignment will be output only if it has no more mismatches than this value.\ninteger, example: 10\n\n\n--outFilterMismatchNoverLmax\nalignment will be output only if its ratio of mismatches to mapped length is less than or equal to this value.\ndouble, example: 0.3\n\n\n--outFilterMismatchNoverReadLmax\nalignment will be output only if its ratio of mismatches to read length is less than or equal to this value.\ndouble, example: 1\n\n\n--outFilterScoreMin\nalignment will be output only if its score is higher than or equal to this value.\ninteger, example: 0\n\n\n--outFilterScoreMinOverLread\nsame as outFilterScoreMin, but normalized to read length (sum of mates’ lengths for paired-end reads)\ndouble, example: 0.66\n\n\n--outFilterMatchNmin\nalignment will be output only if the number of matched bases is higher than or equal to this value.\ninteger, example: 0\n\n\n--outFilterMatchNminOverLread\nsam as outFilterMatchNmin, but normalized to the read length (sum of mates’ lengths for paired-end reads).\ndouble, example: 0.66\n\n\n--outFilterIntronMotifs\nfilter alignment using their motifs - None … no filtering - RemoveNoncanonical … filter out alignments that contain non-canonical junctions - RemoveNoncanonicalUnannotated … filter out alignments that contain non-canonical unannotated junctions when using annotated splice junctions database. The annotated non-canonical junctions will be kept.\nstring\n\n\n--outFilterIntronStrands\nfilter alignments - RemoveInconsistentStrands … remove alignments that have junctions with inconsistent strands - None … no filtering\nstring, example: \"RemoveInconsistentStrands\"\n\n\n\n\n\nOutput splice junctions (SJ.out.tab)\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outSJtype\ntype of splice junction output - Standard … standard SJ.out.tab output - None … no splice junction output\nstring, example: \"Standard\"\n\n\n\n\n\nOutput Filtering: Splice Junctions\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--outSJfilterReads\nwhich reads to consider for collapsed splice junctions output - All … all reads, unique- and multi-mappers - Unique … uniquely mapping reads only\nstring, example: \"All\"\n\n\n--outSJfilterOverhangMin\nminimum overhang length for splice junctions on both sides for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif does not apply to annotated junctions\ninteger, example: 30, example: 12, example: 12, example: 12\n\n\n--outSJfilterCountUniqueMin\nminimum uniquely mapping read count per junction for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif Junctions are output if one of outSJfilterCountUniqueMin OR outSJfilterCountTotalMin conditions are satisfied does not apply to annotated junctions\ninteger, example: 3, example: 1, example: 1, example: 1\n\n\n--outSJfilterCountTotalMin\nminimum total (multi-mapping+unique) read count per junction for: (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif. -1 means no output for that motif Junctions are output if one of outSJfilterCountUniqueMin OR outSJfilterCountTotalMin conditions are satisfied does not apply to annotated junctions\ninteger, example: 3, example: 1, example: 1, example: 1\n\n\n--outSJfilterDistToOtherSJmin\nminimum allowed distance to other junctions’ donor/acceptor does not apply to annotated junctions\ninteger, example: 10, example: 0, example: 5, example: 10\n\n\n--outSJfilterIntronMaxVsReadN\nmaximum gap allowed for junctions supported by 1,2,3,,,N reads i.e. by default junctions supported by 1 read can have gaps <=50000b, by 2 reads: <=100000b, by 3 reads: <=200000. by >=4 reads any gap <=alignIntronMax does not apply to annotated junctions\ninteger, example: 50000, example: 100000, example: 200000\n\n\n\n\n\nScoring\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--scoreGap\nsplice junction penalty (independent on intron motif)\ninteger, example: 0\n\n\n--scoreGapNoncan\nnon-canonical junction penalty (in addition to scoreGap)\ninteger, example: -8\n\n\n--scoreGapGCAG\nGC/AG and CT/GC junction penalty (in addition to scoreGap)\ninteger, example: -4\n\n\n--scoreGapATAC\nAT/AC and GT/AT junction penalty (in addition to scoreGap)\ninteger, example: -8\n\n\n--scoreGenomicLengthLog2scale\nextra score logarithmically scaled with genomic length of the alignment: scoreGenomicLengthLog2scale*log2(genomicLength)\ninteger, example: 0\n\n\n--scoreDelOpen\ndeletion open penalty\ninteger, example: -2\n\n\n--scoreDelBase\ndeletion extension penalty per base (in addition to scoreDelOpen)\ninteger, example: -2\n\n\n--scoreInsOpen\ninsertion open penalty\ninteger, example: -2\n\n\n--scoreInsBase\ninsertion extension penalty per base (in addition to scoreInsOpen)\ninteger, example: -2\n\n\n--scoreStitchSJshift\nmaximum score reduction while searching for SJ boundaries in the stitching step\ninteger, example: 1\n\n\n\n\n\nAlignments and Seeding\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--seedSearchStartLmax\ndefines the search start point through the read - the read is split into pieces no longer than this value\ninteger, example: 50\n\n\n--seedSearchStartLmaxOverLread\nseedSearchStartLmax normalized to read length (sum of mates’ lengths for paired-end reads)\ndouble, example: 1\n\n\n--seedSearchLmax\ndefines the maximum length of the seeds, if =0 seed length is not limited\ninteger, example: 0\n\n\n--seedMultimapNmax\nonly pieces that map fewer than this value are utilized in the stitching procedure\ninteger, example: 10000\n\n\n--seedPerReadNmax\nmax number of seeds per read\ninteger, example: 1000\n\n\n--seedPerWindowNmax\nmax number of seeds per window\ninteger, example: 50\n\n\n--seedNoneLociPerWindow\nmax number of one seed loci per window\ninteger, example: 10\n\n\n--seedSplitMin\nmin length of the seed sequences split by Ns or mate gap\ninteger, example: 12\n\n\n--seedMapMin\nmin length of seeds to be mapped\ninteger, example: 5\n\n\n--alignIntronMin\nminimum intron size, genomic gap is considered intron if its length>=alignIntronMin, otherwise it is considered Deletion\ninteger, example: 21\n\n\n--alignIntronMax\nmaximum intron size, if 0, max intron size will be determined by (2^winBinNbits)*winAnchorDistNbins\ninteger, example: 0\n\n\n--alignMatesGapMax\nmaximum gap between two mates, if 0, max intron gap will be determined by (2^winBinNbits)*winAnchorDistNbins\ninteger, example: 0\n\n\n--alignSJoverhangMin\nminimum overhang (i.e. block size) for spliced alignments\ninteger, example: 5\n\n\n--alignSJstitchMismatchNmax\nmaximum number of mismatches for stitching of the splice junctions (-1: no limit). (1) non-canonical motifs, (2) GT/AG and CT/AC motif, (3) GC/AG and CT/GC motif, (4) AT/AC and GT/AT motif.\ninteger, example: 0, example: -1, example: 0, example: 0\n\n\n--alignSJDBoverhangMin\nminimum overhang (i.e. block size) for annotated (sjdb) spliced alignments\ninteger, example: 3\n\n\n--alignSplicedMateMapLmin\nminimum mapped length for a read mate that is spliced\ninteger, example: 0\n\n\n--alignSplicedMateMapLminOverLmate\nalignSplicedMateMapLmin normalized to mate length\ndouble, example: 0.66\n\n\n--alignWindowsPerReadNmax\nmax number of windows per read\ninteger, example: 10000\n\n\n--alignTranscriptsPerWindowNmax\nmax number of transcripts per window\ninteger, example: 100\n\n\n--alignTranscriptsPerReadNmax\nmax number of different alignments per read to consider\ninteger, example: 10000\n\n\n--alignEndsType\ntype of read ends alignment - Local … standard local alignment with soft-clipping allowed - EndToEnd … force end-to-end read alignment, do not soft-clip - Extend5pOfRead1 … fully extend only the 5p of the read1, all other ends: local alignment - Extend5pOfReads12 … fully extend only the 5p of the both read1 and read2, all other ends: local alignment\nstring, example: \"Local\"\n\n\n--alignEndsProtrude\nallow protrusion of alignment ends, i.e. start (end) of the +strand mate downstream of the start (end) of the -strand mate 1st word: int: maximum number of protrusion bases allowed 2nd word: string: - ConcordantPair … report alignments with non-zero protrusion as concordant pairs - DiscordantPair … report alignments with non-zero protrusion as discordant pairs\nstring, example: \"0 ConcordantPair\"\n\n\n--alignSoftClipAtReferenceEnds\nallow the soft-clipping of the alignments past the end of the chromosomes - Yes … allow - No … prohibit, useful for compatibility with Cufflinks\nstring, example: \"Yes\"\n\n\n--alignInsertionFlush\nhow to flush ambiguous insertion positions - None … insertions are not flushed - Right … insertions are flushed to the right\nstring\n\n\n\n\n\nPaired-End reads\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--peOverlapNbasesMin\nminimum number of overlapping bases to trigger mates merging and realignment. Specify >0 value to switch on the “merginf of overlapping mates” algorithm.\ninteger, example: 0\n\n\n--peOverlapMMp\nmaximum proportion of mismatched bases in the overlap area\ndouble, example: 0.01\n\n\n\n\n\nWindows, Anchors, Binning\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--winAnchorMultimapNmax\nmax number of loci anchors are allowed to map to\ninteger, example: 50\n\n\n--winBinNbits\n=log2(winBin), where winBin is the size of the bin for the windows/clustering, each window will occupy an integer number of bins.\ninteger, example: 16\n\n\n--winAnchorDistNbins\nmax number of bins between two anchors that allows aggregation of anchors into one window\ninteger, example: 9\n\n\n--winFlankNbins\nlog2(winFlank), where win Flank is the size of the left and right flanking regions for each window\ninteger, example: 4\n\n\n--winReadCoverageRelativeMin\nminimum relative coverage of the read sequence by the seeds in a window, for STARlong algorithm only.\ndouble, example: 0.5\n\n\n--winReadCoverageBasesMin\nminimum number of bases covered by the seeds in a window , for STARlong algorithm only.\ninteger, example: 0\n\n\n\n\n\nChimeric Alignments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--chimOutType\ntype of chimeric output - Junctions … Chimeric.out.junction - SeparateSAMold … output old SAM into separate Chimeric.out.sam file - WithinBAM … output into main aligned BAM files (Aligned.*.bam) - WithinBAM HardClip … (default) hard-clipping in the CIGAR for supplemental chimeric alignments (default if no 2nd word is present) - WithinBAM SoftClip … soft-clipping in the CIGAR for supplemental chimeric alignments\nstring, example: \"Junctions\"\n\n\n--chimSegmentMin\nminimum length of chimeric segment length, if ==0, no chimeric output\ninteger, example: 0\n\n\n--chimScoreMin\nminimum total (summed) score of the chimeric segments\ninteger, example: 0\n\n\n--chimScoreDropMax\nmax drop (difference) of chimeric score (the sum of scores of all chimeric segments) from the read length\ninteger, example: 20\n\n\n--chimScoreSeparation\nminimum difference (separation) between the best chimeric score and the next one\ninteger, example: 10\n\n\n--chimScoreJunctionNonGTAG\npenalty for a non-GT/AG chimeric junction\ninteger, example: -1\n\n\n--chimJunctionOverhangMin\nminimum overhang for a chimeric junction\ninteger, example: 20\n\n\n--chimSegmentReadGapMax\nmaximum gap in the read sequence between chimeric segments\ninteger, example: 0\n\n\n--chimFilter\ndifferent filters for chimeric alignments - None … no filtering - banGenomicN … Ns are not allowed in the genome sequence around the chimeric junction\nstring, example: \"banGenomicN\"\n\n\n--chimMainSegmentMultNmax\nmaximum number of multi-alignments for the main chimeric segment. =1 will prohibit multimapping main segments.\ninteger, example: 10\n\n\n--chimMultimapNmax\nmaximum number of chimeric multi-alignments - 0 … use the old scheme for chimeric detection which only considered unique alignments\ninteger, example: 0\n\n\n--chimMultimapScoreRange\nthe score range for multi-mapping chimeras below the best chimeric score. Only works with –chimMultimapNmax > 1\ninteger, example: 1\n\n\n--chimNonchimScoreDropMin\nto trigger chimeric detection, the drop in the best non-chimeric alignment score with respect to the read length has to be greater than this value\ninteger, example: 20\n\n\n--chimOutJunctionFormat\nformatting type for the Chimeric.out.junction file - 0 … no comment lines/headers - 1 … comment lines at the end of the file: command line and Nreads: total, unique/multi-mapping\ninteger, example: 0\n\n\n\n\n\nQuantification of Annotations\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--quantMode\ntypes of quantification requested - - … none - TranscriptomeSAM … output SAM/BAM alignments to transcriptome into a separate file - GeneCounts … count reads per gene\nstring\n\n\n--quantTranscriptomeBAMcompression\n-2 to 10 transcriptome BAM compression level - -2 … no BAM output - -1 … default compression (6?) - 0 … no compression - 10 … maximum compression\ninteger, example: 1\n\n\n--quantTranscriptomeBan\nprohibit various alignment type - IndelSoftclipSingleend … prohibit indels, soft clipping and single-end alignments - compatible with RSEM - Singleend … prohibit single-end alignments\nstring, example: \"IndelSoftclipSingleend\"\n\n\n\n\n\n2-pass Mapping\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--twopassMode\n2-pass mapping mode. - None … 1-pass mapping - Basic … basic 2-pass mapping, with all 1st pass junctions inserted into the genome indices on the fly\nstring\n\n\n--twopass1readsN\nnumber of reads to process for the 1st step. Use very large number (or default -1) to map all reads in the first step.\ninteger, example: -1\n\n\n\n\n\nWASP parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--waspOutputMode\nWASP allele-specific output type. This is re-implementation of the original WASP mappability filtering by Bryce van de Geijn, Graham McVicker, Yoav Gilad & Jonathan K Pritchard. Please cite the original WASP paper: Nature Methods 12, 1061-1063 (2015), https://www.nature.com/articles/nmeth.3582 . - SAMtag … add WASP tags to the alignments that pass WASP filtering\nstring\n\n\n\n\n\nSTARsolo (single cell RNA-seq) parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--soloType\ntype of single-cell RNA-seq - CB_UMI_Simple … (a.k.a. Droplet) one UMI and one Cell Barcode of fixed length in read2, e.g. Drop-seq and 10X Chromium. - CB_UMI_Complex … multiple Cell Barcodes of varying length, one UMI of fixed length and one adapter sequence of fixed length are allowed in read2 only (e.g. inDrop, ddSeq). - CB_samTagOut … output Cell Barcode as CR and/or CB SAm tag. No UMI counting. –readFilesIn cDNA_read1 [cDNA_read2 if paired-end] CellBarcode_read . Requires –outSAMtype BAM Unsorted [and/or SortedByCoordinate] - SmartSeq … Smart-seq: each cell in a separate FASTQ (paired- or single-end), barcodes are corresponding read-groups, no UMI sequences, alignments deduplicated according to alignment start and end (after extending soft-clipped bases)\nstring\n\n\n--soloCBwhitelist\nfile(s) with whitelist(s) of cell barcodes. Only –soloType CB_UMI_Complex allows more than one whitelist file. - None … no whitelist: all cell barcodes are allowed\nstring\n\n\n--soloCBstart\ncell barcode start base\ninteger, example: 1\n\n\n--soloCBlen\ncell barcode length\ninteger, example: 16\n\n\n--soloUMIstart\nUMI start base\ninteger, example: 17\n\n\n--soloUMIlen\nUMI length\ninteger, example: 10\n\n\n--soloBarcodeReadLength\nlength of the barcode read - 1 … equal to sum of soloCBlen+soloUMIlen - 0 … not defined, do not check\ninteger, example: 1\n\n\n--soloBarcodeMate\nidentifies which read mate contains the barcode (CB+UMI) sequence - 0 … barcode sequence is on separate read, which should always be the last file in the –readFilesIn listed - 1 … barcode sequence is a part of mate 1 - 2 … barcode sequence is a part of mate 2\ninteger, example: 0\n\n\n--soloCBposition\nposition of Cell Barcode(s) on the barcode read. Presently only works with –soloType CB_UMI_Complex, and barcodes are assumed to be on Read2. Format for each barcode: startAnchor_startPosition_endAnchor_endPosition start(end)Anchor defines the Anchor Base for the CB: 0: read start; 1: read end; 2: adapter start; 3: adapter end start(end)Position is the 0-based position with of the CB start(end) with respect to the Anchor Base String for different barcodes are separated by space. Example: inDrop (Zilionis et al, Nat. Protocols, 2017): –soloCBposition 0_0_2_-1 3_1_3_8\nstring\n\n\n--soloUMIposition\nposition of the UMI on the barcode read, same as soloCBposition Example: inDrop (Zilionis et al, Nat. Protocols, 2017): –soloCBposition 3_9_3_14\nstring\n\n\n--soloAdapterSequence\nadapter sequence to anchor barcodes. Only one adapter sequence is allowed.\nstring\n\n\n--soloAdapterMismatchesNmax\nmaximum number of mismatches allowed in adapter sequence.\ninteger, example: 1\n\n\n--soloCBmatchWLtype\nmatching the Cell Barcodes to the WhiteList - Exact … only exact matches allowed - 1MM … only one match in whitelist with 1 mismatched base allowed. Allowed CBs have to have at least one read with exact match. - 1MM_multi … multiple matches in whitelist with 1 mismatched base allowed, posterior probability calculation is used choose one of the matches. Allowed CBs have to have at least one read with exact match. This option matches best with CellRanger 2.2.0 - 1MM_multi_pseudocounts … same as 1MM_Multi, but pseudocounts of 1 are added to all whitelist barcodes. - 1MM_multi_Nbase_pseudocounts … same as 1MM_multi_pseudocounts, multimatching to WL is allowed for CBs with N-bases. This option matches best with CellRanger >= 3.0.0 - EditDist_2 … allow up to edit distance of 3 fpr each of the barcodes. May include one deletion + one insertion. Only works with –soloType CB_UMI_Complex. Matches to multiple passlist barcdoes are not allowed. Similar to ParseBio Split-seq pipeline.\nstring, example: \"1MM_multi\"\n\n\n--soloInputSAMattrBarcodeSeq\nwhen inputting reads from a SAM file (–readsFileType SAM SE/PE), these SAM attributes mark the barcode sequence (in proper order). For instance, for 10X CellRanger or STARsolo BAMs, use –soloInputSAMattrBarcodeSeq CR UR . This parameter is required when running STARsolo with input from SAM.\nstring\n\n\n--soloInputSAMattrBarcodeQual\nwhen inputting reads from a SAM file (–readsFileType SAM SE/PE), these SAM attributes mark the barcode qualities (in proper order). For instance, for 10X CellRanger or STARsolo BAMs, use –soloInputSAMattrBarcodeQual CY UY . If this parameter is ‘-’ (default), the quality ‘H’ will be assigned to all bases.\nstring\n\n\n--soloStrand\nstrandedness of the solo libraries: - Unstranded … no strand information - Forward … read strand same as the original RNA molecule - Reverse … read strand opposite to the original RNA molecule\nstring, example: \"Forward\"\n\n\n--soloFeatures\ngenomic features for which the UMI counts per Cell Barcode are collected - Gene … genes: reads match the gene transcript - SJ … splice junctions: reported in SJ.out.tab - GeneFull … full gene (pre-mRNA): count all reads overlapping genes’ exons and introns - GeneFull_ExonOverIntron … full gene (pre-mRNA): count all reads overlapping genes’ exons and introns: prioritize 100% overlap with exons - GeneFull_Ex50pAS … full gene (pre-RNA): count all reads overlapping genes’ exons and introns: prioritize >50% overlap with exons. Do not count reads with 100% exonic overlap in the antisense direction.\nstring, example: \"Gene\"\n\n\n--soloMultiMappers\ncounting method for reads mapping to multiple genes - Unique … count only reads that map to unique genes - Uniform … uniformly distribute multi-genic UMIs to all genes - Rescue … distribute UMIs proportionally to unique+uniform counts (~ first iteration of EM) - PropUnique … distribute UMIs proportionally to unique mappers, if present, and uniformly if not. - EM … multi-gene UMIs are distributed using Expectation Maximization algorithm\nstring, example: \"Unique\"\n\n\n--soloUMIdedup\ntype of UMI deduplication (collapsing) algorithm - 1MM_All … all UMIs with 1 mismatch distance to each other are collapsed (i.e. counted once). - 1MM_Directional_UMItools … follows the “directional” method from the UMI-tools by Smith, Heger and Sudbery (Genome Research 2017). - 1MM_Directional … same as 1MM_Directional_UMItools, but with more stringent criteria for duplicate UMIs - Exact … only exactly matching UMIs are collapsed. - NoDedup … no deduplication of UMIs, count all reads. - 1MM_CR … CellRanger2-4 algorithm for 1MM UMI collapsing.\nstring, example: \"1MM_All\"\n\n\n--soloUMIfiltering\ntype of UMI filtering (for reads uniquely mapping to genes) - - … basic filtering: remove UMIs with N and homopolymers (similar to CellRanger 2.2.0). - MultiGeneUMI … basic + remove lower-count UMIs that map to more than one gene. - MultiGeneUMI_All … basic + remove all UMIs that map to more than one gene. - MultiGeneUMI_CR … basic + remove lower-count UMIs that map to more than one gene, matching CellRanger > 3.0.0 . Only works with –soloUMIdedup 1MM_CR\nstring\n\n\n--soloOutFileNames\nfile names for STARsolo output: file_name_prefix gene_names barcode_sequences cell_feature_count_matrix\nstring, example: \"Solo.out/\", example: \"features.tsv\", example: \"barcodes.tsv\", example: \"matrix.mtx\"\n\n\n--soloCellFilter\ncell filtering type and parameters - None … do not output filtered cells - TopCells … only report top cells by UMI count, followed by the exact number of cells - CellRanger2.2 … simple filtering of CellRanger 2.2. Can be followed by numbers: number of expected cells, robust maximum percentile for UMI count, maximum to minimum ratio for UMI count The harcoded values are from CellRanger: nExpectedCells=3000; maxPercentile=0.99; maxMinRatio=10 - EmptyDrops_CR … EmptyDrops filtering in CellRanger flavor. Please cite the original EmptyDrops paper: A.T.L Lun et al, Genome Biology, 20, 63 (2019): https://genomebiology.biomedcentral.com/articles/10.1186/s13059-019-1662-y Can be followed by 10 numeric parameters: nExpectedCells maxPercentile maxMinRatio indMin indMax umiMin umiMinFracMedian candMaxN FDR simN The harcoded values are from CellRanger: 3000 0.99 10 45000 90000 500 0.01 20000 0.01 10000\nstring, example: \"CellRanger2.2\", example: \"3000\", example: \"0.99\", example: \"10\"\n\n\n--soloOutFormatFeaturesGeneField3\nfield 3 in the Gene features.tsv file. If “-”, then no 3rd field is output.\nstring, example: \"Gene Expression\"\n\n\n--soloCellReadStats\nOutput reads statistics for each CB - Standard … standard output\nstring" + }, + { + "objectID": "components/modules/mapping/star_align_v273a.html#authors", + "href": "components/modules/mapping/star_align_v273a.html#authors", + "title": "Star align v273a", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nRobrecht Cannoodt (author, maintainer)" + }, + { + "objectID": "components/modules/mapping/bd_rhapsody.html", + "href": "components/modules/mapping/bd_rhapsody.html", + "title": "BD Rhapsody", + "section": "", + "text": "ID: bd_rhapsody\nNamespace: mapping\n\n\n\nSource\nA wrapper for the BD Rhapsody Analysis CWL v1.10.1 pipeline.\nThe CWL pipeline file is obtained by cloning ‘https://bitbucket.org/CRSwDev/cwl/src/master/’ and removing all objects with class ‘DockerRequirement’ from the YML.\nThis pipeline can be used for a targeted analysis (with --mode targeted) or for a whole transcriptome analysis (with --mode wta).\nThe reference_genome and transcriptome_annotation files can be generated with the make_reference pipeline. Alternatively, BD also provides standard references which can be downloaded from these locations:" + }, + { + "objectID": "components/modules/mapping/bd_rhapsody.html#example-commands", + "href": "components/modules/mapping/bd_rhapsody.html#example-commands", + "title": "BD Rhapsody", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/mapping/bd_rhapsody/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\nmode: # please fill in - example: \"wta\"\ninput: # please fill in - example: [\"input.fastq.gz\"]\nreference: # please fill in - example: [\"reference_genome.tar.gz|reference.fasta\"]\n# transcriptome_annotation: \"transcriptome.gtf\"\n# abseq_reference: [\"abseq_reference.fasta\"]\n# supplemental_reference: [\"supplemental_reference.fasta\"]\nsample_prefix: \"sample\"\n\n# Outputs\n# output: \"$id.$key.output.output\"\n\n# Putative cell calling settings\n# putative_cell_call: \"mRNA\"\n# exact_cell_count: 10000\ndisable_putative_calling: false\n\n# Subsample arguments\n# subsample: 0.01\n# subsample_seed: 3445\n\n# Multiplex arguments\n# sample_tags_version: \"human\"\n# tag_names: [\"4-mySample\", \"9-myOtherSample\", \"6-alsoThisSample\"]\n\n# VDJ arguments\n# vdj_version: \"human\"\n\n# CWL-runner arguments\nparallel: true\ntimestamps: false\ndryrun: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/mapping/bd_rhapsody/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/mapping/bd_rhapsody.html#argument-groups", + "href": "components/modules/mapping/bd_rhapsody.html#argument-groups", + "title": "BD Rhapsody", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--mode\nWhether to run a whole transcriptome analysis (WTA) or a targeted analysis.\nstring, required, example: \"wta\"\n\n\n--input\nPath to your read files in the FASTQ.GZ format. You may specify as many R1/R2 read pairs as you want.\nfile, required, example: \"input.fastq.gz\"\n\n\n--reference\nRefence to map to. For --mode wta, this is the path to STAR index as a tar.gz file. For --mode targeted, this is the path to mRNA reference file for pre-designed, supplemental, or custom panel, in FASTA format\nfile, required, example: \"reference_genome.tar.gz|reference.fasta\"\n\n\n--transcriptome_annotation\nPath to GTF annotation file (only for --mode wta).\nfile, example: \"transcriptome.gtf\"\n\n\n--abseq_reference\nPath to the AbSeq reference file in FASTA format. Only needed if BD AbSeq Ab-Oligos are used.\nfile, example: \"abseq_reference.fasta\"\n\n\n--supplemental_reference\nPath to the supplemental reference file in FASTA format. Only needed if there are additional transgene sequences used in the experiment (only for --mode wta).\nfile, example: \"supplemental_reference.fasta\"\n\n\n--sample_prefix\nSpecify a run name to use as the output file base name. Use only letters, numbers, or hyphens. Do not use special characters or spaces.\nstring, default: \"sample\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput folder. Output still needs to be processed further.\nfile, required, example: \"output_dir\"\n\n\n\n\n\nPutative cell calling settings\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--putative_cell_call\nSpecify the dataset to be used for putative cell calling. For putative cell calling using an AbSeq dataset, please provide an AbSeq_Reference fasta file above.\nstring, example: \"mRNA\"\n\n\n--exact_cell_count\nExact cell count - Set a specific number (>=1) of cells as putative, based on those with the highest error-corrected read count\ninteger, example: 10000\n\n\n--disable_putative_calling\nDisable Refined Putative Cell Calling - Determine putative cells using only the basic algorithm (minimum second derivative along the cumulative reads curve). The refined algorithm attempts to remove false positives and recover false negatives, but may not be ideal for certain complex mixtures of cell types. Does not apply if Exact Cell Count is set.\nboolean_true\n\n\n\n\n\nSubsample arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--subsample\nA number >1 or fraction (0 < n < 1) to indicate the number or percentage of reads to subsample.\ndouble, example: 0.01\n\n\n--subsample_seed\nA seed for replicating a previous subsampled run.\ninteger, example: 3445\n\n\n\n\n\nMultiplex arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--sample_tags_version\nSpecify if multiplexed run.\nstring, example: \"human\"\n\n\n--tag_names\nTag_Names (optional) - Specify the tag number followed by ‘-’ and the desired sample name to appear in Sample_Tag_Metrics.csv. Do not use the special characters: &, (), [], {}, <>, ?, |\nstring, example: \"4-mySample\", example: \"9-myOtherSample\", example: \"6-alsoThisSample\"\n\n\n\n\n\nVDJ arguments\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--vdj_version\nSpecify if VDJ run.\nstring, example: \"human\"\n\n\n\n\n\nCWL-runner arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--parallel\nRun jobs in parallel.\nboolean, default: TRUE\n\n\n--timestamps\nAdd timestamps to the errors, warnings, and notifications.\nboolean_true\n\n\n--dryrun\nIf true, the output directory will only contain the CWL input files, but the pipeline itself will not be executed.\nboolean_true" + }, + { + "objectID": "components/modules/mapping/bd_rhapsody.html#authors", + "href": "components/modules/mapping/bd_rhapsody.html#authors", + "title": "BD Rhapsody", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (maintainer)" + }, + { + "objectID": "components/modules/integrate/totalvi.html", + "href": "components/modules/integrate/totalvi.html", + "title": "Totalvi", + "section": "", + "text": "ID: totalvi\nNamespace: integrate\n\n\n\nSource" + }, + { + "objectID": "components/modules/integrate/totalvi.html#example-commands", + "href": "components/modules/integrate/totalvi.html#example-commands", + "title": "Totalvi", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/integrate/totalvi/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput: # please fill in - example: \"path/to/file\"\nreference: # please fill in - example: \"path/to/file\"\nforce_retrain: false\nquery_modality: \"rna\"\n# query_proteins_modality: \"foo\"\nreference_modality: \"rna\"\nreference_proteins_modality: \"prot\"\n# input_layer: \"foo\"\nobs_batch: \"sample_id\"\n# var_input: \"foo\"\n\n# Outputs\n# output: \"$id.$key.output.output\"\nobsm_output: \"X_integrated_totalvi\"\nobsm_normalized_rna_output: \"X_totalvi_normalized_rna\"\nobsm_normalized_protein_output: \"X_totalvi_normalized_protein\"\n# reference_model_path: \"$id.$key.reference_model_path.reference_model_path\"\n# query_model_path: \"$id.$key.query_model_path.query_model_path\"\n\n# Learning parameters\nmax_epochs: 400\nmax_query_epochs: 200\nweight_decay: 0.0\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/integrate/totalvi/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/integrate/totalvi.html#argument-groups", + "href": "components/modules/integrate/totalvi.html#argument-groups", + "title": "Totalvi", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file with query data to integrate with reference.\nfile, required\n\n\n--reference\nInput h5mu file with reference data to train the TOTALVI model.\nfile, required\n\n\n--force_retrain\nIf true, retrain the model and save it to reference_model_path\nboolean_true\n\n\n--query_modality\n\nstring, default: \"rna\"\n\n\n--query_proteins_modality\nName of the modality in the input (query) h5mu file containing protein data\nstring\n\n\n--reference_modality\n\nstring, default: \"rna\"\n\n\n--reference_proteins_modality\nName of the modality containing proteins in the reference\nstring, default: \"prot\"\n\n\n--input_layer\nInput layer to use. If None, X is used\nstring\n\n\n--obs_batch\nColumn name discriminating between your batches.\nstring, default: \"sample_id\"\n\n\n--var_input\n.var column containing highly variable genes. By default, do not subset genes.\nstring\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput h5mu file.\nfile, required\n\n\n--obsm_output\nIn which .obsm slot to store the resulting integrated embedding.\nstring, default: \"X_integrated_totalvi\"\n\n\n--obsm_normalized_rna_output\nIn which .obsm slot to store the normalized RNA from TOTALVI.\nstring, default: \"X_totalvi_normalized_rna\"\n\n\n--obsm_normalized_protein_output\nIn which .obsm slot to store the normalized protein data from TOTALVI.\nstring, default: \"X_totalvi_normalized_protein\"\n\n\n--reference_model_path\nDirectory with the reference model. If not exists, trained model will be saved there\nfile, default: \"totalvi_model_reference\"\n\n\n--query_model_path\nDirectory, where the query model will be saved\nfile, default: \"totalvi_model_query\"\n\n\n\n\n\nLearning parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--max_epochs\nNumber of passes through the dataset\ninteger, default: 400\n\n\n--max_query_epochs\nNumber of passes through the dataset, when fine-tuning model for query\ninteger, default: 200\n\n\n--weight_decay\nWeight decay, when fine-tuning model for query\ndouble, default: 0" + }, + { + "objectID": "components/modules/integrate/totalvi.html#authors", + "href": "components/modules/integrate/totalvi.html#authors", + "title": "Totalvi", + "section": "Authors", + "text": "Authors\n\nVladimir Shitov" + }, + { + "objectID": "components/modules/integrate/scvi.html", + "href": "components/modules/integrate/scvi.html", + "title": "Scvi", + "section": "", + "text": "ID: scvi\nNamespace: integrate\n\n\n\nSource" + }, + { + "objectID": "components/modules/integrate/scvi.html#example-commands", + "href": "components/modules/integrate/scvi.html#example-commands", + "title": "Scvi", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/integrate/scvi/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput: # please fill in - example: \"path/to/file\"\nmodality: \"rna\"\n# input_layer: \"foo\"\nobs_batch: \"sample_id\"\n# var_input: \"foo\"\n# obs_labels: \"foo\"\n# obs_size_factor: \"foo\"\n# obs_categorical_covariate: [\"foo\"]\n# obs_continuous_covariate: [\"foo\"]\n\n# Outputs\n# output: \"$id.$key.output.output\"\n# model_output: \"$id.$key.model_output.model_output\"\n# output_compression: \"gzip\"\nobsm_output: \"X_scvi_integrated\"\n\n# SCVI options\nn_hidden_nodes: 128\nn_dimensions_latent_space: 30\nn_hidden_layers: 2\ndropout_rate: 0.1\ndispersion: \"gene\"\ngene_likelihood: \"nb\"\n\n# Variational auto-encoder model options\nuse_layer_normalization: \"both\"\nuse_batch_normalization: \"none\"\nencode_covariates: true\ndeeply_inject_covariates: false\nuse_observed_lib_size: false\n\n# Early stopping arguments\n# early_stopping: true\nearly_stopping_monitor: \"elbo_validation\"\nearly_stopping_patience: 45\nearly_stopping_min_delta: 0.0\n\n# Learning parameters\n# max_epochs: 123\nreduce_lr_on_plateau: true\nlr_factor: 0.6\nlr_patience: 30\n\n# Data validition\nn_obs_min_count: 0\nn_var_min_count: 0\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/integrate/scvi/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/integrate/scvi.html#argument-groups", + "href": "components/modules/integrate/scvi.html#argument-groups", + "title": "Scvi", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--input_layer\nInput layer to use. If None, X is used\nstring\n\n\n--obs_batch\nColumn name discriminating between your batches.\nstring, default: \"sample_id\"\n\n\n--var_input\n.var column containing highly variable genes. By default, do not subset genes.\nstring\n\n\n--obs_labels\nKey in adata.obs for label information. Categories will automatically be converted into integer categories and saved to adata.obs[’_scvi_labels’]. If None, assigns the same label to all the data.\nstring\n\n\n--obs_size_factor\nKey in adata.obs for size factor information. Instead of using library size as a size factor, the provided size factor column will be used as offset in the mean of the likelihood. Assumed to be on linear scale.\nstring\n\n\n--obs_categorical_covariate\nKeys in adata.obs that correspond to categorical data. These covariates can be added in addition to the batch covariate and are also treated as nuisance factors (i.e., the model tries to minimize their effects on the latent space). Thus, these should not be used for biologically-relevant factors that you do not want to correct for.\nstring\n\n\n--obs_continuous_covariate\nKeys in adata.obs that correspond to continuous data. These covariates can be added in addition to the batch covariate and are also treated as nuisance factors (i.e., the model tries to minimize their effects on the latent space). Thus, these should not be used for biologically-relevant factors that you do not want to correct for.\nstring\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput h5mu file.\nfile, required\n\n\n--model_output\nFolder where the state of the trained model will be saved to.\nfile\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--obsm_output\nIn which .obsm slot to store the resulting integrated embedding.\nstring, default: \"X_scvi_integrated\"\n\n\n\n\n\nSCVI options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--n_hidden_nodes\nNumber of nodes per hidden layer.\ninteger, default: 128\n\n\n--n_dimensions_latent_space\nDimensionality of the latent space.\ninteger, default: 30\n\n\n--n_hidden_layers\nNumber of hidden layers used for encoder and decoder neural-networks.\ninteger, default: 2\n\n\n--dropout_rate\nDropout rate for the neural networks.\ndouble, default: 0.1\n\n\n--dispersion\nSet the behavior for the dispersion for negative binomial distributions: - gene: dispersion parameter of negative binomial is constant per gene across cells - gene-batch: dispersion can differ between different batches - gene-label: dispersion can differ between different labels - gene-cell: dispersion can differ for every gene in every cell\nstring, default: \"gene\"\n\n\n--gene_likelihood\nModel used to generate the expression data from a count-based likelihood distribution. - nb: Negative binomial distribution - zinb: Zero-inflated negative binomial distribution - poisson: Poisson distribution\nstring, default: \"nb\"\n\n\n\n\n\nVariational auto-encoder model options\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--use_layer_normalization\nNeural networks for which to enable layer normalization.\nstring, default: \"both\"\n\n\n--use_batch_normalization\nNeural networks for which to enable batch normalization.\nstring, default: \"none\"\n\n\n--encode_covariates\nWhether to concatenate covariates to expression in encoder\nboolean_false\n\n\n--deeply_inject_covariates\nWhether to concatenate covariates into output of hidden layers in encoder/decoder. This option only applies when n_layers > 1. The covariates are concatenated to the input of subsequent hidden layers.\nboolean_true\n\n\n--use_observed_lib_size\nUse observed library size for RNA as scaling factor in mean of conditional distribution.\nboolean_true\n\n\n\n\n\nEarly stopping arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--early_stopping\nWhether to perform early stopping with respect to the validation set.\nboolean\n\n\n--early_stopping_monitor\nMetric logged during validation set epoch.\nstring, default: \"elbo_validation\"\n\n\n--early_stopping_patience\nNumber of validation epochs with no improvement after which training will be stopped.\ninteger, default: 45\n\n\n--early_stopping_min_delta\nMinimum change in the monitored quantity to qualify as an improvement, i.e. an absolute change of less than min_delta, will count as no improvement.\ndouble, default: 0\n\n\n\n\n\nLearning parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--max_epochs\nNumber of passes through the dataset, defaults to (20000 / number of cells) * 400 or 400; whichever is smallest.\ninteger\n\n\n--reduce_lr_on_plateau\nWhether to monitor validation loss and reduce learning rate when validation set lr_scheduler_metric plateaus.\nboolean, default: TRUE\n\n\n--lr_factor\nFactor to reduce learning rate.\ndouble, default: 0.6\n\n\n--lr_patience\nNumber of epochs with no improvement after which learning rate will be reduced.\ndouble, default: 30\n\n\n\n\n\nData validition\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--n_obs_min_count\nMinimum number of cells threshold ensuring that every obs_batch category has sufficient observations (cells) for model training.\ninteger, default: 0\n\n\n--n_var_min_count\nMinimum number of genes threshold ensuring that every var_input filter has sufficient observations (genes) for model training.\ninteger, default: 0" + }, + { + "objectID": "components/modules/integrate/scvi.html#authors", + "href": "components/modules/integrate/scvi.html#authors", + "title": "Scvi", + "section": "Authors", + "text": "Authors\n\nMalte D. Luecken (author)\nDries Schaumont (maintainer)\nMatthias Beyens (contributor)" + }, + { + "objectID": "components/modules/query/cellxgene_census.html", + "href": "components/modules/query/cellxgene_census.html", + "title": "Cellxgene census", + "section": "", + "text": "ID: cellxgene_census\nNamespace: query\n\n\n\nSource" + }, + { + "objectID": "components/modules/query/cellxgene_census.html#example-commands", + "href": "components/modules/query/cellxgene_census.html#example-commands", + "title": "Cellxgene census", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/query/cellxgene_census/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput_database: \"CellxGene\"\nmodality: \"rna\"\ncellxgene_release: \"2023-05-15\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Query\nspecies: \"homo_sapiens\"\n# cell_query: \"is_primary_data == True and cell_type_ontology_term_id in ['CL:0000136', 'CL:1000311', 'CL:0002616'] and suspension_type == 'cell'\"\n# cells_filter_columns: [\"dataset_id\", \"tissue\", \"assay\", \"disease\", \"cell_type\"]\n# min_cells_filter_columns: 100\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/query/cellxgene_census/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/query/cellxgene_census.html#argument-groups", + "href": "components/modules/query/cellxgene_census.html#argument-groups", + "title": "Cellxgene census", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\nArguments related to the input (aka query) dataset.\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input_database\nFull input database S3 prefix URL. Default: CellxGene Census\nstring, default: \"CellxGene\", example: \"s3://\"\n\n\n--modality\nWhich modality to store the output in.\nstring, default: \"rna\"\n\n\n--cellxgene_release\nCellxGene Census release date. More information: https://chanzuckerberg.github.io/cellxgene-census/cellxgene_census_docsite_data_release_info.html\nstring, default: \"2023-05-15\"\n\n\n\n\n\nQuery\nArguments related to the query.\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--species\nSpecie(s) of interest. If not specified, Homo Sapiens will be queried.\nstring, default: \"homo_sapiens\", example: \"homo_sapiens\"\n\n\n--cell_query\nThe query for selecting the cells as defined by the cellxgene census schema.\nstring, example: \"is_primary_data == True and cell_type_ontology_term_id in ['CL:0000136', 'CL:1000311', 'CL:0002616'] and suspension_type == 'cell'\"\n\n\n--cells_filter_columns\nThe query for selecting the cells as defined by the cellxgene census schema.\nstring, example: \"dataset_id\", example: \"tissue\", example: \"assay\", example: \"disease\", example: \"cell_type\"\n\n\n--min_cells_filter_columns\nMinimum of amount of summed cells_filter_columns cells\ndouble, example: 100\n\n\n\n\n\nOutputs\nOutput arguments.\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput h5mu file.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\n\nstring, example: \"gzip\"" + }, + { + "objectID": "components/modules/query/cellxgene_census.html#authors", + "href": "components/modules/query/cellxgene_census.html#authors", + "title": "Cellxgene census", + "section": "Authors", + "text": "Authors\n\nMatthias Beyens \nDries De Maeyer (author)" + }, + { + "objectID": "components/modules/reference/build_bdrhap_reference.html", + "href": "components/modules/reference/build_bdrhap_reference.html", + "title": "Build bdrhap reference", + "section": "", + "text": "ID: build_bdrhap_reference\nNamespace: reference\n\n\n\nSource" + }, + { + "objectID": "components/modules/reference/build_bdrhap_reference.html#example-commands", + "href": "components/modules/reference/build_bdrhap_reference.html#example-commands", + "title": "Build bdrhap reference", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/reference/build_bdrhap_reference/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ngenome_fasta: # please fill in - example: \"genome_sequence.fa.gz\"\ntranscriptome_gtf: # please fill in - example: \"transcriptome_annotation.gtf.gz\"\n# output: \"$id.$key.output.gz\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/reference/build_bdrhap_reference/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/reference/build_bdrhap_reference.html#argument-group", + "href": "components/modules/reference/build_bdrhap_reference.html#argument-group", + "title": "Build bdrhap reference", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--genome_fasta\nReference genome fasta.\nfile, required, example: \"genome_sequence.fa.gz\"\n\n\n--transcriptome_gtf\nReference transcriptome annotation.\nfile, required, example: \"transcriptome_annotation.gtf.gz\"\n\n\n--output\nStar index\nfile, required, example: \"star_index.tar.gz\"" + }, + { + "objectID": "components/modules/reference/build_bdrhap_reference.html#authors", + "href": "components/modules/reference/build_bdrhap_reference.html#authors", + "title": "Build bdrhap reference", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nRobrecht Cannoodt (author, maintainer)" + }, + { + "objectID": "components/modules/dimred/umap.html", + "href": "components/modules/dimred/umap.html", + "title": "Umap", + "section": "", + "text": "ID: umap\nNamespace: dimred\n\n\n\nSource\nBesides tending to be faster than tSNE, it optimizes the embedding such that it best reflects the topology of the data, which we represent throughout Scanpy using a neighborhood graph. tSNE, by contrast, optimizes the distribution of nearest-neighbor distances in the embedding such that these best match the distribution of distances in the high-dimensional space. We use the implementation of umap-learn [McInnes18]. For a few comparisons of UMAP with tSNE, see this preprint" + }, + { + "objectID": "components/modules/dimred/umap.html#example-commands", + "href": "components/modules/dimred/umap.html#example-commands", + "title": "Umap", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/dimred/umap/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\nuns_neighbors: \"neighbors\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nobsm_output: \"umap\"\n\n# Arguments\nmin_dist: 0.5\nspread: 1.0\nnum_components: 2\n# max_iter: 123\nalpha: 1.0\ngamma: 1.0\nnegative_sample_rate: 5\ninit_pos: \"spectral\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/dimred/umap/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/dimred/umap.html#argument-groups", + "href": "components/modules/dimred/umap.html#argument-groups", + "title": "Umap", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--uns_neighbors\nThe .uns neighbors slot as output by the find_neighbors component.\nstring, default: \"neighbors\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput h5mu file.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--obsm_output\nThe pre/postfix under which to store the UMAP results.\nstring, default: \"umap\"\n\n\n\n\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--min_dist\nThe effective minimum distance between embedded points. Smaller values will result in a more clustered/clumped embedding where nearby points on the manifold are drawn closer together, while larger values will result on a more even dispersal of points. The value should be set relative to the spread value, which determines the scale at which embedded points will be spread out.\ndouble, default: 0.5\n\n\n--spread\nThe effective scale of embedded points. In combination with min_dist this determines how clustered/clumped the embedded points are.\ndouble, default: 1\n\n\n--num_components\nThe number of dimensions of the embedding.\ninteger, default: 2\n\n\n--max_iter\nThe number of iterations (epochs) of the optimization. Called n_epochs in the original UMAP. Default is set to 500 if neighbors[‘connectivities’].shape[0] <= 10000, else 200.\ninteger\n\n\n--alpha\nThe initial learning rate for the embedding optimization.\ndouble, default: 1\n\n\n--gamma\nWeighting applied to negative samples in low dimensional embedding optimization. Values higher than one will result in greater weight being given to negative samples.\ndouble, default: 1\n\n\n--negative_sample_rate\nThe number of negative edge/1-simplex samples to use per positive edge/1-simplex sample in optimizing the low dimensional embedding.\ninteger, default: 5\n\n\n--init_pos\nHow to initialize the low dimensional embedding. Called init in the original UMAP. Options are: * Any key from .obsm * 'paga': positions from paga() * 'spectral': use a spectral embedding of the graph * 'random': assign initial embedding positions at random.\nstring, default: \"spectral\"" + }, + { + "objectID": "components/modules/dimred/umap.html#authors", + "href": "components/modules/dimred/umap.html#authors", + "title": "Umap", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (maintainer)" + }, + { + "objectID": "components/modules/filter/do_filter.html", + "href": "components/modules/filter/do_filter.html", + "title": "Do filter", + "section": "", + "text": "ID: do_filter\nNamespace: filter\n\n\n\nSource" + }, + { + "objectID": "components/modules/filter/do_filter.html#example-commands", + "href": "components/modules/filter/do_filter.html#example-commands", + "title": "Do filter", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/filter/do_filter/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n# obs_filter: [\"filter_with_x\"]\n# var_filter: [\"filter_with_x\"]\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/filter/do_filter/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/filter/do_filter.html#argument-group", + "href": "components/modules/filter/do_filter.html#argument-group", + "title": "Do filter", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--obs_filter\nWhich .obs columns to use to filter the observations by.\nstring, example: \"filter_with_x\"\n\n\n--var_filter\nWhich .var columns to use to filter the observations by.\nstring, example: \"filter_with_x\"\n\n\n--output\nOutput h5mu file.\nfile, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"" + }, + { + "objectID": "components/modules/filter/do_filter.html#authors", + "href": "components/modules/filter/do_filter.html#authors", + "title": "Do filter", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (maintainer, contributor)" + }, + { + "objectID": "components/modules/filter/filter_with_hvg.html", + "href": "components/modules/filter/filter_with_hvg.html", + "title": "Filter with hvg", + "section": "", + "text": "ID: filter_with_hvg\nNamespace: filter\n\n\n\nSource\nExpects logarithmized data, except when flavor=‘seurat_v3’ in which count data is expected.\nDepending on flavor, this reproduces the R-implementations of Seurat [Satija15], Cell Ranger [Zheng17], and Seurat v3 [Stuart19].\nFor the dispersion-based methods ([Satija15] and [Zheng17]), the normalized dispersion is obtained by scaling with the mean and standard deviation of the dispersions for genes falling into a given bin for mean expression of genes. This means that for each bin of mean expression, highly variable genes are selected.\nFor [Stuart19], a normalized variance for each gene is computed. First, the data are standardized (i.e., z-score normalization per feature) with a regularized standard deviation. Next, the normalized variance is computed as the variance of each gene after the transformation. Genes are ranked by the normalized variance." + }, + { + "objectID": "components/modules/filter/filter_with_hvg.html#example-commands", + "href": "components/modules/filter/filter_with_hvg.html#example-commands", + "title": "Filter with hvg", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/filter/filter_with_hvg/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n# layer: \"foo\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nvar_name_filter: \"filter_with_hvg\"\nvarm_name: \"hvg\"\ndo_subset: false\nflavor: \"seurat\"\n# n_top_genes: 123\nmin_mean: 0.0125\nmax_mean: 3\nmin_disp: 0.5\n# max_disp: 123.0\nspan: 0.3\nn_bins: 20\n# obs_batch_key: \"foo\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/filter/filter_with_hvg/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/filter/filter_with_hvg.html#argument-group", + "href": "components/modules/filter/filter_with_hvg.html#argument-group", + "title": "Filter with hvg", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--layer\nuse adata.layers[layer] for expression values instead of adata.X.\nstring\n\n\n--output\nOutput h5mu file.\nfile, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--var_name_filter\nIn which .var slot to store a boolean array corresponding to which observations should be filtered out.\nstring, default: \"filter_with_hvg\"\n\n\n--varm_name\nIn which .varm slot to store additional metadata.\nstring, default: \"hvg\"\n\n\n--do_subset\nWhether to subset before storing the output.\nboolean_true\n\n\n--flavor\nChoose the flavor for identifying highly variable genes. For the dispersion based methods in their default workflows, Seurat passes the cutoffs whereas Cell Ranger passes n_top_genes.\nstring, default: \"seurat\"\n\n\n--n_top_genes\nNumber of highly-variable genes to keep. Mandatory if flavor=‘seurat_v3’.\ninteger\n\n\n--min_mean\nIf n_top_genes is defined, this and all other cutoffs for the means and the normalized dispersions are ignored. Ignored if flavor=‘seurat_v3’.\ndouble, default: 0.0125\n\n\n--max_mean\nIf n_top_genes is defined, this and all other cutoffs for the means and the normalized dispersions are ignored. Ignored if flavor=‘seurat_v3’.\ndouble, default: 3\n\n\n--min_disp\nIf n_top_genes is defined, this and all other cutoffs for the means and the normalized dispersions are ignored. Ignored if flavor=‘seurat_v3’.\ndouble, default: 0.5\n\n\n--max_disp\nIf n_top_genes is defined, this and all other cutoffs for the means and the normalized dispersions are ignored. Ignored if flavor=‘seurat_v3’. Default is +inf.\ndouble\n\n\n--span\nThe fraction of the data (cells) used when estimating the variance in the loess model fit if flavor=‘seurat_v3’.\ndouble, default: 0.3\n\n\n--n_bins\nNumber of bins for binning the mean gene expression. Normalization is done with respect to each bin. If just a single gene falls into a bin, the normalized dispersion is artificially set to 1.\ninteger, default: 20\n\n\n--obs_batch_key\nIf specified, highly-variable genes are selected within each batch separately and merged. This simple process avoids the selection of batch-specific genes and acts as a lightweight batch correction method. For all flavors, genes are first sorted by how many batches they are a HVG. For dispersion-based flavors ties are broken by normalized dispersion. If flavor = ‘seurat_v3’, ties are broken by the median (across batches) rank based on within-batch normalized variance.\nstring" + }, + { + "objectID": "components/modules/filter/filter_with_hvg.html#authors", + "href": "components/modules/filter/filter_with_hvg.html#authors", + "title": "Filter with hvg", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (contributor)\nRobrecht Cannoodt (maintainer, contributor)" + }, + { + "objectID": "components/modules/filter/subset_h5mu.html", + "href": "components/modules/filter/subset_h5mu.html", + "title": "Subset h5mu", + "section": "", + "text": "ID: subset_h5mu\nNamespace: filter\n\n\n\nSource" + }, + { + "objectID": "components/modules/filter/subset_h5mu.html#example-commands", + "href": "components/modules/filter/subset_h5mu.html#example-commands", + "title": "Subset h5mu", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/filter/subset_h5mu/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n# number_of_observations: 5\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/filter/subset_h5mu/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/filter/subset_h5mu.html#argument-group", + "href": "components/modules/filter/subset_h5mu.html#argument-group", + "title": "Subset h5mu", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--output\nOutput h5mu file.\nfile, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--number_of_observations\nNumber of observations to be selected from the h5mu file.\ninteger, example: 5" + }, + { + "objectID": "components/modules/filter/subset_h5mu.html#authors", + "href": "components/modules/filter/subset_h5mu.html#authors", + "title": "Subset h5mu", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/correction/cellbender_remove_background.html", + "href": "components/modules/correction/cellbender_remove_background.html", + "title": "Cellbender remove background", + "section": "", + "text": "ID: cellbender_remove_background\nNamespace: correction\n\n\n\nSource\nThis module removes counts due to ambient RNA molecules and random barcode swapping from (raw) UMI-based scRNA-seq count matrices. At the moment, only the count matrices produced by the CellRanger count pipeline is supported. Support for additional tools and protocols will be added in the future. A quick start tutorial can be found here.\nFleming et al. 2022, bioRxiv." + }, + { + "objectID": "components/modules/correction/cellbender_remove_background.html#example-commands", + "href": "components/modules/correction/cellbender_remove_background.html#example-commands", + "title": "Cellbender remove background", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/correction/cellbender_remove_background/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nlayer_output: \"cellbender_corrected\"\nobs_background_fraction: \"cellbender_background_fraction\"\nobs_cell_probability: \"cellbender_cell_probability\"\nobs_cell_size: \"cellbender_cell_size\"\nobs_droplet_efficiency: \"cellbender_droplet_efficiency\"\nobs_latent_scale: \"cellbender_latent_scale\"\nvar_ambient_expression: \"cellbender_ambient_expression\"\nobsm_gene_expression_encoding: \"cellbender_gene_expression_encoding\"\n\n# Arguments\nexpected_cells_from_qc: false\n# expected_cells: 1000\n# total_droplets_included: 25000\n# force_cell_umi_prior: 123\n# force_empty_umi_prior: 123\nmodel: \"full\"\nepochs: 150\nlow_count_threshold: 5\nz_dim: 64\nz_layers: [512]\ntraining_fraction: 0.9\nempty_drop_training_fraction: 0.2\n# ignore_features: [123]\nfpr: [0.01]\n# exclude_feature_types: [\"foo\"]\nprojected_ambient_count_threshold: 0.1\nlearning_rate: 1.0E-4\n# final_elbo_fail_fraction: 123.0\n# epoch_elbo_fail_fraction: 123.0\nnum_training_tries: 1\nlearning_rate_retry_mult: 0.2\nposterior_batch_size: 128\n# posterior_regulation: \"foo\"\n# alpha: 123.0\n# q: 123.0\nestimator: \"mckp\"\nestimator_multiple_cpu: false\n# constant_learning_rate: true\ndebug: false\ncuda: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/correction/cellbender_remove_background/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/correction/cellbender_remove_background.html#argument-groups", + "href": "components/modules/correction/cellbender_remove_background.html#argument-groups", + "title": "Cellbender remove background", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file. Data file on which to run tool. Data must be un-filtered: it should include empty droplets.\nfile, required, example: \"input.h5mu\"\n\n\n--modality\nList of modalities to process.\nstring, default: \"rna\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nFull count matrix as an h5mu file, with background RNA removed. This file contains all the original droplet barcodes.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\n\nstring, example: \"gzip\"\n\n\n--layer_output\nOutput layer\nstring, default: \"cellbender_corrected\"\n\n\n--obs_background_fraction\n\nstring, default: \"cellbender_background_fraction\"\n\n\n--obs_cell_probability\n\nstring, default: \"cellbender_cell_probability\"\n\n\n--obs_cell_size\n\nstring, default: \"cellbender_cell_size\"\n\n\n--obs_droplet_efficiency\n\nstring, default: \"cellbender_droplet_efficiency\"\n\n\n--obs_latent_scale\n\nstring, default: \"cellbender_latent_scale\"\n\n\n--var_ambient_expression\n\nstring, default: \"cellbender_ambient_expression\"\n\n\n--obsm_gene_expression_encoding\n\nstring, default: \"cellbender_gene_expression_encoding\"\n\n\n\n\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--expected_cells_from_qc\nWill use the Cell Ranger QC to determine the estimated number of cells\nboolean, default: FALSE\n\n\n--expected_cells\nNumber of cells expected in the dataset (a rough estimate within a factor of 2 is sufficient).\ninteger, example: 1000\n\n\n--total_droplets_included\nThe number of droplets from the rank-ordered UMI plot that will have their cell probabilities inferred as an output. Include the droplets which might contain cells. Droplets beyond TOTAL_DROPLETS_INCLUDED should be ‘surely empty’ droplets.\ninteger, example: 25000\n\n\n--force_cell_umi_prior\nIgnore CellBender’s heuristic prior estimation, and use this prior for UMI counts in cells.\ninteger\n\n\n--force_empty_umi_prior\nIgnore CellBender’s heuristic prior estimation, and use this prior for UMI counts in empty droplets.\ninteger\n\n\n--model\nWhich model is being used for count data. * ‘naive’ subtracts the estimated ambient profile. * ‘simple’ does not model either ambient RNA or random barcode swapping (for debugging purposes – not recommended). * ‘ambient’ assumes background RNA is incorporated into droplets. * ‘swapping’ assumes background RNA comes from random barcode swapping (via PCR chimeras). * ‘full’ uses a combined ambient and swapping model.\nstring, default: \"full\"\n\n\n--epochs\nNumber of epochs to train.\ninteger, default: 150\n\n\n--low_count_threshold\nDroplets with UMI counts below this number are completely excluded from the analysis. This can help identify the correct prior for empty droplet counts in the rare case where empty counts are extremely high (over 200).\ninteger, default: 5\n\n\n--z_dim\nDimension of latent variable z.\ninteger, default: 64\n\n\n--z_layers\nDimension of hidden layers in the encoder for z.\ninteger, default: 512\n\n\n--training_fraction\nTraining detail: the fraction of the data used for training. The rest is never seen by the inference algorithm. Speeds up learning.\ndouble, default: 0.9\n\n\n--empty_drop_training_fraction\nTraining detail: the fraction of the training data each epoch that is drawn (randomly sampled) from surely empty droplets.\ndouble, default: 0.2\n\n\n--ignore_features\nInteger indices of features to ignore entirely. In the output count matrix, the counts for these features will be unchanged.\ninteger\n\n\n--fpr\nTarget ‘delta’ false positive rate in [0, 1). Use 0 for a cohort of samples which will be jointly analyzed for differential expression. A false positive is a true signal count that is erroneously removed. More background removal is accompanied by more signal removal at high values of FPR. You can specify multiple values, which will create multiple output files.\ndouble, default: 0.01\n\n\n--exclude_feature_types\nFeature types to ignore during the analysis. These features will be left unchanged in the output file.\nstring\n\n\n--projected_ambient_count_threshold\nControls how many features are included in the analysis, which can lead to a large speedup. If a feature is expected to have less than PROJECTED_AMBIENT_COUNT_THRESHOLD counts total in all cells (summed), then that gene is excluded, and it will be unchanged in the output count matrix. For example, PROJECTED_AMBIENT_COUNT_THRESHOLD = 0 will include all features which have even a single count in any empty droplet.\ndouble, default: 0.1\n\n\n--learning_rate\nTraining detail: lower learning rate for inference. A OneCycle learning rate schedule is used, where the upper learning rate is ten times this value. (For this value, probably do not exceed 1e-3).\ndouble, default: 1e-04\n\n\n--final_elbo_fail_fraction\nTraining is considered to have failed if (best_test_ELBO - final_test_ELBO)/(best_test_ELBO - initial_test_ELBO) > FINAL_ELBO_FAIL_FRACTION. Training will automatically re-run if –num-training-tries > 1. By default, will not fail training based on final_training_ELBO.\ndouble\n\n\n--epoch_elbo_fail_fraction\nTraining is considered to have failed if (previous_epoch_test_ELBO - current_epoch_test_ELBO)/(previous_epoch_test_ELBO - initial_train_ELBO) > EPOCH_ELBO_FAIL_FRACTION. Training will automatically re-run if –num-training-tries > 1. By default, will not fail training based on epoch_training_ELBO.\ndouble\n\n\n--num_training_tries\nNumber of times to attempt to train the model. At each subsequent attempt, the learning rate is multiplied by LEARNING_RATE_RETRY_MULT.\ninteger, default: 1\n\n\n--learning_rate_retry_mult\nLearning rate is multiplied by this amount each time a new training attempt is made. (This parameter is only used if training fails based on EPOCH_ELBO_FAIL_FRACTION or FINAL_ELBO_FAIL_FRACTION and NUM_TRAINING_TRIES is > 1.)\ndouble, default: 0.2\n\n\n--posterior_batch_size\nTraining detail: size of batches when creating the posterior. Reduce this to avoid running out of GPU memory creating the posterior (will be slower).\ninteger, default: 128\n\n\n--posterior_regulation\nPosterior regularization method. (For experts: not required for normal usage, see documentation). * PRq is approximate quantile-targeting. * PRmu is approximate mean-targeting aggregated over genes (behavior of v0.2.0). * PRmu_gene is approximate mean-targeting per gene.\nstring\n\n\n--alpha\nTunable parameter alpha for the PRq posterior regularization method (not normally used: see documentation).\ndouble\n\n\n--q\nTunable parameter q for the CDF threshold estimation method (not normally used: see documentation).\ndouble\n\n\n--estimator\nOutput denoised count estimation method. (For experts: not required for normal usage, see documentation).\nstring, default: \"mckp\"\n\n\n--estimator_multiple_cpu\nIncluding the flag –estimator-multiple-cpu will use more than one CPU to compute the MCKP output count estimator in parallel (does nothing for other estimators).\nboolean_true\n\n\n--constant_learning_rate\nIncluding the flag –constant-learning-rate will use the ClippedAdam optimizer instead of the OneCycleLR learning rate schedule, which is the default. Learning is faster with the OneCycleLR schedule. However, training can easily be continued from a checkpoint for more epochs than the initial command specified when using ClippedAdam. On the other hand, if using the OneCycleLR schedule with 150 epochs specified, it is not possible to pick up from that final checkpoint and continue training until 250 epochs.\nboolean\n\n\n--debug\nIncluding the flag –debug will log extra messages useful for debugging.\nboolean_true\n\n\n--cuda\nIncluding the flag –cuda will run the inference on a GPU.\nboolean_true" + }, + { + "objectID": "components/modules/convert/from_h5mu_to_h5ad.html", + "href": "components/modules/convert/from_h5mu_to_h5ad.html", + "title": "From h5mu to h5ad", + "section": "", + "text": "ID: from_h5mu_to_h5ad\nNamespace: convert\n\n\n\nSource" + }, + { + "objectID": "components/modules/convert/from_h5mu_to_h5ad.html#example-commands", + "href": "components/modules/convert/from_h5mu_to_h5ad.html#example-commands", + "title": "From h5mu to h5ad", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/convert/from_h5mu_to_h5ad/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n# output: \"$id.$key.output.h5ad\"\noutput_compression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/convert/from_h5mu_to_h5ad/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/convert/from_h5mu_to_h5ad.html#argument-group", + "href": "components/modules/convert/from_h5mu_to_h5ad.html#argument-group", + "title": "From h5mu to h5ad", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput MuData file\nfile, required, default: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--output\nOutput AnnData file.\nfile, default: \"output.h5ad\"\n\n\n--output_compression\nThe compression format to be used on the final h5ad object.\nstring, default: \"gzip\"" + }, + { + "objectID": "components/modules/convert/from_h5mu_to_h5ad.html#authors", + "href": "components/modules/convert/from_h5mu_to_h5ad.html#authors", + "title": "From h5mu to h5ad", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (maintainer)" + }, + { + "objectID": "components/modules/convert/from_10xmtx_to_h5mu.html", + "href": "components/modules/convert/from_10xmtx_to_h5mu.html", + "title": "From 10xmtx to h5mu", + "section": "", + "text": "ID: from_10xmtx_to_h5mu\nNamespace: convert\n\n\n\nSource" + }, + { + "objectID": "components/modules/convert/from_10xmtx_to_h5mu.html#example-commands", + "href": "components/modules/convert/from_10xmtx_to_h5mu.html#example-commands", + "title": "From 10xmtx to h5mu", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/convert/from_10xmtx_to_h5mu/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input_dir_containing_gz_files\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/convert/from_10xmtx_to_h5mu/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/convert/from_10xmtx_to_h5mu.html#argument-group", + "href": "components/modules/convert/from_10xmtx_to_h5mu.html#argument-group", + "title": "From 10xmtx to h5mu", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput mtx folder\nfile, required, example: \"input_dir_containing_gz_files\"\n\n\n--output\nOutput h5mu file.\nfile, example: \"output.h5mu\"\n\n\n--output_compression\n\nstring, example: \"gzip\"" + }, + { + "objectID": "components/modules/convert/from_10xmtx_to_h5mu.html#authors", + "href": "components/modules/convert/from_10xmtx_to_h5mu.html#authors", + "title": "From 10xmtx to h5mu", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (maintainer)" + }, + { + "objectID": "components/modules/convert/from_10xh5_to_h5mu.html", + "href": "components/modules/convert/from_10xh5_to_h5mu.html", + "title": "From 10xh5 to h5mu", + "section": "", + "text": "ID: from_10xh5_to_h5mu\nNamespace: convert\n\n\n\nSource" + }, + { + "objectID": "components/modules/convert/from_10xh5_to_h5mu.html#example-commands", + "href": "components/modules/convert/from_10xh5_to_h5mu.html#example-commands", + "title": "From 10xh5 to h5mu", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/convert/from_10xh5_to_h5mu/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput: # please fill in - example: \"raw_feature_bc_matrix.h5\"\n# input_metrics_summary: \"metrics_cellranger.h5\"\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nuns_metrics: \"metrics_cellranger\"\n\n# Arguments\n# min_genes: 100\n# min_counts: 1000\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/convert/from_10xh5_to_h5mu/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/convert/from_10xh5_to_h5mu.html#argument-groups", + "href": "components/modules/convert/from_10xh5_to_h5mu.html#argument-groups", + "title": "From 10xh5 to h5mu", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nA 10x h5 file as generated by Cell Ranger.\nfile, required, example: \"raw_feature_bc_matrix.h5\"\n\n\n--input_metrics_summary\nA metrics summary csv file as generated by Cell Ranger.\nfile, example: \"metrics_cellranger.h5\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput h5mu file.\nfile, example: \"output.h5mu\"\n\n\n--output_compression\n\nstring, example: \"gzip\"\n\n\n--uns_metrics\nName of the .uns slot under which to QC metrics (if any).\nstring, default: \"metrics_cellranger\"\n\n\n\n\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--min_genes\nMinimum number of counts required for a cell to pass filtering.\ninteger, example: 100\n\n\n--min_counts\nMinimum number of genes expressed required for a cell to pass filtering.\ninteger, example: 1000" + }, + { + "objectID": "components/modules/convert/from_10xh5_to_h5mu.html#authors", + "href": "components/modules/convert/from_10xh5_to_h5mu.html#authors", + "title": "From 10xh5 to h5mu", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (maintainer)" + }, + { + "objectID": "components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html", + "href": "components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html", + "title": "From bd to 10x molecular barcode tags", + "section": "", + "text": "ID: from_bd_to_10x_molecular_barcode_tags\nNamespace: convert\n\n\n\nSource" + }, + { + "objectID": "components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html#example-commands", + "href": "components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html#example-commands", + "title": "From bd to 10x molecular barcode tags", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/convert/from_bd_to_10x_molecular_barcode_tags/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.bam\"\n# output: \"$id.$key.output.sam\"\nbam: false\n# threads: 123\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/convert/from_bd_to_10x_molecular_barcode_tags/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html#argument-group", + "href": "components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html#argument-group", + "title": "From bd to 10x molecular barcode tags", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput SAM or BAM file.\nfile, required, example: \"input.bam\"\n\n\n--output\nOutput alignment file.\nfile, example: \"output.sam\"\n\n\n--bam\nOutput a BAM file.\nboolean_true\n\n\n--threads\nNumber of threads\ninteger" + }, + { + "objectID": "components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html#authors", + "href": "components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html#authors", + "title": "From bd to 10x molecular barcode tags", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/labels_transfer/knn.html", + "href": "components/modules/labels_transfer/knn.html", + "title": "Knn", + "section": "", + "text": "ID: knn\nNamespace: labels_transfer\n\n\n\nSource" + }, + { + "objectID": "components/modules/labels_transfer/knn.html#example-commands", + "href": "components/modules/labels_transfer/knn.html#example-commands", + "title": "Knn", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/labels_transfer/knn/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Learning parameters\nn_neighbors: # please fill in - example: 123\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/labels_transfer/knn/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/labels_transfer/knn.html#argument-groups", + "href": "components/modules/labels_transfer/knn.html#argument-groups", + "title": "Knn", + "section": "Argument groups", + "text": "Argument groups\n\nInput dataset (query) arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nThe query data to transfer the labels to. Should be a .h5mu file.\nfile, required\n\n\n--modality\nWhich modality to use.\nstring, default: \"rna\"\n\n\n--input_obsm_features\nThe .obsm key of the embedding to use for the classifier’s inference. If not provided, the .X slot will be used instead. Make sure that embedding was obtained in the same way as the reference embedding (e.g. by the same model or preprocessing).\nstring, example: \"X_integrated_scanvi\"\n\n\n\n\n\nReference dataset arguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--reference\nThe reference data to train classifiers on.\nfile, example: \"https:/zenodo.org/record/6337966/files/HLCA_emb_and_metadata.h5ad\"\n\n\n--reference_obsm_features\nThe .obsm key of the embedding to use for the classifier’s training. Make sure that embedding was obtained in the same way as the query embedding (e.g. by the same model or preprocessing).\nstring, required, default: \"X_integrated_scanvi\"\n\n\n--reference_obs_targets\nThe .obs key of the target labels to tranfer.\nstring, default: \"ann_level_1\", default: \"ann_level_2\", default: \"ann_level_3\", default: \"ann_level_4\", default: \"ann_level_5\", default: \"ann_finest_level\"\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nThe query data in .h5mu format with predicted labels transfered from the reference.\nfile, required\n\n\n--output_obs_predictions\nIn which .obs slots to store the predicted information. If provided, must have the same length as --reference_obs_targets. If empty, will default to the reference_obs_targets combined with the \"_pred\" suffix.\nstring\n\n\n--output_obs_uncertainty\nIn which .obs slots to store the uncertainty of the predictions. If provided, must have the same length as --reference_obs_targets. If empty, will default to the reference_obs_targets combined with the \"_uncertainty\" suffix.\nstring\n\n\n--output_uns_parameters\nThe .uns key to store additional information about the parameters used for the label transfer.\nstring, default: \"labels_transfer\"\n\n\n\n\n\nLearning parameters\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--n_neighbors\nNumber of nearest neighbors to use for classification\ninteger, required" + }, + { + "objectID": "components/modules/labels_transfer/knn.html#authors", + "href": "components/modules/labels_transfer/knn.html#authors", + "title": "Knn", + "section": "Authors", + "text": "Authors\n\nVladimir Shitov (author)" + }, + { + "objectID": "components/modules/report/mermaid.html", + "href": "components/modules/report/mermaid.html", + "title": "Mermaid", + "section": "", + "text": "ID: mermaid\nNamespace: report\n\n\n\nSource" + }, + { + "objectID": "components/modules/report/mermaid.html#example-commands", + "href": "components/modules/report/mermaid.html#example-commands", + "title": "Mermaid", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/report/mermaid/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"path/to/file\"\n# output: \"$id.$key.output.output\"\n# output_format: \"foo\"\nwidth: 800\nheight: 600\nbackground_color: \"white\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/report/mermaid/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/report/mermaid.html#argument-group", + "href": "components/modules/report/mermaid.html#argument-group", + "title": "Mermaid", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput directory\nfile, required\n\n\n--output\nGenerated network as output.\nfile, required\n\n\n--output_format\nOutput format for the generated image. By default will be inferred from the extension of the file specified with –output.\nstring\n\n\n--width\nWidth of the page\ninteger, default: 800\n\n\n--height\nHeight of the page\ninteger, default: 600\n\n\n--background_color\nBackground color for pngs/svgs (not pdfs)\nstring, default: \"white\", example: \"#F0F0F0\"" + }, + { + "objectID": "components/modules/report/mermaid.html#authors", + "href": "components/modules/report/mermaid.html#authors", + "title": "Mermaid", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (maintainer)" + }, + { + "objectID": "components/modules/download/download_file.html", + "href": "components/modules/download/download_file.html", + "title": "Download file", + "section": "", + "text": "ID: download_file\nNamespace: download\n\n\n\nSource" + }, + { + "objectID": "components/modules/download/download_file.html#example-commands", + "href": "components/modules/download/download_file.html#example-commands", + "title": "Download file", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/download/download_file/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"https://cf.10xgenomics.com/samples/cell-exp/3.0.0/pbmc_1k_protein_v3/pbmc_1k_protein_v3_raw_feature_bc_matrix.h5\"\n# output: \"$id.$key.output.h5\"\nverbose: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/download/download_file/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/download/download_file.html#argument-group", + "href": "components/modules/download/download_file.html#argument-group", + "title": "Download file", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nURL to a file to download.\nstring, required, example: \"https://cf.10xgenomics.com/samples/cell-exp/3.0.0/pbmc_1k_protein_v3/pbmc_1k_protein_v3_raw_feature_bc_matrix.h5\"\n\n\n--output\nPath where to store output.\nfile, required, example: \"pbmc_1k_protein_v3_raw_feature_bc_matrix.h5\"\n\n\n--verbose\nIncrease verbosity\nboolean_true" + }, + { + "objectID": "components/modules/download/download_file.html#authors", + "href": "components/modules/download/download_file.html#authors", + "title": "Download file", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (maintainer)" + }, + { + "objectID": "components/modules/qc/calculate_qc_metrics.html", + "href": "components/modules/qc/calculate_qc_metrics.html", + "title": "Calculate qc metrics", + "section": "", + "text": "ID: calculate_qc_metrics\nNamespace: qc\n\n\n\nSource\nThe metrics are comparable to what scanpy.pp.calculate_qc_metrics output, although they have slightly different names:\nVar metrics (name in this component -> name in scanpy): - pct_dropout -> pct_dropout_by_{expr_type} - num_nonzero_obs -> n_cells_by_{expr_type} - obs_mean -> mean_{expr_type} - total_counts -> total_{expr_type}\nObs metrics: - num_nonzero_vars -> n_genes_by_{expr_type} - pct_{var_qc_metrics]} -> pct_{expr_type}{qc_var} - total_counts{var_qc_metrics} -> total_{expr_type}{qc_var} - pct_of_counts_in_top{top_n_vars}vars -> pct{expr_type}in_top{n}{var_type} - total_counts -> total{expr_type}" + }, + { + "objectID": "components/modules/qc/calculate_qc_metrics.html#example-commands", + "href": "components/modules/qc/calculate_qc_metrics.html#example-commands", + "title": "Calculate qc metrics", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/qc/calculate_qc_metrics/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Inputs\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n# layer: \"raw_counts\"\n# var_qc_metrics: [\"ercc\", \"highly_variable\", \"mitochondrial\"]\n# var_qc_metrics_fill_na_value: true\n# top_n_vars: [123]\n\n# Outputs\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/qc/calculate_qc_metrics/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/qc/calculate_qc_metrics.html#argument-groups", + "href": "components/modules/qc/calculate_qc_metrics.html#argument-groups", + "title": "Calculate qc metrics", + "section": "Argument groups", + "text": "Argument groups\n\nInputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--layer\n\nstring, example: \"raw_counts\"\n\n\n--var_qc_metrics\nKeys to select a boolean (containing only True or False) column from .var. For each cell, calculate the proportion of total values for genes which are labeled ‘True’, compared to the total sum of the values for all genes.\nstring, example: \"ercc,highly_variable,mitochondrial\"\n\n\n--var_qc_metrics_fill_na_value\nFill any ‘NA’ values found in the columns specified with –var_qc_metrics to ‘True’ or ‘False’. as False.\nboolean\n\n\n--top_n_vars\nNumber of top vars to be used to calculate cumulative proportions. If not specified, proportions are not calculated. --top_n_vars 20,50 finds cumulative proportion to the 20th and 50th most expressed vars.\ninteger\n\n\n\n\n\nOutputs\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput h5mu file.\nfile, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"" + }, + { + "objectID": "components/modules/qc/calculate_qc_metrics.html#authors", + "href": "components/modules/qc/calculate_qc_metrics.html#authors", + "title": "Calculate qc metrics", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author)" + }, + { + "objectID": "components/modules/qc/fastqc.html", + "href": "components/modules/qc/fastqc.html", + "title": "Fastqc", + "section": "", + "text": "ID: fastqc\nNamespace: qc\n\n\n\nSource\nThis component can take one or more files (by means of shell globbing) or a complete directory" + }, + { + "objectID": "components/modules/qc/fastqc.html#example-commands", + "href": "components/modules/qc/fastqc.html#example-commands", + "title": "Fastqc", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/qc/fastqc/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\nmode: \"files\"\ninput: # please fill in - example: \"fastq_dir/\"\n# output: \"$id.$key.output.output\"\n# threads: 123\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/qc/fastqc/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/qc/fastqc.html#argument-group", + "href": "components/modules/qc/fastqc.html#argument-group", + "title": "Fastqc", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--mode\nThe mode in which the component works. Can be either files or dir.\nstring, default: \"files\"\n\n\n--input\nDirectory containing input fastq files.\nfile, required, example: \"fastq_dir\"\n\n\n--output\nOutput directory to write reports to.\nfile, required, example: \"qc\"\n\n\n--threads\nSpecifies the number of files which can be processed simultaneously. Each thread will be allocated 250MB of memory.\ninteger" + }, + { + "objectID": "components/modules/files/make_params.html", + "href": "components/modules/files/make_params.html", + "title": "Make params", + "section": "", + "text": "ID: make_params\nNamespace: files\n\n\n\nSource" + }, + { + "objectID": "components/modules/files/make_params.html#example-commands", + "href": "components/modules/files/make_params.html#example-commands", + "title": "Make params", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/files/make_params/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\nbase_dir: # please fill in - example: \"/path/to/dir\"\npattern: # please fill in - example: \"*.fastq.gz\"\nn_dirname_drop: 0\nn_basename_id: 0\nid_name: \"id\"\npath_name: \"path\"\n# group_name: \"param_list\"\n# output: \"$id.$key.output.yaml\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/files/make_params/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/files/make_params.html#argument-group", + "href": "components/modules/files/make_params.html#argument-group", + "title": "Make params", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--base_dir\nBase directory to search recursively\nfile, required, example: \"/path/to/dir\"\n\n\n--pattern\nAn optional regular expression. Only file names which match the regular expression will be matched.\nstring, required, example: \"*.fastq.gz\"\n\n\n--n_dirname_drop\nFor every matched file, the parent directory will be traversed N times.\ninteger, default: 0\n\n\n--n_basename_id\nThe unique identifiers will consist of at least N dirnames.\ninteger, default: 0\n\n\n--id_name\nThe name for storing the identifier field in the yaml.\nstring, default: \"id\"\n\n\n--path_name\nThe name for storing the path field in the yaml.\nstring, default: \"path\"\n\n\n--group_name\nTop level name for the group of entries.\nstring, example: \"param_list\"\n\n\n--output\nOutput YAML file.\nfile, required, example: \"params.yaml\"" + }, + { + "objectID": "components/modules/files/make_params.html#authors", + "href": "components/modules/files/make_params.html#authors", + "title": "Make params", + "section": "Authors", + "text": "Authors\n\nAngela Oliveira Pisco (author)\nRobrecht Cannoodt (maintainer, author)" + }, + { + "objectID": "components/modules/demux/bcl2fastq.html", + "href": "components/modules/demux/bcl2fastq.html", + "title": "Bcl2fastq", + "section": "", + "text": "ID: bcl2fastq\nNamespace: demux\n\n\n\nSource" + }, + { + "objectID": "components/modules/demux/bcl2fastq.html#example-commands", + "href": "components/modules/demux/bcl2fastq.html#example-commands", + "title": "Bcl2fastq", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/demux/bcl2fastq/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"bcl_dir\"\nsample_sheet: # please fill in - example: \"SampleSheet.csv\"\n# output: \"$id.$key.output.output\"\n# reports: \"$id.$key.reports.reports\"\nignore_missing: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/demux/bcl2fastq/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/demux/bcl2fastq.html#argument-group", + "href": "components/modules/demux/bcl2fastq.html#argument-group", + "title": "Bcl2fastq", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput run directory\nfile, required, example: \"bcl_dir\"\n\n\n--sample_sheet\nPointer to the sample sheet\nfile, required, example: \"SampleSheet.csv\"\n\n\n--output\nOutput directory containig fastq files\nfile, required, example: \"fastq_dir\"\n\n\n--reports\nReports directory\nfile, example: \"reports_dir\"\n\n\n--ignore_missing\n\nboolean_true" + }, + { + "objectID": "components/modules/demux/bcl2fastq.html#authors", + "href": "components/modules/demux/bcl2fastq.html#authors", + "title": "Bcl2fastq", + "section": "Authors", + "text": "Authors\n\nToni Verbeiren (author, maintainer)" + }, + { + "objectID": "components/modules/transfer/publish.html", + "href": "components/modules/transfer/publish.html", + "title": "Publish", + "section": "", + "text": "ID: publish\nNamespace: transfer\n\n\n\nSource" + }, + { + "objectID": "components/modules/transfer/publish.html#example-commands", + "href": "components/modules/transfer/publish.html#example-commands", + "title": "Publish", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/transfer/publish/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"path/to/file\"\n# output: \"$id.$key.output.output\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/transfer/publish/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/transfer/publish.html#argument-group", + "href": "components/modules/transfer/publish.html#argument-group", + "title": "Publish", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput filename\nfile, required\n\n\n--output\nOutput filename\nfile, required" + }, + { + "objectID": "components/modules/transfer/publish.html#authors", + "href": "components/modules/transfer/publish.html#authors", + "title": "Publish", + "section": "Authors", + "text": "Authors\n\nToni Verbeiren (maintainer)" + }, + { + "objectID": "components/modules/metadata/join_csv.html", + "href": "components/modules/metadata/join_csv.html", + "title": "Join csv", + "section": "", + "text": "ID: join_csv\nNamespace: metadata\n\n\n\nSource" + }, + { + "objectID": "components/modules/metadata/join_csv.html#example-commands", + "href": "components/modules/metadata/join_csv.html#example-commands", + "title": "Join csv", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/metadata/join_csv/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# MuData Input\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n# obs_key: \"foo\"\n# var_key: \"foo\"\n\n# MuData Output\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Metadata Input\ninput_csv: # please fill in - example: \"metadata.csv\"\ncsv_key: \"id\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/metadata/join_csv/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/metadata/join_csv.html#argument-groups", + "href": "components/modules/metadata/join_csv.html#argument-groups", + "title": "Join csv", + "section": "Argument groups", + "text": "Argument groups\n\nMuData Input\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--obs_key\nObs column name where the sample id can be found for each observation to join on. Useful when adding metadata to concatenated samples. Mutually exclusive with --var_key.”\nstring\n\n\n--var_key\nVar column name where the sample id can be found for each variable to join on. Mutually exclusive with --obs_key.”\nstring\n\n\n\n\n\nMuData Output\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--output\nOutput h5mu file.\nfile, required, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n\n\n\nMetadata Input\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input_csv\n.csv file containing metadata\nfile, required, example: \"metadata.csv\"\n\n\n--csv_key\ncolumn of the the csv that corresponds to the sample id.\nstring, default: \"id\"" + }, + { + "objectID": "components/modules/metadata/join_csv.html#authors", + "href": "components/modules/metadata/join_csv.html#authors", + "title": "Join csv", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (author)" + }, + { + "objectID": "components/modules/metadata/add_id.html", + "href": "components/modules/metadata/add_id.html", + "title": "Add id", + "section": "", + "text": "ID: add_id\nNamespace: metadata\n\n\n\nSource\nAlso allows to make .obs_names (the .obs index) unique by prefixing the values with an unique id per .h5mu file" + }, + { + "objectID": "components/modules/metadata/add_id.html#example-commands", + "href": "components/modules/metadata/add_id.html#example-commands", + "title": "Add id", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/metadata/add_id/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"sample_path\"\ninput_id: # please fill in - example: \"foo\"\nobs_output: \"sample_id\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nmake_observation_keys_unique: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/metadata/add_id/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/metadata/add_id.html#argument-group", + "href": "components/modules/metadata/add_id.html#argument-group", + "title": "Add id", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nPath to the input .h5mu.\nfile, required, example: \"sample_path\"\n\n\n--input_id\nThe input id.\nstring, required\n\n\n--obs_output\nName of the .obs column where to store the id.\nstring, default: \"sample_id\"\n\n\n--output\n\nfile, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--make_observation_keys_unique\nJoin the id to the .obs index (.obs_names).\nboolean_true" + }, + { + "objectID": "components/modules/metadata/add_id.html#authors", + "href": "components/modules/metadata/add_id.html#authors", + "title": "Add id", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/dataflow/split_modalities.html", + "href": "components/modules/dataflow/split_modalities.html", + "title": "Split modalities", + "section": "", + "text": "ID: split_modalities\nNamespace: dataflow\n\n\n\nSource" + }, + { + "objectID": "components/modules/dataflow/split_modalities.html#example-commands", + "href": "components/modules/dataflow/split_modalities.html#example-commands", + "title": "Split modalities", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/dataflow/split_modalities/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"sample_path\"\n# output: \"$id.$key.output.output\"\n# output_compression: \"gzip\"\n# output_types: \"$id.$key.output_types.csv\"\ncompression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/dataflow/split_modalities/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/dataflow/split_modalities.html#argument-group", + "href": "components/modules/dataflow/split_modalities.html#argument-group", + "title": "Split modalities", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nPath to a single .h5mu file.\nfile, required, default: \"sample_path\"\n\n\n--output\nOutput directory containing multiple h5mu files.\nfile, required, example: \"/path/to/output\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--output_types\nA csv containing the base filename and modality type per output file.\nfile, required, example: \"types.csv\"\n\n\n--compression\nThe compression format to be used on the final h5mu object.\nstring, default: \"gzip\"" + }, + { + "objectID": "components/modules/dataflow/split_modalities.html#authors", + "href": "components/modules/dataflow/split_modalities.html#authors", + "title": "Split modalities", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)\nRobrecht Cannoodt (contributor)" + }, + { + "objectID": "components/modules/dataflow/merge.html", + "href": "components/modules/dataflow/merge.html", + "title": "Merge", + "section": "", + "text": "ID: merge\nNamespace: dataflow\n\n\n\nSource" + }, + { + "objectID": "components/modules/dataflow/merge.html#example-commands", + "href": "components/modules/dataflow/merge.html#example-commands", + "title": "Merge", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/dataflow/merge/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: [\"sample_paths\"]\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/dataflow/merge/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/dataflow/merge.html#argument-group", + "href": "components/modules/dataflow/merge.html#argument-group", + "title": "Merge", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nPaths to the single-modality .h5mu files that need to be combined\nfile, required, default: \"sample_paths\"\n\n\n--output\nPath to the output file.\nfile, default: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"" + }, + { + "objectID": "components/modules/dataflow/merge.html#authors", + "href": "components/modules/dataflow/merge.html#authors", + "title": "Merge", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/transform/normalize_total.html", + "href": "components/modules/transform/normalize_total.html", + "title": "Normalize total", + "section": "", + "text": "ID: normalize_total\nNamespace: transform\n\n\n\nSource\nNormalize each cell by total counts over all genes, so that every cell has the same total count after normalization. If choosing target_sum=1e6, this is CPM normalization.\nIf exclude_highly_expressed=True, very highly expressed genes are excluded from the computation of the normalization factor (size factor) for each cell. This is meaningful as these can strongly influence the resulting normalized values for all other genes [Weinreb17]." + }, + { + "objectID": "components/modules/transform/normalize_total.html#example-commands", + "href": "components/modules/transform/normalize_total.html#example-commands", + "title": "Normalize total", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/transform/normalize_total/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\n# input_layer: \"foo\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\n# output_layer: \"foo\"\ntarget_sum: 10000\nexclude_highly_expressed: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/transform/normalize_total/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/transform/normalize_total.html#argument-group", + "href": "components/modules/transform/normalize_total.html#argument-group", + "title": "Normalize total", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--input_layer\nInput layer to use. By default, X is normalized\nstring\n\n\n--output\nOutput h5mu file.\nfile, required, default: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--output_layer\nOutput layer to use. By default, use X.\nstring\n\n\n--target_sum\nIf None, after normalization, each observation (cell) has a total count equal to the median of total counts for observations (cells) before normalization.\ninteger, default: 10000\n\n\n--exclude_highly_expressed\nExclude (very) highly expressed genes for the computation of the normalization factor (size factor) for each cell. A gene is considered highly expressed, if it has more than max_fraction of the total counts in at least one cell. The not-excluded genes will sum up to target_sum.\nboolean_true" + }, + { + "objectID": "components/modules/transform/normalize_total.html#authors", + "href": "components/modules/transform/normalize_total.html#authors", + "title": "Normalize total", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (maintainer)\nRobrecht Cannoodt (contributor)" + }, + { + "objectID": "components/modules/transform/delete_layer.html", + "href": "components/modules/transform/delete_layer.html", + "title": "Delete layer", + "section": "", + "text": "ID: delete_layer\nNamespace: transform\n\n\n\nSource" + }, + { + "objectID": "components/modules/transform/delete_layer.html#example-commands", + "href": "components/modules/transform/delete_layer.html#example-commands", + "title": "Delete layer", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/transform/delete_layer/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\nlayer: # please fill in - example: [\"foo\"]\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nmissing_ok: false\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/transform/delete_layer/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/transform/delete_layer.html#argument-group", + "href": "components/modules/transform/delete_layer.html#argument-group", + "title": "Delete layer", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--layer\nInput layer to remove\nstring, required\n\n\n--output\nOutput h5mu file.\nfile, required, default: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--missing_ok\nDo not raise an error if the layer does not exist for all modalities.\nboolean_true" + }, + { + "objectID": "components/modules/transform/delete_layer.html#authors", + "href": "components/modules/transform/delete_layer.html#authors", + "title": "Delete layer", + "section": "Authors", + "text": "Authors\n\nDries Schaumont (maintainer)" + }, + { + "objectID": "components/modules/transform/regress_out.html", + "href": "components/modules/transform/regress_out.html", + "title": "Regress out", + "section": "", + "text": "ID: regress_out\nNamespace: transform\n\n\n\nSource\nUses simple linear regression. This is inspired by Seurat’s regressOut function in R [Satija15]. Note that this function tends to overcorrect in certain circumstances as described in issue theislab/scanpy#526. See https://github.com/theislab/scanpy/issues/526" + }, + { + "objectID": "components/modules/transform/regress_out.html#example-commands", + "href": "components/modules/transform/regress_out.html#example-commands", + "title": "Regress out", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/transform/regress_out/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nmodality: \"rna\"\n# obs_keys: [\"foo\"]\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/transform/regress_out/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/transform/regress_out.html#argument-group", + "href": "components/modules/transform/regress_out.html#argument-group", + "title": "Regress out", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--output\nOutput h5mu file.\nfile, required, default: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--modality\nWhich modality (one or more) to run this component on.\nstring, default: \"rna\"\n\n\n--obs_keys\nWhich .obs keys to regress on.\nstring" + }, + { + "objectID": "components/modules/transform/regress_out.html#authors", + "href": "components/modules/transform/regress_out.html#authors", + "title": "Regress out", + "section": "Authors", + "text": "Authors\n\nRobrecht Cannoodt (maintainer, contributor)" + }, + { + "objectID": "components/modules/neighbors/find_neighbors.html", + "href": "components/modules/neighbors/find_neighbors.html", + "title": "Find neighbors", + "section": "", + "text": "ID: find_neighbors\nNamespace: neighbors\n\n\n\nSource\nThe neighbor search efficiency of this heavily relies on UMAP [McInnes18], which also provides a method for estimating connectivities of data points - the connectivity of the manifold (method==‘umap’). If method==‘gauss’, connectivities are computed according to [Coifman05], in the adaption of [Haghverdi16]." + }, + { + "objectID": "components/modules/neighbors/find_neighbors.html#example-commands", + "href": "components/modules/neighbors/find_neighbors.html#example-commands", + "title": "Find neighbors", + "section": "Example commands", + "text": "Example commands\nYou can run the pipeline using nextflow run.\n\nView help\nYou can use --help as a parameter to get an overview of the possible parameters.\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -main-script target/nextflow/neighbors/find_neighbors/main.nf \\\n --help\n\n\nRun command\n\n\nExample of params.yaml\n\n# Arguments\ninput: # please fill in - example: \"input.h5mu\"\nmodality: \"rna\"\nobsm_input: \"X_pca\"\n# output: \"$id.$key.output.h5mu\"\n# output_compression: \"gzip\"\nuns_output: \"neighbors\"\nobsp_distances: \"distances\"\nobsp_connectivities: \"connectivities\"\nmetric: \"euclidean\"\nnum_neighbors: 15\nseed: 0\n\n# Nextflow input-output arguments\npublish_dir: # please fill in - example: \"output/\"\n# param_list: \"my_params.yaml\"\n\nnextflow run openpipelines-bio/openpipeline \\\n -r 0.10.0 -latest \\\n -profile docker \\\n -main-script target/nextflow/neighbors/find_neighbors/main.nf \\\n -params-file params.yaml\n\n\n\n\n\n\nNote\n\n\n\nReplace -profile docker with -profile podman or -profile singularity depending on the desired backend." + }, + { + "objectID": "components/modules/neighbors/find_neighbors.html#argument-group", + "href": "components/modules/neighbors/find_neighbors.html#argument-group", + "title": "Find neighbors", + "section": "Argument group", + "text": "Argument group\n\nArguments\n\n\n\n\n\n\n\n\nName\nDescription\nAttributes\n\n\n\n\n--input\nInput h5mu file\nfile, required, example: \"input.h5mu\"\n\n\n--modality\n\nstring, default: \"rna\"\n\n\n--obsm_input\nWhich .obsm slot to use as a starting PCA embedding.\nstring, default: \"X_pca\"\n\n\n--output\nOutput h5mu file containing the found neighbors.\nfile, example: \"output.h5mu\"\n\n\n--output_compression\nThe compression format to be used on the output h5mu object.\nstring, example: \"gzip\"\n\n\n--uns_output\nMandatory .uns slot to store various neighbor output objects.\nstring, default: \"neighbors\"\n\n\n--obsp_distances\nIn which .obsp slot to store the distance matrix between the resulting neighbors.\nstring, default: \"distances\"\n\n\n--obsp_connectivities\nIn which .obsp slot to store the connectivities matrix between the resulting neighbors.\nstring, default: \"connectivities\"\n\n\n--metric\nThe distance metric to be used in the generation of the nearest neighborhood network.\nstring, default: \"euclidean\"\n\n\n--num_neighbors\nThe size of local neighborhood (in terms of number of neighboring data points) used for manifold approximation. Larger values result in more global views of the manifold, while smaller values result in more local data being preserved. In general values should be in the range 2 to 100. If knn is True, number of nearest neighbors to be searched. If knn is False, a Gaussian kernel width is set to the distance of the n_neighbors neighbor.\ninteger, default: 15\n\n\n--seed\nA random seed.\ninteger, default: 0" + }, + { + "objectID": "components/modules/neighbors/find_neighbors.html#authors", + "href": "components/modules/neighbors/find_neighbors.html#authors", + "title": "Find neighbors", + "section": "Authors", + "text": "Authors\n\nDries De Maeyer (maintainer)\nRobrecht Cannoodt (contributor)" + }, + { + "objectID": "contributing/running_tests.html", + "href": "contributing/running_tests.html", + "title": "Running tests", + "section": "", + "text": "Fetching the test data.\nThe input data that is needed to run the tests will need to be downloaded from the openpipelines Amazon AWS s3 bucket first. To do so, the download/sync_test_resource component can be used, which will download the data to the correct location (resources_test) by default.\n./bin/viash run ./src/download/sync_test_resources/config.vsh.yaml -p docker -- --input s3://openpipelines-data\nOr, if you do not want to use Docker and have aws-cli tools installed natively:\n./bin/viash run ./src/download/sync_test_resources/config.vsh.yaml -p native -- --input s3://openpipelines-data\n\n\nRunning component unittests\nTo build and run tests for individual component that you are working on, use viash test with the config.vsh.yaml of the component you would like to test. For example:\n./bin/viash test ./src/convert/from_10xh5_to_h5mu/config.vsh.yaml\nKeep in mind that when no platform is passed to viash test, it will use the first platform that is specified in the config, which is docker for most of the components in openpipelines. Use -p native for example if you do not want to use docker.\nIt is also possible to execute the tests for all components in each namespace using ./bin/viash_test (note the underscore instead of a space).\n./bin/viash_test\n\n\nIntegration tests\nIndividual integration tests can be run by using the integration_test.sh scripts for a pipeline, located next to the main.nf in the workflows folder.\n./workflows/ingestion/cellranger_demux/integration_test.sh\nRunning all integration tests is also possible using a helper script that can be found at workflows/test/integration_test.sh. Using this script requires a working R installation with tidyverse installed. However, as pipelines are implemented by combining individual components\n./workflows/test/integration_test.sh" + }, + { + "objectID": "contributing/getting_started.html", + "href": "contributing/getting_started.html", + "title": "Getting started", + "section": "", + "text": "Forking the code and cloning the repository\nThe openpipelines code is hosted on GitHub. To start working on openpipeline, you should create your own copy of the repository by forking it. Visit the openpipeline repository here and use the ‘Fork’ button on the top right hand side of the page. After you are done forking, you can clone the repository to a local directory on your computer using git clone. You can choose between using an SSH key to log in to GitHub or username and password (HTTPS) to connect to github.\n\nHTTPSSSH\n\n\ngit clone https://github.com/<YOUR USERNAME>/openpipeline.git\ncd openpipeline\ngit remote add upstream https://github.com/openpipeline-bio/openpipeline.git\n\n\ngit clone git@github.com:<YOUR USERNAME>/openpipeline.git\ncd openpipeline\ngit remote add upstream https://github.com/openpipeline-bio/openpipeline.git\n\n\n\n\n\nInstalling viash and nextflow\nOpenpipelines is being developed in Viash and Nextflow. If you are unfamiliar with either one of these platforms, you can check out their respective documentations here and here. To start contributing to openpipelines, you will need at least a working version of Java 11, OpenJDK 11, or a later version (up to Java 18). Additionally, by using Docker,you can build and test pipeline components and pipelines without needing to manually install dependencies for these components on your machine.\nViash and Nextflow can be installed by following the guides in the documentation for both of these tools. Make sure the viash and nextflow binaries are located in an existing directory that is listed in your $PATH. You can check if everything worked by running the following two commands and see if they output the correct location of the executables.\nwhich viash\nwhich nextflow" + }, + { + "objectID": "contributing/pull_requests.html", + "href": "contributing/pull_requests.html", + "title": "Publishing your changes", + "section": "", + "text": "While creating changes on your local branch, another developper could have added new changes the openpipeline repository. These changes will need to be included into your local branch before a pull request can be merged. Updating your branch involves merging the upstream branch (usually main) into your branch:\n# download the changes from the openpipelines repo\ngit fetch upstream\n# change your current branch to the branch of the pull request\ngit checkout <feature_branch>\n# merge the changes from upstream into your branch\ngit merge upstream/main\n# push the updates, your pull request will also be updated\ngit push" + }, + { + "objectID": "contributing/pull_requests.html#updating-your-pull-request-or-branch", + "href": "contributing/pull_requests.html#updating-your-pull-request-or-branch", + "title": "Publishing your changes", + "section": "", + "text": "While creating changes on your local branch, another developper could have added new changes the openpipeline repository. These changes will need to be included into your local branch before a pull request can be merged. Updating your branch involves merging the upstream branch (usually main) into your branch:\n# download the changes from the openpipelines repo\ngit fetch upstream\n# change your current branch to the branch of the pull request\ngit checkout <feature_branch>\n# merge the changes from upstream into your branch\ngit merge upstream/main\n# push the updates, your pull request will also be updated\ngit push" + }, + { + "objectID": "contributing/project_structure.html", + "href": "contributing/project_structure.html", + "title": "Project structure", + "section": "", + "text": "The root of the repository contains three main folders:\n\nsrc, which contains the source code for individual components.\nThe workflows folder containing the implementations of the pipelines (combining one or more components).\n(optionally) the target folder\n\nEach subfolder from src contains a Viash namespace, a logical grouping of pipeline components that perform a similar function. Within each namespace, subfolders designate individual pipeline components. For example ./src/convert/from_bdrhap_to_h5ad contains the implementation for a component from_bdrhap_to_h5ad which is grouped together with other components such as from_10xmtx_to_h5mu into a namespace convert. In a similar manner as grouping components into namespaces, pipelines are grouped together into folders. However, these are not component namespaces and as such do not interact with viash ns commands.\nAs will become apparent later on, Viash not only provides commands to perform operations on individual components, but also on groups of components in a namespace and all components in a project. As a rule of thumb, the basic Viash commands (like ./bin/viash test) are designated for running commands on individual components, while ns commands are (./bin/viash ns test) are for namespaces. When cloning a fresh repository, there will be no target folder present. This is because the target folder will only be created after components have been build." + }, + { + "objectID": "contributing/project_structure.html#sec-project-structure", + "href": "contributing/project_structure.html#sec-project-structure", + "title": "Project structure", + "section": "", + "text": "The root of the repository contains three main folders:\n\nsrc, which contains the source code for individual components.\nThe workflows folder containing the implementations of the pipelines (combining one or more components).\n(optionally) the target folder\n\nEach subfolder from src contains a Viash namespace, a logical grouping of pipeline components that perform a similar function. Within each namespace, subfolders designate individual pipeline components. For example ./src/convert/from_bdrhap_to_h5ad contains the implementation for a component from_bdrhap_to_h5ad which is grouped together with other components such as from_10xmtx_to_h5mu into a namespace convert. In a similar manner as grouping components into namespaces, pipelines are grouped together into folders. However, these are not component namespaces and as such do not interact with viash ns commands.\nAs will become apparent later on, Viash not only provides commands to perform operations on individual components, but also on groups of components in a namespace and all components in a project. As a rule of thumb, the basic Viash commands (like ./bin/viash test) are designated for running commands on individual components, while ns commands are (./bin/viash ns test) are for namespaces. When cloning a fresh repository, there will be no target folder present. This is because the target folder will only be created after components have been build." + }, + { + "objectID": "contributing/project_structure.html#sec-versioning", + "href": "contributing/project_structure.html#sec-versioning", + "title": "Project structure", + "section": "Versioning and branching strategy", + "text": "Versioning and branching strategy\nOpenPipeline tries to use of semantic versioning to govern changes between versions. An release of openpipelines uses a version number in the format MAJOR.MINOR.PATCH. Currenly, openpipelines is still at major version 0.x.y, meaning that public-facing breaking changes are possible on MINOR releases. These breaking changes will be documented in a dedicated section of the CHANGELOG that is published with each release. A PATCH release (i.e. a release where the MAJOR and MINOR version number stay the same), is used to resolve bugs with the pipeline but should not introduce breaking changes. Keep in mind that patches might introduce behavioral changes that may look breaking but are actually rectifying changes that were inadvertently introduced previously (and were in fact also ‘breaking changes’). In this case, a bug can also be released without changing the MINOR version, in a PATH release.\nBetween releases, development progress is tracked on Git branches. A git branch represents a snapshot of a codebase in time, to which changes can be added (i.e. committed). Eventually, all new feature or bugfixes must be reconsiled into a single branch so that a new release can be created. This process is called merging and the process of requesting the merging of two branches is called a pull request. Openpipelines follows the convention that the target branch for all pull requests is the main branch. Thus, the main branch contains the latest changes for the code and it can be considered the development branch.\nOnce a pull request has been approved and merged, Github Actions CI will automatically build all components (creating the target directory) and push the result to the main_build branch. In essence, the main_build branch is a copy of the main branch, but also containing the build components. Once it is time to create a openpipelines release, the Github CI release workflow is manually triggered, the components on the main branch will be build and tested. Then, the result will be pushed to the release branch and the integration tests will be run. If all tests succeeded, a new github tag and release can be created manually from the release branch.\n\n\n\n\n%%{init: { 'logLevel': 'debug', 'theme': 'default'} } }%%\ngitGraph\n commit id: \"initial commit\"\n branch main_build\n commit id: \"CI build\"\n checkout main\n commit\n checkout main_build\n merge main\n checkout main\n branch feature_a\n branch feature_b\n checkout feature_a\n commit\n commit\n checkout main\n commit id: \"#release 0.1\" type: HIGHLIGHT\n checkout main_build\n merge main\n checkout main\n branch release\n commit tag: \"0.1\"\n checkout main\n commit\n checkout feature_b\n commit\n commit\n checkout feature_a\n commit\n checkout main\n merge feature_a\n checkout main_build\n merge main\n checkout main\n checkout feature_b\n commit\n checkout main\n merge feature_b\n checkout main_build\n merge main\n checkout release\n merge main tag: \"0.2\"" + }, + { + "objectID": "team/index.html", + "href": "team/index.html", + "title": "Team", + "section": "", + "text": "Angela Oliveira Pisco\n Contributor\n \n \n \n \n \n \n \n \n \n \n \n Director of Computational Biology \n at \n \n Insitro\n \n \n \n \n \n Core Member \n at \n \n Open Problems\n \n \n \n \n \n \n \n \n Dries De Maeyer\n Core Team Member\n \n \n \n \n \n \n \n \n \n \n \n Principal Scientist \n at \n \n Janssen Pharmaceuticals\n \n \n \n \n \n \n \n \n Dries Schaumont\n Core Team Member\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Data Scientist \n at \n \n Data Intuitive\n \n \n \n \n \n \n \n \n Malte D. Luecken\n Core Team Member\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Group Leader \n at \n \n Helmholtz Munich\n \n \n \n \n \n Core Member \n at \n \n Open Problems\n \n \n \n \n \n \n \n \n Marijke Van Moerbeke\n Contributor\n \n \n \n \n \n \n \n \n Statistical Consultant \n at \n \n OpenAnalytics\n \n \n \n \n \n \n \n \n Matthias Beyens\n Contributor\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Principal Scientist \n at \n \n Janssen Pharmaceuticals\n \n \n \n \n \n \n \n \n Mauro Saporita\n Contributor\n \n \n \n \n \n \n \n \n \n \n \n Lead Nextflow Developer \n at \n \n Ardigen\n \n \n \n \n \n \n \n \n Povilas Gibas\n Contributor\n \n \n \n \n \n \n \n \n \n \n \n Bioinformatician \n at \n \n Ardigen\n \n \n \n \n \n \n \n \n Robrecht Cannoodt\n Core Team Member\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Data Science Engineer \n at \n \n Data Intuitive\n \n \n \n \n \n Core Member \n at \n \n Open Problems\n \n \n \n \n \n \n \n \n Samuel D'Souza\n Contributor\n \n \n \n \n \n \n \n \n Data Engineer \n at \n \n Chan Zuckerberg Biohub\n \n \n \n \n \n \n \n \n Toni Verbeiren\n Core Team Member\n \n \n \n \n \n \n \n \n Data Scientist and CEO \n at \n \n Data Intuitive\n \n \n \n \n \n \n \n \n Vladimir Shitov\n Contributor\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n PhD Candidate \n at \n \n Helmholtz Munich\n \n \n \n \n \n\n\nNo matching items" + } +] \ No newline at end of file diff --git a/pr-preview/pr-51/site_libs/bootstrap/bootstrap-icons.css b/pr-preview/pr-51/site_libs/bootstrap/bootstrap-icons.css new file mode 100644 index 00000000..c3bfba65 --- /dev/null +++ b/pr-preview/pr-51/site_libs/bootstrap/bootstrap-icons.css @@ -0,0 +1,1981 @@ +/*! + * Bootstrap Icons v1.10.5 (https://icons.getbootstrap.com/) + * Copyright 2019-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */ + +@font-face { + font-display: block; + font-family: "bootstrap-icons"; + src: +url("./bootstrap-icons.woff?1fa40e8900654d2863d011707b9fb6f2") format("woff"); +} + +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bi-123::before { content: "\f67f"; } +.bi-alarm-fill::before { content: "\f101"; } +.bi-alarm::before { content: "\f102"; } +.bi-align-bottom::before { content: "\f103"; } +.bi-align-center::before { content: "\f104"; } +.bi-align-end::before { content: "\f105"; } +.bi-align-middle::before { content: "\f106"; } +.bi-align-start::before { content: "\f107"; } +.bi-align-top::before { content: "\f108"; } +.bi-alt::before { content: "\f109"; } +.bi-app-indicator::before { content: "\f10a"; } +.bi-app::before { content: "\f10b"; } +.bi-archive-fill::before { content: "\f10c"; } +.bi-archive::before { content: "\f10d"; } +.bi-arrow-90deg-down::before { content: "\f10e"; } +.bi-arrow-90deg-left::before { content: "\f10f"; } +.bi-arrow-90deg-right::before { content: "\f110"; } +.bi-arrow-90deg-up::before { content: "\f111"; } +.bi-arrow-bar-down::before { content: "\f112"; } +.bi-arrow-bar-left::before { content: "\f113"; } +.bi-arrow-bar-right::before { content: "\f114"; } +.bi-arrow-bar-up::before { content: "\f115"; } +.bi-arrow-clockwise::before { content: "\f116"; } +.bi-arrow-counterclockwise::before { content: "\f117"; } +.bi-arrow-down-circle-fill::before { content: "\f118"; } +.bi-arrow-down-circle::before { content: "\f119"; } +.bi-arrow-down-left-circle-fill::before { content: "\f11a"; } +.bi-arrow-down-left-circle::before { content: "\f11b"; } +.bi-arrow-down-left-square-fill::before { content: "\f11c"; } +.bi-arrow-down-left-square::before { content: "\f11d"; } +.bi-arrow-down-left::before { content: "\f11e"; } +.bi-arrow-down-right-circle-fill::before { content: "\f11f"; } +.bi-arrow-down-right-circle::before { content: "\f120"; } +.bi-arrow-down-right-square-fill::before { content: "\f121"; } +.bi-arrow-down-right-square::before { content: "\f122"; } +.bi-arrow-down-right::before { content: "\f123"; } +.bi-arrow-down-short::before { content: "\f124"; } +.bi-arrow-down-square-fill::before { content: "\f125"; } +.bi-arrow-down-square::before { content: "\f126"; } +.bi-arrow-down-up::before { content: "\f127"; } +.bi-arrow-down::before { content: "\f128"; } +.bi-arrow-left-circle-fill::before { content: "\f129"; } +.bi-arrow-left-circle::before { content: "\f12a"; } +.bi-arrow-left-right::before { content: "\f12b"; } +.bi-arrow-left-short::before { content: "\f12c"; } +.bi-arrow-left-square-fill::before { content: "\f12d"; } +.bi-arrow-left-square::before { content: "\f12e"; } +.bi-arrow-left::before { content: "\f12f"; } +.bi-arrow-repeat::before { content: "\f130"; } +.bi-arrow-return-left::before { content: "\f131"; } +.bi-arrow-return-right::before { content: "\f132"; } +.bi-arrow-right-circle-fill::before { content: "\f133"; } +.bi-arrow-right-circle::before { content: "\f134"; } +.bi-arrow-right-short::before { content: "\f135"; } +.bi-arrow-right-square-fill::before { content: "\f136"; } +.bi-arrow-right-square::before { content: "\f137"; } +.bi-arrow-right::before { content: "\f138"; } +.bi-arrow-up-circle-fill::before { content: "\f139"; } +.bi-arrow-up-circle::before { content: "\f13a"; } +.bi-arrow-up-left-circle-fill::before { content: "\f13b"; } +.bi-arrow-up-left-circle::before { content: "\f13c"; } +.bi-arrow-up-left-square-fill::before { content: "\f13d"; } +.bi-arrow-up-left-square::before { content: "\f13e"; } +.bi-arrow-up-left::before { content: "\f13f"; } +.bi-arrow-up-right-circle-fill::before { content: "\f140"; } +.bi-arrow-up-right-circle::before { content: "\f141"; } +.bi-arrow-up-right-square-fill::before { content: "\f142"; } +.bi-arrow-up-right-square::before { content: "\f143"; } +.bi-arrow-up-right::before { content: "\f144"; } +.bi-arrow-up-short::before { content: "\f145"; } +.bi-arrow-up-square-fill::before { content: "\f146"; } +.bi-arrow-up-square::before { content: "\f147"; } +.bi-arrow-up::before { content: "\f148"; } +.bi-arrows-angle-contract::before { content: "\f149"; } +.bi-arrows-angle-expand::before { content: "\f14a"; } +.bi-arrows-collapse::before { content: "\f14b"; } +.bi-arrows-expand::before { content: "\f14c"; } +.bi-arrows-fullscreen::before { content: "\f14d"; } +.bi-arrows-move::before { content: "\f14e"; } +.bi-aspect-ratio-fill::before { content: "\f14f"; } +.bi-aspect-ratio::before { content: "\f150"; } +.bi-asterisk::before { content: "\f151"; } +.bi-at::before { content: "\f152"; } +.bi-award-fill::before { content: "\f153"; } +.bi-award::before { content: "\f154"; } +.bi-back::before { content: "\f155"; } +.bi-backspace-fill::before { content: "\f156"; } +.bi-backspace-reverse-fill::before { content: "\f157"; } +.bi-backspace-reverse::before { content: "\f158"; } +.bi-backspace::before { content: "\f159"; } +.bi-badge-3d-fill::before { content: "\f15a"; } +.bi-badge-3d::before { content: "\f15b"; } +.bi-badge-4k-fill::before { content: "\f15c"; } +.bi-badge-4k::before { content: "\f15d"; } +.bi-badge-8k-fill::before { content: "\f15e"; } +.bi-badge-8k::before { content: "\f15f"; } +.bi-badge-ad-fill::before { content: "\f160"; } +.bi-badge-ad::before { content: "\f161"; } +.bi-badge-ar-fill::before { content: "\f162"; } +.bi-badge-ar::before { content: "\f163"; } +.bi-badge-cc-fill::before { content: "\f164"; } +.bi-badge-cc::before { content: "\f165"; } +.bi-badge-hd-fill::before { content: "\f166"; } +.bi-badge-hd::before { content: "\f167"; } +.bi-badge-tm-fill::before { content: "\f168"; } +.bi-badge-tm::before { content: "\f169"; } +.bi-badge-vo-fill::before { content: "\f16a"; } +.bi-badge-vo::before { content: "\f16b"; } +.bi-badge-vr-fill::before { content: "\f16c"; } +.bi-badge-vr::before { content: "\f16d"; } +.bi-badge-wc-fill::before { content: "\f16e"; } +.bi-badge-wc::before { content: "\f16f"; } +.bi-bag-check-fill::before { content: "\f170"; } +.bi-bag-check::before { content: "\f171"; } +.bi-bag-dash-fill::before { content: "\f172"; } +.bi-bag-dash::before { content: "\f173"; } +.bi-bag-fill::before { content: "\f174"; } +.bi-bag-plus-fill::before { content: "\f175"; } +.bi-bag-plus::before { content: "\f176"; } +.bi-bag-x-fill::before { content: "\f177"; } +.bi-bag-x::before { content: "\f178"; } +.bi-bag::before { content: "\f179"; } +.bi-bar-chart-fill::before { content: "\f17a"; } +.bi-bar-chart-line-fill::before { content: "\f17b"; } +.bi-bar-chart-line::before { content: "\f17c"; } +.bi-bar-chart-steps::before { content: "\f17d"; } +.bi-bar-chart::before { content: "\f17e"; } +.bi-basket-fill::before { content: "\f17f"; } +.bi-basket::before { content: "\f180"; } +.bi-basket2-fill::before { content: "\f181"; } +.bi-basket2::before { content: "\f182"; } +.bi-basket3-fill::before { content: "\f183"; } +.bi-basket3::before { content: "\f184"; } +.bi-battery-charging::before { content: "\f185"; } +.bi-battery-full::before { content: "\f186"; } +.bi-battery-half::before { content: "\f187"; } +.bi-battery::before { content: "\f188"; } +.bi-bell-fill::before { content: "\f189"; } +.bi-bell::before { content: "\f18a"; } +.bi-bezier::before { content: "\f18b"; } +.bi-bezier2::before { content: "\f18c"; } +.bi-bicycle::before { content: "\f18d"; } +.bi-binoculars-fill::before { content: "\f18e"; } +.bi-binoculars::before { content: "\f18f"; } +.bi-blockquote-left::before { content: "\f190"; } +.bi-blockquote-right::before { content: "\f191"; } +.bi-book-fill::before { content: "\f192"; } +.bi-book-half::before { content: "\f193"; } +.bi-book::before { content: "\f194"; } +.bi-bookmark-check-fill::before { content: "\f195"; } +.bi-bookmark-check::before { content: "\f196"; } +.bi-bookmark-dash-fill::before { content: "\f197"; } +.bi-bookmark-dash::before { content: "\f198"; } +.bi-bookmark-fill::before { content: "\f199"; } +.bi-bookmark-heart-fill::before { content: "\f19a"; } +.bi-bookmark-heart::before { content: "\f19b"; } +.bi-bookmark-plus-fill::before { content: "\f19c"; } +.bi-bookmark-plus::before { content: "\f19d"; } +.bi-bookmark-star-fill::before { content: "\f19e"; } +.bi-bookmark-star::before { content: "\f19f"; } +.bi-bookmark-x-fill::before { content: "\f1a0"; } +.bi-bookmark-x::before { content: "\f1a1"; } +.bi-bookmark::before { content: "\f1a2"; } +.bi-bookmarks-fill::before { content: "\f1a3"; } +.bi-bookmarks::before { content: "\f1a4"; } +.bi-bookshelf::before { content: "\f1a5"; } +.bi-bootstrap-fill::before { content: "\f1a6"; } +.bi-bootstrap-reboot::before { content: "\f1a7"; } +.bi-bootstrap::before { content: "\f1a8"; } +.bi-border-all::before { content: "\f1a9"; } +.bi-border-bottom::before { content: "\f1aa"; } +.bi-border-center::before { content: "\f1ab"; } +.bi-border-inner::before { content: "\f1ac"; } +.bi-border-left::before { content: "\f1ad"; } +.bi-border-middle::before { content: "\f1ae"; } +.bi-border-outer::before { content: "\f1af"; } +.bi-border-right::before { content: "\f1b0"; } +.bi-border-style::before { content: "\f1b1"; } +.bi-border-top::before { content: "\f1b2"; } +.bi-border-width::before { content: "\f1b3"; } +.bi-border::before { content: "\f1b4"; } +.bi-bounding-box-circles::before { content: "\f1b5"; } +.bi-bounding-box::before { content: "\f1b6"; } +.bi-box-arrow-down-left::before { content: "\f1b7"; } +.bi-box-arrow-down-right::before { content: "\f1b8"; } +.bi-box-arrow-down::before { content: "\f1b9"; } +.bi-box-arrow-in-down-left::before { content: "\f1ba"; } +.bi-box-arrow-in-down-right::before { content: "\f1bb"; } +.bi-box-arrow-in-down::before { content: "\f1bc"; } +.bi-box-arrow-in-left::before { content: "\f1bd"; } +.bi-box-arrow-in-right::before { content: "\f1be"; } +.bi-box-arrow-in-up-left::before { content: "\f1bf"; } +.bi-box-arrow-in-up-right::before { content: "\f1c0"; } +.bi-box-arrow-in-up::before { content: "\f1c1"; } +.bi-box-arrow-left::before { content: "\f1c2"; } +.bi-box-arrow-right::before { content: "\f1c3"; } +.bi-box-arrow-up-left::before { content: "\f1c4"; } +.bi-box-arrow-up-right::before { content: "\f1c5"; } +.bi-box-arrow-up::before { content: "\f1c6"; } +.bi-box-seam::before { content: "\f1c7"; } +.bi-box::before { content: "\f1c8"; } +.bi-braces::before { content: "\f1c9"; } +.bi-bricks::before { content: "\f1ca"; } +.bi-briefcase-fill::before { content: "\f1cb"; } +.bi-briefcase::before { content: "\f1cc"; } +.bi-brightness-alt-high-fill::before { content: "\f1cd"; } +.bi-brightness-alt-high::before { content: "\f1ce"; } +.bi-brightness-alt-low-fill::before { content: "\f1cf"; } +.bi-brightness-alt-low::before { content: "\f1d0"; } +.bi-brightness-high-fill::before { content: "\f1d1"; } +.bi-brightness-high::before { content: "\f1d2"; } +.bi-brightness-low-fill::before { content: "\f1d3"; } +.bi-brightness-low::before { content: "\f1d4"; } +.bi-broadcast-pin::before { content: "\f1d5"; } +.bi-broadcast::before { content: "\f1d6"; } +.bi-brush-fill::before { content: "\f1d7"; } +.bi-brush::before { content: "\f1d8"; } +.bi-bucket-fill::before { content: "\f1d9"; } +.bi-bucket::before { content: "\f1da"; } +.bi-bug-fill::before { content: "\f1db"; } +.bi-bug::before { content: "\f1dc"; } +.bi-building::before { content: "\f1dd"; } +.bi-bullseye::before { content: "\f1de"; } +.bi-calculator-fill::before { content: "\f1df"; } +.bi-calculator::before { content: "\f1e0"; } +.bi-calendar-check-fill::before { content: "\f1e1"; } +.bi-calendar-check::before { content: "\f1e2"; } +.bi-calendar-date-fill::before { content: "\f1e3"; } +.bi-calendar-date::before { content: "\f1e4"; } +.bi-calendar-day-fill::before { content: "\f1e5"; } +.bi-calendar-day::before { content: "\f1e6"; } +.bi-calendar-event-fill::before { content: "\f1e7"; } +.bi-calendar-event::before { content: "\f1e8"; } +.bi-calendar-fill::before { content: "\f1e9"; } +.bi-calendar-minus-fill::before { content: "\f1ea"; } +.bi-calendar-minus::before { content: "\f1eb"; } +.bi-calendar-month-fill::before { content: "\f1ec"; } +.bi-calendar-month::before { content: "\f1ed"; } +.bi-calendar-plus-fill::before { content: "\f1ee"; } +.bi-calendar-plus::before { content: "\f1ef"; } +.bi-calendar-range-fill::before { content: "\f1f0"; } +.bi-calendar-range::before { content: "\f1f1"; } +.bi-calendar-week-fill::before { content: "\f1f2"; } +.bi-calendar-week::before { content: "\f1f3"; } +.bi-calendar-x-fill::before { content: "\f1f4"; } +.bi-calendar-x::before { content: "\f1f5"; } +.bi-calendar::before { content: "\f1f6"; } +.bi-calendar2-check-fill::before { content: "\f1f7"; } +.bi-calendar2-check::before { content: "\f1f8"; } +.bi-calendar2-date-fill::before { content: "\f1f9"; } +.bi-calendar2-date::before { content: "\f1fa"; } +.bi-calendar2-day-fill::before { content: "\f1fb"; } +.bi-calendar2-day::before { content: "\f1fc"; } +.bi-calendar2-event-fill::before { content: "\f1fd"; } +.bi-calendar2-event::before { content: "\f1fe"; } +.bi-calendar2-fill::before { content: "\f1ff"; } +.bi-calendar2-minus-fill::before { content: "\f200"; } +.bi-calendar2-minus::before { content: "\f201"; } +.bi-calendar2-month-fill::before { content: "\f202"; } +.bi-calendar2-month::before { content: "\f203"; } +.bi-calendar2-plus-fill::before { content: "\f204"; } +.bi-calendar2-plus::before { content: "\f205"; } +.bi-calendar2-range-fill::before { content: "\f206"; } +.bi-calendar2-range::before { content: "\f207"; } +.bi-calendar2-week-fill::before { content: "\f208"; } +.bi-calendar2-week::before { content: "\f209"; } +.bi-calendar2-x-fill::before { content: "\f20a"; } +.bi-calendar2-x::before { content: "\f20b"; } +.bi-calendar2::before { content: "\f20c"; } +.bi-calendar3-event-fill::before { content: "\f20d"; } +.bi-calendar3-event::before { content: "\f20e"; } +.bi-calendar3-fill::before { content: "\f20f"; } +.bi-calendar3-range-fill::before { content: "\f210"; } +.bi-calendar3-range::before { content: "\f211"; } +.bi-calendar3-week-fill::before { content: "\f212"; } +.bi-calendar3-week::before { content: "\f213"; } +.bi-calendar3::before { content: "\f214"; } +.bi-calendar4-event::before { content: "\f215"; } +.bi-calendar4-range::before { content: "\f216"; } +.bi-calendar4-week::before { content: "\f217"; } +.bi-calendar4::before { content: "\f218"; } +.bi-camera-fill::before { content: "\f219"; } +.bi-camera-reels-fill::before { content: "\f21a"; } +.bi-camera-reels::before { content: "\f21b"; } +.bi-camera-video-fill::before { content: "\f21c"; } +.bi-camera-video-off-fill::before { content: "\f21d"; } +.bi-camera-video-off::before { content: "\f21e"; } +.bi-camera-video::before { content: "\f21f"; } +.bi-camera::before { content: "\f220"; } +.bi-camera2::before { content: "\f221"; } +.bi-capslock-fill::before { content: "\f222"; } +.bi-capslock::before { content: "\f223"; } +.bi-card-checklist::before { content: "\f224"; } +.bi-card-heading::before { content: "\f225"; } +.bi-card-image::before { content: "\f226"; } +.bi-card-list::before { content: "\f227"; } +.bi-card-text::before { content: "\f228"; } +.bi-caret-down-fill::before { content: "\f229"; } +.bi-caret-down-square-fill::before { content: "\f22a"; } +.bi-caret-down-square::before { content: "\f22b"; } +.bi-caret-down::before { content: "\f22c"; } +.bi-caret-left-fill::before { content: "\f22d"; } +.bi-caret-left-square-fill::before { content: "\f22e"; } +.bi-caret-left-square::before { content: "\f22f"; } +.bi-caret-left::before { content: "\f230"; } +.bi-caret-right-fill::before { content: "\f231"; } +.bi-caret-right-square-fill::before { content: "\f232"; } +.bi-caret-right-square::before { content: "\f233"; } +.bi-caret-right::before { content: "\f234"; } +.bi-caret-up-fill::before { content: "\f235"; } +.bi-caret-up-square-fill::before { content: "\f236"; } +.bi-caret-up-square::before { content: "\f237"; } +.bi-caret-up::before { content: "\f238"; } +.bi-cart-check-fill::before { content: "\f239"; } +.bi-cart-check::before { content: "\f23a"; } +.bi-cart-dash-fill::before { content: "\f23b"; } +.bi-cart-dash::before { content: "\f23c"; } +.bi-cart-fill::before { content: "\f23d"; } +.bi-cart-plus-fill::before { content: "\f23e"; } +.bi-cart-plus::before { content: "\f23f"; } +.bi-cart-x-fill::before { content: "\f240"; } +.bi-cart-x::before { content: "\f241"; } +.bi-cart::before { content: "\f242"; } +.bi-cart2::before { content: "\f243"; } +.bi-cart3::before { content: "\f244"; } +.bi-cart4::before { content: "\f245"; } +.bi-cash-stack::before { content: "\f246"; } +.bi-cash::before { content: "\f247"; } +.bi-cast::before { content: "\f248"; } +.bi-chat-dots-fill::before { content: "\f249"; } +.bi-chat-dots::before { content: "\f24a"; } +.bi-chat-fill::before { content: "\f24b"; } +.bi-chat-left-dots-fill::before { content: "\f24c"; } +.bi-chat-left-dots::before { content: "\f24d"; } +.bi-chat-left-fill::before { content: "\f24e"; } +.bi-chat-left-quote-fill::before { content: "\f24f"; } +.bi-chat-left-quote::before { content: "\f250"; } +.bi-chat-left-text-fill::before { content: "\f251"; } +.bi-chat-left-text::before { content: "\f252"; } +.bi-chat-left::before { content: "\f253"; } +.bi-chat-quote-fill::before { content: "\f254"; } +.bi-chat-quote::before { content: "\f255"; } +.bi-chat-right-dots-fill::before { content: "\f256"; } +.bi-chat-right-dots::before { content: "\f257"; } +.bi-chat-right-fill::before { content: "\f258"; } +.bi-chat-right-quote-fill::before { content: "\f259"; } +.bi-chat-right-quote::before { content: "\f25a"; } +.bi-chat-right-text-fill::before { content: "\f25b"; } +.bi-chat-right-text::before { content: "\f25c"; } +.bi-chat-right::before { content: "\f25d"; } +.bi-chat-square-dots-fill::before { content: "\f25e"; } +.bi-chat-square-dots::before { content: "\f25f"; } +.bi-chat-square-fill::before { content: "\f260"; } +.bi-chat-square-quote-fill::before { content: "\f261"; } +.bi-chat-square-quote::before { content: "\f262"; } +.bi-chat-square-text-fill::before { content: "\f263"; } +.bi-chat-square-text::before { content: "\f264"; } +.bi-chat-square::before { content: "\f265"; } +.bi-chat-text-fill::before { content: "\f266"; } +.bi-chat-text::before { content: "\f267"; } +.bi-chat::before { content: "\f268"; } +.bi-check-all::before { content: "\f269"; } +.bi-check-circle-fill::before { content: "\f26a"; } +.bi-check-circle::before { content: "\f26b"; } +.bi-check-square-fill::before { content: "\f26c"; } +.bi-check-square::before { content: "\f26d"; } +.bi-check::before { content: "\f26e"; } +.bi-check2-all::before { content: "\f26f"; } +.bi-check2-circle::before { content: "\f270"; } +.bi-check2-square::before { content: "\f271"; } +.bi-check2::before { content: "\f272"; } +.bi-chevron-bar-contract::before { content: "\f273"; } +.bi-chevron-bar-down::before { content: "\f274"; } +.bi-chevron-bar-expand::before { content: "\f275"; } +.bi-chevron-bar-left::before { content: "\f276"; } +.bi-chevron-bar-right::before { content: "\f277"; } +.bi-chevron-bar-up::before { content: "\f278"; } +.bi-chevron-compact-down::before { content: "\f279"; } +.bi-chevron-compact-left::before { content: "\f27a"; } +.bi-chevron-compact-right::before { content: "\f27b"; } +.bi-chevron-compact-up::before { content: "\f27c"; } +.bi-chevron-contract::before { content: "\f27d"; } +.bi-chevron-double-down::before { content: "\f27e"; } +.bi-chevron-double-left::before { content: "\f27f"; } +.bi-chevron-double-right::before { content: "\f280"; } +.bi-chevron-double-up::before { content: "\f281"; } +.bi-chevron-down::before { content: "\f282"; } +.bi-chevron-expand::before { content: "\f283"; } +.bi-chevron-left::before { content: "\f284"; } +.bi-chevron-right::before { content: "\f285"; } +.bi-chevron-up::before { content: "\f286"; } +.bi-circle-fill::before { content: "\f287"; } +.bi-circle-half::before { content: "\f288"; } +.bi-circle-square::before { content: "\f289"; } +.bi-circle::before { content: "\f28a"; } +.bi-clipboard-check::before { content: "\f28b"; } +.bi-clipboard-data::before { content: "\f28c"; } +.bi-clipboard-minus::before { content: "\f28d"; } +.bi-clipboard-plus::before { content: "\f28e"; } +.bi-clipboard-x::before { content: "\f28f"; } +.bi-clipboard::before { content: "\f290"; } +.bi-clock-fill::before { content: "\f291"; } +.bi-clock-history::before { content: "\f292"; } +.bi-clock::before { content: "\f293"; } +.bi-cloud-arrow-down-fill::before { content: "\f294"; } +.bi-cloud-arrow-down::before { content: "\f295"; } +.bi-cloud-arrow-up-fill::before { content: "\f296"; } +.bi-cloud-arrow-up::before { content: "\f297"; } +.bi-cloud-check-fill::before { content: "\f298"; } +.bi-cloud-check::before { content: "\f299"; } +.bi-cloud-download-fill::before { content: "\f29a"; } +.bi-cloud-download::before { content: "\f29b"; } +.bi-cloud-drizzle-fill::before { content: "\f29c"; } +.bi-cloud-drizzle::before { content: "\f29d"; } +.bi-cloud-fill::before { content: "\f29e"; } +.bi-cloud-fog-fill::before { content: "\f29f"; } +.bi-cloud-fog::before { content: "\f2a0"; } +.bi-cloud-fog2-fill::before { content: "\f2a1"; } +.bi-cloud-fog2::before { content: "\f2a2"; } +.bi-cloud-hail-fill::before { content: "\f2a3"; } +.bi-cloud-hail::before { content: "\f2a4"; } +.bi-cloud-haze-fill::before { content: "\f2a6"; } +.bi-cloud-haze::before { content: "\f2a7"; } +.bi-cloud-haze2-fill::before { content: "\f2a8"; } +.bi-cloud-lightning-fill::before { content: "\f2a9"; } +.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; } +.bi-cloud-lightning-rain::before { content: "\f2ab"; } +.bi-cloud-lightning::before { content: "\f2ac"; } +.bi-cloud-minus-fill::before { content: "\f2ad"; } +.bi-cloud-minus::before { content: "\f2ae"; } +.bi-cloud-moon-fill::before { content: "\f2af"; } +.bi-cloud-moon::before { content: "\f2b0"; } +.bi-cloud-plus-fill::before { content: "\f2b1"; } +.bi-cloud-plus::before { content: "\f2b2"; } +.bi-cloud-rain-fill::before { content: "\f2b3"; } +.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; } +.bi-cloud-rain-heavy::before { content: "\f2b5"; } +.bi-cloud-rain::before { content: "\f2b6"; } +.bi-cloud-slash-fill::before { content: "\f2b7"; } +.bi-cloud-slash::before { content: "\f2b8"; } +.bi-cloud-sleet-fill::before { content: "\f2b9"; } +.bi-cloud-sleet::before { content: "\f2ba"; } +.bi-cloud-snow-fill::before { content: "\f2bb"; } +.bi-cloud-snow::before { content: "\f2bc"; } +.bi-cloud-sun-fill::before { content: "\f2bd"; } +.bi-cloud-sun::before { content: "\f2be"; } +.bi-cloud-upload-fill::before { content: "\f2bf"; } +.bi-cloud-upload::before { content: "\f2c0"; } +.bi-cloud::before { content: "\f2c1"; } +.bi-clouds-fill::before { content: "\f2c2"; } +.bi-clouds::before { content: "\f2c3"; } +.bi-cloudy-fill::before { content: "\f2c4"; } +.bi-cloudy::before { content: "\f2c5"; } +.bi-code-slash::before { content: "\f2c6"; } +.bi-code-square::before { content: "\f2c7"; } +.bi-code::before { content: "\f2c8"; } +.bi-collection-fill::before { content: "\f2c9"; } +.bi-collection-play-fill::before { content: "\f2ca"; } +.bi-collection-play::before { content: "\f2cb"; } +.bi-collection::before { content: "\f2cc"; } +.bi-columns-gap::before { content: "\f2cd"; } +.bi-columns::before { content: "\f2ce"; } +.bi-command::before { content: "\f2cf"; } +.bi-compass-fill::before { content: "\f2d0"; } +.bi-compass::before { content: "\f2d1"; } +.bi-cone-striped::before { content: "\f2d2"; } +.bi-cone::before { content: "\f2d3"; } +.bi-controller::before { content: "\f2d4"; } +.bi-cpu-fill::before { content: "\f2d5"; } +.bi-cpu::before { content: "\f2d6"; } +.bi-credit-card-2-back-fill::before { content: "\f2d7"; } +.bi-credit-card-2-back::before { content: "\f2d8"; } +.bi-credit-card-2-front-fill::before { content: "\f2d9"; } +.bi-credit-card-2-front::before { content: "\f2da"; } +.bi-credit-card-fill::before { content: "\f2db"; } +.bi-credit-card::before { content: "\f2dc"; } +.bi-crop::before { content: "\f2dd"; } +.bi-cup-fill::before { content: "\f2de"; } +.bi-cup-straw::before { content: "\f2df"; } +.bi-cup::before { content: "\f2e0"; } +.bi-cursor-fill::before { content: "\f2e1"; } +.bi-cursor-text::before { content: "\f2e2"; } +.bi-cursor::before { content: "\f2e3"; } +.bi-dash-circle-dotted::before { content: "\f2e4"; } +.bi-dash-circle-fill::before { content: "\f2e5"; } +.bi-dash-circle::before { content: "\f2e6"; } +.bi-dash-square-dotted::before { content: "\f2e7"; } +.bi-dash-square-fill::before { content: "\f2e8"; } +.bi-dash-square::before { content: "\f2e9"; } +.bi-dash::before { content: "\f2ea"; } +.bi-diagram-2-fill::before { content: "\f2eb"; } +.bi-diagram-2::before { content: "\f2ec"; } +.bi-diagram-3-fill::before { content: "\f2ed"; } +.bi-diagram-3::before { content: "\f2ee"; } +.bi-diamond-fill::before { content: "\f2ef"; } +.bi-diamond-half::before { content: "\f2f0"; } +.bi-diamond::before { content: "\f2f1"; } +.bi-dice-1-fill::before { content: "\f2f2"; } +.bi-dice-1::before { content: "\f2f3"; } +.bi-dice-2-fill::before { content: "\f2f4"; } +.bi-dice-2::before { content: "\f2f5"; } +.bi-dice-3-fill::before { content: "\f2f6"; } +.bi-dice-3::before { content: "\f2f7"; } +.bi-dice-4-fill::before { content: "\f2f8"; } +.bi-dice-4::before { content: "\f2f9"; } +.bi-dice-5-fill::before { content: "\f2fa"; } +.bi-dice-5::before { content: "\f2fb"; } +.bi-dice-6-fill::before { content: "\f2fc"; } +.bi-dice-6::before { content: "\f2fd"; } +.bi-disc-fill::before { content: "\f2fe"; } +.bi-disc::before { content: "\f2ff"; } +.bi-discord::before { content: "\f300"; } +.bi-display-fill::before { content: "\f301"; } +.bi-display::before { content: "\f302"; } +.bi-distribute-horizontal::before { content: "\f303"; } +.bi-distribute-vertical::before { content: "\f304"; } +.bi-door-closed-fill::before { content: "\f305"; } +.bi-door-closed::before { content: "\f306"; } +.bi-door-open-fill::before { content: "\f307"; } +.bi-door-open::before { content: "\f308"; } +.bi-dot::before { content: "\f309"; } +.bi-download::before { content: "\f30a"; } +.bi-droplet-fill::before { content: "\f30b"; } +.bi-droplet-half::before { content: "\f30c"; } +.bi-droplet::before { content: "\f30d"; } +.bi-earbuds::before { content: "\f30e"; } +.bi-easel-fill::before { content: "\f30f"; } +.bi-easel::before { content: "\f310"; } +.bi-egg-fill::before { content: "\f311"; } +.bi-egg-fried::before { content: "\f312"; } +.bi-egg::before { content: "\f313"; } +.bi-eject-fill::before { content: "\f314"; } +.bi-eject::before { content: "\f315"; } +.bi-emoji-angry-fill::before { content: "\f316"; } +.bi-emoji-angry::before { content: "\f317"; } +.bi-emoji-dizzy-fill::before { content: "\f318"; } +.bi-emoji-dizzy::before { content: "\f319"; } +.bi-emoji-expressionless-fill::before { content: "\f31a"; } +.bi-emoji-expressionless::before { content: "\f31b"; } +.bi-emoji-frown-fill::before { content: "\f31c"; } +.bi-emoji-frown::before { content: "\f31d"; } +.bi-emoji-heart-eyes-fill::before { content: "\f31e"; } +.bi-emoji-heart-eyes::before { content: "\f31f"; } +.bi-emoji-laughing-fill::before { content: "\f320"; } +.bi-emoji-laughing::before { content: "\f321"; } +.bi-emoji-neutral-fill::before { content: "\f322"; } +.bi-emoji-neutral::before { content: "\f323"; } +.bi-emoji-smile-fill::before { content: "\f324"; } +.bi-emoji-smile-upside-down-fill::before { content: "\f325"; } +.bi-emoji-smile-upside-down::before { content: "\f326"; } +.bi-emoji-smile::before { content: "\f327"; } +.bi-emoji-sunglasses-fill::before { content: "\f328"; } +.bi-emoji-sunglasses::before { content: "\f329"; } +.bi-emoji-wink-fill::before { content: "\f32a"; } +.bi-emoji-wink::before { content: "\f32b"; } +.bi-envelope-fill::before { content: "\f32c"; } +.bi-envelope-open-fill::before { content: "\f32d"; } +.bi-envelope-open::before { content: "\f32e"; } +.bi-envelope::before { content: "\f32f"; } +.bi-eraser-fill::before { content: "\f330"; } +.bi-eraser::before { content: "\f331"; } +.bi-exclamation-circle-fill::before { content: "\f332"; } +.bi-exclamation-circle::before { content: "\f333"; } +.bi-exclamation-diamond-fill::before { content: "\f334"; } +.bi-exclamation-diamond::before { content: "\f335"; } +.bi-exclamation-octagon-fill::before { content: "\f336"; } +.bi-exclamation-octagon::before { content: "\f337"; } +.bi-exclamation-square-fill::before { content: "\f338"; } +.bi-exclamation-square::before { content: "\f339"; } +.bi-exclamation-triangle-fill::before { content: "\f33a"; } +.bi-exclamation-triangle::before { content: "\f33b"; } +.bi-exclamation::before { content: "\f33c"; } +.bi-exclude::before { content: "\f33d"; } +.bi-eye-fill::before { content: "\f33e"; } +.bi-eye-slash-fill::before { content: "\f33f"; } +.bi-eye-slash::before { content: "\f340"; } +.bi-eye::before { content: "\f341"; } +.bi-eyedropper::before { content: "\f342"; } +.bi-eyeglasses::before { content: "\f343"; } +.bi-facebook::before { content: "\f344"; } +.bi-file-arrow-down-fill::before { content: "\f345"; } +.bi-file-arrow-down::before { content: "\f346"; } +.bi-file-arrow-up-fill::before { content: "\f347"; } +.bi-file-arrow-up::before { content: "\f348"; } +.bi-file-bar-graph-fill::before { content: "\f349"; } +.bi-file-bar-graph::before { content: "\f34a"; } +.bi-file-binary-fill::before { content: "\f34b"; } +.bi-file-binary::before { content: "\f34c"; } +.bi-file-break-fill::before { content: "\f34d"; } +.bi-file-break::before { content: "\f34e"; } +.bi-file-check-fill::before { content: "\f34f"; } +.bi-file-check::before { content: "\f350"; } +.bi-file-code-fill::before { content: "\f351"; } +.bi-file-code::before { content: "\f352"; } +.bi-file-diff-fill::before { content: "\f353"; } +.bi-file-diff::before { content: "\f354"; } +.bi-file-earmark-arrow-down-fill::before { content: "\f355"; } +.bi-file-earmark-arrow-down::before { content: "\f356"; } +.bi-file-earmark-arrow-up-fill::before { content: "\f357"; } +.bi-file-earmark-arrow-up::before { content: "\f358"; } +.bi-file-earmark-bar-graph-fill::before { content: "\f359"; } +.bi-file-earmark-bar-graph::before { content: "\f35a"; } +.bi-file-earmark-binary-fill::before { content: "\f35b"; } +.bi-file-earmark-binary::before { content: "\f35c"; } +.bi-file-earmark-break-fill::before { content: "\f35d"; } +.bi-file-earmark-break::before { content: "\f35e"; } +.bi-file-earmark-check-fill::before { content: "\f35f"; } +.bi-file-earmark-check::before { content: "\f360"; } +.bi-file-earmark-code-fill::before { content: "\f361"; } +.bi-file-earmark-code::before { content: "\f362"; } +.bi-file-earmark-diff-fill::before { content: "\f363"; } +.bi-file-earmark-diff::before { content: "\f364"; } +.bi-file-earmark-easel-fill::before { content: "\f365"; } +.bi-file-earmark-easel::before { content: "\f366"; } +.bi-file-earmark-excel-fill::before { content: "\f367"; } +.bi-file-earmark-excel::before { content: "\f368"; } +.bi-file-earmark-fill::before { content: "\f369"; } +.bi-file-earmark-font-fill::before { content: "\f36a"; } +.bi-file-earmark-font::before { content: "\f36b"; } +.bi-file-earmark-image-fill::before { content: "\f36c"; } +.bi-file-earmark-image::before { content: "\f36d"; } +.bi-file-earmark-lock-fill::before { content: "\f36e"; } +.bi-file-earmark-lock::before { content: "\f36f"; } +.bi-file-earmark-lock2-fill::before { content: "\f370"; } +.bi-file-earmark-lock2::before { content: "\f371"; } +.bi-file-earmark-medical-fill::before { content: "\f372"; } +.bi-file-earmark-medical::before { content: "\f373"; } +.bi-file-earmark-minus-fill::before { content: "\f374"; } +.bi-file-earmark-minus::before { content: "\f375"; } +.bi-file-earmark-music-fill::before { content: "\f376"; } +.bi-file-earmark-music::before { content: "\f377"; } +.bi-file-earmark-person-fill::before { content: "\f378"; } +.bi-file-earmark-person::before { content: "\f379"; } +.bi-file-earmark-play-fill::before { content: "\f37a"; } +.bi-file-earmark-play::before { content: "\f37b"; } +.bi-file-earmark-plus-fill::before { content: "\f37c"; } +.bi-file-earmark-plus::before { content: "\f37d"; } +.bi-file-earmark-post-fill::before { content: "\f37e"; } +.bi-file-earmark-post::before { content: "\f37f"; } +.bi-file-earmark-ppt-fill::before { content: "\f380"; } +.bi-file-earmark-ppt::before { content: "\f381"; } +.bi-file-earmark-richtext-fill::before { content: "\f382"; } +.bi-file-earmark-richtext::before { content: "\f383"; } +.bi-file-earmark-ruled-fill::before { content: "\f384"; } +.bi-file-earmark-ruled::before { content: "\f385"; } +.bi-file-earmark-slides-fill::before { content: "\f386"; } +.bi-file-earmark-slides::before { content: "\f387"; } +.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; } +.bi-file-earmark-spreadsheet::before { content: "\f389"; } +.bi-file-earmark-text-fill::before { content: "\f38a"; } +.bi-file-earmark-text::before { content: "\f38b"; } +.bi-file-earmark-word-fill::before { content: "\f38c"; } +.bi-file-earmark-word::before { content: "\f38d"; } +.bi-file-earmark-x-fill::before { content: "\f38e"; } +.bi-file-earmark-x::before { content: "\f38f"; } +.bi-file-earmark-zip-fill::before { content: "\f390"; } +.bi-file-earmark-zip::before { content: "\f391"; } +.bi-file-earmark::before { content: "\f392"; } +.bi-file-easel-fill::before { content: "\f393"; } +.bi-file-easel::before { content: "\f394"; } +.bi-file-excel-fill::before { content: "\f395"; } +.bi-file-excel::before { content: "\f396"; } +.bi-file-fill::before { content: "\f397"; } +.bi-file-font-fill::before { content: "\f398"; } +.bi-file-font::before { content: "\f399"; } +.bi-file-image-fill::before { content: "\f39a"; } +.bi-file-image::before { content: "\f39b"; } +.bi-file-lock-fill::before { content: "\f39c"; } +.bi-file-lock::before { content: "\f39d"; } +.bi-file-lock2-fill::before { content: "\f39e"; } +.bi-file-lock2::before { content: "\f39f"; } +.bi-file-medical-fill::before { content: "\f3a0"; } +.bi-file-medical::before { content: "\f3a1"; } +.bi-file-minus-fill::before { content: "\f3a2"; } +.bi-file-minus::before { content: "\f3a3"; } +.bi-file-music-fill::before { content: "\f3a4"; } +.bi-file-music::before { content: "\f3a5"; } +.bi-file-person-fill::before { content: "\f3a6"; } +.bi-file-person::before { content: "\f3a7"; } +.bi-file-play-fill::before { content: "\f3a8"; } +.bi-file-play::before { content: "\f3a9"; } +.bi-file-plus-fill::before { content: "\f3aa"; } +.bi-file-plus::before { content: "\f3ab"; } +.bi-file-post-fill::before { content: "\f3ac"; } +.bi-file-post::before { content: "\f3ad"; } +.bi-file-ppt-fill::before { content: "\f3ae"; } +.bi-file-ppt::before { content: "\f3af"; } +.bi-file-richtext-fill::before { content: "\f3b0"; } +.bi-file-richtext::before { content: "\f3b1"; } +.bi-file-ruled-fill::before { content: "\f3b2"; } +.bi-file-ruled::before { content: "\f3b3"; } +.bi-file-slides-fill::before { content: "\f3b4"; } +.bi-file-slides::before { content: "\f3b5"; } +.bi-file-spreadsheet-fill::before { content: "\f3b6"; } +.bi-file-spreadsheet::before { content: "\f3b7"; } +.bi-file-text-fill::before { content: "\f3b8"; } +.bi-file-text::before { content: "\f3b9"; } +.bi-file-word-fill::before { content: "\f3ba"; } +.bi-file-word::before { content: "\f3bb"; } +.bi-file-x-fill::before { content: "\f3bc"; } +.bi-file-x::before { content: "\f3bd"; } +.bi-file-zip-fill::before { content: "\f3be"; } +.bi-file-zip::before { content: "\f3bf"; } +.bi-file::before { content: "\f3c0"; } +.bi-files-alt::before { content: "\f3c1"; } +.bi-files::before { content: "\f3c2"; } +.bi-film::before { content: "\f3c3"; } +.bi-filter-circle-fill::before { content: "\f3c4"; } +.bi-filter-circle::before { content: "\f3c5"; } +.bi-filter-left::before { content: "\f3c6"; } +.bi-filter-right::before { content: "\f3c7"; } +.bi-filter-square-fill::before { content: "\f3c8"; } +.bi-filter-square::before { content: "\f3c9"; } +.bi-filter::before { content: "\f3ca"; } +.bi-flag-fill::before { content: "\f3cb"; } +.bi-flag::before { content: "\f3cc"; } +.bi-flower1::before { content: "\f3cd"; } +.bi-flower2::before { content: "\f3ce"; } +.bi-flower3::before { content: "\f3cf"; } +.bi-folder-check::before { content: "\f3d0"; } +.bi-folder-fill::before { content: "\f3d1"; } +.bi-folder-minus::before { content: "\f3d2"; } +.bi-folder-plus::before { content: "\f3d3"; } +.bi-folder-symlink-fill::before { content: "\f3d4"; } +.bi-folder-symlink::before { content: "\f3d5"; } +.bi-folder-x::before { content: "\f3d6"; } +.bi-folder::before { content: "\f3d7"; } +.bi-folder2-open::before { content: "\f3d8"; } +.bi-folder2::before { content: "\f3d9"; } +.bi-fonts::before { content: "\f3da"; } +.bi-forward-fill::before { content: "\f3db"; } +.bi-forward::before { content: "\f3dc"; } +.bi-front::before { content: "\f3dd"; } +.bi-fullscreen-exit::before { content: "\f3de"; } +.bi-fullscreen::before { content: "\f3df"; } +.bi-funnel-fill::before { content: "\f3e0"; } +.bi-funnel::before { content: "\f3e1"; } +.bi-gear-fill::before { content: "\f3e2"; } +.bi-gear-wide-connected::before { content: "\f3e3"; } +.bi-gear-wide::before { content: "\f3e4"; } +.bi-gear::before { content: "\f3e5"; } +.bi-gem::before { content: "\f3e6"; } +.bi-geo-alt-fill::before { content: "\f3e7"; } +.bi-geo-alt::before { content: "\f3e8"; } +.bi-geo-fill::before { content: "\f3e9"; } +.bi-geo::before { content: "\f3ea"; } +.bi-gift-fill::before { content: "\f3eb"; } +.bi-gift::before { content: "\f3ec"; } +.bi-github::before { content: "\f3ed"; } +.bi-globe::before { content: "\f3ee"; } +.bi-globe2::before { content: "\f3ef"; } +.bi-google::before { content: "\f3f0"; } +.bi-graph-down::before { content: "\f3f1"; } +.bi-graph-up::before { content: "\f3f2"; } +.bi-grid-1x2-fill::before { content: "\f3f3"; } +.bi-grid-1x2::before { content: "\f3f4"; } +.bi-grid-3x2-gap-fill::before { content: "\f3f5"; } +.bi-grid-3x2-gap::before { content: "\f3f6"; } +.bi-grid-3x2::before { content: "\f3f7"; } +.bi-grid-3x3-gap-fill::before { content: "\f3f8"; } +.bi-grid-3x3-gap::before { content: "\f3f9"; } +.bi-grid-3x3::before { content: "\f3fa"; } +.bi-grid-fill::before { content: "\f3fb"; } +.bi-grid::before { content: "\f3fc"; } +.bi-grip-horizontal::before { content: "\f3fd"; } +.bi-grip-vertical::before { content: "\f3fe"; } +.bi-hammer::before { content: "\f3ff"; } +.bi-hand-index-fill::before { content: "\f400"; } +.bi-hand-index-thumb-fill::before { content: "\f401"; } +.bi-hand-index-thumb::before { content: "\f402"; } +.bi-hand-index::before { content: "\f403"; } +.bi-hand-thumbs-down-fill::before { content: "\f404"; } +.bi-hand-thumbs-down::before { content: "\f405"; } +.bi-hand-thumbs-up-fill::before { content: "\f406"; } +.bi-hand-thumbs-up::before { content: "\f407"; } +.bi-handbag-fill::before { content: "\f408"; } +.bi-handbag::before { content: "\f409"; } +.bi-hash::before { content: "\f40a"; } +.bi-hdd-fill::before { content: "\f40b"; } +.bi-hdd-network-fill::before { content: "\f40c"; } +.bi-hdd-network::before { content: "\f40d"; } +.bi-hdd-rack-fill::before { content: "\f40e"; } +.bi-hdd-rack::before { content: "\f40f"; } +.bi-hdd-stack-fill::before { content: "\f410"; } +.bi-hdd-stack::before { content: "\f411"; } +.bi-hdd::before { content: "\f412"; } +.bi-headphones::before { content: "\f413"; } +.bi-headset::before { content: "\f414"; } +.bi-heart-fill::before { content: "\f415"; } +.bi-heart-half::before { content: "\f416"; } +.bi-heart::before { content: "\f417"; } +.bi-heptagon-fill::before { content: "\f418"; } +.bi-heptagon-half::before { content: "\f419"; } +.bi-heptagon::before { content: "\f41a"; } +.bi-hexagon-fill::before { content: "\f41b"; } +.bi-hexagon-half::before { content: "\f41c"; } +.bi-hexagon::before { content: "\f41d"; } +.bi-hourglass-bottom::before { content: "\f41e"; } +.bi-hourglass-split::before { content: "\f41f"; } +.bi-hourglass-top::before { content: "\f420"; } +.bi-hourglass::before { content: "\f421"; } +.bi-house-door-fill::before { content: "\f422"; } +.bi-house-door::before { content: "\f423"; } +.bi-house-fill::before { content: "\f424"; } +.bi-house::before { content: "\f425"; } +.bi-hr::before { content: "\f426"; } +.bi-hurricane::before { content: "\f427"; } +.bi-image-alt::before { content: "\f428"; } +.bi-image-fill::before { content: "\f429"; } +.bi-image::before { content: "\f42a"; } +.bi-images::before { content: "\f42b"; } +.bi-inbox-fill::before { content: "\f42c"; } +.bi-inbox::before { content: "\f42d"; } +.bi-inboxes-fill::before { content: "\f42e"; } +.bi-inboxes::before { content: "\f42f"; } +.bi-info-circle-fill::before { content: "\f430"; } +.bi-info-circle::before { content: "\f431"; } +.bi-info-square-fill::before { content: "\f432"; } +.bi-info-square::before { content: "\f433"; } +.bi-info::before { content: "\f434"; } +.bi-input-cursor-text::before { content: "\f435"; } +.bi-input-cursor::before { content: "\f436"; } +.bi-instagram::before { content: "\f437"; } +.bi-intersect::before { content: "\f438"; } +.bi-journal-album::before { content: "\f439"; } +.bi-journal-arrow-down::before { content: "\f43a"; } +.bi-journal-arrow-up::before { content: "\f43b"; } +.bi-journal-bookmark-fill::before { content: "\f43c"; } +.bi-journal-bookmark::before { content: "\f43d"; } +.bi-journal-check::before { content: "\f43e"; } +.bi-journal-code::before { content: "\f43f"; } +.bi-journal-medical::before { content: "\f440"; } +.bi-journal-minus::before { content: "\f441"; } +.bi-journal-plus::before { content: "\f442"; } +.bi-journal-richtext::before { content: "\f443"; } +.bi-journal-text::before { content: "\f444"; } +.bi-journal-x::before { content: "\f445"; } +.bi-journal::before { content: "\f446"; } +.bi-journals::before { content: "\f447"; } +.bi-joystick::before { content: "\f448"; } +.bi-justify-left::before { content: "\f449"; } +.bi-justify-right::before { content: "\f44a"; } +.bi-justify::before { content: "\f44b"; } +.bi-kanban-fill::before { content: "\f44c"; } +.bi-kanban::before { content: "\f44d"; } +.bi-key-fill::before { content: "\f44e"; } +.bi-key::before { content: "\f44f"; } +.bi-keyboard-fill::before { content: "\f450"; } +.bi-keyboard::before { content: "\f451"; } +.bi-ladder::before { content: "\f452"; } +.bi-lamp-fill::before { content: "\f453"; } +.bi-lamp::before { content: "\f454"; } +.bi-laptop-fill::before { content: "\f455"; } +.bi-laptop::before { content: "\f456"; } +.bi-layer-backward::before { content: "\f457"; } +.bi-layer-forward::before { content: "\f458"; } +.bi-layers-fill::before { content: "\f459"; } +.bi-layers-half::before { content: "\f45a"; } +.bi-layers::before { content: "\f45b"; } +.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; } +.bi-layout-sidebar-inset::before { content: "\f45d"; } +.bi-layout-sidebar-reverse::before { content: "\f45e"; } +.bi-layout-sidebar::before { content: "\f45f"; } +.bi-layout-split::before { content: "\f460"; } +.bi-layout-text-sidebar-reverse::before { content: "\f461"; } +.bi-layout-text-sidebar::before { content: "\f462"; } +.bi-layout-text-window-reverse::before { content: "\f463"; } +.bi-layout-text-window::before { content: "\f464"; } +.bi-layout-three-columns::before { content: "\f465"; } +.bi-layout-wtf::before { content: "\f466"; } +.bi-life-preserver::before { content: "\f467"; } +.bi-lightbulb-fill::before { content: "\f468"; } +.bi-lightbulb-off-fill::before { content: "\f469"; } +.bi-lightbulb-off::before { content: "\f46a"; } +.bi-lightbulb::before { content: "\f46b"; } +.bi-lightning-charge-fill::before { content: "\f46c"; } +.bi-lightning-charge::before { content: "\f46d"; } +.bi-lightning-fill::before { content: "\f46e"; } +.bi-lightning::before { content: "\f46f"; } +.bi-link-45deg::before { content: "\f470"; } +.bi-link::before { content: "\f471"; } +.bi-linkedin::before { content: "\f472"; } +.bi-list-check::before { content: "\f473"; } +.bi-list-nested::before { content: "\f474"; } +.bi-list-ol::before { content: "\f475"; } +.bi-list-stars::before { content: "\f476"; } +.bi-list-task::before { content: "\f477"; } +.bi-list-ul::before { content: "\f478"; } +.bi-list::before { content: "\f479"; } +.bi-lock-fill::before { content: "\f47a"; } +.bi-lock::before { content: "\f47b"; } +.bi-mailbox::before { content: "\f47c"; } +.bi-mailbox2::before { content: "\f47d"; } +.bi-map-fill::before { content: "\f47e"; } +.bi-map::before { content: "\f47f"; } +.bi-markdown-fill::before { content: "\f480"; } +.bi-markdown::before { content: "\f481"; } +.bi-mask::before { content: "\f482"; } +.bi-megaphone-fill::before { content: "\f483"; } +.bi-megaphone::before { content: "\f484"; } +.bi-menu-app-fill::before { content: "\f485"; } +.bi-menu-app::before { content: "\f486"; } +.bi-menu-button-fill::before { content: "\f487"; } +.bi-menu-button-wide-fill::before { content: "\f488"; } +.bi-menu-button-wide::before { content: "\f489"; } +.bi-menu-button::before { content: "\f48a"; } +.bi-menu-down::before { content: "\f48b"; } +.bi-menu-up::before { content: "\f48c"; } +.bi-mic-fill::before { content: "\f48d"; } +.bi-mic-mute-fill::before { content: "\f48e"; } +.bi-mic-mute::before { content: "\f48f"; } +.bi-mic::before { content: "\f490"; } +.bi-minecart-loaded::before { content: "\f491"; } +.bi-minecart::before { content: "\f492"; } +.bi-moisture::before { content: "\f493"; } +.bi-moon-fill::before { content: "\f494"; } +.bi-moon-stars-fill::before { content: "\f495"; } +.bi-moon-stars::before { content: "\f496"; } +.bi-moon::before { content: "\f497"; } +.bi-mouse-fill::before { content: "\f498"; } +.bi-mouse::before { content: "\f499"; } +.bi-mouse2-fill::before { content: "\f49a"; } +.bi-mouse2::before { content: "\f49b"; } +.bi-mouse3-fill::before { content: "\f49c"; } +.bi-mouse3::before { content: "\f49d"; } +.bi-music-note-beamed::before { content: "\f49e"; } +.bi-music-note-list::before { content: "\f49f"; } +.bi-music-note::before { content: "\f4a0"; } +.bi-music-player-fill::before { content: "\f4a1"; } +.bi-music-player::before { content: "\f4a2"; } +.bi-newspaper::before { content: "\f4a3"; } +.bi-node-minus-fill::before { content: "\f4a4"; } +.bi-node-minus::before { content: "\f4a5"; } +.bi-node-plus-fill::before { content: "\f4a6"; } +.bi-node-plus::before { content: "\f4a7"; } +.bi-nut-fill::before { content: "\f4a8"; } +.bi-nut::before { content: "\f4a9"; } +.bi-octagon-fill::before { content: "\f4aa"; } +.bi-octagon-half::before { content: "\f4ab"; } +.bi-octagon::before { content: "\f4ac"; } +.bi-option::before { content: "\f4ad"; } +.bi-outlet::before { content: "\f4ae"; } +.bi-paint-bucket::before { content: "\f4af"; } +.bi-palette-fill::before { content: "\f4b0"; } +.bi-palette::before { content: "\f4b1"; } +.bi-palette2::before { content: "\f4b2"; } +.bi-paperclip::before { content: "\f4b3"; } +.bi-paragraph::before { content: "\f4b4"; } +.bi-patch-check-fill::before { content: "\f4b5"; } +.bi-patch-check::before { content: "\f4b6"; } +.bi-patch-exclamation-fill::before { content: "\f4b7"; } +.bi-patch-exclamation::before { content: "\f4b8"; } +.bi-patch-minus-fill::before { content: "\f4b9"; } +.bi-patch-minus::before { content: "\f4ba"; } +.bi-patch-plus-fill::before { content: "\f4bb"; } +.bi-patch-plus::before { content: "\f4bc"; } +.bi-patch-question-fill::before { content: "\f4bd"; } +.bi-patch-question::before { content: "\f4be"; } +.bi-pause-btn-fill::before { content: "\f4bf"; } +.bi-pause-btn::before { content: "\f4c0"; } +.bi-pause-circle-fill::before { content: "\f4c1"; } +.bi-pause-circle::before { content: "\f4c2"; } +.bi-pause-fill::before { content: "\f4c3"; } +.bi-pause::before { content: "\f4c4"; } +.bi-peace-fill::before { content: "\f4c5"; } +.bi-peace::before { content: "\f4c6"; } +.bi-pen-fill::before { content: "\f4c7"; } +.bi-pen::before { content: "\f4c8"; } +.bi-pencil-fill::before { content: "\f4c9"; } +.bi-pencil-square::before { content: "\f4ca"; } +.bi-pencil::before { content: "\f4cb"; } +.bi-pentagon-fill::before { content: "\f4cc"; } +.bi-pentagon-half::before { content: "\f4cd"; } +.bi-pentagon::before { content: "\f4ce"; } +.bi-people-fill::before { content: "\f4cf"; } +.bi-people::before { content: "\f4d0"; } +.bi-percent::before { content: "\f4d1"; } +.bi-person-badge-fill::before { content: "\f4d2"; } +.bi-person-badge::before { content: "\f4d3"; } +.bi-person-bounding-box::before { content: "\f4d4"; } +.bi-person-check-fill::before { content: "\f4d5"; } +.bi-person-check::before { content: "\f4d6"; } +.bi-person-circle::before { content: "\f4d7"; } +.bi-person-dash-fill::before { content: "\f4d8"; } +.bi-person-dash::before { content: "\f4d9"; } +.bi-person-fill::before { content: "\f4da"; } +.bi-person-lines-fill::before { content: "\f4db"; } +.bi-person-plus-fill::before { content: "\f4dc"; } +.bi-person-plus::before { content: "\f4dd"; } +.bi-person-square::before { content: "\f4de"; } +.bi-person-x-fill::before { content: "\f4df"; } +.bi-person-x::before { content: "\f4e0"; } +.bi-person::before { content: "\f4e1"; } +.bi-phone-fill::before { content: "\f4e2"; } +.bi-phone-landscape-fill::before { content: "\f4e3"; } +.bi-phone-landscape::before { content: "\f4e4"; } +.bi-phone-vibrate-fill::before { content: "\f4e5"; } +.bi-phone-vibrate::before { content: "\f4e6"; } +.bi-phone::before { content: "\f4e7"; } +.bi-pie-chart-fill::before { content: "\f4e8"; } +.bi-pie-chart::before { content: "\f4e9"; } +.bi-pin-angle-fill::before { content: "\f4ea"; } +.bi-pin-angle::before { content: "\f4eb"; } +.bi-pin-fill::before { content: "\f4ec"; } +.bi-pin::before { content: "\f4ed"; } +.bi-pip-fill::before { content: "\f4ee"; } +.bi-pip::before { content: "\f4ef"; } +.bi-play-btn-fill::before { content: "\f4f0"; } +.bi-play-btn::before { content: "\f4f1"; } +.bi-play-circle-fill::before { content: "\f4f2"; } +.bi-play-circle::before { content: "\f4f3"; } +.bi-play-fill::before { content: "\f4f4"; } +.bi-play::before { content: "\f4f5"; } +.bi-plug-fill::before { content: "\f4f6"; } +.bi-plug::before { content: "\f4f7"; } +.bi-plus-circle-dotted::before { content: "\f4f8"; } +.bi-plus-circle-fill::before { content: "\f4f9"; } +.bi-plus-circle::before { content: "\f4fa"; } +.bi-plus-square-dotted::before { content: "\f4fb"; } +.bi-plus-square-fill::before { content: "\f4fc"; } +.bi-plus-square::before { content: "\f4fd"; } +.bi-plus::before { content: "\f4fe"; } +.bi-power::before { content: "\f4ff"; } +.bi-printer-fill::before { content: "\f500"; } +.bi-printer::before { content: "\f501"; } +.bi-puzzle-fill::before { content: "\f502"; } +.bi-puzzle::before { content: "\f503"; } +.bi-question-circle-fill::before { content: "\f504"; } +.bi-question-circle::before { content: "\f505"; } +.bi-question-diamond-fill::before { content: "\f506"; } +.bi-question-diamond::before { content: "\f507"; } +.bi-question-octagon-fill::before { content: "\f508"; } +.bi-question-octagon::before { content: "\f509"; } +.bi-question-square-fill::before { content: "\f50a"; } +.bi-question-square::before { content: "\f50b"; } +.bi-question::before { content: "\f50c"; } +.bi-rainbow::before { content: "\f50d"; } +.bi-receipt-cutoff::before { content: "\f50e"; } +.bi-receipt::before { content: "\f50f"; } +.bi-reception-0::before { content: "\f510"; } +.bi-reception-1::before { content: "\f511"; } +.bi-reception-2::before { content: "\f512"; } +.bi-reception-3::before { content: "\f513"; } +.bi-reception-4::before { content: "\f514"; } +.bi-record-btn-fill::before { content: "\f515"; } +.bi-record-btn::before { content: "\f516"; } +.bi-record-circle-fill::before { content: "\f517"; } +.bi-record-circle::before { content: "\f518"; } +.bi-record-fill::before { content: "\f519"; } +.bi-record::before { content: "\f51a"; } +.bi-record2-fill::before { content: "\f51b"; } +.bi-record2::before { content: "\f51c"; } +.bi-reply-all-fill::before { content: "\f51d"; } +.bi-reply-all::before { content: "\f51e"; } +.bi-reply-fill::before { content: "\f51f"; } +.bi-reply::before { content: "\f520"; } +.bi-rss-fill::before { content: "\f521"; } +.bi-rss::before { content: "\f522"; } +.bi-rulers::before { content: "\f523"; } +.bi-save-fill::before { content: "\f524"; } +.bi-save::before { content: "\f525"; } +.bi-save2-fill::before { content: "\f526"; } +.bi-save2::before { content: "\f527"; } +.bi-scissors::before { content: "\f528"; } +.bi-screwdriver::before { content: "\f529"; } +.bi-search::before { content: "\f52a"; } +.bi-segmented-nav::before { content: "\f52b"; } +.bi-server::before { content: "\f52c"; } +.bi-share-fill::before { content: "\f52d"; } +.bi-share::before { content: "\f52e"; } +.bi-shield-check::before { content: "\f52f"; } +.bi-shield-exclamation::before { content: "\f530"; } +.bi-shield-fill-check::before { content: "\f531"; } +.bi-shield-fill-exclamation::before { content: "\f532"; } +.bi-shield-fill-minus::before { content: "\f533"; } +.bi-shield-fill-plus::before { content: "\f534"; } +.bi-shield-fill-x::before { content: "\f535"; } +.bi-shield-fill::before { content: "\f536"; } +.bi-shield-lock-fill::before { content: "\f537"; } +.bi-shield-lock::before { content: "\f538"; } +.bi-shield-minus::before { content: "\f539"; } +.bi-shield-plus::before { content: "\f53a"; } +.bi-shield-shaded::before { content: "\f53b"; } +.bi-shield-slash-fill::before { content: "\f53c"; } +.bi-shield-slash::before { content: "\f53d"; } +.bi-shield-x::before { content: "\f53e"; } +.bi-shield::before { content: "\f53f"; } +.bi-shift-fill::before { content: "\f540"; } +.bi-shift::before { content: "\f541"; } +.bi-shop-window::before { content: "\f542"; } +.bi-shop::before { content: "\f543"; } +.bi-shuffle::before { content: "\f544"; } +.bi-signpost-2-fill::before { content: "\f545"; } +.bi-signpost-2::before { content: "\f546"; } +.bi-signpost-fill::before { content: "\f547"; } +.bi-signpost-split-fill::before { content: "\f548"; } +.bi-signpost-split::before { content: "\f549"; } +.bi-signpost::before { content: "\f54a"; } +.bi-sim-fill::before { content: "\f54b"; } +.bi-sim::before { content: "\f54c"; } +.bi-skip-backward-btn-fill::before { content: "\f54d"; } +.bi-skip-backward-btn::before { content: "\f54e"; } +.bi-skip-backward-circle-fill::before { content: "\f54f"; } +.bi-skip-backward-circle::before { content: "\f550"; } +.bi-skip-backward-fill::before { content: "\f551"; } +.bi-skip-backward::before { content: "\f552"; } +.bi-skip-end-btn-fill::before { content: "\f553"; } +.bi-skip-end-btn::before { content: "\f554"; } +.bi-skip-end-circle-fill::before { content: "\f555"; } +.bi-skip-end-circle::before { content: "\f556"; } +.bi-skip-end-fill::before { content: "\f557"; } +.bi-skip-end::before { content: "\f558"; } +.bi-skip-forward-btn-fill::before { content: "\f559"; } +.bi-skip-forward-btn::before { content: "\f55a"; } +.bi-skip-forward-circle-fill::before { content: "\f55b"; } +.bi-skip-forward-circle::before { content: "\f55c"; } +.bi-skip-forward-fill::before { content: "\f55d"; } +.bi-skip-forward::before { content: "\f55e"; } +.bi-skip-start-btn-fill::before { content: "\f55f"; } +.bi-skip-start-btn::before { content: "\f560"; } +.bi-skip-start-circle-fill::before { content: "\f561"; } +.bi-skip-start-circle::before { content: "\f562"; } +.bi-skip-start-fill::before { content: "\f563"; } +.bi-skip-start::before { content: "\f564"; } +.bi-slack::before { content: "\f565"; } +.bi-slash-circle-fill::before { content: "\f566"; } +.bi-slash-circle::before { content: "\f567"; } +.bi-slash-square-fill::before { content: "\f568"; } +.bi-slash-square::before { content: "\f569"; } +.bi-slash::before { content: "\f56a"; } +.bi-sliders::before { content: "\f56b"; } +.bi-smartwatch::before { content: "\f56c"; } +.bi-snow::before { content: "\f56d"; } +.bi-snow2::before { content: "\f56e"; } +.bi-snow3::before { content: "\f56f"; } +.bi-sort-alpha-down-alt::before { content: "\f570"; } +.bi-sort-alpha-down::before { content: "\f571"; } +.bi-sort-alpha-up-alt::before { content: "\f572"; } +.bi-sort-alpha-up::before { content: "\f573"; } +.bi-sort-down-alt::before { content: "\f574"; } +.bi-sort-down::before { content: "\f575"; } +.bi-sort-numeric-down-alt::before { content: "\f576"; } +.bi-sort-numeric-down::before { content: "\f577"; } +.bi-sort-numeric-up-alt::before { content: "\f578"; } +.bi-sort-numeric-up::before { content: "\f579"; } +.bi-sort-up-alt::before { content: "\f57a"; } +.bi-sort-up::before { content: "\f57b"; } +.bi-soundwave::before { content: "\f57c"; } +.bi-speaker-fill::before { content: "\f57d"; } +.bi-speaker::before { content: "\f57e"; } +.bi-speedometer::before { content: "\f57f"; } +.bi-speedometer2::before { content: "\f580"; } +.bi-spellcheck::before { content: "\f581"; } +.bi-square-fill::before { content: "\f582"; } +.bi-square-half::before { content: "\f583"; } +.bi-square::before { content: "\f584"; } +.bi-stack::before { content: "\f585"; } +.bi-star-fill::before { content: "\f586"; } +.bi-star-half::before { content: "\f587"; } +.bi-star::before { content: "\f588"; } +.bi-stars::before { content: "\f589"; } +.bi-stickies-fill::before { content: "\f58a"; } +.bi-stickies::before { content: "\f58b"; } +.bi-sticky-fill::before { content: "\f58c"; } +.bi-sticky::before { content: "\f58d"; } +.bi-stop-btn-fill::before { content: "\f58e"; } +.bi-stop-btn::before { content: "\f58f"; } +.bi-stop-circle-fill::before { content: "\f590"; } +.bi-stop-circle::before { content: "\f591"; } +.bi-stop-fill::before { content: "\f592"; } +.bi-stop::before { content: "\f593"; } +.bi-stoplights-fill::before { content: "\f594"; } +.bi-stoplights::before { content: "\f595"; } +.bi-stopwatch-fill::before { content: "\f596"; } +.bi-stopwatch::before { content: "\f597"; } +.bi-subtract::before { content: "\f598"; } +.bi-suit-club-fill::before { content: "\f599"; } +.bi-suit-club::before { content: "\f59a"; } +.bi-suit-diamond-fill::before { content: "\f59b"; } +.bi-suit-diamond::before { content: "\f59c"; } +.bi-suit-heart-fill::before { content: "\f59d"; } +.bi-suit-heart::before { content: "\f59e"; } +.bi-suit-spade-fill::before { content: "\f59f"; } +.bi-suit-spade::before { content: "\f5a0"; } +.bi-sun-fill::before { content: "\f5a1"; } +.bi-sun::before { content: "\f5a2"; } +.bi-sunglasses::before { content: "\f5a3"; } +.bi-sunrise-fill::before { content: "\f5a4"; } +.bi-sunrise::before { content: "\f5a5"; } +.bi-sunset-fill::before { content: "\f5a6"; } +.bi-sunset::before { content: "\f5a7"; } +.bi-symmetry-horizontal::before { content: "\f5a8"; } +.bi-symmetry-vertical::before { content: "\f5a9"; } +.bi-table::before { content: "\f5aa"; } +.bi-tablet-fill::before { content: "\f5ab"; } +.bi-tablet-landscape-fill::before { content: "\f5ac"; } +.bi-tablet-landscape::before { content: "\f5ad"; } +.bi-tablet::before { content: "\f5ae"; } +.bi-tag-fill::before { content: "\f5af"; } +.bi-tag::before { content: "\f5b0"; } +.bi-tags-fill::before { content: "\f5b1"; } +.bi-tags::before { content: "\f5b2"; } +.bi-telegram::before { content: "\f5b3"; } +.bi-telephone-fill::before { content: "\f5b4"; } +.bi-telephone-forward-fill::before { content: "\f5b5"; } +.bi-telephone-forward::before { content: "\f5b6"; } +.bi-telephone-inbound-fill::before { content: "\f5b7"; } +.bi-telephone-inbound::before { content: "\f5b8"; } +.bi-telephone-minus-fill::before { content: "\f5b9"; } +.bi-telephone-minus::before { content: "\f5ba"; } +.bi-telephone-outbound-fill::before { content: "\f5bb"; } +.bi-telephone-outbound::before { content: "\f5bc"; } +.bi-telephone-plus-fill::before { content: "\f5bd"; } +.bi-telephone-plus::before { content: "\f5be"; } +.bi-telephone-x-fill::before { content: "\f5bf"; } +.bi-telephone-x::before { content: "\f5c0"; } +.bi-telephone::before { content: "\f5c1"; } +.bi-terminal-fill::before { content: "\f5c2"; } +.bi-terminal::before { content: "\f5c3"; } +.bi-text-center::before { content: "\f5c4"; } +.bi-text-indent-left::before { content: "\f5c5"; } +.bi-text-indent-right::before { content: "\f5c6"; } +.bi-text-left::before { content: "\f5c7"; } +.bi-text-paragraph::before { content: "\f5c8"; } +.bi-text-right::before { content: "\f5c9"; } +.bi-textarea-resize::before { content: "\f5ca"; } +.bi-textarea-t::before { content: "\f5cb"; } +.bi-textarea::before { content: "\f5cc"; } +.bi-thermometer-half::before { content: "\f5cd"; } +.bi-thermometer-high::before { content: "\f5ce"; } +.bi-thermometer-low::before { content: "\f5cf"; } +.bi-thermometer-snow::before { content: "\f5d0"; } +.bi-thermometer-sun::before { content: "\f5d1"; } +.bi-thermometer::before { content: "\f5d2"; } +.bi-three-dots-vertical::before { content: "\f5d3"; } +.bi-three-dots::before { content: "\f5d4"; } +.bi-toggle-off::before { content: "\f5d5"; } +.bi-toggle-on::before { content: "\f5d6"; } +.bi-toggle2-off::before { content: "\f5d7"; } +.bi-toggle2-on::before { content: "\f5d8"; } +.bi-toggles::before { content: "\f5d9"; } +.bi-toggles2::before { content: "\f5da"; } +.bi-tools::before { content: "\f5db"; } +.bi-tornado::before { content: "\f5dc"; } +.bi-trash-fill::before { content: "\f5dd"; } +.bi-trash::before { content: "\f5de"; } +.bi-trash2-fill::before { content: "\f5df"; } +.bi-trash2::before { content: "\f5e0"; } +.bi-tree-fill::before { content: "\f5e1"; } +.bi-tree::before { content: "\f5e2"; } +.bi-triangle-fill::before { content: "\f5e3"; } +.bi-triangle-half::before { content: "\f5e4"; } +.bi-triangle::before { content: "\f5e5"; } +.bi-trophy-fill::before { content: "\f5e6"; } +.bi-trophy::before { content: "\f5e7"; } +.bi-tropical-storm::before { content: "\f5e8"; } +.bi-truck-flatbed::before { content: "\f5e9"; } +.bi-truck::before { content: "\f5ea"; } +.bi-tsunami::before { content: "\f5eb"; } +.bi-tv-fill::before { content: "\f5ec"; } +.bi-tv::before { content: "\f5ed"; } +.bi-twitch::before { content: "\f5ee"; } +.bi-twitter::before { content: "\f5ef"; } +.bi-type-bold::before { content: "\f5f0"; } +.bi-type-h1::before { content: "\f5f1"; } +.bi-type-h2::before { content: "\f5f2"; } +.bi-type-h3::before { content: "\f5f3"; } +.bi-type-italic::before { content: "\f5f4"; } +.bi-type-strikethrough::before { content: "\f5f5"; } +.bi-type-underline::before { content: "\f5f6"; } +.bi-type::before { content: "\f5f7"; } +.bi-ui-checks-grid::before { content: "\f5f8"; } +.bi-ui-checks::before { content: "\f5f9"; } +.bi-ui-radios-grid::before { content: "\f5fa"; } +.bi-ui-radios::before { content: "\f5fb"; } +.bi-umbrella-fill::before { content: "\f5fc"; } +.bi-umbrella::before { content: "\f5fd"; } +.bi-union::before { content: "\f5fe"; } +.bi-unlock-fill::before { content: "\f5ff"; } +.bi-unlock::before { content: "\f600"; } +.bi-upc-scan::before { content: "\f601"; } +.bi-upc::before { content: "\f602"; } +.bi-upload::before { content: "\f603"; } +.bi-vector-pen::before { content: "\f604"; } +.bi-view-list::before { content: "\f605"; } +.bi-view-stacked::before { content: "\f606"; } +.bi-vinyl-fill::before { content: "\f607"; } +.bi-vinyl::before { content: "\f608"; } +.bi-voicemail::before { content: "\f609"; } +.bi-volume-down-fill::before { content: "\f60a"; } +.bi-volume-down::before { content: "\f60b"; } +.bi-volume-mute-fill::before { content: "\f60c"; } +.bi-volume-mute::before { content: "\f60d"; } +.bi-volume-off-fill::before { content: "\f60e"; } +.bi-volume-off::before { content: "\f60f"; } +.bi-volume-up-fill::before { content: "\f610"; } +.bi-volume-up::before { content: "\f611"; } +.bi-vr::before { content: "\f612"; } +.bi-wallet-fill::before { content: "\f613"; } +.bi-wallet::before { content: "\f614"; } +.bi-wallet2::before { content: "\f615"; } +.bi-watch::before { content: "\f616"; } +.bi-water::before { content: "\f617"; } +.bi-whatsapp::before { content: "\f618"; } +.bi-wifi-1::before { content: "\f619"; } +.bi-wifi-2::before { content: "\f61a"; } +.bi-wifi-off::before { content: "\f61b"; } +.bi-wifi::before { content: "\f61c"; } +.bi-wind::before { content: "\f61d"; } +.bi-window-dock::before { content: "\f61e"; } +.bi-window-sidebar::before { content: "\f61f"; } +.bi-window::before { content: "\f620"; } +.bi-wrench::before { content: "\f621"; } +.bi-x-circle-fill::before { content: "\f622"; } +.bi-x-circle::before { content: "\f623"; } +.bi-x-diamond-fill::before { content: "\f624"; } +.bi-x-diamond::before { content: "\f625"; } +.bi-x-octagon-fill::before { content: "\f626"; } +.bi-x-octagon::before { content: "\f627"; } +.bi-x-square-fill::before { content: "\f628"; } +.bi-x-square::before { content: "\f629"; } +.bi-x::before { content: "\f62a"; } +.bi-youtube::before { content: "\f62b"; } +.bi-zoom-in::before { content: "\f62c"; } +.bi-zoom-out::before { content: "\f62d"; } +.bi-bank::before { content: "\f62e"; } +.bi-bank2::before { content: "\f62f"; } +.bi-bell-slash-fill::before { content: "\f630"; } +.bi-bell-slash::before { content: "\f631"; } +.bi-cash-coin::before { content: "\f632"; } +.bi-check-lg::before { content: "\f633"; } +.bi-coin::before { content: "\f634"; } +.bi-currency-bitcoin::before { content: "\f635"; } +.bi-currency-dollar::before { content: "\f636"; } +.bi-currency-euro::before { content: "\f637"; } +.bi-currency-exchange::before { content: "\f638"; } +.bi-currency-pound::before { content: "\f639"; } +.bi-currency-yen::before { content: "\f63a"; } +.bi-dash-lg::before { content: "\f63b"; } +.bi-exclamation-lg::before { content: "\f63c"; } +.bi-file-earmark-pdf-fill::before { content: "\f63d"; } +.bi-file-earmark-pdf::before { content: "\f63e"; } +.bi-file-pdf-fill::before { content: "\f63f"; } +.bi-file-pdf::before { content: "\f640"; } +.bi-gender-ambiguous::before { content: "\f641"; } +.bi-gender-female::before { content: "\f642"; } +.bi-gender-male::before { content: "\f643"; } +.bi-gender-trans::before { content: "\f644"; } +.bi-headset-vr::before { content: "\f645"; } +.bi-info-lg::before { content: "\f646"; } +.bi-mastodon::before { content: "\f647"; } +.bi-messenger::before { content: "\f648"; } +.bi-piggy-bank-fill::before { content: "\f649"; } +.bi-piggy-bank::before { content: "\f64a"; } +.bi-pin-map-fill::before { content: "\f64b"; } +.bi-pin-map::before { content: "\f64c"; } +.bi-plus-lg::before { content: "\f64d"; } +.bi-question-lg::before { content: "\f64e"; } +.bi-recycle::before { content: "\f64f"; } +.bi-reddit::before { content: "\f650"; } +.bi-safe-fill::before { content: "\f651"; } +.bi-safe2-fill::before { content: "\f652"; } +.bi-safe2::before { content: "\f653"; } +.bi-sd-card-fill::before { content: "\f654"; } +.bi-sd-card::before { content: "\f655"; } +.bi-skype::before { content: "\f656"; } +.bi-slash-lg::before { content: "\f657"; } +.bi-translate::before { content: "\f658"; } +.bi-x-lg::before { content: "\f659"; } +.bi-safe::before { content: "\f65a"; } +.bi-apple::before { content: "\f65b"; } +.bi-microsoft::before { content: "\f65d"; } +.bi-windows::before { content: "\f65e"; } +.bi-behance::before { content: "\f65c"; } +.bi-dribbble::before { content: "\f65f"; } +.bi-line::before { content: "\f660"; } +.bi-medium::before { content: "\f661"; } +.bi-paypal::before { content: "\f662"; } +.bi-pinterest::before { content: "\f663"; } +.bi-signal::before { content: "\f664"; } +.bi-snapchat::before { content: "\f665"; } +.bi-spotify::before { content: "\f666"; } +.bi-stack-overflow::before { content: "\f667"; } +.bi-strava::before { content: "\f668"; } +.bi-wordpress::before { content: "\f669"; } +.bi-vimeo::before { content: "\f66a"; } +.bi-activity::before { content: "\f66b"; } +.bi-easel2-fill::before { content: "\f66c"; } +.bi-easel2::before { content: "\f66d"; } +.bi-easel3-fill::before { content: "\f66e"; } +.bi-easel3::before { content: "\f66f"; } +.bi-fan::before { content: "\f670"; } +.bi-fingerprint::before { content: "\f671"; } +.bi-graph-down-arrow::before { content: "\f672"; } +.bi-graph-up-arrow::before { content: "\f673"; } +.bi-hypnotize::before { content: "\f674"; } +.bi-magic::before { content: "\f675"; } +.bi-person-rolodex::before { content: "\f676"; } +.bi-person-video::before { content: "\f677"; } +.bi-person-video2::before { content: "\f678"; } +.bi-person-video3::before { content: "\f679"; } +.bi-person-workspace::before { content: "\f67a"; } +.bi-radioactive::before { content: "\f67b"; } +.bi-webcam-fill::before { content: "\f67c"; } +.bi-webcam::before { content: "\f67d"; } +.bi-yin-yang::before { content: "\f67e"; } +.bi-bandaid-fill::before { content: "\f680"; } +.bi-bandaid::before { content: "\f681"; } +.bi-bluetooth::before { content: "\f682"; } +.bi-body-text::before { content: "\f683"; } +.bi-boombox::before { content: "\f684"; } +.bi-boxes::before { content: "\f685"; } +.bi-dpad-fill::before { content: "\f686"; } +.bi-dpad::before { content: "\f687"; } +.bi-ear-fill::before { content: "\f688"; } +.bi-ear::before { content: "\f689"; } +.bi-envelope-check-fill::before { content: "\f68b"; } +.bi-envelope-check::before { content: "\f68c"; } +.bi-envelope-dash-fill::before { content: "\f68e"; } +.bi-envelope-dash::before { content: "\f68f"; } +.bi-envelope-exclamation-fill::before { content: "\f691"; } +.bi-envelope-exclamation::before { content: "\f692"; } +.bi-envelope-plus-fill::before { content: "\f693"; } +.bi-envelope-plus::before { content: "\f694"; } +.bi-envelope-slash-fill::before { content: "\f696"; } +.bi-envelope-slash::before { content: "\f697"; } +.bi-envelope-x-fill::before { content: "\f699"; } +.bi-envelope-x::before { content: "\f69a"; } +.bi-explicit-fill::before { content: "\f69b"; } +.bi-explicit::before { content: "\f69c"; } +.bi-git::before { content: "\f69d"; } +.bi-infinity::before { content: "\f69e"; } +.bi-list-columns-reverse::before { content: "\f69f"; } +.bi-list-columns::before { content: "\f6a0"; } +.bi-meta::before { content: "\f6a1"; } +.bi-nintendo-switch::before { content: "\f6a4"; } +.bi-pc-display-horizontal::before { content: "\f6a5"; } +.bi-pc-display::before { content: "\f6a6"; } +.bi-pc-horizontal::before { content: "\f6a7"; } +.bi-pc::before { content: "\f6a8"; } +.bi-playstation::before { content: "\f6a9"; } +.bi-plus-slash-minus::before { content: "\f6aa"; } +.bi-projector-fill::before { content: "\f6ab"; } +.bi-projector::before { content: "\f6ac"; } +.bi-qr-code-scan::before { content: "\f6ad"; } +.bi-qr-code::before { content: "\f6ae"; } +.bi-quora::before { content: "\f6af"; } +.bi-quote::before { content: "\f6b0"; } +.bi-robot::before { content: "\f6b1"; } +.bi-send-check-fill::before { content: "\f6b2"; } +.bi-send-check::before { content: "\f6b3"; } +.bi-send-dash-fill::before { content: "\f6b4"; } +.bi-send-dash::before { content: "\f6b5"; } +.bi-send-exclamation-fill::before { content: "\f6b7"; } +.bi-send-exclamation::before { content: "\f6b8"; } +.bi-send-fill::before { content: "\f6b9"; } +.bi-send-plus-fill::before { content: "\f6ba"; } +.bi-send-plus::before { content: "\f6bb"; } +.bi-send-slash-fill::before { content: "\f6bc"; } +.bi-send-slash::before { content: "\f6bd"; } +.bi-send-x-fill::before { content: "\f6be"; } +.bi-send-x::before { content: "\f6bf"; } +.bi-send::before { content: "\f6c0"; } +.bi-steam::before { content: "\f6c1"; } +.bi-terminal-dash::before { content: "\f6c3"; } +.bi-terminal-plus::before { content: "\f6c4"; } +.bi-terminal-split::before { content: "\f6c5"; } +.bi-ticket-detailed-fill::before { content: "\f6c6"; } +.bi-ticket-detailed::before { content: "\f6c7"; } +.bi-ticket-fill::before { content: "\f6c8"; } +.bi-ticket-perforated-fill::before { content: "\f6c9"; } +.bi-ticket-perforated::before { content: "\f6ca"; } +.bi-ticket::before { content: "\f6cb"; } +.bi-tiktok::before { content: "\f6cc"; } +.bi-window-dash::before { content: "\f6cd"; } +.bi-window-desktop::before { content: "\f6ce"; } +.bi-window-fullscreen::before { content: "\f6cf"; } +.bi-window-plus::before { content: "\f6d0"; } +.bi-window-split::before { content: "\f6d1"; } +.bi-window-stack::before { content: "\f6d2"; } +.bi-window-x::before { content: "\f6d3"; } +.bi-xbox::before { content: "\f6d4"; } +.bi-ethernet::before { content: "\f6d5"; } +.bi-hdmi-fill::before { content: "\f6d6"; } +.bi-hdmi::before { content: "\f6d7"; } +.bi-usb-c-fill::before { content: "\f6d8"; } +.bi-usb-c::before { content: "\f6d9"; } +.bi-usb-fill::before { content: "\f6da"; } +.bi-usb-plug-fill::before { content: "\f6db"; } +.bi-usb-plug::before { content: "\f6dc"; } +.bi-usb-symbol::before { content: "\f6dd"; } +.bi-usb::before { content: "\f6de"; } +.bi-boombox-fill::before { content: "\f6df"; } +.bi-displayport::before { content: "\f6e1"; } +.bi-gpu-card::before { content: "\f6e2"; } +.bi-memory::before { content: "\f6e3"; } +.bi-modem-fill::before { content: "\f6e4"; } +.bi-modem::before { content: "\f6e5"; } +.bi-motherboard-fill::before { content: "\f6e6"; } +.bi-motherboard::before { content: "\f6e7"; } +.bi-optical-audio-fill::before { content: "\f6e8"; } +.bi-optical-audio::before { content: "\f6e9"; } +.bi-pci-card::before { content: "\f6ea"; } +.bi-router-fill::before { content: "\f6eb"; } +.bi-router::before { content: "\f6ec"; } +.bi-thunderbolt-fill::before { content: "\f6ef"; } +.bi-thunderbolt::before { content: "\f6f0"; } +.bi-usb-drive-fill::before { content: "\f6f1"; } +.bi-usb-drive::before { content: "\f6f2"; } +.bi-usb-micro-fill::before { content: "\f6f3"; } +.bi-usb-micro::before { content: "\f6f4"; } +.bi-usb-mini-fill::before { content: "\f6f5"; } +.bi-usb-mini::before { content: "\f6f6"; } +.bi-cloud-haze2::before { content: "\f6f7"; } +.bi-device-hdd-fill::before { content: "\f6f8"; } +.bi-device-hdd::before { content: "\f6f9"; } +.bi-device-ssd-fill::before { content: "\f6fa"; } +.bi-device-ssd::before { content: "\f6fb"; } +.bi-displayport-fill::before { content: "\f6fc"; } +.bi-mortarboard-fill::before { content: "\f6fd"; } +.bi-mortarboard::before { content: "\f6fe"; } +.bi-terminal-x::before { content: "\f6ff"; } +.bi-arrow-through-heart-fill::before { content: "\f700"; } +.bi-arrow-through-heart::before { content: "\f701"; } +.bi-badge-sd-fill::before { content: "\f702"; } +.bi-badge-sd::before { content: "\f703"; } +.bi-bag-heart-fill::before { content: "\f704"; } +.bi-bag-heart::before { content: "\f705"; } +.bi-balloon-fill::before { content: "\f706"; } +.bi-balloon-heart-fill::before { content: "\f707"; } +.bi-balloon-heart::before { content: "\f708"; } +.bi-balloon::before { content: "\f709"; } +.bi-box2-fill::before { content: "\f70a"; } +.bi-box2-heart-fill::before { content: "\f70b"; } +.bi-box2-heart::before { content: "\f70c"; } +.bi-box2::before { content: "\f70d"; } +.bi-braces-asterisk::before { content: "\f70e"; } +.bi-calendar-heart-fill::before { content: "\f70f"; } +.bi-calendar-heart::before { content: "\f710"; } +.bi-calendar2-heart-fill::before { content: "\f711"; } +.bi-calendar2-heart::before { content: "\f712"; } +.bi-chat-heart-fill::before { content: "\f713"; } +.bi-chat-heart::before { content: "\f714"; } +.bi-chat-left-heart-fill::before { content: "\f715"; } +.bi-chat-left-heart::before { content: "\f716"; } +.bi-chat-right-heart-fill::before { content: "\f717"; } +.bi-chat-right-heart::before { content: "\f718"; } +.bi-chat-square-heart-fill::before { content: "\f719"; } +.bi-chat-square-heart::before { content: "\f71a"; } +.bi-clipboard-check-fill::before { content: "\f71b"; } +.bi-clipboard-data-fill::before { content: "\f71c"; } +.bi-clipboard-fill::before { content: "\f71d"; } +.bi-clipboard-heart-fill::before { content: "\f71e"; } +.bi-clipboard-heart::before { content: "\f71f"; } +.bi-clipboard-minus-fill::before { content: "\f720"; } +.bi-clipboard-plus-fill::before { content: "\f721"; } +.bi-clipboard-pulse::before { content: "\f722"; } +.bi-clipboard-x-fill::before { content: "\f723"; } +.bi-clipboard2-check-fill::before { content: "\f724"; } +.bi-clipboard2-check::before { content: "\f725"; } +.bi-clipboard2-data-fill::before { content: "\f726"; } +.bi-clipboard2-data::before { content: "\f727"; } +.bi-clipboard2-fill::before { content: "\f728"; } +.bi-clipboard2-heart-fill::before { content: "\f729"; } +.bi-clipboard2-heart::before { content: "\f72a"; } +.bi-clipboard2-minus-fill::before { content: "\f72b"; } +.bi-clipboard2-minus::before { content: "\f72c"; } +.bi-clipboard2-plus-fill::before { content: "\f72d"; } +.bi-clipboard2-plus::before { content: "\f72e"; } +.bi-clipboard2-pulse-fill::before { content: "\f72f"; } +.bi-clipboard2-pulse::before { content: "\f730"; } +.bi-clipboard2-x-fill::before { content: "\f731"; } +.bi-clipboard2-x::before { content: "\f732"; } +.bi-clipboard2::before { content: "\f733"; } +.bi-emoji-kiss-fill::before { content: "\f734"; } +.bi-emoji-kiss::before { content: "\f735"; } +.bi-envelope-heart-fill::before { content: "\f736"; } +.bi-envelope-heart::before { content: "\f737"; } +.bi-envelope-open-heart-fill::before { content: "\f738"; } +.bi-envelope-open-heart::before { content: "\f739"; } +.bi-envelope-paper-fill::before { content: "\f73a"; } +.bi-envelope-paper-heart-fill::before { content: "\f73b"; } +.bi-envelope-paper-heart::before { content: "\f73c"; } +.bi-envelope-paper::before { content: "\f73d"; } +.bi-filetype-aac::before { content: "\f73e"; } +.bi-filetype-ai::before { content: "\f73f"; } +.bi-filetype-bmp::before { content: "\f740"; } +.bi-filetype-cs::before { content: "\f741"; } +.bi-filetype-css::before { content: "\f742"; } +.bi-filetype-csv::before { content: "\f743"; } +.bi-filetype-doc::before { content: "\f744"; } +.bi-filetype-docx::before { content: "\f745"; } +.bi-filetype-exe::before { content: "\f746"; } +.bi-filetype-gif::before { content: "\f747"; } +.bi-filetype-heic::before { content: "\f748"; } +.bi-filetype-html::before { content: "\f749"; } +.bi-filetype-java::before { content: "\f74a"; } +.bi-filetype-jpg::before { content: "\f74b"; } +.bi-filetype-js::before { content: "\f74c"; } +.bi-filetype-jsx::before { content: "\f74d"; } +.bi-filetype-key::before { content: "\f74e"; } +.bi-filetype-m4p::before { content: "\f74f"; } +.bi-filetype-md::before { content: "\f750"; } +.bi-filetype-mdx::before { content: "\f751"; } +.bi-filetype-mov::before { content: "\f752"; } +.bi-filetype-mp3::before { content: "\f753"; } +.bi-filetype-mp4::before { content: "\f754"; } +.bi-filetype-otf::before { content: "\f755"; } +.bi-filetype-pdf::before { content: "\f756"; } +.bi-filetype-php::before { content: "\f757"; } +.bi-filetype-png::before { content: "\f758"; } +.bi-filetype-ppt::before { content: "\f75a"; } +.bi-filetype-psd::before { content: "\f75b"; } +.bi-filetype-py::before { content: "\f75c"; } +.bi-filetype-raw::before { content: "\f75d"; } +.bi-filetype-rb::before { content: "\f75e"; } +.bi-filetype-sass::before { content: "\f75f"; } +.bi-filetype-scss::before { content: "\f760"; } +.bi-filetype-sh::before { content: "\f761"; } +.bi-filetype-svg::before { content: "\f762"; } +.bi-filetype-tiff::before { content: "\f763"; } +.bi-filetype-tsx::before { content: "\f764"; } +.bi-filetype-ttf::before { content: "\f765"; } +.bi-filetype-txt::before { content: "\f766"; } +.bi-filetype-wav::before { content: "\f767"; } +.bi-filetype-woff::before { content: "\f768"; } +.bi-filetype-xls::before { content: "\f76a"; } +.bi-filetype-xml::before { content: "\f76b"; } +.bi-filetype-yml::before { content: "\f76c"; } +.bi-heart-arrow::before { content: "\f76d"; } +.bi-heart-pulse-fill::before { content: "\f76e"; } +.bi-heart-pulse::before { content: "\f76f"; } +.bi-heartbreak-fill::before { content: "\f770"; } +.bi-heartbreak::before { content: "\f771"; } +.bi-hearts::before { content: "\f772"; } +.bi-hospital-fill::before { content: "\f773"; } +.bi-hospital::before { content: "\f774"; } +.bi-house-heart-fill::before { content: "\f775"; } +.bi-house-heart::before { content: "\f776"; } +.bi-incognito::before { content: "\f777"; } +.bi-magnet-fill::before { content: "\f778"; } +.bi-magnet::before { content: "\f779"; } +.bi-person-heart::before { content: "\f77a"; } +.bi-person-hearts::before { content: "\f77b"; } +.bi-phone-flip::before { content: "\f77c"; } +.bi-plugin::before { content: "\f77d"; } +.bi-postage-fill::before { content: "\f77e"; } +.bi-postage-heart-fill::before { content: "\f77f"; } +.bi-postage-heart::before { content: "\f780"; } +.bi-postage::before { content: "\f781"; } +.bi-postcard-fill::before { content: "\f782"; } +.bi-postcard-heart-fill::before { content: "\f783"; } +.bi-postcard-heart::before { content: "\f784"; } +.bi-postcard::before { content: "\f785"; } +.bi-search-heart-fill::before { content: "\f786"; } +.bi-search-heart::before { content: "\f787"; } +.bi-sliders2-vertical::before { content: "\f788"; } +.bi-sliders2::before { content: "\f789"; } +.bi-trash3-fill::before { content: "\f78a"; } +.bi-trash3::before { content: "\f78b"; } +.bi-valentine::before { content: "\f78c"; } +.bi-valentine2::before { content: "\f78d"; } +.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } +.bi-wrench-adjustable-circle::before { content: "\f78f"; } +.bi-wrench-adjustable::before { content: "\f790"; } +.bi-filetype-json::before { content: "\f791"; } +.bi-filetype-pptx::before { content: "\f792"; } +.bi-filetype-xlsx::before { content: "\f793"; } +.bi-1-circle-fill::before { content: "\f796"; } +.bi-1-circle::before { content: "\f797"; } +.bi-1-square-fill::before { content: "\f798"; } +.bi-1-square::before { content: "\f799"; } +.bi-2-circle-fill::before { content: "\f79c"; } +.bi-2-circle::before { content: "\f79d"; } +.bi-2-square-fill::before { content: "\f79e"; } +.bi-2-square::before { content: "\f79f"; } +.bi-3-circle-fill::before { content: "\f7a2"; } +.bi-3-circle::before { content: "\f7a3"; } +.bi-3-square-fill::before { content: "\f7a4"; } +.bi-3-square::before { content: "\f7a5"; } +.bi-4-circle-fill::before { content: "\f7a8"; } +.bi-4-circle::before { content: "\f7a9"; } +.bi-4-square-fill::before { content: "\f7aa"; } +.bi-4-square::before { content: "\f7ab"; } +.bi-5-circle-fill::before { content: "\f7ae"; } +.bi-5-circle::before { content: "\f7af"; } +.bi-5-square-fill::before { content: "\f7b0"; } +.bi-5-square::before { content: "\f7b1"; } +.bi-6-circle-fill::before { content: "\f7b4"; } +.bi-6-circle::before { content: "\f7b5"; } +.bi-6-square-fill::before { content: "\f7b6"; } +.bi-6-square::before { content: "\f7b7"; } +.bi-7-circle-fill::before { content: "\f7ba"; } +.bi-7-circle::before { content: "\f7bb"; } +.bi-7-square-fill::before { content: "\f7bc"; } +.bi-7-square::before { content: "\f7bd"; } +.bi-8-circle-fill::before { content: "\f7c0"; } +.bi-8-circle::before { content: "\f7c1"; } +.bi-8-square-fill::before { content: "\f7c2"; } +.bi-8-square::before { content: "\f7c3"; } +.bi-9-circle-fill::before { content: "\f7c6"; } +.bi-9-circle::before { content: "\f7c7"; } +.bi-9-square-fill::before { content: "\f7c8"; } +.bi-9-square::before { content: "\f7c9"; } +.bi-airplane-engines-fill::before { content: "\f7ca"; } +.bi-airplane-engines::before { content: "\f7cb"; } +.bi-airplane-fill::before { content: "\f7cc"; } +.bi-airplane::before { content: "\f7cd"; } +.bi-alexa::before { content: "\f7ce"; } +.bi-alipay::before { content: "\f7cf"; } +.bi-android::before { content: "\f7d0"; } +.bi-android2::before { content: "\f7d1"; } +.bi-box-fill::before { content: "\f7d2"; } +.bi-box-seam-fill::before { content: "\f7d3"; } +.bi-browser-chrome::before { content: "\f7d4"; } +.bi-browser-edge::before { content: "\f7d5"; } +.bi-browser-firefox::before { content: "\f7d6"; } +.bi-browser-safari::before { content: "\f7d7"; } +.bi-c-circle-fill::before { content: "\f7da"; } +.bi-c-circle::before { content: "\f7db"; } +.bi-c-square-fill::before { content: "\f7dc"; } +.bi-c-square::before { content: "\f7dd"; } +.bi-capsule-pill::before { content: "\f7de"; } +.bi-capsule::before { content: "\f7df"; } +.bi-car-front-fill::before { content: "\f7e0"; } +.bi-car-front::before { content: "\f7e1"; } +.bi-cassette-fill::before { content: "\f7e2"; } +.bi-cassette::before { content: "\f7e3"; } +.bi-cc-circle-fill::before { content: "\f7e6"; } +.bi-cc-circle::before { content: "\f7e7"; } +.bi-cc-square-fill::before { content: "\f7e8"; } +.bi-cc-square::before { content: "\f7e9"; } +.bi-cup-hot-fill::before { content: "\f7ea"; } +.bi-cup-hot::before { content: "\f7eb"; } +.bi-currency-rupee::before { content: "\f7ec"; } +.bi-dropbox::before { content: "\f7ed"; } +.bi-escape::before { content: "\f7ee"; } +.bi-fast-forward-btn-fill::before { content: "\f7ef"; } +.bi-fast-forward-btn::before { content: "\f7f0"; } +.bi-fast-forward-circle-fill::before { content: "\f7f1"; } +.bi-fast-forward-circle::before { content: "\f7f2"; } +.bi-fast-forward-fill::before { content: "\f7f3"; } +.bi-fast-forward::before { content: "\f7f4"; } +.bi-filetype-sql::before { content: "\f7f5"; } +.bi-fire::before { content: "\f7f6"; } +.bi-google-play::before { content: "\f7f7"; } +.bi-h-circle-fill::before { content: "\f7fa"; } +.bi-h-circle::before { content: "\f7fb"; } +.bi-h-square-fill::before { content: "\f7fc"; } +.bi-h-square::before { content: "\f7fd"; } +.bi-indent::before { content: "\f7fe"; } +.bi-lungs-fill::before { content: "\f7ff"; } +.bi-lungs::before { content: "\f800"; } +.bi-microsoft-teams::before { content: "\f801"; } +.bi-p-circle-fill::before { content: "\f804"; } +.bi-p-circle::before { content: "\f805"; } +.bi-p-square-fill::before { content: "\f806"; } +.bi-p-square::before { content: "\f807"; } +.bi-pass-fill::before { content: "\f808"; } +.bi-pass::before { content: "\f809"; } +.bi-prescription::before { content: "\f80a"; } +.bi-prescription2::before { content: "\f80b"; } +.bi-r-circle-fill::before { content: "\f80e"; } +.bi-r-circle::before { content: "\f80f"; } +.bi-r-square-fill::before { content: "\f810"; } +.bi-r-square::before { content: "\f811"; } +.bi-repeat-1::before { content: "\f812"; } +.bi-repeat::before { content: "\f813"; } +.bi-rewind-btn-fill::before { content: "\f814"; } +.bi-rewind-btn::before { content: "\f815"; } +.bi-rewind-circle-fill::before { content: "\f816"; } +.bi-rewind-circle::before { content: "\f817"; } +.bi-rewind-fill::before { content: "\f818"; } +.bi-rewind::before { content: "\f819"; } +.bi-train-freight-front-fill::before { content: "\f81a"; } +.bi-train-freight-front::before { content: "\f81b"; } +.bi-train-front-fill::before { content: "\f81c"; } +.bi-train-front::before { content: "\f81d"; } +.bi-train-lightrail-front-fill::before { content: "\f81e"; } +.bi-train-lightrail-front::before { content: "\f81f"; } +.bi-truck-front-fill::before { content: "\f820"; } +.bi-truck-front::before { content: "\f821"; } +.bi-ubuntu::before { content: "\f822"; } +.bi-unindent::before { content: "\f823"; } +.bi-unity::before { content: "\f824"; } +.bi-universal-access-circle::before { content: "\f825"; } +.bi-universal-access::before { content: "\f826"; } +.bi-virus::before { content: "\f827"; } +.bi-virus2::before { content: "\f828"; } +.bi-wechat::before { content: "\f829"; } +.bi-yelp::before { content: "\f82a"; } +.bi-sign-stop-fill::before { content: "\f82b"; } +.bi-sign-stop-lights-fill::before { content: "\f82c"; } +.bi-sign-stop-lights::before { content: "\f82d"; } +.bi-sign-stop::before { content: "\f82e"; } +.bi-sign-turn-left-fill::before { content: "\f82f"; } +.bi-sign-turn-left::before { content: "\f830"; } +.bi-sign-turn-right-fill::before { content: "\f831"; } +.bi-sign-turn-right::before { content: "\f832"; } +.bi-sign-turn-slight-left-fill::before { content: "\f833"; } +.bi-sign-turn-slight-left::before { content: "\f834"; } +.bi-sign-turn-slight-right-fill::before { content: "\f835"; } +.bi-sign-turn-slight-right::before { content: "\f836"; } +.bi-sign-yield-fill::before { content: "\f837"; } +.bi-sign-yield::before { content: "\f838"; } +.bi-ev-station-fill::before { content: "\f839"; } +.bi-ev-station::before { content: "\f83a"; } +.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } +.bi-fuel-pump-diesel::before { content: "\f83c"; } +.bi-fuel-pump-fill::before { content: "\f83d"; } +.bi-fuel-pump::before { content: "\f83e"; } +.bi-0-circle-fill::before { content: "\f83f"; } +.bi-0-circle::before { content: "\f840"; } +.bi-0-square-fill::before { content: "\f841"; } +.bi-0-square::before { content: "\f842"; } +.bi-rocket-fill::before { content: "\f843"; } +.bi-rocket-takeoff-fill::before { content: "\f844"; } +.bi-rocket-takeoff::before { content: "\f845"; } +.bi-rocket::before { content: "\f846"; } +.bi-stripe::before { content: "\f847"; } +.bi-subscript::before { content: "\f848"; } +.bi-superscript::before { content: "\f849"; } +.bi-trello::before { content: "\f84a"; } +.bi-envelope-at-fill::before { content: "\f84b"; } +.bi-envelope-at::before { content: "\f84c"; } +.bi-regex::before { content: "\f84d"; } +.bi-text-wrap::before { content: "\f84e"; } +.bi-sign-dead-end-fill::before { content: "\f84f"; } +.bi-sign-dead-end::before { content: "\f850"; } +.bi-sign-do-not-enter-fill::before { content: "\f851"; } +.bi-sign-do-not-enter::before { content: "\f852"; } +.bi-sign-intersection-fill::before { content: "\f853"; } +.bi-sign-intersection-side-fill::before { content: "\f854"; } +.bi-sign-intersection-side::before { content: "\f855"; } +.bi-sign-intersection-t-fill::before { content: "\f856"; } +.bi-sign-intersection-t::before { content: "\f857"; } +.bi-sign-intersection-y-fill::before { content: "\f858"; } +.bi-sign-intersection-y::before { content: "\f859"; } +.bi-sign-intersection::before { content: "\f85a"; } +.bi-sign-merge-left-fill::before { content: "\f85b"; } +.bi-sign-merge-left::before { content: "\f85c"; } +.bi-sign-merge-right-fill::before { content: "\f85d"; } +.bi-sign-merge-right::before { content: "\f85e"; } +.bi-sign-no-left-turn-fill::before { content: "\f85f"; } +.bi-sign-no-left-turn::before { content: "\f860"; } +.bi-sign-no-parking-fill::before { content: "\f861"; } +.bi-sign-no-parking::before { content: "\f862"; } +.bi-sign-no-right-turn-fill::before { content: "\f863"; } +.bi-sign-no-right-turn::before { content: "\f864"; } +.bi-sign-railroad-fill::before { content: "\f865"; } +.bi-sign-railroad::before { content: "\f866"; } +.bi-building-add::before { content: "\f867"; } +.bi-building-check::before { content: "\f868"; } +.bi-building-dash::before { content: "\f869"; } +.bi-building-down::before { content: "\f86a"; } +.bi-building-exclamation::before { content: "\f86b"; } +.bi-building-fill-add::before { content: "\f86c"; } +.bi-building-fill-check::before { content: "\f86d"; } +.bi-building-fill-dash::before { content: "\f86e"; } +.bi-building-fill-down::before { content: "\f86f"; } +.bi-building-fill-exclamation::before { content: "\f870"; } +.bi-building-fill-gear::before { content: "\f871"; } +.bi-building-fill-lock::before { content: "\f872"; } +.bi-building-fill-slash::before { content: "\f873"; } +.bi-building-fill-up::before { content: "\f874"; } +.bi-building-fill-x::before { content: "\f875"; } +.bi-building-fill::before { content: "\f876"; } +.bi-building-gear::before { content: "\f877"; } +.bi-building-lock::before { content: "\f878"; } +.bi-building-slash::before { content: "\f879"; } +.bi-building-up::before { content: "\f87a"; } +.bi-building-x::before { content: "\f87b"; } +.bi-buildings-fill::before { content: "\f87c"; } +.bi-buildings::before { content: "\f87d"; } +.bi-bus-front-fill::before { content: "\f87e"; } +.bi-bus-front::before { content: "\f87f"; } +.bi-ev-front-fill::before { content: "\f880"; } +.bi-ev-front::before { content: "\f881"; } +.bi-globe-americas::before { content: "\f882"; } +.bi-globe-asia-australia::before { content: "\f883"; } +.bi-globe-central-south-asia::before { content: "\f884"; } +.bi-globe-europe-africa::before { content: "\f885"; } +.bi-house-add-fill::before { content: "\f886"; } +.bi-house-add::before { content: "\f887"; } +.bi-house-check-fill::before { content: "\f888"; } +.bi-house-check::before { content: "\f889"; } +.bi-house-dash-fill::before { content: "\f88a"; } +.bi-house-dash::before { content: "\f88b"; } +.bi-house-down-fill::before { content: "\f88c"; } +.bi-house-down::before { content: "\f88d"; } +.bi-house-exclamation-fill::before { content: "\f88e"; } +.bi-house-exclamation::before { content: "\f88f"; } +.bi-house-gear-fill::before { content: "\f890"; } +.bi-house-gear::before { content: "\f891"; } +.bi-house-lock-fill::before { content: "\f892"; } +.bi-house-lock::before { content: "\f893"; } +.bi-house-slash-fill::before { content: "\f894"; } +.bi-house-slash::before { content: "\f895"; } +.bi-house-up-fill::before { content: "\f896"; } +.bi-house-up::before { content: "\f897"; } +.bi-house-x-fill::before { content: "\f898"; } +.bi-house-x::before { content: "\f899"; } +.bi-person-add::before { content: "\f89a"; } +.bi-person-down::before { content: "\f89b"; } +.bi-person-exclamation::before { content: "\f89c"; } +.bi-person-fill-add::before { content: "\f89d"; } +.bi-person-fill-check::before { content: "\f89e"; } +.bi-person-fill-dash::before { content: "\f89f"; } +.bi-person-fill-down::before { content: "\f8a0"; } +.bi-person-fill-exclamation::before { content: "\f8a1"; } +.bi-person-fill-gear::before { content: "\f8a2"; } +.bi-person-fill-lock::before { content: "\f8a3"; } +.bi-person-fill-slash::before { content: "\f8a4"; } +.bi-person-fill-up::before { content: "\f8a5"; } +.bi-person-fill-x::before { content: "\f8a6"; } +.bi-person-gear::before { content: "\f8a7"; } +.bi-person-lock::before { content: "\f8a8"; } +.bi-person-slash::before { content: "\f8a9"; } +.bi-person-up::before { content: "\f8aa"; } +.bi-scooter::before { content: "\f8ab"; } +.bi-taxi-front-fill::before { content: "\f8ac"; } +.bi-taxi-front::before { content: "\f8ad"; } +.bi-amd::before { content: "\f8ae"; } +.bi-database-add::before { content: "\f8af"; } +.bi-database-check::before { content: "\f8b0"; } +.bi-database-dash::before { content: "\f8b1"; } +.bi-database-down::before { content: "\f8b2"; } +.bi-database-exclamation::before { content: "\f8b3"; } +.bi-database-fill-add::before { content: "\f8b4"; } +.bi-database-fill-check::before { content: "\f8b5"; } +.bi-database-fill-dash::before { content: "\f8b6"; } +.bi-database-fill-down::before { content: "\f8b7"; } +.bi-database-fill-exclamation::before { content: "\f8b8"; } +.bi-database-fill-gear::before { content: "\f8b9"; } +.bi-database-fill-lock::before { content: "\f8ba"; } +.bi-database-fill-slash::before { content: "\f8bb"; } +.bi-database-fill-up::before { content: "\f8bc"; } +.bi-database-fill-x::before { content: "\f8bd"; } +.bi-database-fill::before { content: "\f8be"; } +.bi-database-gear::before { content: "\f8bf"; } +.bi-database-lock::before { content: "\f8c0"; } +.bi-database-slash::before { content: "\f8c1"; } +.bi-database-up::before { content: "\f8c2"; } +.bi-database-x::before { content: "\f8c3"; } +.bi-database::before { content: "\f8c4"; } +.bi-houses-fill::before { content: "\f8c5"; } +.bi-houses::before { content: "\f8c6"; } +.bi-nvidia::before { content: "\f8c7"; } +.bi-person-vcard-fill::before { content: "\f8c8"; } +.bi-person-vcard::before { content: "\f8c9"; } +.bi-sina-weibo::before { content: "\f8ca"; } +.bi-tencent-qq::before { content: "\f8cb"; } +.bi-wikipedia::before { content: "\f8cc"; } diff --git a/pr-preview/pr-51/site_libs/bootstrap/bootstrap-icons.woff b/pr-preview/pr-51/site_libs/bootstrap/bootstrap-icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..6e72a590a26bc71c7011e3c50da2ca766a853344 GIT binary patch literal 164360 zcmZ5ncQn=i|3^_7X^6<)TQ*tQ*XD|{$;HQ(Jwj2Gk$bPb$u+K-om~mnE)kNIeXZ=x z_x0}g->-9C50CYHzTP({=iWN`>8Ys^5E2j&5QSYOAOl}XR+j&1K>zuTcxyf*{{!fONsu2*4S8dMxy0_+J0M7;@! zu3aG@{`$&>=%LPkb~XqCBH8C)P81x8C#5+L{{trQJ^;-G4m**@)erxhyQcvXz$Lq}Y;ctitIAw@o1kkL_uuaCNPd%SLeTbXAg&YnW zx_$TX?sM9^DR-Zw(tZegAvQ`CafyjGG{a_?&@-QQk{0n&j4g_llR%E2GzL7df5znG z-n7w39m(HuLt-kI$`2p(ktD<`8%b_A^dAtfsNGOhQY3#wMMkD-a6|Rc+D0e!_-2&r z^w#0&m8GsA`GcS?>GJ9^=Rxr$|IU&>2ATo+33n1-85aNM&R>|uRw*yU;V;fV8mXTi zbXklyZfCC+lWtG*S&d}~3?$j{RgH}QTB}>Dbn)8{*!P-ZW6G-N8C^=>mf0ygs(T*P zDmoqCmK~b8q-w!$^!sA7O_O2hbyHRT__m8(9j95g>p-1DP?b=1c);Lul~&GaF#v3+raQ?6;TadE9v-mhZc;ud_)gJRv{YW(}gVz=TZd~UhEoRQFo z*`7hLk-~@-h5n@xX7MK!2FfG%#mz0SYDFlg1iG@$qDrR>x(d#sw@&D^(t;waQ(B{% z&STNxTBm}veESk5PQ7qorC%w^PGFPHRX2b&TR;xOhw_#*95{y^eL;fmYG>$7O9MRp22{c}ZH;s5X z#RXcnH^hUN~R2%isOd6@VED{$J)W=t@>8Q6~m+W zdwXRMa#{_iOPGe^@LYS<4~jwzBOfUy7OCX(8aD72PmeI+_4bmF&Cc@9M>L&XYesZ~ z7`%rgSK9Y(HYNy`^)9pR865u?93xnv_p@->aL@7B+d?rrcW~HYrFu`g@xA=x$3rwL z(LQz-s#fpQSB)F4r$E1^n2SdR=3X@ip-!APj%RQm|uDo|&&fE&C zzKjY?Xw|eTQ(qMhEM+Y0TGa@w%6eajcRZ$(vl#p~icbwp$|_r0ZV1fEs-RhZ9f-0l zOjS?TZD{=NAL`9*P=||k^`th|h%v5gnklt$MG3{CDR9W^9q2=T~zQDE+ zi?-b9;mu{gy`baZvzO=kp%{gq*~@x+G{;(JiRY%Fd2J(CcKwdk&*INbF5ZWZT-kFs zy`C-j{q2BvdGxX0S>(ClMgGOli{;Q*kzaRhV@0Pf-|n|r^zeGcW2c!evIz4^;BoFr z&FdFleB#wC{XN4;SJEM^THD94eORnk+tsjZSUfqcS6j|-+T4vUC87Z3=#rLFP>|~A zW}1>zkmzXpE6ul{WyShInr=b$%G1U)w}Pe>oAUc|Izm4tc7=m=6n;#T-@nw)EILLm ztlWQJ^tZXAS_*2B*Q=J+wKJvCK7-bsGv%#4I@P5h1#6$y(5Wpc+E;5|kZNb2E^Xgx zVx5$JXECsP=(n|T>b-ut>Yt^eaVhHkwu{fICuME2#ANym7agmA$l7L!H}$#gWQ^Np zNeZR3EUH!yHX|%0D$+*#Ru?ID3IckYU8jVZ(&GBM7Daa&j=ns1zMit#cd&S6C-12H z)Fni?EiHUe(hEnW{kB`%Eo#wkC-UgWsolB6MM`K{)h|Yy-m$8EL{OC6NS5nh<(>70 z{pUe1TfP}r(TqpC+L?72SC6<-nEm)!RqM(y@lB#C*7f$putasgE7`5$cUUv){pQ?*ncRm?E_kF?e-<9#tzHb;}N@hg2dUR~XH=^a|Kuz_Ui%i!*?atcsrcZ)3(Q8ke zz6#d%uKD;jSlCq5^Q}|(CR(_<*Ep}4HVu^5OOB_nlQeywdMY_?w(h#`8x+~nJLOtG z7PQvlThcN(<<9hh@>k@V#L0)?ukubz)o~N+``1n|lQ!8^dJ~!Zv?ryLc778}E>8{9 z$A43=Z|+l`6rOdRuO|E$kXp^y5&XD(-7B(*&79})uf%8Sjd|uKei<@TnKQcHTn*bB z2)`(qk<66=PlqNib5*}`nQ4nP-X<+`pT|E&JZmi&9*vf*LP3i-TeGM_HXF=B{xmDK0Ejr zG->RY-83yX!{|-f;JRUR@Fr+jZjsS%V)FKeMt!^7LYA-0r09l8eeb&OV1wL7z(Lr= zs-^eIZ>I&1@&DI2=_1?p( z)(nN8OiOVGT!**Mu;*f-jTJM4e;tmiPsh*ct-fck4(`w#k_B^wqT0qD?pCy616R_pG&&Znkr z0~H7NPSrxA+xn+xB~N6|EY989I;Q6~_YRIu&ce@G+WHmnOgnKW>mkY0bJ+(%$HC`! z+NRs^Ry*#8l4oY;t{3kvzJ}rzcCt@|PLt31E^042LsuyeH%|}FuUzC^bTe%eTm6Z* z4xktyeU7<`m^blvC+N3K&5b#WwJ zu6@xRr^pAnZXd^jn_xf-*@U>1$}9mZS@HCXO_LoNJ<&0{v~g=@~{6GW7bu@ z2!>hgU+*#6tZReC`8Im~^36B)BWT)N|HA#Ho8J$Tp0t5Yq9}1sRgDu;s(o`d z?(gG6nbX_nvAp>I-p2|a-+em%M39jo?rm4++@GzjSN?&eHwNE0bb3AQ@VAszu)HA@ zllVt<>yN)iDP2hizEZ7}*16+XrEcjxq1fb(z{(Jp8}~ZZDxbOBO7C2(^l`a8(dks+EJ&e+EKNLeLwxQ?A+#}@nZbq*7G;BAM_;>$adQQ_?wzD zgf*JC{E3Uw>O0vWJ4oLA<4zg=rN_f>jLx?s|5;Asr{|8XB39|{E*2-rC5uiUjW&?k zOUZ}%A*pQxq4ZoG-Os|c`}K;rMo#dT_DbZxH#<*>W~bp9C;-AR>PIY>=&bBT-Czb_x-y;rIWVV^+IDU`>IWYtq7~Sim|hOqm#7Y z$yS@`8utmmwWfW!lh(6OA^#~L74D0kG@K2E*tOM7kGZcCo@AbV2CuM6VZv&y zVn64spW5Z^>Ly9UXSbqzixExV-D1+07Mm!_XEaZ1LkikHE6im7)jMW5=eekvUdi4X zjL2&jwh4H0b1=%GOTNopD!@ z?Z`8{zfaf$gG@|MN&E;8{*h1G1B(!2S>;UZ0NkO(>yfHY`2)So3c-YI9w9hQiPj@m zA8ey`^2ow&!143om#zBsBkSHllZw+A_n-H6)mqdQDh}{8d-7-KROiK1yTwaEX)VK+ z_N(K^`<@e@LfkKWjm&LFzl!_x|5o$+cD5L|TN}(^HEM;wchnhDA3D&ssqmNSIPO&O zB3&Ltdt|`i--OVqNLv8;du2rqa?k)yE?v-aZz} zqr4hNeB!y|N>-bqnbM_3^u|`N$_MgII z$8$P`_QCy~vo9WqL$T)t__V!6POs{5Yl$?oK2EQahW_7f8~4-uGZzKD>c^jM2p^=C zEy{bf1$-*=7(L+)L0QqOy|$XG-JbJ1%ntRuxY(%}It*=*_^a@B;_s3o%qYnTW`uIm zFiOP3jNUPU1eA+&huJj5(ScOh zPIxcciM5sb*gAM`yc5?R z0=}M~rBoa~Y^dRr5J-pBh3j#Rm^cx`EihS%#U;a{8b0xX)YuL9Am@lOUK&%5G(|nq z!!Dum9DB0xmi#O|@EMB?wwD;lf(?Q5q3}X`tnf=1OKqo|;T{Z$Mwyb+hhZ%k188PR+x| z7*1GA#;^*O0;Yrhg&am;V_`a|Un#?nusSfE_+JUb;_!4-nqaLomKJV?M3;LNabQ#7 zW~eldT5;?+d;*!qRx5yQfKQ;(xN7CFM{pUWDRV6w_BC7vWy)SFitT_mAx&9p`LOx$ zCX^{>tqgV*v(H>>j=zI3hOKMh1Fph!xZonq$x+O5OxH9f@(By3WYmkt~1vf z;~&CTG1pmZE%DZHNeu=iyggP~LqkDEEM`~@+paOmyQc|X_F;of3i_~PWianpYfbP* zn2m%$acmRj9j8zIurQ_$#-N2~#LmGc`Fv!tWpFNJqaI!bPN|uxf@i_TYq-Wgcs<+> zFGL5b;Kks2S}hU7y4W8Ya%?^%SciN|EvMw+RE)1yrYc?hcB{4wenhIfK9X|R4@UkWZ}KrS_Wf`q>`c(-9##P(uZ`Ek z#vzZj@OhZ?q~p8TP>j4TX{emNj186a?q$b5PCay|OI5g-eS9IzRw5t`kjz((o8Lq+ z!s)VFbk*I0Ln%7G@trQ)^q?FBb+SN*29R+mj>ZUwud&6_&T|ZcR%sK?VNHOpWADytJF;>U*19{*S|$v&=slB6;#j_hR_aOHpt8bX70Z_EmU_vgT)!D&<+X5ZuA#v42Kr! z9SyA{ssRoG6S!1d4MJn~`4F1pH5m+;g6zO7QZcQKQ+_syl)vb^Xj?8j@@sSw1$Qb$jV?^(?T_z0>N$HB5HOIl+1>PrpeY} zTA@NUTmr$(-(J@2ZYik`4Rw)a!nBx#yg{@1+iS>t44ISv%zw>rV1BuS$+w~jL??w< zEUTIx`{YVGu8h8xhs@)DraELQKqet3UxYF9w5ABYWBAS8i+Y8x!!t)4=(yNP9pZ;vogh$tX_Kmw{o08tGIl%mzR4p<-!76d`t z^nf6SM0ZX_Gq}f&30#_t%Smq5CTW?!BeKkK(hY5*d__d+hXVR@>iJvp{gpw)2fa|1@Ze)U+O;3y zkYEcB4tztt@Awj&YruR3zG{-3hygz>{@2W%IiF>Bv%>8S1h_m+h%sOBpg)$-&I4rj@~g+K@;T^6aL(PE_?kLHL(fxuG= zqUuOM;ZZSbW#}OU!aXqo43^BpM5-b+-?6d<6=C>k$CWu2aJVdP>9m-&w`kjcGzp?} z|7aFOZ~vnxh{i*dM^9~ErMnw}&`Zcrf++SMRfFgX0x_$_i$wWZd6Liu9B??GAxiy^ z#zXWvMDKLtnuMg2W13IUJ2;4DLzL`lC{N+MQkDNjBJR(bxeE2>?9-|zn>~oFmJ(#g zLF+62RzIUE|0yTLR`W>rp8#iM$IegoXopf&>cJ=J{8^RPO=N8?s{A{(y8qA$v4KDx z1ljyq3!YW}NhF9Zev0ltCUmHdYBA1e2S+99!J!2H4QDm#197hC6H{bIut4{pR%667 zE9a_@6%;1FN0UITPJK`d;s+pR0I@EJ9Y9P5;za(9RWR)X;y@5T21gE5EJ4K`R473u z8C1ZAJy0P5@g)!|BA!iKSABH9YVunW+d-RDKsIY;G0jL;(GXlFV>-HaI8%S zXjR`f81;Bd9DmgbM-^@(xtq1giX}P*+(>)IJL_J_9S}<|a_r-o@_mXql6GAOBCLS8 zLWBhn3y81*66~2mC=Yd%fg{fvIX+_x5vXJ6nL;bi7MZ&0<(bmZ$_$7WL|6fFh6qdK z_?($%irjT%``Q+Rbf5lod^`ExCFwqP1$4Xi_HBs7140H!8@fH_8Is;UW*TR+FRgOj zOZ6qa{o7lfDICy&gCpXZ;_L}d)cpO?Q{C%c{Y((i0K^I+I@fo)73S|}pK6sKg@&eX zD(Ei8s>H_!unEs2reOTisgk$Uf%O%#u0a+nu+Z(e?q(FdE(qqYdWyKS=R-PylWRu} z9+A;^uNwt5-?2hE31|&zsH6_)^(ebp*(yVGK{qn12M1g&;En@dO?YL43yiV|X+K=@3LhkPN_+N4mRWUc?h^r6C7F zFo5obdGKu^fgl0`H3&K(;Dn$60(%G+A)tmJ2?ApXenKDtK^+9X5bQ&69fEfd=t3|s z&)$v}grFP(HwZQ$V1$4VrxC#+*A1WrVl5C0hFCDf&LDOMu}cuU1hH_4g+ojkV#*L} zhgdtr9;4&QwbYOh{9`D<%2~N+lgxE=Mfhp|fwHbAAFUPy>JaDwNPVcg&65g)Km`JA z2$Ueugg^~ILqx{Bp-5(i*dBsJx;tgw)Dtb-tqlP`1TGNJLtyTS=I93BO^)v8U#9m{ z`I+O$O<;_)Rc~ZP5W)cn+^uaKGJhV$(u-qLE@z7?eWJ@~QW+*&^(Sx}7nL}Vx+aNK z=PYH7n`%pw4ZMh*|9&!xRNu7HVr&Uz2-w};oB!VH&KhSKA_@cr5Rzzhp|;nufk&L% z%M108hy`LDB%91}maVC>#|N47-`h4>*Lk+g2RA_2f_~tL=+G| zAb|!V0*Gozpw#sybr|LLq_>x`LAbm^c|9PAx0hcBb?4Evf_pre0(QS7GR*ororPMNCfP*`Qh>|TC^C?Hs!XLLpS5qFHT;_9#2Qk zf4`7tjSJZk4uIbB_!lpp7+7^h`V;W6m8nM<1%i zxO7MW#3m&4fVi?P)un*$3OIW!JFq%9|I9L!CC=-JFCe2MeEu1AC|g{${~OtXr!T>| z2FzFBt0tp^Fk9SCa(vejAG#~`BvW?aH`DyH#dG$!>OGo(jIy@wIhQkKMu%0a?WXe+ zvy<~VyU@b4=C#dXWO8tZ>2_6|p}OV1GrqewMCVe#c!eXo(22NQO!M0JU61W5^&f1w zUPc`)RI*%J5~om*n1Hh7zF{DHz_{Lu!MvS9z8#p;>_sJ?B{1qh2|1KhLP^&@Qx7tU zAoDF`azSPim(U51Tx#=L;V#v7RrZi!cW)LaTPn z&x}{G{--5#CBkgOL?Zb@I^yTLKBR{kbRZN5p_9Rb!$Ga>Og`j#o%U!V4I9aO7#e@0msa`;{8jm*YqSnHK-dJjl$1 zOiIXntdFD>Th~yu|5igooT~U^ii(|PNS+EoqH_X=5_Kq1AntzWO#sC&so2$r6e0Kw zbt3hV+8U8?WP>P!n&RSsw-j-z_zylFTxsgN9Oi2K2k5ZAv=werwBm{p72=(CMFBHy z!n=Qv3$c6%@*pS#pqm2$hS>}8;B8nRY6U@x)>)x~;1L93q$27Cqxwi`kxX4h5xz`C z#YNn%DJj}&MH>Qs2wWhbCqJ!v<}-^v zZHx&+m;^EqcUO5!LqH5*H;`0>tpL21n3So9iuPZP}6qDKr<0xeQ#Dw zq0;KrHX%+6JwlU!+r)^4ekugDwxmAN84a7&wX7|+;|f=&OBvGhcLD2HEjBV^CAY^M0-XB%pag7 z!voCR7cn78L?VIUJAO1YNrhO{$_A?}8Y78Bjsr+V#PWsokqrWqT8fKxyQ-uj_4y~< zxZg>wDv-7#6)DND054BqQcuyocGu{iz8S)2clpj7XAA- zChs5KtX8?E+II^&;HF!&s(t+6B7W7V6vL3hH_{7~fSh9h5rRkoAWTsyI_LRg$8FOC zJK5Z#>IFPKeJI)}5idm2`#$>AJno~+fGG5|Ne&>YQRwk;8!C?K>UJJY2?urk1eXC# z0|*QO^g!|*hI>4NLDis2nokP?bpSGH?-5?U4}eVS`*}BCQq}IswMS9t+HprJ4#VmnJet1tcephL?H#~K?*OD#h?xIdPKRo5a?-xOS$s{p zxujqoQQn`1ia#Ali;ovgt!0k$`i5@qqcGvy7Li1hb=zi6Ad^#>owY1I#hleGk3)WD zHSc0eF9oa^ny8aXC1-Na@cS0La9CC%Tq@ur&PaEo`oPs>`04l{=Z$zn80*glF5-+6 zOU#Gz77dLoyI|a0^M3xDgR!_6g!a$u48%i;7a6-1F3bV4o6OrHly>1fGjSBTFT8{k z!usUK?~{uBK(zB%Gg)ffJaM?J`g{Nem%5#YgI%|Kj6%`(lykC4C&c~(mgqC7B>t>W zdg-;Zt@#hrT*&s+Oqi|+Te=GPCoC6{fYK4FZU05=yq)|&0jle~EutCWA(6=%(n3qM zwQ8YdVE@B~b5_#Gz8cmYli1J6A!;lUNj3G|94>MNu>;efw%^gnQx{}r+fk`Q#`N7D zXB82-jfn2XX(I(VqGe6gs84*QP1Z{8ASxptqdOQ|U-EAw?wIUuk08GHjv`fsz~{-q zhAjTTBOPFX4|9xlFZlz<)I68D>XFKmD!PktYsQ`;p@@1^SG6l=Tx$?lKt@9oZmti! zv2k!C10o1#OF6A&X}|2k7mzAbeS+)#ojR#!x!Ai#xGiF3Pl@gd3V0(s)hn^RY(Q!F zsZmaeaCM)XxOBpn>Vw+^kM(3$&I|JAXd)4hE5wKyL#l7eSp_dz8{>(N@uF1U9%tvj zApfmONc%CJC@YwfIJLcMiD!ns1^nc#a1l~%j;7&xx-q7H)2mC1O4zSi8xTG~)(YRq z@AIl=q>pm{`Q5C0(_w)kN{Y`N{`JT|nsuOSg6f(4RPLLzLqU_$!JzqXR?}RO=f{Mq zyXTZV?+-#%Zp!W0MlFwL>#Gc&C$NU}4|4w*Jp0)XrJrM7M=r zqc1{wPeT*tHOn3~KE zzoRtQ(KE~f`FvM=k|;9!q3Qn95LU> zI2tg{aMRc1cn*Yq30kpCjimMgt@Nb;3K36|?KDIsjT5TFvPg$|v+cS`^F-vijHhVphg5&7y%IylX^fpj$JNV4%Q z3A*bV9~(`D@$Xw|RgDFeL7^G6pq_a4z_I@gx&SNNa$JOn8C9!X@FhwQT%~3M)QBo zAIG;Z#c@UsGAUormQJFV_oA16zUc4y(Va;8w#zw`dxlU1q$cjH%-e1BIUv=UT9cal9v*3Li(Fc$#`TgX3~~yI>dQw$ra5Hp{4=?L z+4_QL;Fl7qlyfvUt~5iafVtYU^%ZO27(8m(qL=$=o4NYU6FX^Db1TK0qZNg3R{6T$ zyH7tf4zcWgj7lUQ7`^dD#!BljKJn-Q9GAa`L2BK*dU1OGoQ-Gqz1h_ZmB#0{dFF@K zG2fCmm|wTnq*8gV=)#u`%wRT?8!WGVnv$skhmGMl)D;*@G9&wI?SMB_o{sl;=6mxn zNTE2CQmd>k=}}cCFt6|+`VGN;y?CXKHTKuP$5lxiYSO8uR=hBObq|nAjO!fWV2W~^j)&pbaPB|PA-J=KgCzsqt(rp{7&;>HxZS!^#@BV*3e=|%RLJfD<= zb~BuAG9BzPaSfUd&o8)8GX#v^Q`NJyfAf@CNK{1_oxEu#8`F#k-SXJpcIf~gqgsWM zScOhn{lSMPrj9&ZZyZ9e$_kI2yqTD?vyjdCs zQ$Ab#QQMYL4u%OPh5px7Q+=ZD@br`#$|k>`_uG<E?@G-0ayXTjYUNHvQDa!mH44YL$eul3%Is z-3po0sk}Ms?kOO_DYS$cd)1r~|I~2XQ#Yy~*DK8cJmL&AZW0Wk@~UqStw5PJD7+Y>uLcTCKQ94?{8`BNrHnz>oySBrx_s!;hHw zd0Q6M-?Ko2PY0_ygwqw2z-R@=F=XfwPP-ET<0UXifN@V77*~Oj3ycU|6 zp|Nl_m@VZy_EfVc}%TMdx1#rlb5iA{aKJmjx_TVswvhZPv9 zz@P$#A!LAtH-%$!-U?>R(jM6v)Q}`L)uBD)Pg9M1Pub5IEiV>HfBew*lf@Vzlz zlGUxtpcM~VGQiAY1+6slpSE1U6b0rW`g7nKFvoO2lOC9iV0@|DTF#O=^6X|G|zX{ZAu6O+`$RG)n# zL!(JKxyc_E78Y`8hIwAYbQZ8WMD7;L_?PWmMs^pIG3%iDOA}x2nz{DUe_8xc6XLu{ z7ejb0-R|ZGvcA@ZqZWsmBLQ3gzdt`s1ZUTND6xp!zhK)g?ZI!*YK1SeiEc+7&Rtv_ z&c!L5ABNwSI%GNd=>CjUvfZNpS$K%n7KxnuH!BOXt==eecFT%sJmpUk=d+Q4nBVM* zl#IA&%mnWVpGWn?%6=SDRfH|5h3#_oI*0T5FndD>KMlL0MeAG@t@0yYug`i^u}_6R zz#1M*e=}09*07V{zU^O@V^-g$@b|QT^hTL=(jyIqCxRUx%GmYz5ncT{Tpz0mF^==imyOCLGh^)Vhjq#U zOP^k&>fH}U&JvH)`$I=ddqz0r=u^m;`YreN8)yUU-!V$*((_hF=KC_cKct%%@aqa= zPUOP%+^ix!tb#qUcD;<=37vf4y`D=gXP!=V`qCV?xc|z%?mEkpoAT5IbtICKui|c0 zg}<_>OAs4l(G2;zfA*(7s@2{7o%Oun^tqS6OE%weXlf_yReW&GZ{CC;Yncr1$D;(7 z14D&US9T{#7^J##_Nr5kh)o#~<7XE;L^(M}JgUDXJ2=cc;`dDXRDz;bJN{7*Vzo9$Ztselk`7!a`Juh3*|oiW zOwX^t$F=Zi8_Ss}^H0w?y*ZyN8@su2qcyQ|h(kF{i2AwKt&z`iT}{LW*v%3n_`JSPueZ2~j7t#WGhF)z zc9=m#J9}h(Is8x=)_j91?qwJGFyA{z-k(HU zYwZMu&Ze}114}==$Yrm+4RyKvN~|T6yKRR2%vpcmF6P`;bK)(>lsHj))ArFEU&D-f z%k8#O@*T3%UQvdh3*L^&;r#LI-pyjG&x@_&;Uk=iwvJJE)37BEutLL^o*pIHjq%8v z3SLgaCWSeT{}fm9ANimeq7Uy^YS3RCIvpnY_>O4G^lXY$HGW9xl=y{0$Ihkc9m38K z%8#zDDDqCtGrh4o8^XKn1TU@<*gKJ=nmS$nTAuXgZ1&V`ri(C*=*vnnzw*Mh@7_)3 zs#0Y+Iqy~|hE9JD&emIuu-mjS{bt-2V>(~+ohk6Ir0}q)HOtuenj~YrFM1@~C}2O0 znn*|3_04;@6Xhs745@!7ai!DsOcT#e5zH!*(hV9ENri3Yj#LEo7x)cM&KCr0ghts> zNhPQMnc);0WUMo!`h8aWVo}zz$^Q}R*E>ULgW;SUtG=aT1(A`U55s{Jnj?O>hOmsT zT76&Zakd^6l2)d$r&jlN24q;v%csB62<2TV2)K#oZ;ZqkXzL)wKG*Zc$5vsxS#MS}TWk?)NowVPTD&v_ z`+l+B-;u_xNjAl2*YB3#J-KDLe)-6SV9eT1RO(mEK+Iwe&c{(yF^5~5@zZ5Enn=7r zW@7su`^oYdBBE&C!>;KHgNN6|u7=HK)rSTJ77H0&6{I z4xZv-NEi=^Vcc5Z%qs|{};bs`Th+PzsRMm?ifiH;{6 zOy6O7o{@O8_3BCm0|_5TQ}O*I%h`9ARAg+OxFk+@>$vZU-aqaYmI_+c4IIUNEL!4e zQEW@Jub*z(fUWV7x({{DqZ z)pL?+?Ox>QhZxT;Rq)3gwYZnEM6<*5H&W~*Jm65bzShKzR(vbB(f~8{{=us-=D!Hy zTSdnr1%#-uvGiHrtecAh4YjD zEL1eES8$Uoy_C%CkXjGl;LUtn((h&yvKWE45O zXRb=${dJ2f$H(EC-qm|bq?A_*1Kyf{XGVLNC$MkLFtTdglAh9@o_VWudG@h8)n$!D zOTMcsVxL8<{9kU5?bVFJa~d@jilq`FY85nzhE3zPU$PoL;zxaE&#i~e7@`GHhk1fE zDAlTb8r531x8>YN#l>%Ki=Ys1i@Y?A66Ou7*o_mV6Q|<2R8)=RXs2DBpQ89v8rRJi zNZ<2Ex3WBO(s@pGEo`!UUwYNAE#qmdP6`}ThwfoUl@rBTQ%-agBY9gH-GVp$P3prw z{X)KG6r#~mxi!l1S&Z1xA_0cw-jP#Wyvr2v@zP|ws;x1BII)UNF99|A^I!7s(B-U# zUdIMQo6XAnNzw23=}OmIu%=VdwLthNko_9~Zx3;$_<^WBIWWm4Iue;D6TICAuTy@WpFC zi;E?9#A{8x?2IJsVPvl&d6VNL@`J)T4%6``}sOH_Q8vh!dKxyme5NqoNO^=Q!_Se#l_+ zc81?Fd3@Hi$MpVZv(rA-(94e=C=g`u-zt)>S-W;?CS4CxJfe13ry9mzCtlWIPQw`( z8F*VMIKa>_hE~t{r`Gg{#dtblcj@D-{+~P8_3!UBuUwri42n!j?_W@Eaa8q7xSz*k z^!oQ6$!@~sZ`&5X^agSfRsNKLdjuGAq?gC5%`)x3pL$5o1y9ru<#+eZZigRPFIt-! z6xd&L)LVc z1-@5Dyf3mz86`Q@s%`9Y}A03>IHW?BQ3K4CNM{M0deka)uiTwK|%!VJ9 zRx>I+=EUH=Pl|84CM)WanMq)*TM+C)!Tju{US)T2qq&c0`8Se}Ud}{TtXOZh}RdM(H zArT5!;%gcG#$WodpPNo~#DCi_=MELc+~xvn)?15N;@0=vyO{N@W;r9vubTnB$1zR= ztZai-d02UNx}Lq1R!d=a9$km^&Yk~O{RAvu>K-wBS4Vc={K<_aX@y;%`^1O;_-w%T zCTwAPRXgD-kB(H~eZuA$zi>mv(a0aSwtI)Fe`pyZ0v+iPY(c%BMT0u0+DBieXOITF zKM>$^xf?H{f#(vyj%McetX)>}x;$&jURHhRV^=Lg5vk)|V4k)0<+j1!^I%-Ha;kj}~t&GL`t=|DNxj?#!ywXU@xX z`P?)J7Ix|THD9u~8aGISTo@nFCSIw9KT^>F z-xU?>tvdUYh~jNtkt)_N*&x2J{pgSsP(3G2qu(%Vz9@GF!mpDnLH zV1GekE%NAq?S7Ahf@h8w{jdbDr9mX=#N~aDBB8uPMOOvEa%J^P+~^IeMx081LK01U#UGHV+D{rsw zZ1^xKbHTC{?z>O<<3BDv3{~9FGL(KuPjRpzK~^O9A&Q`;Fc9?*{@|7s60e?(MmU>E_PE@;0Sz#-JNZgXul@|bUDMw#M1 zeHP-)g5B>C-T3DB)FvHuYSA|b+4V7dw~RS|F@1TdAMrx5KxZB4DhRt}f+)JyE7r|l z))jWOcI3Lrug(9%}%t)Tf^}X0U@lAcRTh#s` zipZ>0`bHPEG@0Kw?kL`{*X8f^dTiD7Fsb~u|Ini9;Zl4^-HqfX5kk5SR)r^KUs05r z!FP`o8^-u@^6l1D1thCBulEa7<~k=I*m-5D{ORr-L`N`ZnRjGJ za!cmlct)E4b|ZtdgST{E*GMK`huIYP_dMIL7(9$u^BFZJZ1r>gAV zdt&hYZ^?*Jk=A1bky@qnRR(0r=L3}jG*|Ag+=b&o*9*#_8y1vfJ$>tU6t^jv#;$>^E*{f-rHtXy#MbA&v3|HqHZ{aFKkgEVTgY5w+1fyKLAfau)hL`fQ#m=3*oC+ zaA(UN!&hHr$V3cLK%@)gD>fh8<+$l&2u}5}LC}x-jL4kd#cq-)F^R4_nPw~~A)#@W zu>i)4;j1y27{^y{9Y)1P@>P4N##Av_@nKjZ4>6XU$5=Ek?i<{;DAizv&R{z$~LM85^h9M`9`O6(BF z_w}eR&yLp=KxzqdBYoihZD(}zK^P;dZp{HFUs_G&0mjERp9+(pWAxqjI9=P#LvcPS zZ%y+Ca%L`XMD+d^_b04B%E1Mcdv2uG(8MzBpVm;~M*8}8(xGBYLl2uZoWW!53v1nD zj%}INjJ%v_&1q2pC5ahPFx1Z1cG1rBsXnfmej7Vx{@}ICCQ}(y1$gPHD;nzczr%DridUej}y0 z{{f`=HWA^U|ESj~fTR$-qsJCxS6O|R-0t^E@tvn+9>)W`+=&vW9b4jcsah^APfhJT zUF#NXFTN3v!))alo4B$>gBH-#me3okB!X|+KOyhcvZQ66#3$Y7$GI| zRq>o^Qcm2<Ion_`iYJ}XM}=YPWG#7$yi{V zD=P!)1mFk0jBA9too*qUw9*OQi*;>`9V*K$HYHHHj%T_=5s(h?h-^!XH3ho~x+#thawj z6isVMt=Q^*%l2k%$KwkYF+EQ-B{5Z(HSXr&x-9a;kcPeuscI=$S3f{wIn)gAG0O;i zgEBH*Gu`t?fX~#jUeWnl*+1%Okj2Eb0W_YTP-NmdEksIEQQhA=RFMPO8kamB&~VHt z&d)m&X0a%mieiezqB+raTZpA(?8o$~JwtW{h1pI+&j!XUC~7aEjb$7N->Z$~P2+7W zu}sc-6Z%KUQatS#+kG#{#&R-iV!0rBoL~Gn6UzuBxk$(ZYDjjDjIp|&mD0ml|7)cd zd5zjw(mL6wmF2?a<`_bZGqDV#B3Ec08o@-?zLKsjah=llXj@szx27=0EI&vp&uQjTNwCRe9^t{$nWQ5K9XjiLjVS$JBX=Y*lrfM_Tq)~+DUujB6Cj_$Du zb;$NTmLZgw0$B}VSDYeT6gTm^;IGklIFb6hVxNpQ(`&icfv$6*1nXvuYUpajTnxqz zulgU|4P8H)N6=5?(Gyz!u4zB9o1(>79-}|y6iNl=wzL+rK*}?$hpXyaK{6lFLie_w zZ9Zq(^uQ(smMCmn6!k2996d=$$$S#t`#g+Ws6!Pz-Abjo#E(UxeZzk4a-5sW0Mj1~ z>!*zCkQPi31nfoh{$g_%33QFvf%4nbHxK|rXX|rvav^^^0o44GEIx@$1cwHdp-YK4 zU5aD^>)-3ZSNjvYH_pr!(Jda;uegB#cP&zvc=QY>%pR^9w@ErO{B5@(zI5p}!;Wsf z;uVUh7M0sTqc+sLSAf8}CM+)tnhqphxf{E)L=kUB`WN^2MBrALl%l#Ix*x3! z`gC5!?TD)V62=LIR2`%;tc? zCxC{a2r(QDZjrVU1R-1Z7%eNw8oAJP*YZ{nIHg5>P1kzAE@1vS@cabQ<9!j-nsn!# zlJ*D?M)^Zw2&5>z;TNBYYv3sN-6s=5oz!z+9z{`tzCp}Qp|QN@&0r02aXICtxA5tr zQ!sz5=%DKtNa(yJX3#YH6kA<{FJrA;o>s3^z~L=ikC+OLhQp;Dsw{DRMG)ej*^}dw7M913hrJpLrVK%aDGLdvMg`SsC=w4J71qPeV@Ep>c$Cv;nfKf!cN_?wD>e0QZ=Q58)!yq0gMnylUx}Fnr3O* z0k)dpJt<&6R7BQLWuEW_y#By;H9xs6p}s#`8NEO&V-}q&vHq5}s?((s zuiJ@&X&M?-)9e8iqqT3;9jz2qFrl~87i|?Ca0uUZ>;S^lB=|i7PM=fUZG*V3K>STc!XIf z@TviI(og1);#3phyK`|-C_4qGtSZ*q78IpqYNpQWcH>UC$NoToI@N*i&=P^Q2?gg! zufQtX!x&PSq)gd5ZIQxj${;$mf0OhAH+9qs;Ml+2FPE!ZI>IuF-9U;#&Jgq$1svh7p?SJWR{%}dyU4RS+N?0`}Rc;%~P0jWECl%MP zR(-cZeDjS)p+g_t$RqCG2YewF^R6o>&R=C04Nv$dX z2;h7%^0-GZ`z<ZTMEG9Aydz0hbb*L*22dEhJ2Z-a1Es;4G}TUlQ$PRA6i;77Mn^Bh^kJKDdm$2{PW8X>J8R3Xo%i-hg(KN~@d5lArgdUNKb;rpT0E zCUvWxkr*4NPC1Udv3cUe=EmW}!|kL?quHT0$h1P5e~;$h@^<3XyP?=u&;rXo6dpX3 z$EQ&GDJYl%ur-EB#Z()rGmFBYpQsI^?KkR#S9}1J0{z!k#e%;2@)@90xo!IP+mFT&bz+FG*J^z%}Red4WHad+{?&Z`Pa=A0HXTmYj zPO?nx?hQfZzm2OVHBEaO0ewbuCLCwtZD@U2_Ru2V5CkrX6R-dy%o?}It%ugBWHJIx zQc=u?pwH~PaOFj|LM4K=|A#z(fL9@7wD&IyYR_$)YTQOaV_<&g9F67hah}eDHV{y6 zSvZ4Gmh0;bLWja@KkYu5io+G*sJjD>Qqd|#(Q_{v*y(D7Jj}coMxF4-WpHA09ydp0 zy^hQn?u?Fm!_qcHd1(wLP77G3{J(66fn+@(#?xw~B533lzcpMEspe*$JaR$qDwOW}st;tEt{`M9C|cJve3XjI?bt zJddYt(2t<%WA*72(R4a7|d)0f%lT{ct?KGoNmWAtVWG z;uwB?VhAcoJiI;cW^uW;11_nXYOaxa6qT<;=Oy1qL%8RmF+NP^;q#5?bL;si{NP=X zlDq}+l>=aBoJbV#{Tv`axIKDP_(j>!*+Dv_h&~38 zG2$XCi@4{=KIpG-REJthH06h}(S~IpNrhq{@~@tqotdmpJI-`{a%Of`+olR% z)l8>Y7J1PvSVWF#tx><|Yq{IdmPLJm(X<;NV5`hS7{h5C;TaDHSe?L^XS)4>%FJb4 zRY9vyV{nr7>an2Wo-9cX}?*yS)xC1hoTU zjV)PF3C7XDcohm^H4gN$E~-Q*XafI2!4NIWDA=XF@Kdr2hGmJyKkot>YBPL^hrgK` zprVVYAhOi3HIpZTz#D2ohwK5NJdyY>3TnA15W#SS1Q(PKO&GynH^hm9@{W~0N(aJB z?9h6H&VYOg)ZUtzE4OA_<+*pqteIO)DP-XH@ zF+JjFTPxz{l29vw5XRb>)OUQ5EOHLDUM_H}+#&8t?s}m8UEFKA*Q4!_27D_DxM+Uu zC|x~*a#O+e^N>=)06{B3cmvnm;tPZ5h4?yrF?yjJ47y5J305Aqx}B!3TaCM##STq< zfLBp%X^Mg&OKJt%nXC@bZXv5p(cooOs<5k*;T3x&dbUy6Xv6^qG)u*1S4McnUJ0KafLx!3f52TK#+^!|N8<>3z#ZdG zaJO);;_l|&%smKg344|Rs*V+fe_H?UAd6CTK?X&55TDC(7&0_W43Y$UMH%~qXr;xH zcavxLZoK)X!cBg0dSB`C6oSLlEfFp$f}0F`e27GW#${=WynzS~uObA~4~S;l{!M;q z@pU)de4}-fSK2pSe8(uVn+%hc46@(MP8ES_!xi>QGrS6)u@5*-3;moHpy%vzdjZ2e z!0|!uC~78d5W5(7E4~Mh)f{cML z&;OMu6J3Tb67H4u{p^jKj=SXIzw4ZT{)PW45uPlp%VJxU&xk@>QWU8zh>u8kqkY#S z@sH!WPr?{o3D>nQaueJP^qccA_8CyPJ4J%AFF==TCBq3C-R%hJbR$D)^q-ogl39Em zkRv}ONsnUV7WR~4KcLbc0YK!B1r_>x3k}6(Jcf@*jUMMk@h%?put#VckRAb@j4wrC zw^>xKvn(i2((l)(jbSMqp|IeX;kxeOb;H?fmqykx)V6AzN(HUE3yxvbol_VIPF=?b zXX3-TRG``@PHm0GFHCuslqs!20qyl8sCxYfp59qn1f?So6)8-Ma~Tv)XzHL9mB=~+ zf&suK_8ly9AGb{Rj@fO=2YK98icxL{Aly!8y|dol29|T@&YW3akL|H+PqPJPnE)Nk zE74il(ohsX8oP7oI!ma-WcUS*g^igGU2x&hmc&Oe35N~|-MQh=Np6#cs9wliR9|;l zn7YxFyAda&IV$8Ufn&BuX1#BDJ^Jsp4yP>5%yKovY26`C+-SE?bvmaQhao<<(m@ha zY`A^~uzJo(49}Y}+pQh$rjTlcV=;R7r$%HaDnjep53lSqn$o(niF!3I&`Px=*5wkpF=MCG6V z{~vltlI1K6i@SoM74uh1*$$4mh7*B-sqvuvw@m~^dT0|#uP_6yTIxF~lEcdRvF0x!9E*JH~PR_i}5CkEy ze4813LWf@(_;-Vrhcg|tyt{@A3;kNS=U|-L1etj?@Dlayn&8p%4Cj|E9yI6xCzcm^ z^sQXMFrGA?zSm=(AvkNZ$gkr4-U_u_v|t?1wlQ0l6;Jkh9gI@^N~>H_3udWgxE1q` zTMSE56}7WhGGTyZ7ZyIR+D3_=Qm4IQ%~dtmEEG$%B8=Q$D=jJoRS`iWB8T|n*IoCV zq&o%6k)@hl@Cx#;ZRjQpb;#Zucv(~=tI$(Tx#H{P>QuEX%9d~0mTDb`wk3%YFY(q% zC$THxIvp7!I?zoe%Dx*~BG4E?<9APYx^yR$4o*LNElJZgX=<+^DY{8yQ&%KmuMdMZ z63Cj2f2%WAbuwsbS~Hle7N=KfJl4M>D`b+>IFuteTht3PU4n5*w!naj?l5R1j_j4! z{u(WXG|IKGa7i(L+Mn`XkM>DY#$!iq22)i_QPuz}x&(j9>U4Q>-ftn$vyRnTobdA616TDVV~=Lbp-kg9Ab5^;Dzl$7`0R`iO+ z+6>Q2!X$zFd#5PqwQ_w3ZmHnUO}gk7Rw_GH=W{@BL7J-@j_+ENJU*N0DXd1a^QR+~ z5mGd)QD^_pHAsta;>;8W7t3}8w5Ek%-eex~*YSv~(etyTy=VxH1k z6{PtZz*w%9O4YLO==FK&Hwv;$D>J<+$E@H?&T%RmuR5 z({u0Mi#I3;4SLNUX_6%91vK56(;o3ARmfHl-J!ebvGx_9Dcv2<270OLX*HnQ1w|>C0u1?VORI#nNI#hpG}SUaVjCIsJ{eYB z7Qc&MK%Wbh5=mkH8e}~N)w0bf}%@? zU*rwXcL0B~@RUxRMnyGi7Kja9_y%2FrTM%Fr&2{NcJ~HqYoS;?A~{vrp4?MY<*F^u z7cE!azpg2EO;ntqtP4d$7d^e7)V59NjXU(% z-k>Z(sLrQ|?({K8u!6%++~NYT(@if3r@L=cUo~7YhM!{! zjXE?}#S5Z2t$sI7ty6~X(5fSXC@Nwk(JMq0G?9)h>K#?JC31cEfVVe@WUFeMzI}b0 zvOBqcgANF{*on5Ir6oM>W9a-arq|ObUB^2gW@sJAqNa&*r^GJrufTKGdf|)8{Va=8 zgG!@@OLrpC&Qc?SPLCn}6_EJ`_1|3LuB3WZdQXnwG_JTAy5GgdXYqmThttwWurJ12 zbeSH#1tN+rGdvrbl12_^Z4~8sh>5R1FQM#X(O>-&-W?UQ&5l(Xif` z6n$C}#cV|vK%oq8$Rxk&SmWG^K;h?liaJgd$|X>_i#VX{S^0Pyqb_T zZ!hB_lfF>KKH24Ksg<{RPom(&-dJ$ZYKqQ3p>>oVo=O7EKNYSGhQq1k?wRE7IY~T? zNjPlbGnsCD#FB))EQ@FGjWeQrhAl`Ix0tmyDz_6J!cCRr8D`cML+dWPDP~UFy)qN- zV>6w3HH`PZKuRIwOPr8NLudyOjRbW^h~Rcp5@i>~k3k_IBI>@1W7Rlo>R zB?~y)1|52l7-fl;!aUsFrMo*= zo^a+Sr>2^nK-&qZ=N(b7e!~>R!td`AIw1v{OLtL3C_Du0g5h+hCg+@>)13Oqt^xiB zOAwu}6hy)N%?k#d+K|o@1=^!c_o_)L{pg?484SAzcBq@7F5Z2&sDCc&7^t1cvHW*o ze6qI2OTU5ZDp#n(33Cagu_strC2oe!Esc5vM#Wo%7T>3;&R}hl`p^zL0{%ROg=o_2 zUMFd7)wn~F?l9Cp6hb#Zba+|e4=|u)adlOcB~WLTzg-l?#lK}X%XIx4dG${T{dCo@ zkDdOqwf?nmA}y(_$u+5UCM`F%uV%`@@ABLleu*{8JGQAAN#UAvJ=u@<8>I0BJA_q( zd5$XQL+B-1mn>dNYzK^N24RSR*jFx--)Yq=@rF^W83teSv`pUL{a;n9S}eg&u~N+N zM1h;2D@ii>ZjY#~OhG@8i>p6LmDd@Murwbm}jZs%Tw%R@y8S6s;Hdrj<7{*>6erRkV)RE}!h{!Iur2~36 zK?)S6nQj_Q4-%1>gw%OLTprRQAMo%83BtRC@O97vGiduWp0DttNL+Zv^Z2bvcu2wx zQRLHnG(&X?=56Qq0%~=J6o83)J>cSe3>4cNtPHkiu8-$~C?pWRHW%0bVOvO#ZPRAc zIG)SJF>_nRg&YS<83|X3_ck7}&t`F$4nh52TKZyr05j4O-)R zzSkn!@VlMW?eRD2s~D!Q%a__b56>u6G-6Q<)sbDx@8(V|C%?w7zpEN;L;0p4Nb)z}`*2=Cp}xRV z+#YT=^!)6x1>dDm-guE0f{Ux$!+#j;Jj2E#&!7fbc!vI<%Rr-%a){6)_kr`zueHP4fsc#8EU7a8i2Xu z83nz-KGoQj%=C>%VfUi zKZpsOp0-3Xd((Yy+M8yPnWQ;}$&WEKgn0c??5pU;w4o=27S`1SWCH=-$I#SfXm%J) zK1r#`2!Is*&qT(Z!a`ptcGOw^R=D>lyZ>;A)*cqoZ44n>jEklud6ts$EEaK=l5>51 zedA2xcaQPBaFtXWX9(zWNw176Sl9Zidr4;NJs!8-<68=QM^@r`vInT;Dux9Se#VJz|CVVVUef%L_*K*7pdfvgJf+PXeH6APk-j%)dy#0 z4z@%^5oZqXwXNC1R~*^r7_KP^@{+6(nV6F4-`i|dC(UBjTl1S{(K5GM_!WGrXmWG) zip$rg_}c2_#~X%N;7wkYmSvEr({Jwg4~U-S1|Pb5rBErPe5Q(Yjb4wgWa!0FPAF_a zgyBA2B;4wwCXDcXD0Lg78htMGR=d>0N}3U1~bRfJI_SDG$OyP@YIZgq;zWn|&}*WHJmhaZ0U zBM)PmR3E14habj0%fdV~kf$Ziqr2##FI(g}c@4KgJu+U&-3e0lP2Bz517QpQF!xFB zr?@A$pXWZueV+Rw_siT@xTm?Vf#h#R0ZfAQKipb|-{mjb02jccF+HH=JZVsO^{kW`mUe(46{7{S3reF@q^5Xl4Jq$)pQqs9GZ_t=!HuF znpTPZtcK^l!+xT3>ZcSZ*iUpWxfe+5S95pA^nN?{!<6Qaav$R!;~wXJk$Z~!=iI*p zYQMC!?oW>=R65Oqg24-4_AZjpUk}^UC?zT7_T=VAi@I1Mk0a_H3O~(3ryQnf z;RR-oK>QMr>awTnPl+xR^!%^8= zg|>-pF}+IRnjzU6$zAMgKT0Y6nVn^?+bUgXdmPiJ_VNk+QZ!#@7fpA#gS~pRd%ftk zov^}~mc1JW7}L~?IeJ<^+xhSsm9X{E|6Q~`CG~z66h8@czeg!lKb+Gz?xRnh0Ji^Y zI$%*#$WQ&m@BahE$@%BE(HpXI3cc)b9oSojdJvRTk)C*wI${rax*ci;%JBKZG{SM> zPPrf@VjI<=?=nr{BjNwnc)jo+KyP>=`X8@6jMW>?fBheJWK=4?_QcYxKSpJU{cvkT zK3(@`Y)aHu$lKw1`2CS6Mms!DMF&r&KNGi~tt7cI?r!wew_{JP139Vf4|m0>yuKRS zaMWK%Z8*}TMm6UTe9)N%Eo&gmzS)UAOj!gsm^??zW;r&c5 z%Pq>bJz(2x?#cU7n8yI}8=GdZz}vfmy&t_!d8|*FY7g=Vav8mr~K901`v<3<~&@kU-1bU8)$5t@XI%4j2Q=CrI z4*E{UYm(==%YdiQc8*?x%z~{jM^U=`7>$M&-|4pKDr6eTHGo_A6ff}pApR~&^r8g% z?iUSXpW6t;Plb#aKU;VpN*nI8hb}(a?6lbvI3&LMY`yZKcxUVMe$4bL-8W*CU3_Vg z3~hh?Az64A`tm(vl&Fi&GbmQxCCDF&e1fid94FI0g_8`TTr!@)m*0hRyYCXi*AG+a z^C|R1fBc%^{hScSgW+zc*}Zb;RXX0EpW26j?LNrnfIho3h&cPW3lMQaFa(jUWm3pK zpxqU8Kf5$+3f-lFtsPv;#3aPc9Fon7`>9QggX7`G2a$wsNBbg_N+!EAo8I+@Zn$%r zg#J}<=5--(Z(7G>!tBMy-G$HSdp zA{gr-{j-`Ht{tRTY0m8g=?zp8`oBE|qQoGig{L6IdECc$1`zk73IXK9dB+;`(^pb| z%wcHQM62TY%!8)SuGtPI7svoMA$G_D?UN%s@J!4C@-PRyC6@yt+$sS36(jUVif5dd zhU3lJx;wx?w=PJ*@a>VB+HCPFiCDdTXR=jsSkG7{DA49`oz3uq@o05& zv|>YPb!e@QK%WtB{@F_H1vW@EpNoVW7j9$#UmFK^(%yz;nV%!ex})3S(Iu%#d$V_J zZcCzMXSi9G$2GT67>D|V2{PIz490A&wu=UbFg|{PAjWO(B4qAhX!ELQ-=P;>=H|D! zWdC?2f<1#@CEN@tz4H#M-30NnTOcKE?t*3iHu7bBZBu=*63V)fzSz&Ux2R?o-P0+( zTYA#+whkRiJ;i~S83Y+G*HtX4nL}rU>=t`VP zqI4B6@Pa{q(5G(c;s+(^gW>tD4?JK$tZ5HF7cR{o@cbZ2UcR^}E6b0G;$zE7*v{kf z+Pf*Qt8@n=WzIgZkCtgau32Q! z$?~&M4IUSS&3zA4p*R~S=-;91@0Vry1A_1YIFW$o_c==j6jNA!Y#II@J12^3yz*ID zV6a5`7_JKVFBo(qUi_FOT`gUX2l4oE5l(oqy4urMSDn>Wy|=omK|=5KdS`mQ z|E)*%^8BnIU)K?&n`B{@=Q|yG<0eVyTqg_nG@DI(;<9G*vI!fKrOTQJ4>m8muGyUU zC3g29myR(#4LShsy3h}Gsy>S=A&2n~e0m3~Gw?#`@3E*7YrTG?D|*cL3>QHS&?GQG z3m8-z%>+u<^BQJBQhXl;r0*+I!ThU{J8zvVOzhn|QJ8e1#AAX`pD7kxKWNxS)hsrB z-?54_b(!9`9N%vi&8lHH0?#SH{cAE`(?oiFF->)y7onE3A?&z%i^2X|BX=$o_LM*2 zc775cmSwbH46Ff`HA^^(|b(ztYJtYr?UX*bknGdix{=G^uS{GYqr zJ>_10{`vHY^&|&Gi7w!jNIO}()uD?w;fB_RpUn>ZJlSr?=}zY~yGrC?+ZqOPOhPA2#jdru|Vx`KWCkx6O4Zbwhd^-45~-JpT#08n_*0+>4xDjOQ_5^dgKEHiF?t3&+9= z-4kJg>q6gze&^S6Hx2V@ym})_!~|%?JNbnzQ3=lh217&JPIyi+;&IjhGmY|(Ssi|v zHOf!0(|cLle2kq^{PumBk6x9|ZzJ=Kkjak=`AVVtFGh7f09yD7?q(K?AeXORgzAqn zP4nWgFv=TWx=3V5)Q-18Fp60RuyB$)1sI@9b138}bLl?jfklRI!2$QDma)1645Hgv zWw&Hz6TyfTa1WzStJLXa@j$~^n$>HHqf>V!@@ocbzfeU?-f`Q*_1xo3ryWC zmoZ$iK)?M_w^-X&-`6}mo*YlCD^25X&e&zGQa^l-P;ZU@()bdlIWtD{&XT%9yQ$imFw_8w8z z@0HGfefG+^nyi#;Lw%ij>V&`XimU7onMTnW*uFmng>JPkpO@ZeHFd|Gy=v|rk%)?@ zy{=h5(VkUSW{ITK))BBNFNO=(oF3z@q7j@}z>MDV$`Kls39T}qVk<13*D}zf*Oh?^ z0q*@q_fUt?TrcQ!mw_6%R4v%QJfNG!V!%2YG5~{#^jG`vXxX1cI)6!!bXV8iX;xRrr!=X-3mCbw$++wx$I0^{+{?!1I+^i!v?_>xw77szUrC*^6^E^0d8nj0*XykNF26{O~#={@^IK_o`W*|%?xP9&mAia?x+ zU*dT}v?))Jh#)AzY(*6Oqt$}SgPKA`9LK%zUD5^oyq3m*3~;d!zsMgZXte_tJW3E- zP+NJDhq|F8!x|Tnf>_s{4=+*FbeGoxoGYJEmUuu8#!omv7&e8qK# zTZHgZQMMF`5TOX&qG%~4#R9ffWeGsGO$@f8*Bx8cB~6mcMXlvZs-g%y41p!R;PSkv zl`Yv&#J?3iv(=H>2PTx+V{M}AdZnycGOy^CRMMT2P>@wo08W;mm_h}zAR;Li_PV+v z3cOJ&1FkXfT+uNkQMLkGE7}3#rjpXpkf)bnM24Q1ujB6Lewced_i^qC?w@gA=6)MA z(Ldq-g8NV0esACxbCb5=?jF2nlIN7 z9+pz5Vb@2)W@pez(pV_JHo+Hpxzi0Y5U`k{6oRd}t7d1fx&;r5f+)m)*YF}d#r+oG z_=7y0ctPSJ{izC%J7dt}v#Io-@O+c!>ET?GJX?W$;01wywj$u0B2PY!n>pbA9B>rx zhjxLj46+tZ0!LsBd0rHbCCML!k7Zm-u8=PfJPLUIdzwH*UK4on|AUku;N^efc@2sa zG+y`{0%-vrXhi(Cz~tAx5vxK^{6S!B9?GZ3!}LNDF&*Lo4#bNp!2d;@`eQ;^1@QRW zc!A;MA^lif8-bjrM^?WDo+6WHrvouM1@Ux*O;PwI5+V?fzk?ToBtUX+R29PiT~rgo z{{aC6h!i28=kX}u_1nT4NaC?LMZXM@czG)Q5M+Db39LUokr^TY*03$Y@o(WsvB~pM zYcDvd!$`8YEcn}96hN||Y+A!L@3?Qt+6tM2480p>+$z*Z)(Xw0q$`4`XfX7W z%(5ctg^9c8d6~e!u>Zk5uBNF5^l=K*R8}-mGzyyR5Mow}?b~a7%KnTntZ`RzSL6QM zyMjgObY~PA+03VbPH7++Na2S?etEFGTVT(E1XM6Soo3W)5^su!;#hF%;Z%mJRBe#(XW^a>tAUQWqm?}~C|u9obHwTF8Xcba=U z_a2;gfIb5B(gBs+pd$6C9da#g9!{Hy5h3V|zy^kq0X%IcP8*IHri0!pU9F5U5YeU& zCGe{>z8O&H7D1uNl0yWJ#TVU?XB^59>!Q$ZI?Z;$^e*$v0*W9Ju;zrAbjeuUFrFHZ zR~Kj?C=YEk=f$lpalX0X+D*M&)|(ip#|ZTZ+^=XBxbIf(9_~Tz5$+S*FL1xY{mziK zF!093jfp*EB7C+=Y=aB0l@nC7H+qeZrSY|rehwON&ihTW^ZP**`up2-)3DZLsWe%4 zae|%VhXKX-VC-(jCFyCzY)g$3^B4u8Xw|yQ0(3)^g zQ3}#~Ask=988-|IAU=Hl`6W@>Fx2OgP^WpR1IaRnyu*6-b&MuK1Er?v-GnjW3GNQ= zjodr9ALAb9p5lIenBEGicVTob)Rg{-5P7*O7NjDYk#wI|6#lO+HHB}TlX(dTt-R3& zbxiqJ{}}YGaH}INI!oVfFH+K1*Zzr+);NIe7bnqv;ZhTIgGKK+`;S4(J=`(wChj%d zCiiacC%B*E{ss42G?G1uO`JjE2ab+jal}30p9WnkG%BA7_%+ei)8N(LzclncLupH) zcxw}Vn#@)D#;S?tt0s?L8JC9MW=wCkyU_-BCull9%zc+WliLKh3isNI9Kbs zwDhfT$5So(=b=UKLgRW_lXh6)y3|BXYh9O?mV3AxxKrF)xgX(vocmesi?~wz!Zfaz zHC@LkT$hHvyVJT}dU_{1_FQT-{2}hs+~;7l^qVP->*YtxT`OFdhNRDKuXVlTwA^0l zihYXG( zKH$tCKD=WWZhphKsQ_({*QDu}fQ1@K79B(NrhMG5cSAMSRik4te)yOn*%Kv6dy%<7 ziwAYm9jf6LeZT028-1Q4y6U=ukJtV6Gcmob@NHu_+qJG>P)-rzwUlu#Sw>GmH_UMg~@=sl_r{_B^wj*w-= z0b8LQ$K0p9*hRy_rR@68B>W|rbaP7+6?{1IQTh_~=35De-AT*kN8m~5k85kIDGqp; za=<^MYhJt(T`3g>JHYVJC8S@nb3krvvq3Mpz;GEO?`NK`t_|(j*zL1LHSF!27e)#I zTI%Wn7Db+JQ2$hlZfVlGF}dEBrfeMlte2pc+#5fadbwFd0qJoBfCR*G+)|EZHMNoB z@t9nV6cOW_Zn`s$GihYUaG_p5YB&E2?(bgaR`ZugwSUQt?8jabt^TFA&A;eseM+xS z^WQtUk8nTDeTl|ry#W3jY1YI1H!L@{{~qMVa6d6rz^+vLd~Rx7Tn7PShaT1;-KHmeOj?q}ZwS)C zJwy~K9atcV+h|O0$2p7Nu&-%o;&sgVl*{q}WRzokOmH*Ye$YqO>2CK|a@TU#LoaqK zcRTm}z~T3BKft{i`20b5JLaWm)ADG~bKLKJtw=DKbi8+ZsYoJBgy%udb&Q$tKb^+N zz{C@2cnd(!Q;_1{ByEXLoI2%n=#t;gBX?1Rwdrw#*0w{Bh{fbS;Ef*; zM6&0gBy8}%F!@U6O-;DV9}Ka0SByQEArJBBAQ8AEhC;l)eHC~K_blTE@oX9{56lSO z%o9-c7Kz1A@E8|myS27kdk(c)hpxrLo@7nYTy>#J-NE5J*_$Afy(2vs_4Ou4me=lQ zJA=7l9&m7z^*HNc9&m8tJm7d>WO3~V+e$2nje%=NR=F#HS6<8A$GsibL&`0>CDq+?be!1L=0+{n-Zb_>_g(Tct6C z(OjUbG)TlI9wkjj0pQz9i^~hPuNwbx?zUMfm*#Jul_lkleX~gG*;moi{N09az~2@- zogs#b5r*;blxiF|%5o>+n2zGYEmZGoc8!Nt2q#0G5k-PN_(aq-3z8yAQZY`PQFR^i zR-+RX1H(W);vvK%#(8LRDEP;~QyJu(4iRIhZWf1o_s+_SBs2WVb9ZF% z59HCLm^`wopV>dJ7s9}BroQhKqQrpF5=D&;DVySGa}<}ZNHkrNbd89oM(EHUrI%bb zo|TAY{1ObbjnC;8k>d40OmClO>v+@AD1u&pF^Wk88q}Z7=@DM&hnlIy0H{o$fzufAuhJhcY{brq|=8_*?}LaO{KH%RYq2W?-o^e1pZ5hIfkb8kRVbher~sAiMh z>=wx;StNCklqgDF)IqByijun}%Nn&MQ&LmbMOr>a<&k`l-mxV1SiUG(9*?-QwnwyQ zcKs-O*BWVTub*49&+^c3o@ZB_J+xMHBmU1Di7KGFs2!7CiOfVIfBcB}@gw5LkHAu( zR|@WSHULqcwi#&uhA>0nh!)dT9~P217ki({gyZuR0tySM8p;)9)hmkeToy>j{0E_9 z=v|=C#(ce4Gj$f`(#Q(@Y3`R3R)L?vDCL5Wt98`HpVIX9a_KASC4$uV=_LfmOR0*i z9xbhz-S*Y>n9d$kw1}^i4QYij^-s@o&AlwCEdHi@sd?{$5RwN8Lr z(uM$KJ6cE;a})TK%OqR&X-wVEIvmUTDOd%u!C^;3cQqg&GwtZ(3!$UdDoZfJZ zM+bte2=1DoN-WEo?iOsj;L`HI`gfmt3VM2eQ-H@Xm&BSNsS#Yubj+{OOy(?Ij_*i^ zRy$F-;;^1eL4_yz838L;uM3xg zD#ifvb2y;BPQl*#D$?nzVLea8U6bZ`y>nOm1;Ji1L;}BoVu@>0Yx$t?Drj_Q#K=mo zKS(3?hqRno%9$VW@%w>%k>rT3895=R=j?KRp?qu3$eFneO#hncn5JvoLJ{7!3|V(= zMJ?6s_3F%99(;|gZXdoUAW3slbjz!@-DH(Gv~;K3TrO4A7y=?RGP zJ`>kSE>aam{Z(7BOk5O>Q|a@uvb{Fq$w+{UTbI|u!(Q!eu*Z@ z(Q~;E9XYace9HubOVzMye8!MKs4w@3rb>!v+_`8rjR%j~#FRxXvJ0@zj7O_r+{E2Q z>j`JVLu*@OX>0gu0@~b{1agBV_~CQ8PmChUJ&Wd?$-tEK5)5KZdh?y1+?^Il+0z|U z_M{*mC3;SW&X18&=Vv3K9FsQ%&@iqWuAwyn_MVI0``9RaJsnEq$9G2(7v(a*T-@<0 z?I}3sdSS)%)5&JBaw0a3<;Ih3UG{O3qQ%;nv`FOA9Yu*`4&9N|_+TP?Zv+qS^dBVQ ziK|-yR0=}HlA2^eZ@BA!oLNqF%nC!qiF(J3`E4UCap8YCDOS}z_90JF=%;V6vMJw=<-+g;8rDu zn;D>77v}DlbMM#T+pVt>2$q9yL7IGy`UqGu^FqM3jZV#f0tY7FtTKogMu zsJ@`*=X0$ifS`wSx>m{+OwAB-M-&}23#(?EBtnRxX$D|W|G802a$mjv;Dh%pEvc)T zZm)K8c?Bi|_{&-OEnQOVqFh8=X!^Z*Q$*y6x!h0hDgTn=?c|u_&G83Z#)iC6{+m4c#k7k>PR#lQ@Ir zPT&W7=(2na$9vAiA!dEpnBtm&)oqMz+NQWYPZtb^v3Y*sERMPbg#WBzp*@Ye zf5TtrQ+!ko#>d=cLp^&|HFmZTn61^3NW(yex=}Em+lwLP1V47UmvMJvPPqMOFG*8$ zqff2j$U)c}bdx28Mse=N&}hFt)O&s}%g`T38OmI0nu*!DTwD)jcK?ms8!_kiUX?=A z*8Wf}qW!5^v31Aon59i3ug1#WikO{YLdOnIPbjBu7?UHs0SzciuN0pkqiFrBj)NJU zT^CnR9S2uZT~`#0k)-_q`~WOp$Hkxm_<^Jft|RI~QeI7S*K@bf`Uq%VXMwaa0dd|f zAZ){M3L^>ec|l-sx(VE*+VW5nzqOS0TUY^=HHBdK8q#}V+wd{6I0YOi5pPWS}{ zHH3(j+h_Xjb^V(IW}^n zc!)YZat||K% zJjgm#HLQ4N7nwWfiOJX?hL>5IVH#!HJ^LA*V>o+u9k8n-JwAI6-PdLNej?i;^8H|p z<1XHxIvL;lvj@E=@d;%T`c%9(wkTpJ-+bpUO-A6P+`Vx>luh+>S1KM3wV^S{wiWXy zMY6WwuUPHFqqGM_cK0)7(%^}(KNAkD$UbPKJsz3fm~1ay+zT^}_>~aTBRnq)F?1&U zL91!qD%&5F#Fn?0S7?Dz93eVCj$`Ols41UF)twR(u%1k>3S>f?6>JtK{hmH8LkZSQ z7kpYv;`TWGSn$bhs9%fp-FxC)N{+ef_cP|A(2Cv1+fUKZMYMCr7;l$izOZP#nRG4t zPJg@wPPc0wY`go&G6&l^zo^H*n{W<`4-Nq)4zs$Jbu6)wmsPCp!{x`jCV64>)z#MHHI&A!wq5V-n>EaFPXVt zxt4kOj)|S4eM~esEG34YBsW7wR3h>GzPN*qImJdvi)eS;8}ZAe&n_u9m_BiK zoSy7KTUrffl=m^KYuUnM$lo`rlbJNyO!u}%<291~-Q1t$%F+|}lohatu=L!nBK>9r z?d(%TSGTs*k%o0#jWR5wy`}1;ZN%+5Mjx!5asU*H+=+}#<5J~f!k0K1LD0WAgTBsT zJ0*x{x^`_gy^SF`>hfd|54hfIHhxp+7K`>3Je}|k`VOFmo#`~n*0m?`Pfo;2s~M3+?d+f=Zb(*d?T5=~@j1U}vd8Mt`AM~QWuOmc zH~{f{41Rgzu*;I3CuA7i zEEe=IoVWJqW9S4V%9YS&`fg+{Jx3#>jd;B5t+KAmzprST@)OuOZEi($1hrOe7K$|E@B5~Izw&l;chBib|hW|I-Q&VJGcP@neZgJ;qO2dw_c@cL6QO@%z&qItlyJ4ZAvY zqKy9e2rQgq9lkO8fKL6gLO*UC`@3E775^6?%SRzeeQvUk_`jsCe1z^OA5-GuT3^cx zR``ZAjBKfkK}n^n-=o4erY!9udTm=Zj?vAz?+eucj!Wvy2=@uBJF|bt>GoQ-hrki84iz^r>8r$+9}sMPlNa`6kN6= z4CX23G+c@HNBcVRi!b`?X+>N`4x#nr03wVq8}unAS7Ql&x)^+HJSt!oQtiXuo^vSwnpc=?DibCAvC0n`ck^9q}x@aL){P zdDR=4!T^W5-{H*yeV(!e;|uNu&f_@WMW60W&$S*)K?R(aYz#L^3bZcc5@~P+ zu7Y~zpg-_j+Vuk6$`kG`_Jo1`oJztszUf9)b*;DepD8?ZlV--=t4Ku+I0k-dT>XFI zzWfHjdx%>?y(-;`$3~aZ@wwXb0}=;Pr#Dd2E$8l44dDx_p*)a#yX9&M(N3Lu)esyu zAW)J%A?tuf=3-gQ#{1x7zJ7%(7MyFrn^&PflVg~9vj4^n(}Ug-pkyb8x{f%w#F!K#j+%INtGGo``nY?Kr=yX1?4QvD9UJ}p8IN_4Rx%Y~w$EMy3WODHuu({_}x;2ev4jq?J^ zv_sq)j8JX>;;GvMc%!UdaGP&#`LYSEd%bSUak_IJHxlD%j=L?RM_{IovLdA9SxMSz&OVi1sY|cE=p$ z-452^TBoV179(>5YmN@m4v~+^mi%6c=xWbULAmaMvMjxfp3(!U$nqmn!C>tg1?eGr zl92nX&3U@(eRR7Wwn~VTRCh=pZ8_a6K>p#q@9n9^wxK>6L3Ckzdk84=kw@5!v>ifc z+acdBkwcup*)UhOVN7$rD+B2>=meQN5*fs4G2SjMru%hkZl(B;HM?3Y^o@pV^j{tA z12>$hDW`;oKPs-wSr6giy?w)N7=10;=3N#VM;Zb>_%u2~S|G!!xJH4giD)LV6~5mc zoPZCwYJMc&>C_A(51;KBUH{#It}5=#jM4wdNAkK}>vZ57!+_7eF*D<+s?kr3(H@;m z?gkBtgI6M=v7{>2$fFpKwvz+%;!;N|*igQK05O4=vH?0&|7Z4UM|J@>Abi&QFsK)? zdaLZ^|4H7H3%sOgyi9O&a$As>PAt*H0-8=_UQ;B#!nPxSjcM~ghGg18GxsCBEax_x zn>ktLOM?6fS$IBYS-FBI;MAaxObUCxi^Hr({fw^d?qSR1Lk(XYb)b`tfrr(n^ z!t+Fv<}q4V4)MeGhA(q(<}R^neO(k(YP}~ z#~?f26_m#4uU?SFr|>H{*tosENGy6hMddG%$^xdv=XDHY6I_ATT9-hyByY#YCd0#Z z-0hQLq1krg>)WYlhhAonYZ2_Scs@J?_eOQ?eQauJ`pemG%324+)z%u-j{K618Hzr@ zj}Ue+QzAV$DETj_xk64Ydc}JqKmqPEyv*OSF37@~BtEO=6eXv^SN%9#C4hgPC;TmQ za9GkWt-{$hbTNwRv z9PL4rp3RTlkIKQ9C0!)q{Zi?5=j4JegUWhNj>iNS&@w0v$Jb!YE#~M{T2Y3AEm;z` z1Xb7)C3z>dk^bjQ@g5QWnIyTMVldr%(C&Mn<1wMLN0x+}@YQ}ZpUTdS@I`2c&=!9q zGa&*W;)I8JiyL&6jz{}K(--84d;OR1e=8tFitzK?IlzwWBPhfx_jPy+;uX`w+<=-l z;e$=^V4e1_1xJNQ#C~faVxaPQ+Umy1qfKHa$7||V$ zh+-BPZHp)YdK3~G1!rWx*%4dopBLl^25g=Wal)gIf6!CBPJ4ru9-l#Fu>H)r`w@*` z8p(j45Y2!bU7|?x@%nc@UKN>6`m92F`G30xyp~;{?*?X>bt1f;%ff4nh4+P5dKI??^E&BYc+33}cMdaeTn>E8$1BYsae|h;Ps@Qn9VG{{ z@Y-BaRO z8r(9?ZQ`gkS+JSgsBp=0oLT6PEl8wBWbw}xA_-e8Bav~5>Aa0ifhKG)L}#6cxuFUZ zME%pE$ox?3pD6B#N?j1Y%N7U}_VF>?L?G&d=&T8{68Xcij|G~8?KZmeA=rLF6F7t2 zH&L%UT{O{BJ^u!#He9C*#WjHbpN`k@gO-)()F)iy0n?- zeHKk`zjm4i)zE;c_D9c)LCzR52`%3*2LYZD4GkLAe>2T`zFC`iHqh7HO`#Kw34>e_se3daD>r<^}xG$J3u;VLg!+duCwe#6f z70ngW_c!hCkMFiv&Oy2d7SoYpB-{iH_|Moclbd`aT20ezj`yMkI|w7Z*@8YyYhgI! z0r2MKG#p~>$$c~Fv%@%H0*yDM}}=C(8qFsQ~03!4VCI7ud?g)IrcCI2#VT}Tn@R|}sXiz3^C zq@m3<&Eox<^4rkK<674iB(;sLn=5tVLH}{# zVwLn>8OcvX^# z_h&R+A3On;8@~UvZhk;D9w7O$oU2T!l}IN>Uzp-&kqq|ZIbrNl2iSd%nQ^T-YIMsj z2bb@to2=clY4j3C-OW1APq3OfEEV>q->riC0!<#s=zpFi64Z5drvQ*y6g)1zcB|3~ zgTX#!T10vj1OtQsa}mzEWK`o97^j^N6BzDT4z}x%Eys$l2YED3tdDuF!mOi%{-8?* zMUZ{eUz6BMNo;-GV95 zZ>FBV?f7`NS%BA1Zf$k^tbjO29;x<6imzh{q?6Bo#S}ee84YnANzm-nA z`*`He)O-hLZi@DCDkn<+*8WY~&(v$P7x>{~TXBbG&G&M4v8!Fsu-a`d@bE%c+2lyk=M+udntd@GL7M%C|mIE z{flx5|MJ*fibr0)bNr4(`}5Fmc7tEx<1^gva9k=|Z*L)cPwc*WICu%)9e34T{Z8aX z{GqXNdGoctAo3@wS3-B?XU3((Igky)p)B)Z zQdATjhh4XRR1k?Nlvw`!=X}}f2kA0_i-Sojs1jeR6_+b?WX-d0)PzJ1V?Czm95Tgq z=?oIa^@S&4pz~UP;70X?Fo`>^hq&FrMknk7b_}LMMOK2u?Mdi<^H9}wgE4NGKtmy- zP?HN*^ZMJbZ#J)ADBEBl*5#c9$kXf{kEo^;$cf5w(Q`~*xe+4 z)^HvM#&=8H&DmVHLON@0KkLsx#)YzVkih*;8%Ht*xZ%YLA3c;{#*gx{q$qjY&TFb@ z2t-u)k|-$r&7#3evQUI`B8876x%3%c;f2yvNi=mqmV{!tSP&1z&SmyBm&lFM1g^b( zJj`OTb#$u^qK*tQ?v2Fxhoy2E?8l5Qm~r~C*dSxnO5e`QM$tAG;tx5`3FqBVv9@2j+$&RCcq z3IYjTNQtYFn15~;*x@i5>DX=P%n<>5A`2@~EH0nu%Q(Fl3Ek-CV|q8vQ%BLGHcGRZ zc-&ODZB?bm$^-gan6Q`yIyYJ#}kP+Jtx2c%-xdt%P=@C7@R&L%3e7?bcc(}BHXEnzU!17f{`q} zPR2YL2CWB{P~ppTsAlS{srfuLC6TIpyx*}a*YDSiObmv7T9X0%ZyM8}6chBg1>=zRLy?K>%e`qefw{RG1t+#U ztK0&&7K8-V2+P)AU_C+7%o5A#nQ6;@3s)x}%{X9z8!^LnEz?aPs#hXp zJ*9-LdOcX-ub$jm?TojrWo%__H|J;#j}#QE)_-jP_8ISXJt!N z?$)_v-Pn4%Zfp>+UG~SuMtr^bcF7b^b+FZSY)Xu+DqEs-_aPA!5%@|vD<;=daqW0% z_nOjJEz3NqAtJ|5$W#XJvyu7?9oYZ z2g%&_uqhf^42lsOAI>ItCfL99H{AaMuq1GX?L0?O7QHjcaAEw--_gBc^TT@qx}AX+ za(2f9>H{VI7I%QY|2WLu!f8R}d&Qjo0gRlyB&dU84y zgjd1WJjgLdrxq!J#O<=&0jw~0hgK;UPVh7xw8MBl1S+Txu{wQpvmz)WFI0Nnwk=IB z^?HX<9jmQwuGao{++$$mA)`^|k(dj(c{3@T5>~^ZBpu!~)PeRJi*=^Z;DZc+I5*Xtkp8j8TMd zf+W@SU=;7V6bC8tDJejwB1nSaO}(Ok$QMrGFOI)oQ2$myYzwEcq2nLmeL7=IWD$CW z5nr*mT(;qV5SB0vUY<}YZh|-7bQ6-5?#ki$)b*+#g98VL=Wo6l>AfYuKlR1r<&QJz z9^iS3`!>K-5Azm|+kULQzY_49uz`;;%_F1FLoEzrVZVKTry$&XGiF4Dr{K%Glb4H$ zK6BruFxCB=phV_KM!r37lhRHZwSKM z-iCyQui(y|$;((jE!L(zGzPq(JHN>D4?V<(FS#puNpgFD6!tT0lkN?qUGg)d4u63sNu+ z5jpkyA^N>W2!1N#?}i8#!{0qfQV1N1g6h5G7r+ z%*z-n+Z3Lu`(M^K*64SVSSLagzl0~Wm|l%G!Y&pZNP3UqtvfX=pZRVw+f6UJ_R^rC;G0JlNCa&GPhzQkB`4EYrr{ zz`>5nfM~AuHB`XiVB58t{obKE?NMJWKTBgqrS@UqhY}JFQXTH45Rxw8{^PL@(do|=VF~QR7^dDhg#HYJHkb{uO^_?E!?ZP2d;@;f&Pp=r~6DiC(kml z#*~!th$|~Kz)rfAyN`P- z-8X@|N*K^Xy92${;?b@3=|&-I8fr*4DiCUmOCU*&Ri3JCKe{f zd9E_cUCLT6dl`k;3F*)Uq-7uq+_(x*zP*R^^{V0PWC2->g|XCkJ^;;pJ6%T zg08(I*(WQ)e?*fQ%f#q$4m(zc|FC0e+T46iw23Vtk4KqyR8f39s$BHF^by=d%ISV^VY1Y_E-ME==HhVBp@?!6{Dq_?Su1)bO3@#u0-My2WT2(&#^*;!7`!!^HJ z#vYZY4}g9dC8^I$K*y{q)f3IlX_@i%u_W@|GGirJl_><(iO>wd%22(5M-$IbQ-72U z&yprTgX^56T;ffkm8035C1Khnk|H@pA_)|G&IoazDP(RH1W|ayahaDkaJ@i0v?Yj= z@W63FVEHoA{C@W}@%yL}#on0nLw3PpaZHwfB)fdEnB@Cu?j-ke)XjFS1#$pvKe8Oi z!bCdhh-%00m`JR}bP`sHoU;!?@tU9`#F_|T2CqVEWDlsO!bU96DFFjO#`uwqw@wdp zBgDJmrP2)1(I}x0RP=K$zS9WzW0In2@SqKv)`t>S1S>tM%95yI-!yoEs9WY01Q!m# zie|BBYSQ~-=7UV_o}eE~oJZ@wW4`sWn?y8-i6F6UKaflD?y$wweoVtjtwTI5%2L=N z0P-{i5rB<%jNS29tN$r06OE(8FB6^UoGPu-S4LgLwMSXJg75eMn)>TFFohW&ZC@!t ztD9g}IeQKCN?8h#2@$t@#-!pX!)H8dJ{(yBTakUR<(mYXvHaEneP6-7o_pH?(Rd^t z;!g0%DgWpwTW|snczkcf@G-pfcELzD&K(^pf!t8wqv6Pv!->s zZz0t4Ia*zn27SZ;mNQuI%{nR8N@yIEYDE&t5eECsRE~^u^X@LMT?;{U6K7WCT+3|pz(GHz>w$xk z)ybS*@e-wz)9+kn+0yX|xsy!)l||DB_D|DBP_Y!#=O}shAqP@sfGdIn%<(=Zea}w` z2&FDar05V)k%&{`Wm-5!tO_|EZlXmr9?9=~4ca(@aQp#55`{A@{7qLP^6@u-5tOF= z+YgBLV_Jce^TDOS7R>QeB1MwSmz>ZRq&S*vh=0*H28qyC@~@^g}~!1Id2w>Zvt@gH9NK7GH)>0A*wq|VKAi`*J$i+50)rrGLs zy>@2+LJp6f;;|3^Vgo)LrQh>prK9u*n1KL}N~eiYTX2>qE5ZrBs~~zoG~@{wrpRzl zN|G_JX`-RqqNwSrF(oN^fQjdel2DX+n|Fv!1iK)KMNw`FLP33KrngYg=epPRom}O_ z>Fe5NY4LayP<4aAi;8esl1bIBiF}C{8v)O>XO78hSX9u zRo8N&V5SF9XDm*N zh!S6nRzROm66NDDDn^T^Ts%io74wMLd7O)sJWZ&192cB>8|}^tuf&%<{UT@74X|T3 z^G1QMH0(M13&mQo;qudq)ujbN6&C1fC$JHos#Z&yJMT2!Fbt`1&dj-o zJaNt|)-32(bwM^gNh@m_;b%JaYO|`9TMjn~o|&xo6+K_%_t(7KkvM9zK6ppfRTbd~0K&lBYKQ60L8zLFczP9>X$+0X~J;=xjM` zWX3Ui3-G|p1FX(cfMk_FTsn-CDOt*yx@Su5iakr~e~IU;n&mYGK<(9U(oRdlp%W(# zu`r|J5o6q;*=OdeWg3VwLLN7~6+o@iDwj1!Qvuh9W>9x5&Dxc=WO`S>7xeRUh=9)peU)B( z@x`lTh16(FOq*Lrf6D;1LYM>z1{-?u3nk+l8j?6z;bo-_^QWK3|1MB@HJBRUNR%HD zMIJsBk?2G@0pGw!@C`m@C_Fq{l$USlo25C2FE;F_-C3cw#VhFBh2xAMlK4fP;Ddf35~Q&hjC1))~R3Ep#&H;Xh{# zc)yn83ehRv7gMXviTyfh#BOG7+xj;{7+PiF$W0a~{T08H^#$nUa?{U;5w(BwBoG9o z4U^;tq#YBqQN-I7jv=0jBEcqAz{g9p8D;9{4A~vM0zB z%?;VD39~MBEPPFqzKD?i7SBJ1*B{ju9Aou`#W|t5)BreC17wG$p+D9UrW)bgvcmnJ zG~)aQnwKA>TYG?oQ+xp8LJ%w~nss-?7OW>K9hDd=ulH^|%HaAtgyZiJJp}Ny_)L7m z)n$bBvM61tc{1>Cqa_@f^&ti1NWx6}9x+kAisKZY)@@GZ%G?aCn0+EqYjqGC$KKdC z(`<1IDCYPt9JoX|GuEx?Ar8sQ^qCupBGx29gJCM18SB=EQ+%$5eJ|3T@0cYT^VdHF zy&spWg=<68|2sDSpV}`1zd3rSXd)ddSFi3Dqg*H}R{c3*GbJk$tnG~w9B5K)Mf|(z zN1(!CVK-TE4-*D+3DNKujl)V~2KqZcS0W9V#{4~#aTs5Ad2*|_b`fLT@EKcY7sm6}KUG;RZ?ZuBxSRtA(7jK_PGP3Wykt7=y zle8ejlW{S*O?$FUYq1C9X-D07VaCHbzdkP>X<%;vdS7PV8zYA-p9#B!ds0EyMZR)r z=4uL1AxOTCT2Ko&jifl}Q9&+AGA|WmNnGF+Ng%QX*Pj?-kJmyw1w&d92rr9Ms`P7V z#+JkOSxo90*ogOs`dNFFdN%w;XFSN)sS3uV%2(ow+Q(z+*l)*`whxcn*RxcpP@PL4 zcrJ(n)z4;P(kA#q7U9C%3p;df3-RLt->q_|xYu#-%EVB61cK;!XIvqmWFm4fj5u~a zgg0IX9wv%0wx|%Y5j=!W|9l9W{`oKMEnI#tg>R159QW~y^XKX0thpaNjXxWX==Wdm zs~>T{#KLI5M1jPXU9(*h3(+d;2yetWwx2)dgQ$Q!ynYwEVU))qo_`?Iwixy{$lvhmC3nfGR0YRuP#zKPl9EiR;Lf}zzxs!+WmoC=RLWDiG&CAzP!SJQ#f*b zUGwVvockoku!$&=>rGMDMYABOm1fxn+3U<3yeJ9Ip((OGb3~b~@pCJU=}zs}cv<3! z-fIxSUNG%WqeOB<)0`r`FXx(zT*!;dvVRiC#iqJ{nzm%(% zbVbU!MdL}ms2e3+fT?8up-H>7quZ4{urF}2rI*SjO%$Bk=Hz{i^J{N6KiV!!)7kv1 zWvoPxVC35qPvP%kJY560?#zz54Pltr#g-9bdvZL!e>T-8c+H_PotBZ0Cz?Y>&L5-B zvmHEa4!9o9ZJZlQymCA?2V5_R#KvcAqNv&49klU$PsTA6@W*_wM#lXQr(8R8Up=N+b?Dh&U5(BEM`4b7{Y2Eu?&8R4jrAR97Ir;2hd#r(uy@BtO?VU`60b=?uScDa!o~=D zVPYR&*2OjW_!#@+MZo`o?zsB^7~98pjJoxXr5t{{jE!s`Um)A^oDRH%*OpNMZDiV*1A8UFMzTjf-x49Lx+hXtU zP@#EJNH#;oJd=%0FWzYBJ#KxftdiMW*my3l=cp`P`cNDUyWW}MN$yBKf=10tWwS`7 z-!~92CA6J8+y;&O{AunNx!>?*JH|lBEC?dDB<07K_vvb6l9OKYAJJ|4!$WqN2s(iQ z!fTo!@wy;j5qrVEm=}4}z!jKziMn)|EU=ne;vRY>{djX3p}Ued?Muy~%2vjN(DAs-M-fQ6OVNSYH? ze?Y&%`G@k?B6ozlm-`_1tK2uZ@1&#)60y|@h}cXKaRPdG$A7dlJ^({+jUHtJDtc*Z zid^FbjgLsnYcPicet1H3oe((D`97b%Bc^}zHhfF$5qJweLI_w6aKJ~_vl>b;6%TJ2 z<~u6Sg3Dp|E6*D~aVf!NgNOeNIl4n610!n2NuqVw4UC$^2LxPZ+P% zEYa=au^^>4AMz9Vv5=iNN8w8UN3S^xvab9~*? z7SGPD9R`C-&`Smk>nGJb=e`wOb;jIZI0uL?Z2 zXZ%65ZruVoY;ZG}Pt^uFiq-8f;do~_L)=ha!>{q8qL3|mtP8^N<2aU1(+rsJOJ0(k zsDQ5V0zE#Xey^aBKW(L@g@cjBZ9}2ML@o(G{ zJWU$Qch3>GWR%^arD-}T6Q^Vp9jl;d262j-n$vYtmooE{9j1w3H}OzwbnB$iJ<)BD zdbe>gZ#&e>y5XFMg^s|rRVKWiE5b|=1`oueae%m0H zqSc9=D=BEazRw@+L2m=Y@mRx`!|=0jMNqv*lD0%~OVY{nEb)DtsRrK);W7kaRnXy2 zlDDNO4}OdKp%=IwU5^;qf3F?XG~4JX(RN>&i?^37AKlHy(1xVz2;;AZ1*1hN%ySw? z*~5Y?ZOamc_ANf}aIoPmxEckoipz)quY(Ejnu321)Yd{cN1^ud7-&I_;bq`9n?kk- z^m*DCW zUcupf;tIPH@X8d78=HFL8??ehvRpg}8U_A3EvKt=d#!kt_$Mx2y!hBf{4ZWCcxUJG z=H}&NPwmik5!wdk4%Wd&>I24ZrMm@bo#UqOa&G&ZVd-i?4jF9{3lz4y{)vhRSJKF`_*b#r`{{FIQ{R#e7nq*F=~0Coaa~g6EF=>K2+*_ zr$7eK)8l7OE#6^~>&OSDO!y&mgIPEJ9Pao&TXFFoTG=IgcfH9 zH{ZBQ8`D;Aym>JD*qs06+@^_5Gg(@MIS1<-W4x~?H#-AN6;7xk;jVi~0Y8f{ApRs~ z74g1Ws+_2lO6`)A=PirR7n*MpM3E(Wh0kSU>hzTHr?<-TtpaZ!(_~pY#y=@35?LVd z4^GS@vV0`Wze=jKj_U~m^I0rfvWwKFj}kE?X>$K7Qwn)_mE2g#V#n&o(o!Rr`>^x7YJ~}?&>TdKNaoV=Axn?#6~f$6 zKgWH6MlB|#BOB!)$Ahi$BR+v}PFzY1f3Ej?-9UO|e`3`ye;f-=eK&HPR z6mI;#l$egbKCU4zn5)sr+|Ad)Nfkedc^% z!2Ac2&jIP5^BaW2Q=yG!U;Un;d|NR}pf?cNcsBHv-RoLA6aqN5w^8x=ElhleT1#LP zF?bef{+E|?uZ#761cQt!Gt?d9+^<^&W+K%o{hmlcorw_ch4dLb*QS~I@IcYLV>ym> zDMIxolf?^upm*j6^{*!A5L7IBGj|?zj!`zWPmlD_8C|GoFy2L`!Tr~};Dz=xc?wVB zsgD{sykMwUS`iO+jQpn)D2;8o5l4J-Tw-k4$*~b3MoGzee{9g+ykG~piz&_Qg>4GX zcH2-(^c%&9%TJ_9mFCLJ=E6CwGU?4ZBl1T^+|{PzKq7wag@I}92Wt5m}a;tROC z;(A)!6@)449mT5HAb($|C|3Tzh>BE_J4;p3!0vxidN*I3sZ!Ll{U}F4r*OC#?k4Ub z?x&z7%&x%}0#34Uib1~(wry)b+in$T>H*Jn$_1WA#_$`U&aI*U_9TxEOr^V4Aa2Gp zz33TlE&DaGM>IfGL#!6xVND5w+tw>CE+J`xVC4&<^BY7IFcwwBm{vt0pyYwdC8)vW zF;Krq_`M7m5{Mw6r%mEPF7)Yw7yTA5`Q*3HfUfvSM3x~|mpXC@RK$z7iC(Sr7qTMo znk-_GUIiEAR9uSSB~dce#GQ<11TyJEeoR6@pAL5y_aoeA_o9%}>H7RJ_-}+(e=_rz zHQv(Rp%)tezfi6E!4K-DdG!ZOJ1W~S_scA|%$?v)!905#+;QaskEoCKjlU^T3W${kj*?#QyFICU$p+2vVJEf8Y&Z33pqg-5ZTG(gt|Bo*fYhuRkn#j+IR zi(v48wR1$|Z6e&w%LE7{k)j~;I|9k&h_J)+Q@lV_K3vlXWK?^1DYZ(xfM<7=SN~~- zFX->kEWS2Ea@CQV`Uit~io^OXcXIb)&X_@z+C7%!y^qUzy)aDCcgVG(vry9s>pxO| z9hR|h%8_z@4lHks6@a5aW?EjUP^?!8y=e%15!c8CfyZ5;avslaoXzE1m8Mm+o#{;v z?|AH3tClM~FE~Y~8oy27q)Bgufy0-0;mMp?ohnS{gMNO8Ou-y^gvMkB{_Eb51KUY@ zupK{2v$w_1&y;5ure|_iS(xVMYvt+YR0R+#EYwSdDNtDLH&yBg%G{JUt%zrM%XI6& zs=}OCo{@zuzL>jJ@p3kQswr8fW%FnJx+mX;`5P;>bnAfYK@W?cce>~R=(TW>&+B0| zTBU`KfvvLCU9<|hQhi?9y5o-9<@s7ESFjFuWyiLE?9j4M5oTvfUTJzpsECX0lE;O0 zCRey6?ilE)Z^UW`y|U|JZN(04rPrnHIJ6yfKfoWZZx2@ZJTE1jJd^qT7w3qUEASfp zCr&x4qAIzfFu$-cFIa`O8L7Uw+HuKJZFTeL^z_lq)!I)JyQmk-g}kchq(sUE-74jC ziV7D6RW&qC*Pff(P@Ixz=Tt*2mSLEf2A;{)249&kNmGX(VG98G#-3>r!yveR#p9BV zSs-4aO#~RBa<)$}5Ima0a7efZO1HA zQR$Cm%rV0adOiaUT1u>6WCzaMYo&_)?gt-yw_Pc%1-`Ew zQL)|?tCh9N(^W4(m++8a@}1Yp^53K6l>c6qU)$kLxEqYGuY(*p4N{usDg}v*`B&)3 zrxH1|)TwBucQM-<)djm)gE%z90nu>kDch1*wpF#{ph{QBOCn7o2M3rF;lwFreV4OD z=_E|zf^0~V0doY*jjsT;{1t+r!d2>~2=ku%>;9S=>$jcixq=R~L9+k<;Wm*p?n`3f zJ+nl-?OBei`f(^rFoT&~iL21OTt~R0Tpw(v)7-6KE#6DV;W_Rd+`GB=agT5x;XX;D zu`y?t*Y{weQaljzFi*MOfF3(|hut4^@lJyb-IwScsq75e18JkDxQZvy-%I@gJjc#G zJO`B}b{@YIzrWt?$g3n~weG;2qiLk0YapU;*K|Qu538E0DxcI;T~QA!N?w-#t)iH+ zJTFO>Bz{+tilQ_}r7@OQD+&D7|6~(Fs&KHcev{rI1^WHf@5g@fSM()+NMGpCmp@J$ zs?tW!Pypt29iTZDuB?zHe5pX+nPW}TcTLgvO7xAf7gl30%+VKG^o1Jhq)l(R^y^CO z2UGMFQ?X7eu}*rlbq4@>%-?dC$OBhN<$;U41mZd1q9Vhw3~;l-8`E`O+q+e9>cnmB z?2=B+Xe}+fy3h-7kBC8wi}v5U(E_Jup6??M33P z4>};jTJT#h_1B3Jb5#-rS#1@I&0?`tDmCfJ6zDaA*pyUV6kp_2sQ}7)j+E@H-ypVa z!}up^o+7zY=li zk3IUP3jJ}BzG$`>`>#}@uZpf!`lL$x5PyRUz{gt%7(ZUWcRHhfZ){N|D&6~Zm;xnU zwD<9V^OLoDm&SiPZX)_& zmwlZb&^^ma-|O}1G7m;|$;_(3GBuqQ^rm{yQ?OFQE3knEa&);4gCAFbs4^yFLEh&} z^-`(cY7~o&X&aZYY?gss64CKn)YNZNV!SEdd&zoC0YxuR=Cenrkv^Lf?DUCud5fmigLl#{En zSkSecoRi=zPl%}ra3NPDDZdGyIrwM7A2H=z0=F|To4zZJTZLwgl) zQUODJbQgCP9X@bu-g8*yr95VsGZrv$<^wMUE-T#YK`%+-vJ)GugO?bM#xdkeoYt!c zj=(ME>wfs9z}r07Rqvy*#w48Ly+N4t4)GM$lzypMu|jJgn$T4fBf4rl*iHw7%S#lG zw3&C#U|gEHL8Fm3ObpAL;eX|zQ0vErAZ}mA-2>zMouCzPFA4K`iPXIDf)(Mi{C_+k z^t}-A;%T;;AhMeI{apvLv#7@}jim2Peph`REvTC+J)cO)@7n>B1Gd)6fOb zX)8VETN^m8(w3E$jOYYhw>wUqP(t`uWuHpBPe9wtfL)s+xePe|MZ=nZ)4XL6b!t6d z!0+B8t<75|fk&2!pwJ6Oi{fr`&hG$1rx;%G<9tC^Elbr4rY74iDJaejc$Ei)m)n+N zSQPd7Fm@=IV^+X=dj)2r-(#LRNF=2vl^;C_45jCh-#-ZaRJg<34WP^4zsuZlps0x^ zij9Lnia$3zcM!Ok=X%_2V9~r~%=th#NW2US|NHijpS|Qgk@t%)CB&Bn_*&;qad&|< zdXUc(w`@+Tgt|A-xisp5Q@bq!8iVp%yG`6jd<;&^rX?h{! zZhc@$D%0pi8>8&tYg*@=Ui5L7wO^&o?GHSL(e-}k8jyMe(RH2>LlPvNu4&0Uq7@E2 zFNiwaHVEPA?m?YBgWfkm5=BXn=>@&bAI6wUuSoVui?#NI z(ehehc{w11B;nKWz?vl4hU(0^XfJQ6#-?htjWk9-t2p@xshEUJ)$-)_0GFD+DhOi1 ze<)v34O)H=-n&4gzeYS_wYmS5ByUKjlXXKpWTYPwZJsu>DoF5S7YcN zm`Vc-SYiwA9nT5S8oMROZvnPDw}qAxe%b+kOo|(di}^9e!E%eEJ5Y^_;fS?{$(gq`Aj*`vOv6 zR#O4_hf76Mh0)J02no*EBy0P0wTk(F9?}Xwt{<9re;-hp2dpCk1ot@D`cYSucWv(O@{KXkDPwd&ytvbsrN5y?tMu{&gkiQYe zbBQESw9)r4Dn^d52uR&X&;TVR-4Yi)1=!5^-7Dj$Fn`lOVe)f2hFjDM?8LWf;_7?x zeww*%#qT=BLtbnrFo$CDmBAAXZ3S_i%FqC#1u=|u$GUqt&gI(NDz^!<%I!4gBu)E~ z$8d?ht8{`5T%D-w9@~OYmJweV{}ycVVjpFB5Pap){1O<3b%F-`wdBv0J!$sHtn8K- z1c_G+TKsrBh(vcSo9*6W$ETUs!N1X$i>A!ys^#+fU`{zaQ+k)&I#QcHJTF&xNnBuc zlYcB))vWo^>i;)$VdU6bzVF}t_p(`3crDlKP32aOwK2h@7UBf=MoxkC`kK7<@ij3z(@pT?RP4w0k8)1RNh{xX7~`o2<8Ymz(91 z$nfGh=HaPwt8C9Kwp4~*qvSp1<8_BdzWee2-)9*4pV=~Qj;%d^lihqfBZ&=f0t8YV znXBuwaOup6Q%Bkq*(IrQ!H=hR3*Rn9i^?&+!ack-Zh>2&_2S=1BetA06Dc951Sb@$ zsFV0uW$xAZ5;)sE*6Ptcgt5Pk{`UDx5hv|1yj>1hiT3U*?CR$)Vgx20jPsy3KMWzagp|8NhD8RDT3!^5rI8@LBy_I#M? zZt0bL#81dd2`)o?bc2&2zVUjo9pvHei1oe#XzBWY7(?>fpwseu&Yx$9xRhY7k1-_u zdc-qd_c_K;0Z*#&vHWU&1^)6^RQWW%2o77Do96;2A^rI0$;~yFBSyJ$#Sc%Q8rp(k z1Q-kA>s}xV-H(2T#vXWGkUucoT242%fx-!D&L1Z|x!qIPa||0YtNOZ9S)8dsxwy%O$}x;N^7&EH5xB=K~FidvL|X%DRE(GH`F zaRk+(`+5vlvD@*zZ>w~t{{wsDEQ145)t~7#{yyM{1TI6|yp?Vd2HZ&7=!zE4nHI7F z#R@%Tj{(%@quZl!k>V4-yH<)r?@93$3X`Fq$`*wb0?&6H2nQ& z{)_Wh1`Z=0dpts0E!<;vI)>L;_~_}ZN5{f-g8M?W@6CJq2v!a96tNgA^cDrFW^fI3 z@L{#0UR2>9{UGz6O()OKf>lF7Eu4bwH*ZY!X&G=z)m_JfVi z*l5|B06QmrBymYN8J@bkaCkR3@rG=i%`{hhf_+#FuBV4F=W|tpw+;pPlQZ!5vi)E% zGEc@v)EgpK zZ$ffq+?s@DKCxaiB%dNVZgLLT635c}DR8c;Ll-+N!z=W&Nq6+E_vws=sWNF27xd1? zH(Z>@DiO}CdjTwY)UB#ZRo^;}Zp5}?90r4J)^RNO5^M+f4j;k4;6_ZAvOOA2ZiCuw zqZ8o;CVq!P4EXNRJ|Np6ZSut5DTUk7`q>*fUXDP`y6revuMh+H@a~BH9Tx4pdpyzm z)4>V7%Ly-jANsRFG~XA-4ceWyBV(XKXG4*dHPCRquInA`0ALHK^)=6d z@75gGTVLxBy8X`Zz`8m!OGL5R6h$&SQ!{jtG!GM1A*MlyMCR|BCz6pefY+pEYlm}rTv6*b5ODUa&#c|7E$J4_4HG8?L_NLO;< zxx8g-EQUw3>Gk>8cm8=?pH#RNoYQ*f6FUL6s)wG_8KTH^8*tf6B%$i}S{?MrvZbdW zpXm+APMua0^G92`E0Q9s20b^o#5lwlTcjFOf+%Xzw{aJ?D*v^5MG(U0bLZ(3Q3u%F z5AvFHUd8973s~DF(C4|Yb0w;|G8xk#$!#9PX1%Q%ve*#CzeP{S^UqN${26qLJZGrK zWsNWJhPtH~3u${g(wDJK2ijZ?TaD*m!fZ~%ut;-G%dbBC3^n zDK>`MwOKL||J{isi*bz}Y*ahz)wciQXQ1sATptf$GD5oz+jY2lGOtG%9o+R?-&DAw z8c}M)nxS4$45MHexV`2D=2&|{F`gpKl^W}lL**py9c7TmTM&9JFR+U?soO2qguSz~ zjV%-mw#6rCacb_d%o{8s2W`_c$;($3&!wJ0=Yp7^|J^iR4?dX8JRo}1Y zJLR7@Egev3%fk0x0M^>pS@*(q>19si7PuvvyE%OKfORtin}a@X+C}l>bc;{;O)Uw! z?~r2fNW!C{rQ6a^U%0@U`&WXfTc)2*^812pllBYG162Q&#P%WWE1Sg zNUsQF(iB&tc||E71$^93Ih>hM?T57@25DHU2Lp&Yy|H99dN`#|4CTdsmn5zto6(#` ztEe2n+5Cw7*FmnxWp0%_4s+?<=nZ2!TbOac=lBrP*vM-$aYQ`>ETNFsY5Un0!rZ>J zV*^E|9YYraC}6V4vTlhoO@bA_oFy_T5MHR`Cf4wT$S<$(e1(^!e}xA)BTL!84=$J3 zE@EYjUUeqLS}-EzSdNFb9C1NEcov>> z;kQ2%1DfoDn2+s>-cu4L8Y4xx0#0CGCawwRzvtiYfw<4?j{n+-_lMU>dx+(=UFA-I z7KEBMQ{b2~huI?5FxspG>I3H7#vsmiXRWW$)7IJvqV!yt;$06Dm?-dzX1hao{lf#O zQgvWNd3h4kHm}PU3dP2hQFqPPSC)#h;mkPGg+o*B!eO^0FRT=&R}V?Dbfj4{tl|fq z!$s9{Dmuhu{=&BT@6n~R5CffvMTuB0C;7BsD7bmm2KzO9RVef69ObG@nM zNWN7nm6qO`&lQTZ*6OuKuup?#mm@_2Qv73YFXeO|*mfpm>rUx+;&Sh^-w=?VMLDQ)XE!ImK$e zSntX?Su^yaVe0jbM%m3x%@k)ECD)s)&DZK1^>5^4vuLYMF~|o(*PmRlnU15!aDXua z^nb^t7DW$bW5Atf`aqH9&JP?^fP<;F%GfINI`!7e+Esaa1F1yNQ79{9ItR*9SU z?gP*j+KB}Gi?nj+Ztyea>`erDb!mO6IvL1oi`DAlR0gyxFW5g24d`oQU3nZaRBOeI zJs1JELRyML_1-$6GGp6hMgt?x5LI$i z)~8D|ZABK;ya|7&_xS#=W)7*6c=wbDHXA(hDI0pM6mKH#bV+n-#l_vf4sE$9svB@N zmSrhKNr@Dhk}u5B3L+X~F1x`b_XGjqNsQN{Ceo}DEITm01}e(hG%a9RZJ|nemb3-< zuR&8+-zq8~KJQ{`%UxKBQoJ?HY0ZbQ9QAYHHAuKd@3}MzG+d}s!jjo+^2CZ$p!Mwt z0MJ=%x0L}<6L+wmHHh?%D`Y7J6HCt-hp7Sj)TK*7K4<3hU!-_Km8}(|2V4x2Q3U9U z(1aSmpzHk-Z}Q50Fzdq1dEYN!-}@F3fkD;JVn%L}Sbe6&+m6x7-0ulMN9oK~&v`z*Nay%_6(hHM|wx}-M znxn3zxhG_3&;(%QZH6tHr||0E&}nGp} zUVfZVBhSH6NvnE6PEa(^N+ivz=cK%7Z!DKI(EKd9vgB!UajD~O<4acN-Z6c&A{C`-?|Qd!vZYlF zeyUT}YmJI58}NL&EDNTbuh~Quh-53Z^{QwHrK3k2iNJfy3n6_FM|oUlWZpb}z0UjI zyf7FJwUwRfQngf{o0_Ya;0zTOhP}CZ*RC%1ZrG^RHg4!G{(sE936Lb$br_ic=l}Wh zs?4k-GrRhzK5D9J&hF{1?yerppa(O+U;q?u3`l?=hA>HSC<3GgBzS>gUIWTnS&%JD z9P6+R$+oJLI zs(U~>!h=S29od!dz5o8Z|9j0km@7vUN&-&tSZp>W>+L@p(>c z^Zx>GotuvNHcB#hAb{CdIQqr>k~wPA$#UNvXe-$5s`&kJ&nIKI=zuF)yv-kd{_|1p zPU7vib9ZyU@|82A8`f(1KF==DO-`sTo)O(As=v94K@YGTa~*{t7|@X{8lNUY8`1=RD9fom8PtNBP+R+S;W7q zW9v9eHw3!ECS3VVoNO7#b#AesS`BpiWZ;6nvfwiA=$1KG$d{=Y?>gwx$7c58kpp+O zA}LxGQihyLCUHrS8}x9uEX%=TyI{1zmMD+*E`h{P@Dd5Cl>Vqf&6jvS31)z3<~ zXByJ_G%`IOATgq`b)S>d4W^&>&idnQgT_v~H*fFe*0!md_`<`7N6$Vm>H?I3{ARxN zb(rf*U0k0oNSC_~?1z;?vXcj~(9h?H;M(0%ecV- z^evTf6UoNg5NW##rJ?$DXd(8=u`GOAOQ-nusG4P%i`;;>6UkUj7iR(Dkc~BXzMB*c zNw*GPM>%4DjL!u+Yb;e9-uMO>n@;ak59{iqW@|pQ8{DZZH5d)zeDLLcHmwEq*!JDn zeu3Hs0&Cb580Zs*9lO3A*Ml0Jp!+e9JQrrmodU>%UICpP_@#uuHU|9<Tz@5N`&ot`I)o9E7+im7d~X8)c`XI5K#m+qN2AF^!&aHv=n zUlI|pGW|Knpr%m~fDNUb8y8hl=q&74pdd40zjGidT>G&+H8<;ir8hV?IO0~1?JX02 z)cvS-`8_O8E5@spKjomdzizb zW;0?AD2&tTyRJbdRv;S8-|_Ox6=yqrg5JBOj0 zdp@oY*U$%^q7MtBA*SoWy-Z=hI7R!tKhe(pMCFa!6L|J#mcGmKh#nc0O^%)%Xh-ZF zLc3i{j#OM8FDxt4>lk*nov&@H759_v}Cu;adrqJ&arOdC@d|--3 z6g6~nIkO##^*XAWu+R@@)HCTreGQL z@*s;+NDsO0hp=x*vy=tCIElg8A~zKI_EZwtozAyq9C5p5T8=#qW2Jp@oK?n9DD<`6 znv4>p!$PnL_jZ!yR6X)l)I~lU#|rGA9RFOTjYeiR`B1S#xgC@EG$NfqQ2GEu9p2zY08ckBkfeb0pwNc-L_Lri@~y z<0w?LO*Q%7O%5z{*WzN0TS^b0&9fso(#MRa?+ z3C%6eEu!p49rM;{{jtzYdB%TP`ylp{!CCGxkiX4$ma(<}St6VF_e8uSVkHJ}7D3xf z6BO93zQ2=IStS(&c-DGr5E@w#0GL1`Y;37&sIJ%0zxhqQQF-V8{bcP+tZsjf2cC#; zeo|C>YZg3pvG0SxvD>CaNEM91W=Nt1uM!f^6aiUmA6X)cYY#?(IYd+|&pcD9{@rif z?F?<#^J{A^^T@Mz>t^+Q04|SVc&_dGg4@S*R;kchb74-O^BmpNS6ghUy*g(y-xJtc zYgAJrw3fCCHs23xpBdEw50XiJK!8C!$O_ARawkp0qhjo25t3mC$p(D?e#P# zg|&r!V56OFl^9yX2FQV&xOYw1^b^e+vS{WPo|41KZhY1Y))vXqk@g}9gz1s6;w?lZ zYy!_$39(EhoWSN7ZqH#N0u?2vSAkJu8W;RW?!ZjOl_2`;?(-4Dh%9^LQ&GU?R@+Og zwF+c$JRs0QvqmcwrXRDp@PU9H5K^?5k1f+n_~)dyFV8|Fim~Wn&OgULgAlfg=oK4l zVh@zG#+*W_B<`+clM0rEpHLk{-aTYzd7!xJTR-vh7wV9FP}uBNrI zxkCJK))Jh^byCg8MyD^rPvv@~rfmlKIVLB;vQceWwjP({Z0XyQh6iFadugsr!RZi- z^OG}?)AFk~9TXKEkopHkdzFlWuijRG=KwQ@zdd-X9$k`7<3$z$~#*>)O z&c1z}2ox1@0~Kq8R?3Z7wg z=N7>7Ot56%ZIR)Xi`IODy591#=hDW!1n)GhdzR(Z={BMLZ>$Fo)Ej%YONeXlHR|H7 zYOwx|{vB3rsn!U?2K>_UwOqcoiGD-r6v5aCflyIKsa>Fy*zTbbiy#nA&&RRJ| zjse}VkHB(L)qq7iG4Lst&te%`F9EqT=>3XSv#wjtm*?ib47Tv|&l9jrLihLG@SX3% zizAGk<2BoO!1Eq3>>9sw|6KUQ6JS@Zp4->tET!arIIru3qE+sWGH$s{jT;J&cmC+pb;Uvjad&VR(cIGqDG=)HVVP2^qtdadh_)lSuNo`3%4Hx-BI z&28Bi6ySTWhK&#a(r+cg8Sk-&8z4iB=FEZ|H9nVvME+cS8gphLUmHn61ZhQ9J z%OA9=OVtMagI}7Ntm{dT+ADH)3`V^lMxT0gS|Bd2;dv6urbNp$hmm}?K?|Udu|rq3 z_o$9mxMp!)uU(Gg%ktF0Kdym3DoU=OC^85UDEUGwzw%bdkx3lqxaS@J7}j+?;~=;2 zxg3_y_GE^v^ohN`|!bQCSFxD`^5QH== zR1|bU%hu{6B;NwAw*LLoPXki_9JKU}8&BgjmJv$9FCj{iA3Zt+t277tUqsl{rZRUEHIeUqWiSl2E8b{yPyj_I%~B)P?4Sg=2x*p-v`}Q?}DW_ zWaGZ+E45ll|Dd_H>gv`7Z}psPCa5W&D1kj)r@L<3%P7TS_Nv^NipL>Vq%{MfAIM%p zcU53C4#Wb6*FmqS<2&HW9&#@|qwD2uI@lnitmD}Lb*j73#r?m?9_Kh2ks6F-6Cz{Pqq-yD@r;7IVBaZ-tr*?Lu3%-8= zZ0yC|9Rxwu9j+2jt7dhF*hd8bko{fao{-TF40Qdhv+UgGIM*D1J8;$==hcra8O8=T zw@prT$GIOqzUDX^@axJ)mUzH7cy4x`y2panE4hp6*MhSW5XY(a`xW@k_kZO5hVjv< zH~x%a;1#~{l?(!f;{riC??~=yMEw@^^mUca31PFtbDz#9#?pUMCXYSO6p?^qr!W^oUT@xPYO8+cy0hocq_=EaA$dIKMhm%aJMXd>Ic zms?PFLfg2(4ER#j)`+u3gWZ5z^mV$3-%xnqqZg}XZ~os|<=TJR{!q<-s^%L@H@B*xfK>Ea8pH-b4bD6^?ZHTr!l22(M#2@@OlY{w&Xu zV}t6RY*Q`TA|nkvNWuU;fD{y~N(O%u5ZEhVa(Ntm#sPgp&!g`nnVPz1e!=vZ#~lH- zvvc9GyBr^$IUK8UGxV-ZB?}*;O1lz}wyPYho0y8%B}cj6v)kRfiY$< zVeK*9(&2}_CL48GrZY@VBVWa@y9(F-_f7i zndZo}q55mdL{PkmE=ZIdcX;UKmanCx*|P-DiUG|~iUc9K2{PdAw?PWzdT*&7 z9mQ@UJDs0$Ba+(0*p3gDfG;M&!Gz76tb=EwWx?FQidCLo?bDgB8!HYE;c+b-_ zt9Dd{1{SBv&qLXgWv4u+7^xHWR2EbrSmk-ctEP?6e1U^!YjFu;rk7Q3Htfh*(w!~x zWio502Uc*4sF?0pr?v@#jJ0eVOb`Wokh4PnHk^`jU=KG@PMKM)-F{}AJ~Mm0oi8Di z)EC-c2lnSUs`J>7RpTME|oSk$EG_OiDr#Vnk>f{hyow z>)D4Mdf}mm?w_FjBy1P)!WSO;)-3)!nd8rKxm8N1Y_{z6N&4hw%nr*4!*cgb=yHgO zvt@KCojrSFf+*z^Xx}QMi2m+70L{AW*RANG&OI6}(qG-eqk9Ehyd;?e%=vMY+n@4bte^KEO+meU$*1^G7e5}ueN*L^K=}Ta|$=ezOMZ~Sk`jCmI5)c z45bn>>s{Fd&8by$T}m>BXromvEpl)icEI8CqpsB3LDUJNTQ|TtLj{I!b>zE|-v!Qe z%p2HdrO+Ra_Z@ zIxn3}>cIaBS;TKIb{FC2+d9~MUbPX$iGiu=jS?DY7~}PkOs8 z8uteAZ?sf9X|j_cOGf(q|h6}s`y>QTQ3*JfA1%oG;$O7#Cuu-*GO8=dvS8FWJM`6`tu5ULb@VZhUbLUkk@>xnSG1X3$pM35aaTKP+nZ1 z&)-IBjN~`);hJ_vyNLPhPB$ZkWV_tLCal@X@n?=T2WdH~7};uIw~>? zA+Yu_>5Df6%UyQqyI`)i=c$7pfTOohE`jJ?I@#9M8+5+CYC5g2s?%?8s$WhJh-Qt0 z7qP%rBGj+Z3R?hIjMthX2%K)x{|hfl69E)&|RIEyEL*f@Tdmd;X8KEOQa z?k(-S_JH;T_+y`xz393EGp(>s!?+=K&!Zm>Y#4?3u#8a$c(T?5Frq;;z^%Ex1FPG@ znArdu$iU+U(s$IoH=gQYyy;hbYu<|I>or1_S8Ud-=~iS?!wZ((YJ<4#3l-a|)#qcl z>iF`C!{_R7fwkXmrI%b+n%69KO5W})ShO{7y28CmDXEFD>$>g8sd%2TP&53a5%^?c zq2mfdTywtFp|mC{!07_Ie-U^ zx5NqqE9+6t&)J~p*#&N&R#FV zN-EX!n8;CH)A&*9Lbc%T&M(V5+R6R@RTjw2+k(H9-I-_b+&v2E-W(0D$a)AMZ>^12 zP{$=?$e+fn=gDAa6#lI;BJe`Jc5}8T+bds#Db=yX^(gmae{1T}r2W9Pe=GZBX@m5h z+q*H(J^xA5{5Cx!Xd@1EitCx0OAB?GQIg1DQ_>Ugz`=EDri zJme`tx5}xX;lrhObwtTO*fw1OhVz|dFuoF_69S=(u8JM-#y%b_>2tc{e?7X?U)=eDs(FVbmLUDU^>vj^<-%0O-opo?`)Fs08D0xzoq`0Ok zg8vbMf}x&QBtUYK4}ujGWY|i%3`^y#6uh~8*f~RSsvb&>O}!|%zP6|9asXen1*W%F zkXco26{ju?ib8yVBZ6ly`*$cU-0{n0>;3Dpo#*K0*Qd!SeQe)PN~okEMk9^%#tLB7 z8DpR12=S8cV5=r{GP=6{6#U;suLPSn6@q!6K*t2GO9k#o>cW+_UX+{5$zBKlzhI*b1-yW;QeG%@G0r{uq$Om!Bw~AXcR339Q+hpl6z!N}G(08fR@q z`6e7Wx<0;y1w%`q6jkXoJXs&&TPO|lguSw8WY=J7mOr1i;>c*a2>#|BvO{>To7V&| zg(JL^)859Y3;J^$#uFf?6BsX)(f1Z6jEm5|oSgOjt5b-Z-#hUnuVQCBu@eIh*sXBV zINFMS^&=@w3BP2py$;HW>6XW@n*3gVvAgHob2-AIkdBTQ8hUgYfYyqADvw~4b&z)0 zm6L@>jd$anUJlTnDkRIP_Sew&MUOrMU0zL;TjGVWB?5K*9sWe+?U?C zqTu~KH+bVc(5lopyOWgA>g*v%b$x~c}=#o&((l9*#|*lK$FLlLV8$P{8pYvXd5 zY;q}z!q1iwix+5xmgIfY=@pMzY`udlwh}_xBg>7G*{0iwu7CTw>JXnAa7hsh>)_iR zRSTHm5l9VA(yNT6X_*d?{`!`|h;k?1FuFPnmtUE_GHmeIx@m56eNU{)z%< zF#-8W1=wTd^nFM{Wv5`TCg3^cgw1ki4siXV^k@4jqlh-1symrx>3sxA@z2B0gZ1Lz@!cn%4BSp?>PaZ1!8aTkphX!u;koAaypW0n+u%vXQnIDzrAa0ut_34- z#5E6`p>zq&4rL1F?Sv(i&!gH$r8@=(F~@iCeBq{48(`$om&&=~=TPcxMPPvGOO)O* zix)CFOjs?sJ#~OJSVEbd!&rqQGTn>1t+kArt*Z;YD<2TmFh@|m<#-Z&;z zA6y3L!Zjuxd#z2-dmB4PO{MpNHdC~uV-khr;zPthfLzhV{m{EEyur;1Qy+2N9P=%?pbN_qr$M=gTmKFa&6 zJgtD@kCs@RUChH;Ceei;j)gOM9pVV8>Y}>v`n5zQ5`(=lu|@=#%?+BepYXC$#LL*b zsfq7b30kHZo>)Pr=3>kFO6~MmiZG(Fp3A$VmdhfaYL-Mfj7gRtMTJv>(}j#6ua__8 zo4D2qYS^8s1hd7ADp$%ExG2xJX6&k1o{!4Uk5@e)O9j|HM~?y&L_dC<0%)TbjFpJ5 z?bD}qF7&OwF1W6q_qUi$bFj^WuEq1Gc@H*@WEIBXaQ?!lbceAqXyl6*%Zd9p8MRpv zB>DX5Df@&L=s2VIraHfO9!KW?wn6LN?Xm;{&} z!s%e5%zl32Q^ca&@i=$39nL+6Q>#RrbsbCpkYL2N2@@aEts;*!)r7J^TlDv-q%ijO z#?oP&cOLf#2dI_bDgok5nHG6-0*;Ginj5TSCGXn#sxTMBe+O=gl4*CU5nBzN@SWdKt5r`1J6<@B@ELb6<>_V0 zX$D!;GA@uu2CW9tLc#}S(j`q^er`mSC*L%k<5bXNM|Dew^{KwDAiI&$kG46|O|D<6_n42xH_FWsLsLINROP&|UKsrv6WvuHNuvTh<&7A=rDTw6i$B zU{DH^kb{NRu(n;YT6#Y6AhGaf9?Uacz$}m0pD&jUuTMbh*X!^}Um|x3&@7h{EVm|2 zu*7z<6`7_(XRN@9LlOPvAxO;%bUvZoc@ULvpQ^9i9wq;DDgBBu2b@*&zS;4tv}5ro zKqCxk&0<6L<;n12ejr_m1l_Z_#T7ycU082o$zx8ZVytZ6J zHyjFj+u^$5;)U=IcR-WN)=%&j=T9Z^$F6D?k;l6O+Tc!Ys6CsDo25s>&Zj3WacY^; zi$3*8THxLmS+RTjpapyt?rXz;jw64Wh%Kh{;h~!tCHaSo<*WN`{A>os4t#W95!p`J z!WZ>ndzL<&xqufY1Hhw|d0*n;X7|E6mXjlEH|fiGfPTA{v%t&L+6`rFKV7cNig=!w z;ai6y=|9q!edDlue3>uPiI?Kovn|u8Tiztj{Z;$!itjfA_LyN)PK&y}4)%Uu@|ij{ z-)$?^i5l|&_Ib;*>V|3AUJL+q&XjY<-?ALIr)@mOf~N0R?zVrpZ0*Ge9$O1QI-&h> z9y@&{qk!5wU3@Z-O<%FVEtCd$&%mi+=W#OF6iZCBsRIZW6$SvEk# z6Gg)KID>yCBh(n+(Qw{o%-|;0>guP7PAJtWd2GU{`wP15)$Ll{s^LjWq8m-uG2ySc zBP^YA!*aYP7k5+O6^jzxIzmXpG#j8F@jG?$tbi?N6GFt7$F0Nv%3wxRh0Ws;!*)RW z5I<;m!nSptIo4by44H4*Il7_Gf1mb*_O$jx+K=F=yV+}pJp=}lGV4UO*KJ^pRxBID zd8CblE+l0Ja@0lGR~3fco`KbcszwQ}*_Fk2Z~+nJ%l|f-#;lw5n$<8l5XCYmfi-AbHpc-#%+Qhkm6JNbWuUZM!Z`nd0s&2*g`wND9HxT> zDZEDDgEh$<+aSJ84X?>)7nZ{Unp;LoC#GrFxDHkntO>m+On{7l1v(jjSdsPN({^VT zLmkO4hmu+AJ@QZZyT}`x}oK9PZ@Mqq_0qhsYoGXW1sx^OTyi#h7Rh7=)Q)h7D!5EK~ZXneTjFpxrhSaO_AnEJ*sS7ErrLj?2^CQ9g z)~G?-xF3O4I_(`vp{d#qjCR-z+3cmCkK;T#iY}Y_y&4 zpRp@PCpzLmAwaMz#<*{Wjk#gECj11=Hr0>F@zlQGxIUUxt>$o+TA(Kl{6n){ZBtTP zl_xu0_f8|Vj&a6w0jEmR4-u=Z56h#u86l%qMEOtsLaG17_R}og5|bqnAVr zu3TrFSe%`y1b7O;ubg4rBK)(b37I4M93j6x8AxYXP1q$|!1@UeY877RdJ!V*cur?W zyDTR+_#~O_)`<3Lw}->uc6wO)pF`^)#e6k|(hpZc5+qQ9pOs)XCA9EnIjrRJ2)&2O zlz4`Ru7!ZhhMZX!PN#jwfhiZhxW~)*aBpv~zK5JR>~?RJ^P=R&v}Z=1ACCeYeatZ) znkV}iU*adTcoV<^9^Bizu{V`JJBmZ$UokGH^!91l9eWyuvZ+b!LV;AA`=CsPkM!fK znXa)i$DRFaqZr7w zd_W{EzP(b$ny)L!cJBjSHRWHs!1=b1a+q%UCj|X*}6qPpDtr()hrz zUYCPH;TKNfTufi!uSIH>q-ypazJ#+aE&JIoCeszka&Y5ZCfn$O)mViDuOdf1j&Lu9?Rf?H; z{7vx2v3x<6!iAx%?}|!u_;)G0VJSVANGy6&lMFqSnqewO`>7P&QD%ND2l%dS$bqRK=&sex zYR$Y{#>`7K{I^)gf2JcS=T+{&|C|cvOSKwba^0o>dcp^&*J^NmP5wOTh+4~VbXSKT z$7t2YbKs%Y0-NjcTn;=BA8m)&Bk#l)Vv?mX=Bg<{VQd4idPWr(@ z<$&teG+yUBYpQTJH&l46V&F!u?)Sh-fj3l693EcF9U_ux^m$!SU0kHa2un-TKxR7K7=dSF(mFAImr?V;Q@d zt{cDkfoHn@gg#ydkiO7Kz3gbf|EA{vDuSn*Pfs~0KytK8&VppSYnZMV2~#5A4${VG zeyoJ%GV9-K=d=DE75QUMe{NQ?A6tWTY)dDf2CLWtTUvaY=$2i~^B>Fd{DXcz&)=eP z{~+>~rTK4^k@Z#y98-^7|dMA>KEgy zb27e|MhqqdS-Q0|*lwzO4zor2bxDJsZs|vlQ9+M?Tix@SvA%9MdpcozbCl5IW3eCf zjrR|m)yGp5WjWn&GM#@tcU~@^$$eAc@Z)BhOv!Ib6D>M>PSBx^Q|D&PERMDos#3 zMSs4W4fO*3*QaIhXH)y?Oak9HfUG$lK)S9=9+*wl+b7}|Z;Nh!YU-ZN*AMP$7ttb| zJl%81OnvI16@zg3Lq86)F->hV2UMkcA!j4u%e||Und`zqAlJYl(Ht|?DiP1rI|eAs zG&ldWblFVaNxjSQ-2B7Z)x+lI^A2e4`Jv2$5=8OEUP*HPwKCJ-yBT_A2+McwPg3#< z)z`}{guJd=DAQG?3-#5~qgbydQO-T9 znfDxC&5b1EZW)WYj62-pp*8C{knhcay&%eR?K1lT`(TL_Z!kCr-QTdh?4}o(~l>?Q3FJrP`zNRC~e1iAO2+{-IOsoK4BGXXaArFC$llB`nOY8&741*Y6lQkE>jFJ?_}tV8pLBJi~SSZ`;U^+X!r(`xRHG9asVrbL)JWQlNMZ zU?Vzq$GvF64#eELRkW*ou&c@}-ce>Isqj!l1xn=hUR!0a_tu)BCu!k@%{&4(=2liV zR#!i4n?5#HGh-~1$lV)zo~+}PKWVlVbL0J;@zqU}B)5tQd*+zgsti@89NV7!CO2SN z;GcjezgcL7_br5KV`a?lFO#LYOnF|GmSo7`Yd?j#aovXh4Xzb)mN*!EqUA~Dw}4X@ST0CH;?o6!Y6ob4)2A;Z&bRubU4AGRBz$?^`$SC zsn<6r!2I}u=W~6vF0(Y~c;-7tnZKCTA5Lbxfi!z*B9Wo~!-u?WhI;mttozJs+VFM* z7Q7%I&NQFtE-ITT8SYGP+?P);zlw?D*D~=x%qO)A zb}OC>-NLAA{UG#3cSO8|jpKx|x@9!@0s$c;Q{6b<0)ef>s*&OZ9fqa@aLKH~%Luqu z=skimb7%5I)b@MGXy-WUQ@5MR1}=Lv$zca=N^5d)ZP&T8U`J}jv!6|AH(!)7)#=c_ zS5x^$84mfxb%MwBvi14hgOQnH6l-}q!O|*VP2psVc9zRd8gq=I-dnpnVh1BS{az9q z#+CT}D7uONt_RWUdtuPogMUcw2Zo@|y0vb7FABPQwICY8i+tWN(B{E@TLZp0t!-mX z#w72iP_$=*k>lL1>AWe^*zoVV>D=tX3rq=)@$7IYoa+c&me~g2iuz}uGTS3{RwDC~ zjJE2ohZ=Z1qn&f2e|nV3_DQr7rkU)YKTRl^Q~&>TF8Ia4HxNllMOT2gz{m5~dum#) zk>sz_Hi_*tf!!84=nv$=LI&HPNMJu(-s)ij$jdo&J~fT;>uIetEap;EN95QlqKOG@}*P4m!~9Op40Bq?zvs=90L<`-T3Jwry_JR zHMCbxdG!neJd0mDDaUrZdtI$4XEEluUD}Z;UEZGOh*`bm` z8%m4LB{C`PTVmw)+MMj-bV1JQF3WhUOnmNx+=+ohFm?*%%Q@H&D_?KTLgMBW2G84( zWu12p$b#nx|Ko?vegnOqdH5bo9^dn@Y~TN4mRf$1oB6yqb|<=!nLd6oT?KP*gx2(g_7_W~!YH#n=0h(Z z9F-}Jp-c&TBs@AlI**v_l%&~4atF|?X=lGN_vtN^X+GQwe?_us?_0K++|?f4RDuHz zn;OoTP4>|W_m}-y@%~|VgyGJpKO(G1cJpyK-o6n;673raD6(5S+~XgrU-*E~kSO?; z0_aUYdi(VtLRj839eJ?uTM0}!kM7+hXLw$_tPO#i-mmHi+7h1eJ|)W7GsBT(a zVVOT+G>xEHYpz*!Yb*C0YZdB_`G%}icpVJ*|6mxFuncA}DjdV~9n0}8rV9rX2mEZK zF&y66YTcRqF8YQGiEWkCP3-i`FxEvIFlcX3Kmqm#qHz6s9*Mtb_yAmB=oYc=@+JU$ z=X>?xu4r-s9vUx6naw!vqANPAlQ=q!rsNyFUs&OYrSYe=iaBRw>!luZJrUfdr@ zaU|OC{-Ce=-Qva`>`Hz@^J|>?Z!DXx!AzzbjJWo)U*U!>nC&t6WjPl})vggRdP(TN zuLV~cuIc+dDunAYV-n5Z=9X)6f+ut=+c5;!i9-$3aJG&e+Zt|eqM_zFqIp7RhM3po zen@z4LAzg`ZJMs>kwxQBu_zK_ILwpd zQ`94jg7E?tjbm6$xK&q3VhCa|M_AmfScWThC^LcKd@u(Rt`#;jiO&qnoFvOFFrX+U zlnX{F1sd7FumEX%B^_g6p&XrcQx>x&z_Ol02s}ZZHJ)nxZU>kcsg#A(P zW31{^-QqWr?#RG97~#kM11a%9DXMFB;&S503Go|Ij`&DdEa1xM`f1=P)2aw=84fpu zZ7@$%0^k*k15+`u8VzzjA*sn6L(;Tf5sISh`uMU`f{KBk>4w15sB&3^T|)Zr*@mve z*O|BgTp-bb^oCu*H-NC5f_e*u&4KHwBXnj-x&zA!3M*mQMp&|VHXmO+ZE}4+eS7PZ zEWvwTpLVYwZw~sCw7)KpaXkTeJ7ALnu8R1uM}e3L@h?m#{x8&;)oL~PPeI$&;n}kV z{ev|tcWaMmpPeZULxr>4&@CG8D4L}->4mAZ6et7XV%lpD4l57xl-uW~g{}-d_@)k4f1rv>C-!j&S*=$vQP2)c*J|#W4s67o$%hE zFM$0(?+kzk`-L`TC*}Ma`QQt`?gI%MzWDlr3&ivtYTH0R%B(NwCdz~n_th%O1kgWJ zotvu$BnaZT=9BNf{Bp*Ae_$K96%9qszy{7r$r$Vm&FWm$I==<{X_$^NlM9b`x(f^4 z&Vn|12I9g2dpMg)*B?l|8;icQb>iGio5?Nt_0{F&)zhc%4FclV;uwAf)wz@K4!l3P z&;CWjX}H7T!a}DzKi_G(L$~3K$(u{C?oZ5yRcx=*bor>9DuN}g{fq~8Vf88YFbM}E z*b(%-y*%ijWk62b7tC}6?l9U4n6ND!mWneJ2iu{&Jz#53Y-650JrI!7<{{5sW8Jy?CTaNl)dD6LhIZfdB64%?NhUN2`GcM+$cs)%t`j5 zYwI-OE)bQlht%I=ny80$(0E=)=^d#Mc=IP6MGRn7_n?<5x^zG>~KF zuj!ycUC-x^P9JXhzBIW(je?Qm3Nf**{w)JD1Z->@MIl_o9UnC|2TKdJ3KJ*MW~#XT zzF}~x?+oV+$8(LQF7yR~>#XNw$o*Ii{e9Tq1rxBR_(JCL626$Uwm+9M>s%~tNUUve z4h&F`76)koL^_w}lJ{y|bD%lphSBf46su7oONImTybl z>o0B%x8Nu7uXDEWQ`qg}2j#0w>^y0FY>teN@eTKdL%1II<+k0=Rp;VrfCdLhplL?0 zQ&C2*$xDr1_(15{wkx+UFcYzVfX>FbwV__`9+QCJwm|Qro62D^!6lMvL>P=2zmy}zOD)g098ktOSO~y_lNQH2f8e4%A_NOQ z4V_yK!wx%wIrs`>BRB!NVHk9EL>@3Y+=>gk4~-6OT)ymR=e37!Q@)hiTJi3nKk6i~ z8*k#(vpD?vxOrtPnMPz;-VsB@#F@$9O(j*Bq0bA$b2d@jxNf(u@ti${Ik3C2-{DNn zH=E02CGN*OvZB2IT2bM9%Ej)6XTme3zSvB*4&w8!dp_~R@@s|u@Frk%Io-9>bygX7 z4km*#C&(BZSka+6t`4lpghaZx6usXotWJF-j4W;oy_O(0j@O;C4){Ib6(`jU zcvydik~;vmE7E0KY{|W+BJ4(`qEBkMB654+z@Zyg)Ny%Pgt0X28a88h9n$0JO+g>F zCX%4n4#zi}SM+p(R>9Nx#c>*R$g1nX|F`etSW3bqZq1o~A2(^)8ef*PR&Sqor*O3L z$Pcl+JL7L`gL8f$;}(Pry6K~uv>=Hc90%*{0&wp8r^FA+`Ed%HjzrD$VBSqI!?@w1 z8AgPGX4w41JA>$s@O@K*cE49()pp_4QH(?kN9IB41sPd3(v9&E(Pd2;9==g0LtJ~=meb#c*8VY1DqywDo%{A`ukI3&~a4M^F4YO zyTBSLzt0Kgw;uGodf<>sr9zyb;Z;gD=Hg<#K73$F2V{&RbFjo=t7UEv2k>vWt&Qo) zV{$&jgDPry5Zw*A*?{t)DtV4&Z8RDMB2?>=Fk)B8^11D@ILaI79tp#*Rw}*^R-4K1 zU0JbRU^_0jaGi?HfkOrJ9FUtOO2q)Y^w#3yc|`5}(6+EAC9t1s@w*z73u8GlOoNX0 zWL?UiyTC7eQ2V_0%hO^ey?%>Mqzk2{DFjUN@xnvz-`)ZF$U-u>AjE!_5T6(v%~ct6 z5|yfJ5D%HCiCR|5KNG^4^7&{yAJ}9qSJcTIxrp zhyFKaue^a>Dq!io3(49G9oOFEDn$+NP2{L=KLj_sGN5}HopDH(D8_>ikYH1yqNQ7K zkjrIE3b4O*sEq@}`;s)2-)ju`ZZwucBaZD;#{7NBL{}~YHrp%@Ku+Dsq znT`o)GtZ*n7qQ{;y8j+6i$xE%05X>q*p?lb)I5qtHvz}q=D=z$0aZ~M=Ht6azX!F? z{eY;4`JzoAQ53e<^@CiJ_e8w=WHm$etH5!T8Pv3N3;aTVNjCvAlL;R-dr8>iP~;1T zXU|p+@>X)TkE%UGulm3!B%+UdC?3UtXF1P53I0XhKh|okp1xG-B>x-qCo03?um$e$ zaOCcf#qA$HFe7wmAubBuMG~#woP_-IhZDCL-S`<5sF#liE!ec;6byC@v+#VOh8b68 zHugJ7kb5FP)9DmealB=lt-FGN8~EOA8JX-?JEx-qdzf-g@e;m&UjROaj->*MsJYmGbcYlt&82_!GIR z&wHv<%8-70JF&#UMjxJQwa#Ht(a2U^8`Z{OEN+UYd{AXfd(6Ek--S8Tqc$FOmPxoz zSG>juxw_~5IBw9(k}rydEuic{XPZ6bzym@RF@QY>Gi@Q9xoJ`tWOp{|6U?TI)y3|tpF$P&oi@g0EvuC0|5uX_~R<& z*}NlH!7NK)CdJ3n`pU}2ViCBCgzXeLrTM^7G3=`4+!?$9XzcTvR#kJ`!>XFxzEe+* zvFXWgk^4OudyT&xux+sh|D8WHo#D-!H{a@{|89+*bx1S41TVjS{pNLIbUJ&TI-YK; z$#x)egeBXWrN*5MqRiI zExFSdU3uV-aCLU>#;60l?C19umPet7g1qmKr%vuv`_5ZI1kS{5V*N?C)1m+34j-YgRe~9#JMebXyrHLVMAd4Jdo3F%5$1co3BO~ z@&x0{!FCh$0)9A0gsGD`i@^HAMFcnpuAeiHZ!E(#(b|%M7YJYy%42zL3>y0-X1HJ* z3Y|0@{`FvYk>R1v_;`hy2K}lo^q^|UWZzfeOL>Itk|Rcl@i%l%ZBN1jemyaMa`EEc zDlG8A>AjeNWmKUA8y%TO)zi&317m~QCOEa?Un2mzNhAamO^7$Z5nfw)i0M@54=*kI z;Edv-G2|m;Wy5u3uRYtT7;L3=nK6LszQrZRj}oCj!gZ5B!t_U@IrGRI{!Mk>s8)5j zXwhKx`h&8M^n=wJ;}y<2YiD)5&DoVz#vhmiG7C<4wV@MchC1~+4b@I1XgSneH*DT$ z+z(DTe;}v)Rn@U@fE~u7cr%KlK2~&Zl90iIFRau-thtV1nbjp(cmzNGO5Ij(TGb`D zLXK1Zs-at!W$P4cX)T?-luZ#gIKIt^ZZRo_X%4pcy;tb47n8icEwA@Us4iJ1@{;r9 z@ZfV(EH@k%Tk3Ml43$yWLnOm*g8r?;fx?#outJt})n@FyISigvGn~{svx3qg^>> zEqzUTY1^!qSUsvUD{9!pse_obU2xRoQ@asavpzgwI^em0gfd}0oG*xK6zX~yRRxZX zB;Y$Gp9IeHh8qM_2PJF5vRU@L@ENcJq1C`;jQyIygfB+dtQJ2#h8o_iR_AqnzFPeq z#)SZNt%OZj_T}6qQj#(_Mz^WA_c}2 z&P|0V*lmdDvx*4t5fVWh8w0Kfz|Cc_-7LcPQ1R2Rq1H<2dj)8s^Nc9L7)Afm*yrsc zNiVCGw@H5Ur0m^{bxrqcPir4eX#aJc%%f|CJgM)(Soi}cNy8y|!BK@{Qp>^y!~ z;HZ8*+Ph%kosl&8xb}JN$F!f<{)+6mh#L}w-mYrs+Q9yS9?Ck|H4!&3Dx0toNu?CY zY1nA>^o&r*p2K)-9|*TkLcCoL$GHsDd#&j z@}6a%Q;TyG?3UJoY3d-^(Xs}4ubbvV3lu5UIjD4-tB*)1KjSvM$MuImT!Rh69M?jF z=7>NG#;Ra&+xi^vJ|XH8ov{}P1&IMWf#{}V@=mhE zi4A{>%xg!$`^VlOu^fqUR*rk#NRH`;qCeP0j|>Pd`$NbTOQ+I!~v;?e|H$f62QOjhs32OiGoWA*{g>5p^70cnaCAF!$KtA?gCjyax|PKO5$>k8 zrCpR$!l#1OD`JwZOPns3;_hB19g*o9FA?R7i|~O$3mY5F2*Mih=Ns;5q?% zc`5A~x*PX*WfxxDu__vnfQIuvR5VQi6^b!f>w&xNMwVB(;s&M#kS$c-s4f7crd7XX zuq#pB^S80qin}zh->?Jfa{fKHN=U`_1J`AN^;|8EYtLB$lP(9?7Z(J3&h~x#IVQBM zFO1Ma;E?qRc++VsX;U=`D|S{(Vu5)G1NSYQ3&K;#{^~6mG|J$)f!DlYuyqN_@EVGn z)c@4}we~i4u2pj*u)C@}%(H`O_r6S({HtFi7Paej6IA+xpuo*~-KN&t>tHziIkaXi z3oY9}2ZqGRr?s?yf>Eh-j_Z;-cO3mUL&F#v?pMCz-alX-syR`=zb?-uDxFo+z64MNrYCm9L5y^nqiI$WqzgnSq*b1sLD4LMlopTlRL z`!=C<#&-=?2bDh{I@!Te2Ymo|*>q2rH4p55W@I|_RMN8rBmZh$3cZNr;I^>PQwdDn zD7fiIT^U{sB5c0rm^aZg=|+KSW7m3eEC@?Tne30eE5`%4`UC~AJM*8 z61^_#Y0%5H4_4h>cQPufSwB71X#*~iyD*y%6po^kvbSL}x^FAGm>>%nCFtsvim<@S zb3p`%6#0U^)1_@Rr*3!rBpDSJgu<_tmtT-bU0ZQ#5jKcm-@b#MIsnQ4sv_1k8g zjS(T$_P9Mpc{?LnR?ne$jP*OWjsEKnEWLg6k4H_IKYkDq zbYp@DC|};r>?-uz8`?2#AJ19UGwdbqyQ=j=lq_46C09lxaH53eM_Hd;b(N9E>OqB6 z-PHEx9|lJ;vBceg|Azd9VRZTCngT=$-pS)uAK{jP zG#X5qTX9*?A+hL*7MVnNH6zV_+Hh_cb|&05aHaZqGJ)1Wm^gWZ8Obn9e3!JCx{kXKJ&twC=3MT^AYX-DF)Ee?54O+^D|QTbj?wfQ!hffNg&K@e3MQ>3@C`vJV+O6@XF{h$x2p!zZA%dPeSgFCr*;~r zPb^Zpc;a+p=Nth-1cBc_MM>*F{ml>jhM%}xq0!Ofb4MduxqLUs?8=d&M=F;dkXwr8 z*80zmcwH`oWOk1x&sxbMN)|9u&TrA=*?z(TauK6+8|>5M872(UEkSqFJ+V%cXP91q z{gJDv_%Hu6Sk`*;9s+|c7N%fFWu>-`&;hjo7IJCbzu!3&NkPY@be&FTH-|a z1oxL*6X;+X;C=@1i|MAj4cx>Pe(y z6x|(kdZImOFVn#WIL&b{9<=Y!`LA$&kJ6veZTc$kr?=)e>VLLwY;1hNUwiJ@v(F94 zGGjw3^lvftCN*?+>eSv|{bzore(F^HtMD(;-6zQ@Z3p{>)YGBcsih+#<)fDdA=fFU z83$rra@;=ot~4}csmNVswN)RR#?m}u#-}!``Crw${BJGpy3qfZk)Ul)e z5?TTHXI;I$c`CGP`;XP(`kpm^O2MoB0l@3ZDa^%vwNG1g7PvRFw9KdHj&Ge<(8Hrm zHH;f?C!fsqBGPQE9m9)`tu=HP6r?s{HZ#z|z8^uro; zpc6$p0kG=O+Bz6_$^13bcqlOa&c=GXVy~{Bu0Ql+;aW)G{%c{lMuaTFk*50Phw7)- zSM5rBeWT->!NbE4u4%{%M{wXeKBHY5#Smog)&WWzpTshiJZRtM3U3d3X=81bfR7Q0 z-2o2jRy9d%ZOz5dpX)nID@)G)_G~Vwx2k5<#TcKv3Us_?Qm@%sFe`TN6lu%9T6HlF z==yG@;_e^BA>m3VsNo+_cWq5VQ)w+!Nu^R>pSSbO-i!E2D)DHV3ZHE ztgzbjYRmoo{&LN0R>PW_(PUXsyt;T~v9;ZTA9%7FM=!48V5ZgLESRpgf%7!vL^L@h zD$$x^_KipLqW)!Nt{z48xk?}v%GF7Lf-qbGr%l22%KUOOj+@K#E1M^p%@dn{wG7Z# zqU8vF>M6VwYq+$xfmiBS^)?u78@2X$WZ6)otwQOV%6@)>O*!-mR0X~jVqpt*Nb0Go zmfdJrUp=}O>A`XX*Qc|=Si@mDX29&Zi*q*S%XH>63}*7!tJ!8{;l726Y1h1%8Mhj1 z4O(029f|43rB|w-_y)ttZ4|!%1gQyPSk8Gfbb>v@!60@(WLx02nhqGwEUl+Z@G`YU z=^dnlIm8bH#hZ%eAO1ctCCy|C*$)EaG)8qwThWed+uB*}Vlrw4f`dD#uF z|8Zksp@IK%=9qQUAvQiTZpoMt2UK(}qerj0!RxOF?yIjSJq8fwqw@4P&i5E56VprJ z9u4_Pz3y`Og=~@0-w}lwH3d9m;Cd33o7cP7Ygex@HomUa~SLM@5q!zJ& zdhaG@*3DN{9TOSFgHCH&r-#{-7_4vs52yslpckU0zJ{ebJNQyy)&)~8yW6CDg9paK zns9AhUlYDXooa>a%R;b9P@%#EgLLg_!@#S)Zv2%S23$*Z+ZC(2Q3+gP1!DOz<_DG& zc={81&070_5pcNd>qbz7?LnnAu_i5!cJCwxvb-)?K91x-LF9LwMkq@qcDG{S{j&tC z8r7bNLeYo@D%gp|-18eP&YPaeC~#+BGG=+UP0i&X^kFODAq}Te>(weY@GmFSkAjvB zx}&u|fAkVLdGyk;)icL!!sHkcBp7csy|pHby=8;zj8mP5oYzcMtIN1+_!VyHpelDC z9&YG}cUm9*SWvfp*y5(HEJHksV)`D?V&&MfXWDok100Tq?N}7lps-vF@E8W=EWGcL zv-QQh9?i$A9oZ#dSNk&NME23Mkj?}qDkE8=rCfXgi=SjS4OB#VdJUwzfqdDObO5r* z`4srP+uK|xJHXYwE__vz8&%(%#JsTL4xPqt&w-Kam=0yc+O!4yqPlLv|Fmauff+5G z>w@TaWR(3SkJpTl` z>G%G+OD#ch0=rFj2nV(?QJzvP^H}FpSnzjDkbjxc|2uQ0Zqzy4({~B;>ag{nVR>Z ziZ&vg>)KdWu3wUQhMz4p*b_Yd9P@pI6KslQF&mz++EO4)@K2~w2S-J3aNE>j>v%u| zVpyQ@h_72Zo((15oe$leXS)@K^@xO8;J=c&Ut!cX@H=4v>eS#Q(7C}a#v-a8<3jLb zI*k|$T>r=^qoWn}+egMQmi#9DR7|B|aS))c$~aN(BwG-~PeW`P@H;V#)OJ$}SP?}I z^OWW@$x+~CSR2RHWwj1KR%bT0s{}n8x>3b6Id+(^LGl0@mVL*>lX5tc9NvP*5YPfQ zetzTZ9qS8NbD9xk!!;a32hP+DhLuEwm@e#NLMxG5t#KT93X~L;ieWpXilaYt)bW-J zwx_{>=D>4xp|^HBp4S2UOa0GVdx;%|^mv*o0O!l<)A?;(@3!1hw z3a`j62Owwr?Oi!q7vyi-5CcQ$xb2>3#PS*FIi%2zv@_e$03Vi#yx8c4vPP?qujB`D zFN*u!UiANS_a;D+oY#3^{`qI-pI2pORaRzJRaYO?)m=5yS50?ycU1#(Hb4x3#z_uH z5X3Y|kko*rNX}3MNP@RV7DbzomZaIzN-KjFV*%j|K9ib$3a%<=gXd|ES`pX zXft7js7FotUaep1YoFFuN-NsO71b*r)nMjrhA^f&vUz1DY{J(a{9OgU?vP`$c~m74 zQ=8!o4jZqWYplPmjYIEq4BeU9tnvWJl}@J;ovB2fPFUTvjB%~Eq#KSq)r~6E@QgDB zAGdnixMBHWwK9jld1t|!a`cvI!na7$JY9XM2J&)ST8ycBR(c5L|0khOB1ZlvN6|Gz zH+r}V8IPVTC_Bwb%LDEradFWT)YTZqdtf1_akL)cZ=gE|JoaucjA9D&WJCTort$g! zkri5wPC!qs_?AqV>qPWE)~_w}S@d3_RjQ?0q>*Q+;+3P4W-7Mj%ZzkrRQNggfvuPw zOd(kG3K0c@!*h?3NX73en!&0I@O0K##A=ZUai%ZmTEQabiJZ2Eoqhd zJq8=sHb_VJO{$d^>*MVSwqllGdh?HL@Dz0X-FOF{t78-IH1RW2pVoE!S-k)AIPRA537zN6TpKxD1WjTq8{y zg{AHUr^eCxYI)9{@Wz*X(^$GQus!+F-*MgPjdD@=XO;bV%Wn3^$C|DlId@121{T_E z=}@CZSVvC@^z&Y-w1XVEP!aF$MM1hxp9#-VB6&n*G`s{Jm33oYb`ATNxZDy3u+QTT zTU0Fm8&&avLwXejf>%NAH5K)OUq>c(X{{#>s2)t@b98JUA~(#jmTTFL6^_;&;#qWf9Ic560!Z*n-zL&n z{Od{nvwTS$$~0WzS(1-cBz{K7ys@1!KrPX| z0*uD>FptM|LHan*fg^wmgDwXV)yhLfKWh<6HpbA5L9a+=alq*rep@oW)9_zmF-y`ARW%E}<6 z`U(bpCX~j3*O-+S&=zq`*w77I&jrG2t`~Gq$jt!P2B>6PSk-y<4OAT5;0AO!hj02@ zTjw|9Yi>eUw0Epx(fWp_oY~suZ?-Vt0RQ$3?%W%xzB%8AKf*mQhvTH)Oiyk%2fuGO zwW05|zr>z@lY>L}+qTjkFm%;V5;cdr5>JT4U+g=6N-5p5@$(koGA~FU1nU13jGs?I z8(fyYCVf--yU-E`j-_y)u{CTmr-i+4{`=fmgMaB*8yt5h$gs8AP-`A?9PS#Cdr~nT zn>&1H#v?RsiH%W1m9SRpdYZ@kvb268ZN0y{>osPZya~$ zqdJL$Ed0Mi9(8y&j)t9}FO0H{h0%SdjL;CtAV)bY9^nYtf(?Yq$Dxs)jp4157}R)E z+JYIui$8r89&DZ8N(TMF$C<5Fe%$X~w+>pThDWDo_c3cY>>PCYYJAQgwnsdRV~mfQ zpLUm5^uMUf^&zchwEH~^P#+S%-&G%nWc?Q;fnC4H_qo`fx%$?VpvlVSz(bN?9DING zxA1D<;}j1eqs=A{XB;PD4nB@Q|3>yS0dN@nHup5^r#0ynE|1h;=2_r7wP^kHcJ5_g z=JC(di|FuAKwwHPA|CNE{|yc>7siV?oz_j$gFA6LEj+4paT0gL)Z_D+fnV-$j3KL! z*Djp6-_zmlOp@KEw2-dGve_Fa?dr)Y{N*$S(*`!S830J1 zCp{4CJV`Lq!wMNh%Hu)~bD^_?i|^Vsp6>7Q6nWZtG>+>ci&hq1I3IUc=qXyH&gr(! zjdPgB&68e;owGI(+-99_9J|_{U@(>WkPPF{TFNg7csv8EOg=HES-(>;-?! zkIVwmWNl2b*(aDoYfMJBF-tLAhf>EWe7EcPzVlv%7OgvM{;ERQAbt0P#=fF z5vxn64nmx%R=uucFKN22FFs@hj?BiNb1;ZAP3wJ9`U$jl@H6}Bo`8W(ZzfUUEG+Ni z-4ERJz*2D)GY`QXQ%)!y# zR(w_0IGqmakcXs`0$ueESbvow08T)$zrO$3gjD-<RWN zdCV{^_;zvAHt;iMd#c9Nu~4@uZrZ5|v0XUJhFO8C62;Io+%VLj3u%lIyzrb!Ab=jI z(5hP&$jl0c>Z6KPG*m?gvMCBH>I!v>Xq_pOxp`*Dq(o)>N|jM#$B14r%ep_UYUq%? zxS;9;F#(CD0^6d=kcbSu)`cvYV#f1qnapvmmave-tvS|P=cLN$%D2e*%-2R^%D6QU zBZ!l4S0|yGd2lBomLqyeu?W3HM*GyFOBKDyRBG5JOM8h*6+$>ss2cEIlB}^s(h>c{ zZ;758cVAHt4v}&v5%4wG?mdEGS&l@2SkR)LmdT18U?x*WJbyS9CVb|{(aI> z;P3!s#;Qi#Q=q5uo`PKk3S$}?<2?mV9`+P!NwIAe&=qaLRyj{2ytr`og>wtI0&bu! zBfVwh6yj}zHgGBk=d!i~tcTxNYLvozCrwZGWv$?wzis*j4X!UHDiP|B^~UMS|MGA={uCSj%`Ug5V39&`jciQYK8yiih6=E3rogh?L^<}Va{zwia< z%Hm1Vho%2pdJWclv~Vi(GMqwZy0uk|JGO$y*b=BIE?lS+7t&dBPJYzxvgWT~am+~7 zEZ?kHR@p!gnmK4tcv`kKt!PG;ruruTY_2|M&Ygl~2a3~GRkKsZh!cu(Y@Wgs<(R2x z9aB|13jg4)V~KAi*E3h725RNkhPY22j{)5z(u+2J5ViRV1Jg*#hITmIn|f4$3Y;>n z>!#UM3i?;|f^rFwwtQrRV|c{)bXHMLGhJsnzMjQMsgl3DwT=$leQ76dy%ujR5@go{Eq6J+g5!1z8Bjf~ zPa>s;r_@9*OD$=X}Y5zEpY(p`x!dYI|FcC}=CSV|r}Lch1W zZCCbqemPh0e!e9|y+#bwf%Zi`-w`PP8R=2!3A6>86)=mtQ8be}?NYS#lE#Zeh3~@M z-1Uo*2%9g8;b!jCgS$Fl4KvX@Pr)_%zE7_t3jDwqn|;EqY_+ z;@KzfDftz*^Rzo=QrYlznU+=-{KC?n{cge}o!p2_KbIgC4Pp328{RIxlF0`|`p~;gVm+ zP!^V|cs76I!#7Yg;Tt7=i_7L+ZGs5%WQRo11vq5Q@HvLC=?t2Dgt%!2*)cBf zBFI`1mlG#s4lfitg0x#F<#5M6GB;f&#POz@tEW0R%ut6(DnZKHAr^}(k*aJUl99}w7L6WmN+*gNiyA8njCX%LUi-!f>&6bhOA_e zD~=rTDD{pUY4}8jLQMbpD^pYTdL{C`a#{6$INh9_s$tG&(jxR81w5V^qBZ zq{i;)3Z<3PUEq0FoBYjqUAAcRav%QF?tU5}S09{H{JEJ%J5ZFM-I$qsoWj%h-wo3m zkB>%w{1;HJE|jYw&2wJ@qzu!7a@52E3BvFKfxsZB*5x5xp=o-#A||LEr%-%d;iz{B zhR069TR3VmqwJVw_jpKYc)V+xPT62c-{-1RtE*Gh_C5D}ELQ~tO;$ElIyT84PK;4) z6CWM_bH`K5Ww%%kTT|l=xvVHQ=e@wHS6{1&g8gTpx)$cn=}@;`rA{DiHUl((jIf< z!rWH>t&PUS_}H;l)m9}X9*4^?Ug{wCoZ@(iqUm`~y*5{6t;clWwBhOupc{)291$T- zq5WGiJ%8=&^mr7U9K(WHenX{|vEq@2%UEsVA;-C+UV%|u>emb%N^0noR;w`G`jur9 zrsbkPvAi9U)GH?(}r3(Qk|S?AGgfK#rDip6u7WfLrv-d)0gjpH8aw} zN-?O8O=at)3Vpo5Bcw<^0#l2^!;nK4ljMep!N>1#I6i6AeA#v;CJHtw*S^F;Q!^@6 zotfdLJJ%p`Ia*nX$}(xpk)}}`FP7myIL+%y+40~%r>y*>J08}?8}Q$FEga`XiScWf zq%xL;D}=*TbBvmxuPVwVh13ash$^2|;0V_WnV03htb9hL?^TrdQuQ;6jC~_ZtGY*O zQMcD2Ba?jQj{9owACd0AKL1R2FzvCu(q?<7ZrASn*y!|~XU_8+^4Q8a@1y;qPz{T% zAHnsuUrBmyBHr|MSn^MKo`8 z;#u0NG|tm*ubm=$r+)F`$n@{}{9SuwkdqA-VKzP?Jt&=*J|ulcdS3dKSe}hFPJ+cx zH6z`G=SAqFHNO9cEyGZZV{I6+(HiRx3JTF6yRyE^LSX3o;rGM8zl7W@XH0}-&&@~r z$kopwP87nwd3*Gl@3EC5qv>06e5S+|5gF~8gbDFhhz!1PSZ zvw{E)a2agzGzd?57CmApKg^{$zCHKBT>O^Gm8?A299hhfB9}H%T6?#2N&1@f3(|it zU6FoM`W@sfhAAEmnk((H!H9-ryWP_1J~l{so0J^h8HPJaSj%-D0h&jF?yd=IvjDF# zQVSZ|yfDx%A501EK5~!LrJ$%=GS#VU>BWGf_UKxv zdKC5e4sK)|t(Jt;HTck1Ro|b|71waMdye5M`V{WyWm!JE|QW@?8O`|0H3b@kl1cBO&aTpwN_p=3)( zq`NR4{6Ku9-X0(eT&dmS)*?Cl)zo^l9dTf9E^vRpG*K!|G$)J2$uS>s6?`bIaO{9G zKdO4_XAlbEGoL{~h6TQe^&hVst;mI^>|*@G=0s_m_g=1jj(`7Ks>*-!8UFi)llZP; zJWisyPT8{`PWKT)X%0r{xtPxp1rD;#ie>B#S0Ea&9?HQZre+68NB?G0fr6J}vu)?< zvYk}{B&oFCF(rr>SHgZz40iVHcD_2_%!pSOKg^RL-+nb7N$T!_TJF~@(LggZC-v+^ zVT*io|7LkPE7o#VDX1=@=9;0*n4H#Vk7oI7MvrqxHCc5~4`IOyqvZE~M4R2qWroR& z;fm1GuR~&mV~SMA(LQ?n*XT=7qj_G91zxZ16q2vVp+Nrk{i`(3L%p0_;5FNRHioHt z4@dF%+P+oV)kddYUmLY^Q_kU=$J)S-hL|Te(J)&=Z$8i-XtQ_M9?{dVNbSQn)b~df z@5}-1v#WG3@82kSyuf*GYnHHa32T=pI&Y8U-E$gkVX+>d8m;moEyDtH5thC!s?|5~ z6<3N}R%lgFaYdFdQ6AAO)k$N%vwS~&AZ-Mz7*ztc*5kYG@$Ij~8J<&ASSlV%3-ZE+ z3ulCBZj@%JY;6se=3CD^{q!?XR86^mc#fZe-iK)0se38Ra8V4Ky@rZ^P77fIc=Pjn zrA{?QZD<7>HI#K(-`c;UUgizTfBoTcJ`JvNtK(JPgyZt72Tbup^ToqAIbR%t2sbfp z?5_Pm6Nh&|^|P37$=q>Ty6@1lhq`MGi_PL%>7L~Q^9W%Bi6cRV!Pdq`1Uu^a)+qdLG4DS_N&@{jrQmPRg1@elegLI0j-sS#f)x=OGW!d zXok_mzW6X&-#;AtG%xY|R;1^o%X`sM^!gUxpNTl&r6zg`K8)J82icEl@t*E*3-B8J zkx_y%q8gTEsPg;l;-$A+#Tg=-CV_)WRa2n^Q6WHLK~V#5_+yz66Aza7M#fO(*kEvw zW$}&WSVeS6-qn7bXhoGWtz^iq?@-eOvR!bE>$>3S~`BVc8{eb6BIXRoKSBO2!@uYQpn zG;}Jrhuqq_XlXl{|C{mrxVnGOZzmho?X~uRDtcsB{V$g;dVKUr?<^t0G0p50F8)*_UrjrJR{wI zb7OIpM^{OK(D}=@@Xtb7{-BZd+om2)hTQF3H_1j)nf(UGJ9znX_1O?r;rpp7xB2eG z{d@uD`J0d;T8HO%UCqo(Tzt^0vN zD-EZ6+Ek+H>4ITYr{TA7Y>2)U*FlvmAx+GVDB4X35=7anoUH@e=ly$?^EVHYDn|0t zgF2JA%s~p*fKZg{e;NFA#?yS5N4x@lQbl$WW!bv?jf1%9Tji$@L4-GypZ?nZ^&cUN zKm0oNB`HE_Zh^rKSeP;nFPp2jz!VkOp#qQ;uWv$9e}^q_M6-nC0w%P(E#Go0ZMk=C zZ=yZ-tL`CNbe(h?236Ge`tWQTA$PRt_|1;(Q7+F^HSGgmVh6ElG+M275f~= z1BPPaApX@oEAa7isYj<9k=-$#bFwq`d985B$q2#%pR$Z5KI^?;ojYkQgP8brLP+LZ`&4t*vIDQw49KLb1WtLu)8;m+G;$hlIV3il zsZF;mt1Q0o)UsQiFAjaNgPS9aidu$JUmp*eZq=}4v*hVsYm&qtEiOuV+(4a20!vN6IqVY(Wr659C&=Y7gl`>t zSk~lwR;Whr7SKMg3P`MX5&HP5OyoCn{_b2hM=x^hfoYt%hP^JbU{pLO3=Q8)`VaIa zVf*i1Pi*|pCOI$a1-GDslyn2%U*(LYkLH}4Gf;wi8gO`s6?DD8U>xPkfquwnDJN7c zVxwnhM?AptCB+2N?HzG znt*bg$yp?4hREyP0TdWbz?sDwAS`SzR{KwK%Zzh27Z?9g=)Hty)uAWy*R3mF$Smvs z(5+=CLO0G)&8v7CJ-0!XpEU{}Ef{Z-ne3T=YI<!<6K{bF?;Hqvte@ z{wdY|>Hg)~#(D1;RaLq(R6?4@3`e@)?$jYE69~hJ^s|-x+k?qQm8awPPb+Hrm{jS# zNvZFp2(UzzJ2B|soeI~sBaV@xv84Pccje088*4%ASu7UhCo8ISaW zOy$}gbp$;fJ3c1M(X67uSk@|p;7WML@`&#f&*B?6vJ5k_;<^e<*Dvr7J(aK%M6q34 z*WsX?)OA@^W&IHuOi47wqh<6&&*4ft9x($MD4<3!L;71??`z8EjvyP=$FRr1Kppvt0mt5}Xum4`TbN55+)p54V(E$y5ZRG=^c7f?Ps-e$wI|Rb z+aH{q^yVfe=I)#*%+8D%#@NhkVIp^360f~)&CI$J^Aod8hd+n6PLp5rFP-HXeCuXB z8DgJ~BQEBkw9K>>+^lU*3w7oxl14Vjc!WDjva1rs)61$u5U-#rAV;zV|F<7EF=krz z3^o+2B?v4^F7GPP0Bw%*ae>%CQMeBh)fhH@4 zV#;G~*@eG<$P5{}>szM?(KYB4&WkW|1J{)XWByHXRLNl;V^_VCU6jnH^Vf&#N<<5Y zn1mc)Tt`)SWJNeQE?xwsQSS<#qHZHx zCfh&GR8XiC;4c^-Ckw;LiOVsOlz(n8<+t!# zxoYBwG=uWY+)O!W&NYLvLZwzIjL(hd=7=h{fWE1SzP$m|Koke|iSY{!@O7@CfoqvX1#hT6af?*DrYdK-`&&zvTij9ZEKFdxOt?Mhwtgbf6Avi&{y#{! z?NM~Q^$wTO%>)TPS@TfShD%zj_eN9d(nV95n^R4)af|dJ)yt|zt5vG0JGVXzb95|Ivg{zx;;LX>g)~nd^AIQhhUGRmIkA_BP&y`lTV=#lYz3Jc!SowGzG0!Tpq3{5DHc>z+@LWswbWHL z2?w7$v~HbiLF_n-!X#iJ7#2PhPc&85nam$u;5<3>N};{@m$z}9u|cZ5TY4O0()9i^ zNqvD^1Zxx+z|O5sq(Wl(rQ14x;=bNF>1nh>>*eaR%a`LXp-T=$)VyWh<>i6YbWH!k zZJ?c=(oP3S2rUHOCVf!)obNlym#zh;g-WnpmLG34Wq%45^dL|ys)QWiBnUY4Nl0&%WBmsd zQc(c$ww)D}g-pvF%a0no( znfg!+NVs@!c!4ZQ0Z<4r-!Vo&jBme&9ODFu z&~hdRWY9qf%d&`82?K78X;-~M!3(DXx8S-;W!xuMHRV%!N&l3h(T_hR%O7#wkI3>< zAE$&B0{Tv(igHpmv?)ru{t-e+hp`Tvj`&@Ywj+~nq;u~e zH+9H4w}q}q&|kP~Qi`lK;wpB#IG&vNlop?)f$|ijTC62*<#TNxu0WTFmXt`l|4>EZ z;S3Ha)2-5Izhc}hjhgY^N@oBqGtr428gW9r=SEG}@NiLpVc|ZxIN{++`Y;b@KO3WC z_2W<}91&oL&qsV_%J|ZJSszX?zO$X6wFA%>hB5JnBXqpVp$C$|%ByiXEBsb=xszS) zu}_p#C_Y?H54=)n^MU)TP3d1sKE_JJeMN+9>S828{J-gtcCwMSS)FCI&Vu#V>UH1u zOTJ&#r&?kM?cCI{Ij0=*7w}&(=!o5<)VAYKVLjmCL0U(2{>9 z7o5^(G?~>s5hr7(dbHq22=b5G68t3jMT?*Ac#6iGvpW)IloWeD9t601K-*9^D~UQ*mpuUR37r ze{PJ4vm#>Mw*>&-Iz9?8o&g%2wSm{d*Wo*5ZCj͍DL09^UPJd{U1rzmAhp)eP! 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 literal 0 HcmV?d00001 diff --git a/pr-preview/pr-51/site_libs/bootstrap/bootstrap.min.css b/pr-preview/pr-51/site_libs/bootstrap/bootstrap.min.css new file mode 100644 index 00000000..79935b94 --- /dev/null +++ b/pr-preview/pr-51/site_libs/bootstrap/bootstrap.min.css @@ -0,0 +1,10 @@ +@import"https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap";.component circle,.component ellipse,.component path,.component polygon,.component rect{fill:#decbe4 !important}/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--bs-blue: #007bff;--bs-indigo: #6610f2;--bs-purple: #9b479f;--bs-pink: #e83e8c;--bs-red: #d9230f;--bs-orange: #d9831f;--bs-yellow: #ffc107;--bs-green: #469408;--bs-teal: #20c997;--bs-cyan: #029acf;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #373a3c;--bs-gray-100: #f8f9fa;--bs-gray-200: #ddd;--bs-gray-300: #dee2e6;--bs-gray-400: #bbb;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #444;--bs-gray-800: #373a3c;--bs-gray-900: #212529;--bs-default: #5a6268;--bs-primary: #70d287;--bs-secondary: #5a6268;--bs-success: #469408;--bs-info: #029acf;--bs-warning: #d9831f;--bs-danger: #9b479f;--bs-light: #fff;--bs-dark: #373a3c;--bs-default-rgb: 90, 98, 104;--bs-primary-rgb: 112, 210, 135;--bs-secondary-rgb: 90, 98, 104;--bs-success-rgb: 70, 148, 8;--bs-info-rgb: 2, 154, 207;--bs-warning-rgb: 217, 131, 31;--bs-danger-rgb: 155, 71, 159;--bs-light-rgb: 255, 255, 255;--bs-dark-rgb: 55, 58, 60;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg-rgb: 252, 252, 252;--bs-font-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-bg: #fcfcfc}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #ddd}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:#70d287;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{color:#5aa86c}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr /* rtl:ignore */;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#f3f3f4;padding:.5rem;border:1px solid #dee2e6;border-radius:.25rem}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:#9753b8;background-color:#f3f3f4;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#212529;border-radius:.2em}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fcfcfc;border:1px solid #dee2e6;border-radius:.25rem;box-shadow:0 .125rem .25rem rgba(0,0,0,.075);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:#6c757d}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:2px solid #9ba5ae}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #e2f6e7;--bs-table-striped-bg: #d7eadb;--bs-table-striped-color: #000;--bs-table-active-bg: #cbddd0;--bs-table-active-color: #000;--bs-table-hover-bg: #d1e4d6;--bs-table-hover-color: #000;color:#000;border-color:#cbddd0}.table-secondary{--bs-table-bg: #dee0e1;--bs-table-striped-bg: #d3d5d6;--bs-table-striped-color: #000;--bs-table-active-bg: #c8cacb;--bs-table-active-color: #000;--bs-table-hover-bg: #cdcfd0;--bs-table-hover-color: #000;color:#000;border-color:#c8cacb}.table-success{--bs-table-bg: #daeace;--bs-table-striped-bg: #cfdec4;--bs-table-striped-color: #000;--bs-table-active-bg: #c4d3b9;--bs-table-active-color: #000;--bs-table-hover-bg: #cad8bf;--bs-table-hover-color: #000;color:#000;border-color:#c4d3b9}.table-info{--bs-table-bg: #ccebf5;--bs-table-striped-bg: #c2dfe9;--bs-table-striped-color: #000;--bs-table-active-bg: #b8d4dd;--bs-table-active-color: #000;--bs-table-hover-bg: #bdd9e3;--bs-table-hover-color: #000;color:#000;border-color:#b8d4dd}.table-warning{--bs-table-bg: #f7e6d2;--bs-table-striped-bg: #ebdbc8;--bs-table-striped-color: #000;--bs-table-active-bg: #decfbd;--bs-table-active-color: #000;--bs-table-hover-bg: #e4d5c2;--bs-table-hover-color: #000;color:#000;border-color:#decfbd}.table-danger{--bs-table-bg: #ebdaec;--bs-table-striped-bg: #dfcfe0;--bs-table-striped-color: #000;--bs-table-active-bg: #d4c4d4;--bs-table-active-color: #000;--bs-table-hover-bg: #d9cada;--bs-table-hover-color: #000;color:#000;border-color:#d4c4d4}.table-light{--bs-table-bg: #fff;--bs-table-striped-bg: #f2f2f2;--bs-table-striped-color: #000;--bs-table-active-bg: #e6e6e6;--bs-table-active-color: #000;--bs-table-hover-bg: #ececec;--bs-table-hover-color: #000;color:#000;border-color:#e6e6e6}.table-dark{--bs-table-bg: #373a3c;--bs-table-striped-bg: #414446;--bs-table-striped-color: #fff;--bs-table-active-bg: #4b4e50;--bs-table-active-color: #fff;--bs-table-hover-bg: #46494b;--bs-table-hover-color: #fff;color:#fff;border-color:#4b4e50}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fcfcfc;background-clip:padding-box;border:1px solid #bbb;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;border-radius:.25rem;box-shadow:inset 0 1px 2px rgba(0,0,0,.075);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fcfcfc;border-color:#b8e9c3;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 0 .25rem rgba(112,210,135,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#ddd;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#212529;background-color:#ddd;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#d2d2d2}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#212529;background-color:#ddd;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#d2d2d2}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fcfcfc;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23373a3c' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #bbb;border-radius:.25rem;box-shadow:inset 0 1px 2px rgba(0,0,0,.075);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#b8e9c3;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 0 .25rem rgba(112,210,135,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#ddd}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:.2em}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.3rem}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fcfcfc;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;color-adjust:exact;-webkit-print-color-adjust:exact}.form-check-input[type=checkbox],.shiny-input-container .checkbox input[type=checkbox],.shiny-input-container .checkbox-inline input[type=checkbox],.shiny-input-container .radio input[type=checkbox],.shiny-input-container .radio-inline input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#b8e9c3;outline:0;box-shadow:0 0 0 .25rem rgba(112,210,135,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#70d287;border-color:#70d287}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23000'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#70d287;border-color:#70d287;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23b8e9c3'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23000'/%3e%3c/svg%3e")}.form-check-inline,.shiny-input-container .checkbox-inline,.shiny-input-container .radio-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:rgba(0,0,0,0);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fcfcfc,0 0 0 .25rem rgba(112,210,135,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fcfcfc,0 0 0 .25rem rgba(112,210,135,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;background-color:#70d287;border:0;border-radius:1rem;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#d4f2db}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dee2e6;border-color:rgba(0,0,0,0);border-radius:1rem;box-shadow:inset 0 1px 2px rgba(0,0,0,.075)}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#70d287;border:0;border-radius:1rem;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#d4f2db}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dee2e6;border-color:rgba(0,0,0,0);border-radius:1rem;box-shadow:inset 0 1px 2px rgba(0,0,0,.075)}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#ddd;border:1px solid #bbb;border-radius:.25rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#469408}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(70,148,8,.9);border-radius:.25rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#469408;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23469408' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#469408;box-shadow:0 0 0 .25rem rgba(70,148,8,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#469408}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23373a3c' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23469408' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#469408;box-shadow:0 0 0 .25rem rgba(70,148,8,.25)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#469408}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#469408}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(70,148,8,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#469408}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.input-group .form-control.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.input-group .form-control.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#9b479f}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(155,71,159,.9);border-radius:.25rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#9b479f;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%239b479f'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%239b479f' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#9b479f;box-shadow:0 0 0 .25rem rgba(155,71,159,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#9b479f}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23373a3c' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%239b479f'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%239b479f' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#9b479f;box-shadow:0 0 0 .25rem rgba(155,71,159,.25)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#9b479f}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#9b479f}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(155,71,159,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#9b479f}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.input-group .form-control.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.input-group .form-control.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(112,210,135,.25)}.btn-check:checked+.btn,.btn-check:active+.btn,.btn:active,.btn.active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-check:checked+.btn:focus,.btn-check:active+.btn:focus,.btn:active:focus,.btn.active:focus{box-shadow:0 0 0 .25rem rgba(112,210,135,.25),inset 0 3px 5px rgba(0,0,0,.125)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65;box-shadow:none}.btn-default{color:#fff;background-color:#5a6268;border-color:#5a6268;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:hover{color:#fff;background-color:#4d5358;border-color:#484e53}.btn-check:focus+.btn-default,.btn-default:focus{color:#fff;background-color:#4d5358;border-color:#484e53;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(115,122,127,.5)}.btn-check:checked+.btn-default,.btn-check:active+.btn-default,.btn-default:active,.btn-default.active,.show>.btn-default.dropdown-toggle{color:#fff;background-color:#484e53;border-color:#444a4e}.btn-check:checked+.btn-default:focus,.btn-check:active+.btn-default:focus,.btn-default:active:focus,.btn-default.active:focus,.show>.btn-default.dropdown-toggle:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(115,122,127,.5)}.btn-default:disabled,.btn-default.disabled{color:#fff;background-color:#5a6268;border-color:#5a6268}.btn-primary{color:#000;background-color:#70d287;border-color:#70d287;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-primary:hover{color:#000;background-color:#85d999;border-color:#7ed793}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#000;background-color:#85d999;border-color:#7ed793;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(95,179,115,.5)}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle{color:#000;background-color:#8ddb9f;border-color:#7ed793}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(95,179,115,.5)}.btn-primary:disabled,.btn-primary.disabled{color:#000;background-color:#70d287;border-color:#70d287}.btn-secondary{color:#fff;background-color:#5a6268;border-color:#5a6268;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-secondary:hover{color:#fff;background-color:#4d5358;border-color:#484e53}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#4d5358;border-color:#484e53;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(115,122,127,.5)}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#484e53;border-color:#444a4e}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(115,122,127,.5)}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#5a6268;border-color:#5a6268}.btn-success{color:#fff;background-color:#469408;border-color:#469408;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-success:hover{color:#fff;background-color:#3c7e07;border-color:#387606}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#3c7e07;border-color:#387606;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(98,164,45,.5)}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#387606;border-color:#356f06}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(98,164,45,.5)}.btn-success:disabled,.btn-success.disabled{color:#fff;background-color:#469408;border-color:#469408}.btn-info{color:#fff;background-color:#029acf;border-color:#029acf;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-info:hover{color:#fff;background-color:#0283b0;border-color:#027ba6}.btn-check:focus+.btn-info,.btn-info:focus{color:#fff;background-color:#0283b0;border-color:#027ba6;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(40,169,214,.5)}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#027ba6;border-color:#02749b}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(40,169,214,.5)}.btn-info:disabled,.btn-info.disabled{color:#fff;background-color:#029acf;border-color:#029acf}.btn-warning{color:#fff;background-color:#d9831f;border-color:#d9831f;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-warning:hover{color:#fff;background-color:#b86f1a;border-color:#ae6919}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#fff;background-color:#b86f1a;border-color:#ae6919;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(223,150,65,.5)}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ae6919;border-color:#a36217}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(223,150,65,.5)}.btn-warning:disabled,.btn-warning.disabled{color:#fff;background-color:#d9831f;border-color:#d9831f}.btn-danger{color:#fff;background-color:#9b479f;border-color:#9b479f;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger:hover{color:#fff;background-color:#843c87;border-color:#7c397f}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#843c87;border-color:#7c397f;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(170,99,173,.5)}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#7c397f;border-color:#743577}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(170,99,173,.5)}.btn-danger:disabled,.btn-danger.disabled{color:#fff;background-color:#9b479f;border-color:#9b479f}.btn-light{color:#000;background-color:#fff;border-color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-light:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#fff;border-color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(217,217,217,.5)}.btn-check:checked+.btn-light,.btn-check:active+.btn-light,.btn-light:active,.btn-light.active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+.btn-light:focus,.btn-check:active+.btn-light:focus,.btn-light:active:focus,.btn-light.active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(217,217,217,.5)}.btn-light:disabled,.btn-light.disabled{color:#000;background-color:#fff;border-color:#fff}.btn-dark{color:#fff;background-color:#373a3c;border-color:#373a3c;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-dark:hover{color:#fff;background-color:#2f3133;border-color:#2c2e30}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#2f3133;border-color:#2c2e30;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(85,88,89,.5)}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#2c2e30;border-color:#292c2d}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(85,88,89,.5)}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-outline-default{color:#5a6268;border-color:#5a6268;background-color:rgba(0,0,0,0)}.btn-outline-default:hover{color:#fff;background-color:#5a6268;border-color:#5a6268}.btn-check:focus+.btn-outline-default,.btn-outline-default:focus{box-shadow:0 0 0 .25rem rgba(90,98,104,.5)}.btn-check:checked+.btn-outline-default,.btn-check:active+.btn-outline-default,.btn-outline-default:active,.btn-outline-default.active,.btn-outline-default.dropdown-toggle.show{color:#fff;background-color:#5a6268;border-color:#5a6268}.btn-check:checked+.btn-outline-default:focus,.btn-check:active+.btn-outline-default:focus,.btn-outline-default:active:focus,.btn-outline-default.active:focus,.btn-outline-default.dropdown-toggle.show:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(90,98,104,.5)}.btn-outline-default:disabled,.btn-outline-default.disabled{color:#5a6268;background-color:rgba(0,0,0,0)}.btn-outline-primary{color:#70d287;border-color:#70d287;background-color:rgba(0,0,0,0)}.btn-outline-primary:hover{color:#000;background-color:#70d287;border-color:#70d287}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(112,210,135,.5)}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show{color:#000;background-color:#70d287;border-color:#70d287}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(112,210,135,.5)}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#70d287;background-color:rgba(0,0,0,0)}.btn-outline-secondary{color:#5a6268;border-color:#5a6268;background-color:rgba(0,0,0,0)}.btn-outline-secondary:hover{color:#fff;background-color:#5a6268;border-color:#5a6268}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(90,98,104,.5)}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#5a6268;border-color:#5a6268}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(90,98,104,.5)}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#5a6268;background-color:rgba(0,0,0,0)}.btn-outline-success{color:#469408;border-color:#469408;background-color:rgba(0,0,0,0)}.btn-outline-success:hover{color:#fff;background-color:#469408;border-color:#469408}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(70,148,8,.5)}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#469408;border-color:#469408}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(70,148,8,.5)}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#469408;background-color:rgba(0,0,0,0)}.btn-outline-info{color:#029acf;border-color:#029acf;background-color:rgba(0,0,0,0)}.btn-outline-info:hover{color:#fff;background-color:#029acf;border-color:#029acf}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(2,154,207,.5)}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show{color:#fff;background-color:#029acf;border-color:#029acf}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(2,154,207,.5)}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#029acf;background-color:rgba(0,0,0,0)}.btn-outline-warning{color:#d9831f;border-color:#d9831f;background-color:rgba(0,0,0,0)}.btn-outline-warning:hover{color:#fff;background-color:#d9831f;border-color:#d9831f}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(217,131,31,.5)}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show{color:#fff;background-color:#d9831f;border-color:#d9831f}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(217,131,31,.5)}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#d9831f;background-color:rgba(0,0,0,0)}.btn-outline-danger{color:#9b479f;border-color:#9b479f;background-color:rgba(0,0,0,0)}.btn-outline-danger:hover{color:#fff;background-color:#9b479f;border-color:#9b479f}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(155,71,159,.5)}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#9b479f;border-color:#9b479f}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(155,71,159,.5)}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#9b479f;background-color:rgba(0,0,0,0)}.btn-outline-light{color:#fff;border-color:#fff;background-color:rgba(0,0,0,0)}.btn-outline-light:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(255,255,255,.5)}.btn-check:checked+.btn-outline-light,.btn-check:active+.btn-outline-light,.btn-outline-light:active,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+.btn-outline-light:focus,.btn-check:active+.btn-outline-light:focus,.btn-outline-light:active:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(255,255,255,.5)}.btn-outline-light:disabled,.btn-outline-light.disabled{color:#fff;background-color:rgba(0,0,0,0)}.btn-outline-dark{color:#373a3c;border-color:#373a3c;background-color:rgba(0,0,0,0)}.btn-outline-dark:hover{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(55,58,60,.5)}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(55,58,60,.5)}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#373a3c;background-color:rgba(0,0,0,0)}.btn-link{font-weight:400;color:#70d287;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:hover{color:#5aa86c}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;box-shadow:0 .5rem 1rem rgba(0,0,0,.15)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0}.dropdown-item:hover,.dropdown-item:focus{color:#fff;background-color:#70d287}.dropdown-item.active,.dropdown-item:active{color:#000;text-decoration:none;background-color:#70d287}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:0.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#373a3c;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#000;background-color:#70d287}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group.show .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.show .dropdown-toggle.btn-link{box-shadow:none}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.9rem 1rem;color:#70d287;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:#5aa86c}.nav-link.disabled{color:#bbb;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #eee}.nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid rgba(0,0,0,0);border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#ddd #ddd #eee;isolation:isolate}.nav-tabs .nav-link.disabled{color:#bbb;background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#444;background-color:#fcfcfc;border-color:#eee #eee rgba(0,0,0,0)}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:none;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#000;background-color:#70d287}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container-xxl,.navbar>.container-xl,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container,.navbar>.container-fluid{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:.7125rem;padding-bottom:.7125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.9rem;padding-bottom:.9rem}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:.25 0;font-size:1.25rem;line-height:1;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-top,.navbar-expand-sm .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-top,.navbar-expand-md .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-top,.navbar-expand-lg .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-top,.navbar-expand-xl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-top,.navbar-expand-xxl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-top,.navbar-expand .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-light{background-color:#fff}.navbar-light .navbar-brand{color:rgba(0,0,0,.6)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#000}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.6)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,.8)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.75)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .nav-link.active{color:#000}.navbar-light .navbar-toggler{color:rgba(0,0,0,.6);border-color:rgba(0,0,0,0)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.6%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.6)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#000}.navbar-dark{background-color:#fff}.navbar-dark .navbar-brand{color:rgba(0,0,0,.6)}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#000}.navbar-dark .navbar-nav .nav-link{color:rgba(0,0,0,.6)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(0,0,0,.8)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.75)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active{color:#000}.navbar-dark .navbar-toggler{color:rgba(0,0,0,.6);border-color:rgba(0,0,0,0)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.6%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(0,0,0,.6)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#000}.card{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid #eee;border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-0.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:#adb5bd;border-bottom:1px solid #eee}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:#adb5bd;border-top:1px solid #eee}.card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.card-header-tabs .nav-link.active{background-color:#fff;border-bottom-color:#fff}.card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fcfcfc;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#65bd7a;background-color:#f1fbf3;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2365bd7a'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#b8e9c3;outline:0;box-shadow:0 0 0 .25rem rgba(112,210,135,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fcfcfc;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:.375rem .75rem;margin-bottom:1rem;list-style:none;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#70d287;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#fff;border:1px solid #eee;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#fff;background-color:#70d287;border-color:#70d287}.page-link:focus{z-index:3;color:#5aa86c;background-color:#ddd;outline:0;box-shadow:0 0 0 .25rem rgba(112,210,135,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#000;background-color:#70d287;border-color:#70d287}.page-item.disabled .page-link{color:#bbb;pointer-events:none;background-color:#fff;border-color:#eee}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:0.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2em;border-bottom-left-radius:.2em}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2em;border-bottom-right-radius:.2em}.badge{display:inline-block;padding:.35em .65em;font-size:0.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid rgba(0,0,0,0);border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{color:#363b3e;background-color:#dee0e1;border-color:#ced0d2}.alert-default .alert-link{color:#2b2f32}.alert-primary{color:#437e51;background-color:#e2f6e7;border-color:#d4f2db}.alert-primary .alert-link{color:#366541}.alert-secondary{color:#363b3e;background-color:#dee0e1;border-color:#ced0d2}.alert-secondary .alert-link{color:#2b2f32}.alert-success{color:#2a5905;background-color:#daeace;border-color:#c8dfb5}.alert-success .alert-link{color:#224704}.alert-info{color:#015c7c;background-color:#ccebf5;border-color:#b3e1f1}.alert-info .alert-link{color:#014a63}.alert-warning{color:#824f13;background-color:#f7e6d2;border-color:#f4dabc}.alert-warning .alert-link{color:#683f0f}.alert-danger{color:#5d2b5f;background-color:#ebdaec;border-color:#e1c8e2}.alert-danger .alert-link{color:#4a224c}.alert-light{color:#999;background-color:#fff;border-color:#fff}.alert-light .alert-link{color:#7a7a7a}.alert-dark{color:#212324;background-color:#d7d8d8;border-color:#c3c4c5}.alert-dark .alert-link{color:#1a1c1d}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;display:-webkit-flex;height:1rem;overflow:hidden;font-size:0.75rem;background-color:#ddd;border-radius:.25rem;box-shadow:inset 0 1px 2px rgba(0,0,0,.075)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:#70d287;text-align:center;white-space:nowrap;background-color:#70d287;transition:width .6s ease}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#444;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#444;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#ddd}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#fff;border:1px solid #eee}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#eee}.list-group-item.active{z-index:2;color:#000;background-color:#70d287;border-color:#70d287}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{color:#363b3e;background-color:#dee0e1}.list-group-item-default.list-group-item-action:hover,.list-group-item-default.list-group-item-action:focus{color:#363b3e;background-color:#c8cacb}.list-group-item-default.list-group-item-action.active{color:#fff;background-color:#363b3e;border-color:#363b3e}.list-group-item-primary{color:#437e51;background-color:#e2f6e7}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#437e51;background-color:#cbddd0}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#437e51;border-color:#437e51}.list-group-item-secondary{color:#363b3e;background-color:#dee0e1}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#363b3e;background-color:#c8cacb}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#363b3e;border-color:#363b3e}.list-group-item-success{color:#2a5905;background-color:#daeace}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#2a5905;background-color:#c4d3b9}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#2a5905;border-color:#2a5905}.list-group-item-info{color:#015c7c;background-color:#ccebf5}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#015c7c;background-color:#b8d4dd}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#015c7c;border-color:#015c7c}.list-group-item-warning{color:#824f13;background-color:#f7e6d2}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#824f13;background-color:#decfbd}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#824f13;border-color:#824f13}.list-group-item-danger{color:#5d2b5f;background-color:#ebdaec}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#5d2b5f;background-color:#d4c4d4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#5d2b5f;border-color:#5d2b5f}.list-group-item-light{color:#999;background-color:#fff}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#999;background-color:#e6e6e6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#999;border-color:#999}.list-group-item-dark{color:#212324;background-color:#d7d8d8}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#212324;background-color:#c2c2c2}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#212324;border-color:#212324}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(112,210,135,.25);opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:0.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.toast-header .btn-close{margin-right:-0.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid #eee;border-radius:.3rem;box-shadow:0 .125rem .25rem rgba(0,0,0,.075);outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #eee;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-0.5rem -0.5rem -0.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem}.modal-footer{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:.75rem;border-top:1px solid #eee;border-bottom-right-radius:calc(0.3rem - 1px);border-bottom-left-radius:calc(0.3rem - 1px)}.modal-footer>*{margin:.25rem}@media(min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-content{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)}.modal-sm{max-width:300px}}@media(min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media(min-width: 1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0 /* rtl:ignore */;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;background-color:#fcfcfc;background-clip:padding-box;border:1px solid #eee;border-radius:.3rem;box-shadow:0 .5rem 1rem rgba(0,0,0,.15)}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-0.5rem - 1px)}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#eee}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fcfcfc}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#eee}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fcfcfc}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-0.5rem - 1px)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#eee}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fcfcfc}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #ededed}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#eee}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fcfcfc}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#ededed;border-bottom:1px solid #eee;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;border:.25em solid currentColor;border-right-color:rgba(0,0,0,0);border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;box-shadow:0 .125rem .25rem rgba(0,0,0,.075);transition:transform .3s ease-in-out}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-0.5rem;margin-right:-0.5rem;margin-bottom:-0.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid #eee;transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid #eee;transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid #eee;transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid #eee;transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-default{color:#5a6268}.link-default:hover,.link-default:focus{color:#484e53}.link-primary{color:#70d287}.link-primary:hover,.link-primary:focus{color:#8ddb9f}.link-secondary{color:#5a6268}.link-secondary:hover,.link-secondary:focus{color:#484e53}.link-success{color:#469408}.link-success:hover,.link-success:focus{color:#387606}.link-info{color:#029acf}.link-info:hover,.link-info:focus{color:#027ba6}.link-warning{color:#d9831f}.link-warning:hover,.link-warning:focus{color:#ae6919}.link-danger{color:#9b479f}.link-danger:hover,.link-danger:focus{color:#7c397f}.link-light{color:#fff}.link-light:hover,.link-light:focus{color:#fff}.link-dark{color:#373a3c}.link-dark:hover,.link-dark:focus{color:#2c2e30}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-top-0{border-top:0 !important}.border-end{border-right:1px solid #dee2e6 !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:1px solid #dee2e6 !important}.border-start-0{border-left:0 !important}.border-default{border-color:#5a6268 !important}.border-primary{border-color:#70d287 !important}.border-secondary{border-color:#5a6268 !important}.border-success{border-color:#469408 !important}.border-info{border-color:#029acf !important}.border-warning{border-color:#d9831f !important}.border-danger{border-color:#9b479f !important}.border-light{border-color:#fff !important}.border-dark{border-color:#373a3c !important}.border-white{border-color:#fff !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-light{font-weight:300 !important}.fw-lighter{font-weight:lighter !important}.fw-normal{font-weight:400 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:#6c757d !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:.25rem !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:.2em !important}.rounded-2{border-radius:.25rem !important}.rounded-3{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-end{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-start{border-bottom-left-radius:.25rem !important;border-top-left-radius:.25rem !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#000}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.quarto-container{min-height:calc(100vh - 132px)}body.hypothesis-enabled #quarto-header{margin-right:16px}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}nav[role=doc-toc]{padding-left:.5em}#quarto-content>*{padding-top:14px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-brand-container{order:2}.navbar .navbar-toggler{order:1}.navbar .navbar-collapse{order:20}.navbar #quarto-search{order:4}.navbar .navbar-toggler{margin-right:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools{order:3}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:rgba(0,0,0,.6)}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#000}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em}.sidebar-section{margin-top:.2em;padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-secondary-nav .quarto-btn-toggle{color:#565656}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.quarto-secondary-nav-title{margin-top:.3em;color:#565656;padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:#565656}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:#565656}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(50,95,61,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:#898989}div.sidebar-item-container{color:#565656}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(50,95,61,.8)}div.sidebar-item-container.disabled{color:rgba(86,86,86,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:#325f3d}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:#fcfcfc}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid #dee2e6}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:#fcfcfc;border-bottom:1px solid #dee2e6}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(255,255,255,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:rgba(102,102,102,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:#5aa86c}.toc-actions{display:flex}.toc-actions p{margin-block-start:0;margin-block-end:0}.toc-actions a{text-decoration:none;color:inherit;font-weight:400}.toc-actions a:hover{color:#5aa86c}.toc-actions .action-links{margin-left:4px}.sidebar nav[role=doc-toc] .toc-actions .bi{margin-left:-4px;font-size:.7rem;color:#6c757d}.sidebar nav[role=doc-toc] .toc-actions .bi:before{padding-top:3px}#quarto-margin-sidebar .toc-actions .bi:before{margin-top:.3rem;font-size:.7rem;color:#6c757d;vertical-align:top}.sidebar nav[role=doc-toc] .toc-actions>div:first-of-type{margin-top:-3px}#quarto-margin-sidebar .toc-actions p,.sidebar nav[role=doc-toc] .toc-actions p{font-size:.875rem}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions :first-child{margin-left:auto}.nav-footer .toc-actions :last-child{margin-right:auto}.nav-footer .toc-actions .action-links{display:flex}.nav-footer .toc-actions .action-links p{padding-right:1.5em}.nav-footer .toc-actions .action-links p:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#fcfcfc}body.nav-fixed{padding-top:80px}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:#747474}.nav-footer a{color:#747474}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}.nav-footer-left{flex:1 1 0px;text-align:left}.nav-footer-right{flex:1 1 0px;text-align:right}.nav-footer-center{flex:1 1 0px;min-height:3em;text-align:center}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:rgba(0,0,0,.6);border-radius:3px}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:#565656;border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#fcfcfc;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}.aa-DetachedSearchButtonQuery{display:none}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#fcfcfc;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}@media(min-width: 992px){.navbar .quarto-navbar-tools{margin-left:.25rem;order:900}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:rgba(0,0,0,.6);opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:rgba(0,0,0,.6);opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fcfcfc;border:1px solid #bbb;border-radius:.25rem;color:#212529;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(112,210,135,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:#212529;opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:#212529;font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:#212529;opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:#212529;opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #bbb 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:#efefef;padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#70d287}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#000;background-color:#70d287}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#000;background-color:#8fdca1}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:#fcfcfc}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#212529}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:#fff}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:#fcfcfc;color:#212529}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:#fcfcfc;border-color:#bbb;color:#212529}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:44px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #bbb}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:rgba(0,0,0,.6)}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#565656}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:rgba(252,252,252,.65);width:90%;bottom:0;box-shadow:rgba(187,187,187,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fcfcfc;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#fcfcfc;border-bottom:1px solid #bbb;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#212529;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(112,210,135,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(33,37,41,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#212529;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:#adb5bd;flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none;word-break:keep-all}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post a{color:#212529;display:flex;flex-direction:column;text-decoration:none}div.quarto-post a div.description{flex-shrink:0}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:var(--bs-font-sans-serif);flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:#4e5862;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#70d287}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:#4e5862;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#70d287}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:#4e5862;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#70d287}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:#4e5862;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#70d287}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:#4e5862;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#70d287}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#fcfcfc;border:solid 1px #dee2e6;border-radius:.25rem;color:#212529;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#fcfcfc}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#fcfcfc}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fcfcfc;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#fcfcfc}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#fcfcfc;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#212529}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:inline-block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,.table{caption-side:top;margin-bottom:1.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}div.ansi-escaped-output{font-family:monospace;display:block}/*! +* +* ansi colors from IPython notebook's +* +*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fcfcfc;--quarto-body-color: #212529;--quarto-text-muted: #6c757d;--quarto-border-color: #dee2e6;--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:absolute;right:.5em;left:inherit;background-color:rgba(0,0,0,0)}:root{--mermaid-bg-color: #fcfcfc;--mermaid-edge-color: #333333;--mermaid-node-fg-color: #70d287;--mermaid-fg-color: #212529;--mermaid-fg-color--lighter: #ccc;--mermaid-fg-color--lightest: #eee;--mermaid-font-family: Open Sans, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #fcfcfc;--mermaid-label-fg-color: #333;--mermaid-node-bg-color: #d7f6de;--mermaid-node-fg-color: #70d287}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}pre.sourceCode:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}pre.sourceCode:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 3em [body-end] 50px [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(50px, 100px) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 1250px - 3em )) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset table{background:#fcfcfc}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-left table{background:#fcfcfc}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-right table{background:#fcfcfc}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page table{background:#fcfcfc}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset table{background:#fcfcfc}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-left table{background:#fcfcfc}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-right figcaption table{background:#fcfcfc}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-left table{background:#fcfcfc}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-right figcaption table{background:#fcfcfc}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#fcfcfc}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#fcfcfc}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#fcfcfc}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#fcfcfc}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#fcfcfc}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#fcfcfc}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#fff;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}.zindex-content{z-index:998;transform:translate3d(0, 0, 0)}.zindex-modal{z-index:1055;transform:translate3d(0, 0, 0)}.zindex-over-content{z-index:999;transform:translate3d(0, 0, 0)}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside:not(.footnotes),.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside:not(.footnotes),.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside:not(.footnotes),.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside:not(.footnotes),.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{color:#333940;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}h2,.h2{border-bottom:1px solid #dee2e6;padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:#5a6570}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,caption,.figure-caption{font-size:.9rem}.panel-caption,.figure-caption,figcaption{color:#5a6570}.table-caption,caption{color:#212529}.quarto-layout-cell[data-ref-parent] caption{color:#5a6570}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:#5a6570;font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:#eee 1px solid;border-right:#eee 1px solid;border-bottom:#eee 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:1em}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(221,221,221,.65);border:1px solid rgba(221,221,221,.65);border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow:visible !important;padding:.4em}.callout pre.sourceCode{padding-left:0}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:#5a6570}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:#f3f3f4;padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#6c757d;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.toc-left>*,.sidebar.margin-sidebar>*{padding-top:.5em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#6c757d;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#70d287}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.quarto-other-links i.bi,.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook .cell-code code{white-space:pre-wrap}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.sidebar .quarto-alternate-formats a,.sidebar .quarto-other-links a,.sidebar .quarto-alternate-notebooks a{text-decoration:none}.sidebar .quarto-other-links a:hover,.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#70d287}.sidebar .quarto-other-links h2,.sidebar .quarto-other-links .h2,.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem;font-weight:400;margin-bottom:.5rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .quarto-other-links h2,.sidebar .quarto-other-links .h2,.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2{margin-top:1rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #ddd;padding-left:.6rem}.sidebar .quarto-other-links h2>ul a,.sidebar .quarto-other-links .h2>ul a,.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .quarto-other-links ul a:empty,.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .quarto-other-links ul,.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul,.sidebar nav[role=doc-toc] ul{padding-left:0;list-style:none;font-size:.875rem;font-weight:300}.sidebar .quarto-other-links ul li a,.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #70d287;color:#70d287 !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#70d287 !important}kbd,.kbd{color:#212529;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:#dee2e6}div.hanging-indent{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.table a{word-break:break-word}.table>thead{border-top-width:1px;border-top-color:#dee2e6;border-bottom:1px solid #9ba5ae}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout.callout-style-default{border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body>:first-child{padding-top:.5rem;margin-top:0}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){padding-bottom:.5rem;margin-bottom:0}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#6c757d}div.callout.callout-style-default>.callout-header{background-color:#6c757d}div.callout-note.callout{border-left-color:#007bff}div.callout-note.callout-style-default>.callout-header{background-color:#e6f2ff}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#469408}div.callout-tip.callout-style-default>.callout-header{background-color:#edf4e6}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#ffc107}div.callout-warning.callout-style-default>.callout-header{background-color:#fff9e6}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#d9831f}div.callout-caution.callout-style-default>.callout-header{background-color:#fbf3e9}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#d9230f}div.callout-important.callout-style-default>.callout-header{background-color:#fbe9e7}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:#f7f7f7}#quarto-content .quarto-sidebar-toggle-title{color:#212529}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#fcfcfc;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#fcfcfc;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{color:#fdfdfd;background-color:#5a6268;border-color:#5a6268;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn.btn-quarto:hover,div.cell-output-display .btn-quarto:hover{color:#fdfdfd;background-color:#737a7f;border-color:#6b7277}.btn-check:focus+.btn.btn-quarto,.btn.btn-quarto:focus,.btn-check:focus+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:focus{color:#fdfdfd;background-color:#737a7f;border-color:#6b7277;box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(114,121,126,.5)}.btn-check:checked+.btn.btn-quarto,.btn-check:active+.btn.btn-quarto,.btn.btn-quarto:active,.btn.btn-quarto.active,.show>.btn.btn-quarto.dropdown-toggle,.btn-check:checked+div.cell-output-display .btn-quarto,.btn-check:active+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:active,div.cell-output-display .btn-quarto.active,.show>div.cell-output-display .btn-quarto.dropdown-toggle{color:#fff;background-color:#7b8186;border-color:#6b7277}.btn-check:checked+.btn.btn-quarto:focus,.btn-check:active+.btn.btn-quarto:focus,.btn.btn-quarto:active:focus,.btn.btn-quarto.active:focus,.show>.btn.btn-quarto.dropdown-toggle:focus,.btn-check:checked+div.cell-output-display .btn-quarto:focus,.btn-check:active+div.cell-output-display .btn-quarto:focus,div.cell-output-display .btn-quarto:active:focus,div.cell-output-display .btn-quarto.active:focus,.show>div.cell-output-display .btn-quarto.dropdown-toggle:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125),0 0 0 .25rem rgba(114,121,126,.5)}.btn.btn-quarto:disabled,.btn.btn-quarto.disabled,div.cell-output-display .btn-quarto:disabled,div.cell-output-display .btn-quarto.disabled{color:#fff;background-color:#5a6268;border-color:#5a6268}nav.quarto-secondary-nav.color-navbar{background-color:#fff;color:rgba(0,0,0,.6)}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:rgba(0,0,0,.6)}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:0}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! light */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#fcfcfc}.code-annotation-gutter{background-color:rgba(221,221,221,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:var(--bs-font-monospace);color:#383f45;border:solid #383f45 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#fcfcfc;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#ddd;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:var(--bs-font-monospace);color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#fcfcfc}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#fcfcfc}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#fcfcfc}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#fcfcfc}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#fcfcfc}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#fcfcfc}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#fff;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table>thead{border-top-width:0}.table>:not(caption)>*:not(:last-child)>*{border-bottom-color:#d3d8dc;border-bottom-style:solid;border-bottom-width:1px}.table>:not(:first-child){border-top:1px solid #9ba5ae;border-bottom:1px solid inherit}.table tbody{border-bottom-color:#9ba5ae}a.external:after{display:inline-block;height:.75rem;width:.75rem;margin-bottom:.15em;margin-left:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file,.code-with-filename .code-with-filename-file pre{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file,.quarto-dark .code-with-filename .code-with-filename-file pre{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:rgba(0,0,0,.6);background:#fff}.quarto-title-banner .code-tools-button{color:rgba(51,51,51,.6)}.quarto-title-banner .code-tools-button:hover{color:rgba(0,0,0,.6)}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr)}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-0.2em;height:.8em;width:.8em}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents a{color:#212529}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.1em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .description .abstract-title,#title-block-header.quarto-title-block.default .abstract .abstract-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:1fr 1fr}.quarto-title-tools-only{display:flex;justify-content:right}.navbar{border-width:1px;border-style:solid;border-color:#dedede}.navbar-fixed-top{border-width:0 0 1px}.navbar-fixed-bottom{border-top-width:1px 0 0 0;border-style:solid}.navbar.bg-primary{background-color:#70d287 !important;border-color:#61b775 !important}.navbar.bg-dark{border-color:#303234 !important}.navbar.bg-light{border-color:#dedede}.btn-primary,.btn-primary:hover{background-image:linear-gradient(#79d58e, #70d287 6%, #69c57f);filter:none;border:1px solid #61b775}.btn-secondary,.btn-secondary:hover{background-image:linear-gradient(#646b71, #5a6268 6%, #555c62);filter:none;border:1px solid #4e555a}.btn-secondary:focus,.btn-secondary:not([disabled]):not(.disabled):active,.btn-secondary:not([disabled]):not(.disabled).active{box-shadow:0 0 0 .2rem rgba(221,221,221,.5)}.btn-success,.btn-success:hover{background-image:linear-gradient(#519a17, #469408 6%, #428b08);filter:none;border:1px solid #3d8107}.btn-info,.btn-info:hover{background-image:linear-gradient(#11a0d2, #029acf 6%, #0291c3);filter:none;border:1px solid #0286b4}.btn-warning,.btn-warning:hover{background-image:linear-gradient(#db8a2c, #d9831f 6%, #cc7b1d);filter:none;border:1px solid #bd721b}.btn-danger,.btn-danger:hover{background-image:linear-gradient(#a152a5, #9b479f 6%, #924395);filter:none;border:1px solid #873e8a}.btn-dark,.btn-dark:hover{background-image:linear-gradient(#434648, #373a3c 6%, #343738);filter:none;border:1px solid #303234}.btn-light,.btn-light:hover{background-image:linear-gradient(white, #fff 6%, #f0f0f0);filter:none;border:1px solid #dedede}.btn-outline-secondary{border-color:#bbb;color:#bbb}.btn-outline-secondary:hover{background-color:#bbb;color:#fff}.text-secondary{color:#6c757d !important}.breadcrumb{border:1px solid #dedede}.pagination .page-link:hover{text-decoration:none}.badge.bg-secondary,.badge.bg-light{color:#373a3c} diff --git a/pr-preview/pr-51/site_libs/bootstrap/bootstrap.min.js b/pr-preview/pr-51/site_libs/bootstrap/bootstrap.min.js new file mode 100644 index 00000000..cc0a2556 --- /dev/null +++ b/pr-preview/pr-51/site_libs/bootstrap/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=(t,e,i)=>{Object.keys(i).forEach((n=>{const s=i[n],r=e[n],a=r&&o(r)?"element":null==(l=r)?`${l}`:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(s).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}))},l=t=>!(!o(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),c=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),h=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?h(t.parentNode):null},d=()=>{},u=t=>{t.offsetHeight},f=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},p=[],m=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(p.length||document.addEventListener("DOMContentLoaded",(()=>{p.forEach((t=>t()))})),p.push(e)):e()},_=t=>{"function"==typeof t&&t()},b=(e,i,n=!0)=>{if(!n)return void _(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),_(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},v=(t,e,i,n)=>{let s=t.indexOf(e);if(-1===s)return t[!i&&n?t.length-1:0];const o=t.length;return s+=i?1:-1,n&&(s=(s+o)%o),t[Math.max(0,Math.min(s,o-1))]},y=/[^.]*(?=\..*)\.|.*/,w=/\..*/,E=/::\d+$/,A={};let T=1;const O={mouseenter:"mouseover",mouseleave:"mouseout"},C=/^(mouseenter|mouseleave)/i,k=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function L(t,e){return e&&`${e}::${T++}`||t.uidEvent||T++}function x(t){const e=L(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function D(t,e,i=null){const n=Object.keys(t);for(let s=0,o=n.length;sfunction(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};n?n=t(n):i=t(i)}const[o,r,a]=S(e,i,n),l=x(t),c=l[a]||(l[a]={}),h=D(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=L(r,e.replace(y,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&j.off(t,s.type,e,i),i.apply(r,[s]);return null}}(t,i,n):function(t,e){return function i(n){return n.delegateTarget=t,i.oneOff&&j.off(t,n.type,e),e.apply(t,[n])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function I(t,e,i,n,s){const o=D(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function P(t){return t=t.replace(w,""),O[t]||t}const j={on(t,e,i,n){N(t,e,i,n,!1)},one(t,e,i,n){N(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=S(e,i,n),a=r!==e,l=x(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void I(t,l,r,o,s?i:null)}c&&Object.keys(l).forEach((i=>{!function(t,e,i,n){const s=e[i]||{};Object.keys(s).forEach((o=>{if(o.includes(n)){const n=s[o];I(t,e,i,n.originalHandler,n.delegationSelector)}}))}(t,l,i,e.slice(1))}));const h=l[r]||{};Object.keys(h).forEach((i=>{const n=i.replace(E,"");if(!a||e.includes(n)){const e=h[i];I(t,l,r,e.originalHandler,e.delegationSelector)}}))},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=f(),s=P(e),o=e!==s,r=k.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(e,i),n(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach((t=>{Object.defineProperty(d,t,{get:()=>i[t]})})),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};class B{constructor(t){(t=r(t))&&(this._element=t,H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach((t=>{this[t]=null}))}_queueCallback(t,e,i=!0){b(t,e,i)}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.1.3"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}}const R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;j.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),c(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class W extends B{static get NAME(){return"alert"}close(){if(j.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),j.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(W,"close"),g(W);const $='[data-bs-toggle="button"]';class z extends B{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=z.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function q(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function F(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}j.on(document,"click.bs.button.data-api",$,(t=>{t.preventDefault();const e=t.target.closest($);z.getOrCreateInstance(e).toggle()})),g(z);const U={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${F(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${F(e)}`)},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter((t=>t.startsWith("bs"))).forEach((i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=q(t.dataset[i])})),e},getDataAttribute:(t,e)=>q(t.getAttribute(`data-bs-${F(e)}`)),offset(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},V={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(e)&&i.push(n),n=n.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(", ");return this.find(e,t).filter((t=>!c(t)&&l(t)))}},K="carousel",X={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},Y={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Q="next",G="prev",Z="left",J="right",tt={ArrowLeft:J,ArrowRight:Z},et="slid.bs.carousel",it="active",nt=".active.carousel-item";class st extends B{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=V.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return X}static get NAME(){return K}next(){this._slide(Q)}nextWhenVisible(){!document.hidden&&l(this._element)&&this.next()}prev(){this._slide(G)}pause(t){t||(this._isPaused=!0),V.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(s(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=V.findOne(nt,this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void j.one(this._element,et,(()=>this.to(t)));if(e===t)return this.pause(),void this.cycle();const i=t>e?Q:G;this._slide(i,this._items[t])}_getConfig(t){return t={...X,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(K,t,Y),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?J:Z)}_addEventListeners(){this._config.keyboard&&j.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(j.on(this._element,"mouseenter.bs.carousel",(t=>this.pause(t))),j.on(this._element,"mouseleave.bs.carousel",(t=>this.cycle(t)))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>this._pointerEvent&&("pen"===t.pointerType||"touch"===t.pointerType),e=e=>{t(e)?this.touchStartX=e.clientX:this._pointerEvent||(this.touchStartX=e.touches[0].clientX)},i=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},n=e=>{t(e)&&(this.touchDeltaX=e.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((t=>this.cycle(t)),500+this._config.interval))};V.find(".carousel-item img",this._element).forEach((t=>{j.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()))})),this._pointerEvent?(j.on(this._element,"pointerdown.bs.carousel",(t=>e(t))),j.on(this._element,"pointerup.bs.carousel",(t=>n(t))),this._element.classList.add("pointer-event")):(j.on(this._element,"touchstart.bs.carousel",(t=>e(t))),j.on(this._element,"touchmove.bs.carousel",(t=>i(t))),j.on(this._element,"touchend.bs.carousel",(t=>n(t))))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=tt[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?V.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const i=t===Q;return v(this._items,e,i,this._config.wrap)}_triggerSlideEvent(t,e){const i=this._getItemIndex(t),n=this._getItemIndex(V.findOne(nt,this._element));return j.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:n,to:i})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=V.findOne(".active",this._indicatorsElement);e.classList.remove(it),e.removeAttribute("aria-current");const i=V.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e{j.trigger(this._element,et,{relatedTarget:o,direction:d,from:s,to:r})};if(this._element.classList.contains("slide")){o.classList.add(h),u(o),n.classList.add(c),o.classList.add(c);const t=()=>{o.classList.remove(c,h),o.classList.add(it),n.classList.remove(it,h,c),this._isSliding=!1,setTimeout(f,0)};this._queueCallback(t,n,!0)}else n.classList.remove(it),o.classList.add(it),this._isSliding=!1,f();a&&this.cycle()}_directionToOrder(t){return[J,Z].includes(t)?m()?t===Z?G:Q:t===Z?Q:G:t}_orderToDirection(t){return[Q,G].includes(t)?m()?t===G?Z:J:t===G?J:Z:t}static carouselInterface(t,e){const i=st.getOrCreateInstance(t,e);let{_config:n}=i;"object"==typeof e&&(n={...n,...e});const s="string"==typeof e?e:n.slide;if("number"==typeof e)i.to(e);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){st.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=n(this);if(!e||!e.classList.contains("carousel"))return;const i={...U.getDataAttributes(e),...U.getDataAttributes(this)},s=this.getAttribute("data-bs-slide-to");s&&(i.interval=!1),st.carouselInterface(e,i),s&&st.getInstance(e).to(s),t.preventDefault()}}j.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",st.dataApiClickHandler),j.on(window,"load.bs.carousel.data-api",(()=>{const t=V.find('[data-bs-ride="carousel"]');for(let e=0,i=t.length;et===this._element));null!==s&&o.length&&(this._selector=s,this._triggerArray.push(e))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return rt}static get NAME(){return ot}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t,e=[];if(this._config.parent){const t=V.find(ut,this._config.parent);e=V.find(".collapse.show, .collapse.collapsing",this._config.parent).filter((e=>!t.includes(e)))}const i=V.findOne(this._selector);if(e.length){const n=e.find((t=>i!==t));if(t=n?pt.getInstance(n):null,t&&t._isTransitioning)return}if(j.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e.forEach((e=>{i!==e&&pt.getOrCreateInstance(e,{toggle:!1}).hide(),t||H.set(e,"bs.collapse",null)}));const n=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[n]="",j.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[n]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,u(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);const e=this._triggerArray.length;for(let t=0;t{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),j.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_getConfig(t){return(t={...rt,...U.getDataAttributes(this._element),...t}).toggle=Boolean(t.toggle),t.parent=r(t.parent),a(ot,t,at),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=V.find(ut,this._config.parent);V.find(ft,this._config.parent).filter((e=>!t.includes(e))).forEach((t=>{const e=n(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}))}_addAriaAndCollapsedClass(t,e){t.length&&t.forEach((t=>{e?t.classList.remove(dt):t.classList.add(dt),t.setAttribute("aria-expanded",e)}))}static jQueryInterface(t){return this.each((function(){const e={};"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1);const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}j.on(document,"click.bs.collapse.data-api",ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this);V.find(e).forEach((t=>{pt.getOrCreateInstance(t,{toggle:!1}).toggle()}))})),g(pt);var mt="top",gt="bottom",_t="right",bt="left",vt="auto",yt=[mt,gt,_t,bt],wt="start",Et="end",At="clippingParents",Tt="viewport",Ot="popper",Ct="reference",kt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+Et])}),[]),Lt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+Et])}),[]),xt="beforeRead",Dt="read",St="afterRead",Nt="beforeMain",It="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",Bt=[xt,Dt,St,Nt,It,Pt,jt,Mt,Ht];function Rt(t){return t?(t.nodeName||"").toLowerCase():null}function Wt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function $t(t){return t instanceof Wt(t).Element||t instanceof Element}function zt(t){return t instanceof Wt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Wt(t).ShadowRoot||t instanceof ShadowRoot)}const Ft={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Rt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Rt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Ut(t){return t.split("-")[0]}function Vt(t,e){var i=t.getBoundingClientRect();return{width:i.width/1,height:i.height/1,top:i.top/1,right:i.right/1,bottom:i.bottom/1,left:i.left/1,x:i.left/1,y:i.top/1}}function Kt(t){var e=Vt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Xt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Yt(t){return Wt(t).getComputedStyle(t)}function Qt(t){return["table","td","th"].indexOf(Rt(t))>=0}function Gt(t){return(($t(t)?t.ownerDocument:t.document)||window.document).documentElement}function Zt(t){return"html"===Rt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||Gt(t)}function Jt(t){return zt(t)&&"fixed"!==Yt(t).position?t.offsetParent:null}function te(t){for(var e=Wt(t),i=Jt(t);i&&Qt(i)&&"static"===Yt(i).position;)i=Jt(i);return i&&("html"===Rt(i)||"body"===Rt(i)&&"static"===Yt(i).position)?e:i||function(t){var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&zt(t)&&"fixed"===Yt(t).position)return null;for(var i=Zt(t);zt(i)&&["html","body"].indexOf(Rt(i))<0;){var n=Yt(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function ee(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var ie=Math.max,ne=Math.min,se=Math.round;function oe(t,e,i){return ie(t,ne(e,i))}function re(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ae(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const le={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Ut(i.placement),l=ee(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return re("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ae(t,yt))}(s.padding,i),d=Kt(o),u="y"===l?mt:bt,f="y"===l?gt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=te(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,E=oe(v,w,y),A=l;i.modifiersData[n]=((e={})[A]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Xt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ce(t){return t.split("-")[1]}var he={top:"auto",right:"auto",bottom:"auto",left:"auto"};function de(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:se(se(e*n)/n)||0,y:se(se(i*n)/n)||0}}(r):"function"==typeof h?h(r):r,u=d.x,f=void 0===u?0:u,p=d.y,m=void 0===p?0:p,g=r.hasOwnProperty("x"),_=r.hasOwnProperty("y"),b=bt,v=mt,y=window;if(c){var w=te(i),E="clientHeight",A="clientWidth";w===Wt(i)&&"static"!==Yt(w=Gt(i)).position&&"absolute"===a&&(E="scrollHeight",A="scrollWidth"),w=w,s!==mt&&(s!==bt&&s!==_t||o!==Et)||(v=gt,m-=w[E]-n.height,m*=l?1:-1),s!==bt&&(s!==mt&&s!==gt||o!==Et)||(b=_t,f-=w[A]-n.width,f*=l?1:-1)}var T,O=Object.assign({position:a},c&&he);return l?Object.assign({},O,((T={})[v]=_?"0":"",T[b]=g?"0":"",T.transform=(y.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",T)):Object.assign({},O,((e={})[v]=_?m+"px":"",e[b]=g?f+"px":"",e.transform="",e))}const ue={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Ut(e.placement),variation:ce(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,de(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,de(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var fe={passive:!0};const pe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Wt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,fe)})),a&&l.addEventListener("resize",i.update,fe),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,fe)})),a&&l.removeEventListener("resize",i.update,fe)}},data:{}};var me={left:"right",right:"left",bottom:"top",top:"bottom"};function ge(t){return t.replace(/left|right|bottom|top/g,(function(t){return me[t]}))}var _e={start:"end",end:"start"};function be(t){return t.replace(/start|end/g,(function(t){return _e[t]}))}function ve(t){var e=Wt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ye(t){return Vt(Gt(t)).left+ve(t).scrollLeft}function we(t){var e=Yt(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ee(t){return["html","body","#document"].indexOf(Rt(t))>=0?t.ownerDocument.body:zt(t)&&we(t)?t:Ee(Zt(t))}function Ae(t,e){var i;void 0===e&&(e=[]);var n=Ee(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Wt(n),r=s?[o].concat(o.visualViewport||[],we(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ae(Zt(r)))}function Te(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Oe(t,e){return e===Tt?Te(function(t){var e=Wt(t),i=Gt(t),n=e.visualViewport,s=i.clientWidth,o=i.clientHeight,r=0,a=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=n.offsetLeft,a=n.offsetTop)),{width:s,height:o,x:r+ye(t),y:a}}(t)):zt(e)?function(t){var e=Vt(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Te(function(t){var e,i=Gt(t),n=ve(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ie(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ie(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ye(t),l=-n.scrollTop;return"rtl"===Yt(s||i).direction&&(a+=ie(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Gt(t)))}function Ce(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Ut(s):null,r=s?ce(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case mt:e={x:a,y:i.y-n.height};break;case gt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?ee(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Et:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ke(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.boundary,r=void 0===o?At:o,a=i.rootBoundary,l=void 0===a?Tt:a,c=i.elementContext,h=void 0===c?Ot:c,d=i.altBoundary,u=void 0!==d&&d,f=i.padding,p=void 0===f?0:f,m=re("number"!=typeof p?p:ae(p,yt)),g=h===Ot?Ct:Ot,_=t.rects.popper,b=t.elements[u?g:h],v=function(t,e,i){var n="clippingParents"===e?function(t){var e=Ae(Zt(t)),i=["absolute","fixed"].indexOf(Yt(t).position)>=0&&zt(t)?te(t):t;return $t(i)?e.filter((function(t){return $t(t)&&Xt(t,i)&&"body"!==Rt(t)})):[]}(t):[].concat(e),s=[].concat(n,[i]),o=s[0],r=s.reduce((function(e,i){var n=Oe(t,i);return e.top=ie(n.top,e.top),e.right=ne(n.right,e.right),e.bottom=ne(n.bottom,e.bottom),e.left=ie(n.left,e.left),e}),Oe(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}($t(b)?b:b.contextElement||Gt(t.elements.popper),r,l),y=Vt(t.elements.reference),w=Ce({reference:y,element:_,strategy:"absolute",placement:s}),E=Te(Object.assign({},_,w)),A=h===Ot?E:y,T={top:v.top-A.top+m.top,bottom:A.bottom-v.bottom+m.bottom,left:v.left-A.left+m.left,right:A.right-v.right+m.right},O=t.modifiersData.offset;if(h===Ot&&O){var C=O[s];Object.keys(T).forEach((function(t){var e=[_t,gt].indexOf(t)>=0?1:-1,i=[mt,gt].indexOf(t)>=0?"y":"x";T[t]+=C[i]*e}))}return T}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?Lt:l,h=ce(n),d=h?a?kt:kt.filter((function(t){return ce(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ke(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Ut(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const xe={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=Ut(g),b=l||(_!==g&&p?function(t){if(Ut(t)===vt)return[];var e=ge(t);return[be(t),e,be(e)]}(g):[ge(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(Ut(i)===vt?Le(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,A=!0,T=v[0],O=0;O=0,D=x?"width":"height",S=ke(e,{placement:C,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),N=x?L?_t:bt:L?gt:mt;y[D]>w[D]&&(N=ge(N));var I=ge(N),P=[];if(o&&P.push(S[k]<=0),a&&P.push(S[N]<=0,S[I]<=0),P.every((function(t){return t}))){T=C,A=!1;break}E.set(C,P)}if(A)for(var j=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function De(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Se(t){return[mt,_t,gt,bt].some((function(e){return t[e]>=0}))}const Ne={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ke(e,{elementContext:"reference"}),a=ke(e,{altBoundary:!0}),l=De(r,n),c=De(a,s,o),h=Se(l),d=Se(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},Ie={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=Lt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Ut(t),s=[bt,mt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Pe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=Ce({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},je={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ke(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Ut(e.placement),b=ce(e.placement),v=!b,y=ee(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,A=e.rects.reference,T=e.rects.popper,O="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C={x:0,y:0};if(E){if(o||a){var k="y"===y?mt:bt,L="y"===y?gt:_t,x="y"===y?"height":"width",D=E[y],S=E[y]+g[k],N=E[y]-g[L],I=f?-T[x]/2:0,P=b===wt?A[x]:T[x],j=b===wt?-T[x]:-A[x],M=e.elements.arrow,H=f&&M?Kt(M):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=B[k],W=B[L],$=oe(0,A[x],H[x]),z=v?A[x]/2-I-$-R-O:P-$-R-O,q=v?-A[x]/2+I+$+W+O:j+$+W+O,F=e.elements.arrow&&te(e.elements.arrow),U=F?"y"===y?F.clientTop||0:F.clientLeft||0:0,V=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,K=E[y]+z-V-U,X=E[y]+q-V;if(o){var Y=oe(f?ne(S,K):S,D,f?ie(N,X):N);E[y]=Y,C[y]=Y-D}if(a){var Q="x"===y?mt:bt,G="x"===y?gt:_t,Z=E[w],J=Z+g[Q],tt=Z-g[G],et=oe(f?ne(J,K):J,Z,f?ie(tt,X):tt);E[w]=et,C[w]=et-Z}}e.modifiersData[n]=C}},requiresIfExists:["offset"]};function Me(t,e,i){void 0===i&&(i=!1);var n=zt(e);zt(e)&&function(t){var e=t.getBoundingClientRect();e.width,t.offsetWidth,e.height,t.offsetHeight}(e);var s,o,r=Gt(e),a=Vt(t),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(n||!n&&!i)&&(("body"!==Rt(e)||we(r))&&(l=(s=e)!==Wt(s)&&zt(s)?{scrollLeft:(o=s).scrollLeft,scrollTop:o.scrollTop}:ve(s)),zt(e)?((c=Vt(e)).x+=e.clientLeft,c.y+=e.clientTop):r&&(c.x=ye(r))),{x:a.left+l.scrollLeft-c.x,y:a.top+l.scrollTop-c.y,width:a.width,height:a.height}}function He(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Re(){for(var t=arguments.length,e=new Array(t),i=0;ij.on(t,"mouseover",d))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Je),this._element.classList.add(Je),j.trigger(this._element,"shown.bs.dropdown",t)}hide(){if(c(this._element)||!this._isShown(this._menu))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){j.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._popper&&this._popper.destroy(),this._menu.classList.remove(Je),this._element.classList.remove(Je),this._element.setAttribute("aria-expanded","false"),U.removeDataAttribute(this._menu,"popper"),j.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...U.getDataAttributes(this._element),...t},a(Ue,t,this.constructor.DefaultType),"object"==typeof t.reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Ue.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(t){if(void 0===Fe)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:o(this._config.reference)?e=r(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find((t=>"applyStyles"===t.name&&!1===t.enabled));this._popper=qe(e,this._menu,i),n&&U.setDataAttribute(this._menu,"popper","static")}_isShown(t=this._element){return t.classList.contains(Je)}_getMenuElement(){return V.next(this._element,ei)[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ri;if(t.classList.contains("dropstart"))return ai;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ni:ii:e?oi:si}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=V.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(l);i.length&&v(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=V.find(ti);for(let i=0,n=e.length;ie+t)),this._setElementAttributes(di,"paddingRight",(e=>e+t)),this._setElementAttributes(ui,"marginRight",(e=>e-t))}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t)[e];t.style[e]=`${i(Number.parseFloat(s))}px`}))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(di,"paddingRight"),this._resetElementAttributes(ui,"marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&U.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=U.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(U.removeDataAttribute(t,e),t.style[e]=i)}))}_applyManipulationCallback(t,e){o(t)?e(t):V.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const pi={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},mi={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},gi="show",_i="mousedown.bs.backdrop";class bi{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&u(this._getElement()),this._getElement().classList.add(gi),this._emulateAnimation((()=>{_(t)}))):_(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove(gi),this._emulateAnimation((()=>{this.dispose(),_(t)}))):_(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...pi,..."object"==typeof t?t:{}}).rootElement=r(t.rootElement),a("backdrop",t,mi),t}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),j.on(this._getElement(),_i,(()=>{_(this._config.clickCallback)})),this._isAppended=!0)}dispose(){this._isAppended&&(j.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){b(t,this._getElement(),this._config.isAnimated)}}const vi={trapElement:null,autofocus:!0},yi={trapElement:"element",autofocus:"boolean"},wi=".bs.focustrap",Ei="backward";class Ai{constructor(t){this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:t,autofocus:e}=this._config;this._isActive||(e&&t.focus(),j.off(document,wi),j.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),j.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,j.off(document,wi))}_handleFocusin(t){const{target:e}=t,{trapElement:i}=this._config;if(e===document||e===i||i.contains(e))return;const n=V.focusableChildren(i);0===n.length?i.focus():this._lastTabNavDirection===Ei?n[n.length-1].focus():n[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ei:"forward")}_getConfig(t){return t={...vi,..."object"==typeof t?t:{}},a("focustrap",t,yi),t}}const Ti="modal",Oi="Escape",Ci={backdrop:!0,keyboard:!0,focus:!0},ki={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},Li="hidden.bs.modal",xi="show.bs.modal",Di="resize.bs.modal",Si="click.dismiss.bs.modal",Ni="keydown.dismiss.bs.modal",Ii="mousedown.dismiss.bs.modal",Pi="modal-open",ji="show",Mi="modal-static";class Hi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=V.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new fi}static get Default(){return Ci}static get NAME(){return Ti}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||j.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(Pi),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),j.on(this._dialog,Ii,(()=>{j.one(this._element,"mouseup.dismiss.bs.modal",(t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)}))})),this._showBackdrop((()=>this._showElement(t))))}hide(){if(!this._isShown||this._isTransitioning)return;if(j.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const t=this._isAnimated();t&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove(ji),j.off(this._element,Si),j.off(this._dialog,Ii),this._queueCallback((()=>this._hideModal()),this._element,t)}dispose(){[window,this._dialog].forEach((t=>j.off(t,".bs.modal"))),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_getConfig(t){return t={...Ci,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Ti,t,ki),t}_showElement(t){const e=this._isAnimated(),i=V.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),e&&u(this._element),this._element.classList.add(ji),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,j.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,e)}_setEscapeEvent(){this._isShown?j.on(this._element,Ni,(t=>{this._config.keyboard&&t.key===Oi?(t.preventDefault(),this.hide()):this._config.keyboard||t.key!==Oi||this._triggerBackdropTransition()})):j.off(this._element,Ni)}_setResizeEvent(){this._isShown?j.on(window,Di,(()=>this._adjustDialog())):j.off(window,Di)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Pi),this._resetAdjustments(),this._scrollBar.reset(),j.trigger(this._element,Li)}))}_showBackdrop(t){j.on(this._element,Si,(t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())})),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(j.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,n=e>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||t.contains(Mi)||(n||(i.overflowY="hidden"),t.add(Mi),this._queueCallback((()=>{t.remove(Mi),n||this._queueCallback((()=>{i.overflowY=""}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!m()||i&&!t&&m())&&(this._element.style.paddingLeft=`${e}px`),(i&&!t&&!m()||!i&&t&&m())&&(this._element.style.paddingRight=`${e}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}j.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),j.one(e,xi,(t=>{t.defaultPrevented||j.one(e,Li,(()=>{l(this)&&this.focus()}))}));const i=V.findOne(".modal.show");i&&Hi.getInstance(i).hide(),Hi.getOrCreateInstance(e).toggle(this)})),R(Hi),g(Hi);const Bi="offcanvas",Ri={backdrop:!0,keyboard:!0,scroll:!1},Wi={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},$i="show",zi=".offcanvas.show",qi="hidden.bs.offcanvas";class Fi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return Bi}static get Default(){return Ri}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||j.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new fi).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add($i),this._queueCallback((()=>{this._config.scroll||this._focustrap.activate(),j.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(j.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove($i),this._backdrop.hide(),this._queueCallback((()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new fi).reset(),j.trigger(this._element,qi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(t){return t={...Ri,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Bi,t,Wi),t}_initializeBackDrop(){return new bi({className:"offcanvas-backdrop",isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_addEventListeners(){j.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()}))}static jQueryInterface(t){return this.each((function(){const e=Fi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}j.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this))return;j.one(e,qi,(()=>{l(this)&&this.focus()}));const i=V.findOne(zi);i&&i!==e&&Fi.getInstance(i).hide(),Fi.getOrCreateInstance(e).toggle(this)})),j.on(window,"load.bs.offcanvas.data-api",(()=>V.find(zi).forEach((t=>Fi.getOrCreateInstance(t).show())))),R(Fi),g(Fi);const Ui=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Vi=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Ki=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Xi=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!Ui.has(i)||Boolean(Vi.test(t.nodeValue)||Ki.test(t.nodeValue));const n=e.filter((t=>t instanceof RegExp));for(let t=0,e=n.length;t{Xi(t,r)||i.removeAttribute(t.nodeName)}))}return n.body.innerHTML}const Qi="tooltip",Gi=new Set(["sanitize","allowList","sanitizeFn"]),Zi={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},Ji={AUTO:"auto",TOP:"top",RIGHT:m()?"left":"right",BOTTOM:"bottom",LEFT:m()?"right":"left"},tn={animation:!0,template:'

',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},en={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},nn="fade",sn="show",on="show",rn="out",an=".tooltip-inner",ln=".modal",cn="hide.bs.modal",hn="hover",dn="focus";class un extends B{constructor(t,e){if(void 0===Fe)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return tn}static get NAME(){return Qi}static get Event(){return en}static get DefaultType(){return Zi}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains(sn))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(ln),cn,this._hideModalHandler),this.tip&&this.tip.remove(),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=j.trigger(this._element,this.constructor.Event.SHOW),e=h(this._element),i=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!i)return;"tooltip"===this.constructor.NAME&&this.tip&&this.getTitle()!==this.tip.querySelector(an).innerHTML&&(this._disposePopper(),this.tip.remove(),this.tip=null);const n=this.getTipElement(),s=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME);n.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this._config.animation&&n.classList.add(nn);const o="function"==typeof this._config.placement?this._config.placement.call(this,n,this._element):this._config.placement,r=this._getAttachment(o);this._addAttachmentClass(r);const{container:a}=this._config;H.set(n,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(a.append(n),j.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=qe(this._element,n,this._getPopperConfig(r)),n.classList.add(sn);const l=this._resolvePossibleFunction(this._config.customClass);l&&n.classList.add(...l.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>{j.on(t,"mouseover",d)}));const c=this.tip.classList.contains(nn);this._queueCallback((()=>{const t=this._hoverState;this._hoverState=null,j.trigger(this._element,this.constructor.Event.SHOWN),t===rn&&this._leave(null,this)}),this.tip,c)}hide(){if(!this._popper)return;const t=this.getTipElement();if(j.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove(sn),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains(nn);this._queueCallback((()=>{this._isWithActiveTrigger()||(this._hoverState!==on&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),j.trigger(this._element,this.constructor.Event.HIDDEN),this._disposePopper())}),this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const e=t.children[0];return this.setContent(e),e.classList.remove(nn,sn),this.tip=e,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),an)}_sanitizeAndSetContent(t,e,i){const n=V.findOne(i,t);e||!n?this.setElementContent(n,e):n.remove()}setElementContent(t,e){if(null!==t)return o(e)?(e=r(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.append(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=Yi(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){return e||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return Ji[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach((t=>{if("click"===t)j.on(this._element,this.constructor.Event.CLICK,this._config.selector,(t=>this.toggle(t)));else if("manual"!==t){const e=t===hn?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i=t===hn?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;j.on(this._element,e,this._config.selector,(t=>this._enter(t))),j.on(this._element,i,this._config.selector,(t=>this._leave(t)))}})),this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(ln),cn,this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?dn:hn]=!0),e.getTipElement().classList.contains(sn)||e._hoverState===on?e._hoverState=on:(clearTimeout(e._timeout),e._hoverState=on,e._config.delay&&e._config.delay.show?e._timeout=setTimeout((()=>{e._hoverState===on&&e.show()}),e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?dn:hn]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=rn,e._config.delay&&e._config.delay.hide?e._timeout=setTimeout((()=>{e._hoverState===rn&&e.hide()}),e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=U.getDataAttributes(this._element);return Object.keys(e).forEach((t=>{Gi.has(t)&&delete e[t]})),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),a(Qi,t,this.constructor.DefaultType),t.sanitize&&(t.template=Yi(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=t.getAttribute("class").match(e);null!==i&&i.length>0&&i.map((t=>t.trim())).forEach((e=>t.classList.remove(e)))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn={...un.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},pn={...un.DefaultType,content:"(string|element|function)"},mn={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class gn extends un{static get Default(){return fn}static get NAME(){return"popover"}static get Event(){return mn}static get DefaultType(){return pn}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(t,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(t){return this.each((function(){const e=gn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(gn);const _n="scrollspy",bn={offset:10,method:"auto",target:""},vn={offset:"number",method:"string",target:"(string|element)"},yn="active",wn=".nav-link, .list-group-item, .dropdown-item",En="position";class An extends B{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,j.on(this._scrollElement,"scroll.bs.scrollspy",(()=>this._process())),this.refresh(),this._process()}static get Default(){return bn}static get NAME(){return _n}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":En,e="auto"===this._config.method?t:this._config.method,n=e===En?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),V.find(wn,this._config.target).map((t=>{const s=i(t),o=s?V.findOne(s):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[U[e](o).top+n,s]}return null})).filter((t=>t)).sort(((t,e)=>t[0]-e[0])).forEach((t=>{this._offsets.push(t[0]),this._targets.push(t[1])}))}dispose(){j.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){return(t={...bn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target=r(t.target)||document.documentElement,a(_n,t,vn),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t`${e}[data-bs-target="${t}"],${e}[href="${t}"]`)),i=V.findOne(e.join(","),this._config.target);i.classList.add(yn),i.classList.contains("dropdown-item")?V.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add(yn):V.parents(i,".nav, .list-group").forEach((t=>{V.prev(t,".nav-link, .list-group-item").forEach((t=>t.classList.add(yn))),V.prev(t,".nav-item").forEach((t=>{V.children(t,".nav-link").forEach((t=>t.classList.add(yn)))}))})),j.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){V.find(wn,this._config.target).filter((t=>t.classList.contains(yn))).forEach((t=>t.classList.remove(yn)))}static jQueryInterface(t){return this.each((function(){const e=An.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(window,"load.bs.scrollspy.data-api",(()=>{V.find('[data-bs-spy="scroll"]').forEach((t=>new An(t)))})),g(An);const Tn="active",On="fade",Cn="show",kn=".active",Ln=":scope > li > .active";class xn extends B{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(Tn))return;let t;const e=n(this._element),i=this._element.closest(".nav, .list-group");if(i){const e="UL"===i.nodeName||"OL"===i.nodeName?Ln:kn;t=V.find(e,i),t=t[t.length-1]}const s=t?j.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(j.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==s&&s.defaultPrevented)return;this._activate(this._element,i);const o=()=>{j.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),j.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,i){const n=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?V.children(e,kn):V.find(Ln,e))[0],s=i&&n&&n.classList.contains(On),o=()=>this._transitionComplete(t,n,i);n&&s?(n.classList.remove(Cn),this._queueCallback(o,t,!0)):o()}_transitionComplete(t,e,i){if(e){e.classList.remove(Tn);const t=V.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove(Tn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add(Tn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),u(t),t.classList.contains(On)&&t.classList.add(Cn);let n=t.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&V.find(".dropdown-toggle",e).forEach((t=>t.classList.add(Tn))),t.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(t){return this.each((function(){const e=xn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this)||xn.getOrCreateInstance(this).show()})),g(xn);const Dn="toast",Sn="hide",Nn="show",In="showing",Pn={animation:"boolean",autohide:"boolean",delay:"number"},jn={animation:!0,autohide:!0,delay:5e3};class Mn extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return Pn}static get Default(){return jn}static get NAME(){return Dn}show(){j.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Sn),u(this._element),this._element.classList.add(Nn),this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.remove(In),j.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this._element.classList.contains(Nn)&&(j.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.add(Sn),this._element.classList.remove(In),this._element.classList.remove(Nn),j.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains(Nn)&&this._element.classList.remove(Nn),super.dispose()}_getConfig(t){return t={...jn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},a(Dn,t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){j.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),j.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Mn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(Mn),g(Mn),{Alert:W,Button:z,Carousel:st,Collapse:pt,Dropdown:hi,Modal:Hi,Offcanvas:Fi,Popover:gn,ScrollSpy:An,Tab:xn,Toast:Mn,Tooltip:un}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/pr-preview/pr-51/site_libs/clipboard/clipboard.min.js b/pr-preview/pr-51/site_libs/clipboard/clipboard.min.js new file mode 100644 index 00000000..1103f811 --- /dev/null +++ b/pr-preview/pr-51/site_libs/clipboard/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var 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℘k@kUInlLOc0)M4!segxaAwmq^mZ?92- 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

)Nw7{35%!lU+i^LjAA9v%|f;bIi5rexbOxcjx(I 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 z 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 literal 0 HcmV?d00001 diff --git a/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-brands-400.woff2 b/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-brands-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4d904aab4fb5cf17f0bcbfa1bb391603ff2ceb6d GIT binary patch literal 105536 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 z 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 Qp8T2TST4Tv3;!Pj1NhvUfdBvi literal 0 HcmV?d00001 diff --git a/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-regular-400.ttf b/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-regular-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..23e3febe0d8195ea33e82f21880ef5ac5e5f4717 GIT binary patch literal 60520 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 literal 0 HcmV?d00001 diff --git a/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-regular-400.woff2 b/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-regular-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..80e3b1247cec5162882db0342ad99f5da8acca30 GIT binary patch literal 23940 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 z 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

%2NHKpN>D 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

V+nX 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

W)6a&Ua1EGQKfY)QwwV{%lF=d31ScAH&d zg@p9$KzAs?50TSI3{sSQfPEh?74mA6Xik@M`FwG$1^5!GMs6Tvt(ec}OlKYi4zrl} z82cR{T_0oraDHiVr09xzk!fnH&l|X;i2{8bK-HK^J_V=Yybnldj~|L#ND`nIp~Sa= zt1y-&k4loP|JT)jOJz+rvbh7`z=JO*{q+=s^W!FTNfM{j^XONlK%g=h%PAd)DD^KA zbvv(MB>qK;$x_Y3)5RAMBSY9YN+p>E_wJGfBWPFfePg1s`~5kWjzl#7hAJ3W@VJ6; zC7YrFNipl8&k0|rClgqXGFh)(q}OWtb=T>&ntmG>DZ`jE(l^rk=%@H>Wf;X>6irhc z3ZppZJt*a+(FEyxupUX|+EWa$aqYDXu(1oJ(n7mXfG-nqUNY5?-rk~A#RkJQY%o|T z7NJz?3_eKW+2Ap>QAew2Q#U!2rx9}eI$I&z0ALNgx;s;lG*d|i%=L)J;5`6q*Zs`{ z2M!!MeCSXCfHPJsSH5p!Y>N#4W@xEvd=R*J96Gsg9QB{(pjce^wvDlU6x$Af zW8zJI`{tpz2n}5CV{YBAXlI!)H?)|N{X<^Tw?RfU;ym5!-L>j7;j37fV}_dpA}{{ z#5lbsA`{;&yl%zbxuVjN!dW7mi+U zhqy&^GVp_**K19%noR9ElyB)jtZ9a$Z#q!OYH_MPj^bduW{kjdOLwM&uazKS(15d? zEMZ}`tAkTAZ)q=h$GnUIik1nCxss&of&i|Uvu)fQv>HG`9NBT#RM?Zw-r|0y8C1U% zYp5nQe`a`wyGZX&G=E8q3dA`w%3OM`cA%hFd1_Uos-EMQmn;ppJbJ+Bc~7mi_Mxf? z;@MYq&2q&#s7PMmzM=G^XuEWbTV7^N8N|R~3szKChw&Dm(;7^~*f#JIK(g(E z-DUhPyZ@~=%}r?WQ3QDK*8mLNrXgVUi^gS0}7jX|G0-ph3kd zYMvE_h6=wnnm#tv10OE5Ip7ENi{o+FUPrBVCz_7Olf~YjJkz$6{)uW#4VBL6dnjK* zoW0=EwGO@~_h<7keC!F%$LX;LA+X2Bd;%m-5)W7J zNY5qkliYFmt&Al-O;gq0!i!F}+bsK)6~=Dmj>D57dew2^RVS~#*{|RoJ?SVyfpw3i z;bSs0VqKD#$eRyhsbp7gI-=iXP2~ZwOj3zDQ#Nr7Loi7#74$YvdNOenPU(h?1wOkP zV?2fN*w3MOBYBro9e@#G6pZ)OoDloWasqW>9;kKbHVrI)hS$r3bk2_7lEa)QWqj9T zAp%v);vZFNh^|xbpk(+1W2U&D-!MaMw2BU)YtSv|e)Krf))(ndN(U%SMRrcOhm9xH z=%8Sm6Y`*eH0N|a8hdR*-|Z5N<#k4B^`uWdVX0d1Yt12Sg1_WhBbaTzE`;+%T*~Yw ztjk@XlXGUs=bJDFXU9<$56T(I{xYC~$OmkCvpd0s^qAzH9_y@;7MKo6W3K57YxH?U z{Ws~tD!9rqa_KTuSf*6Ja{3K0r{Hy;q@d6?Epksjh>q!-DK z=u16HfXz@jzWKt8e{e1v74n%m4Gw}AB^GeL4yTKyk`I>WFKxt~e(!X>4me4Uf4tZ4 z#2X#Y=YrsuO2y+zf}vhN4Yel?1x75Os3&z4@Li-ZrqZdY3!-Y*YmHtm2RT&~bn{87 zXn?t*;9Ra(uh$&hjjZ7*viG@*X;aE7bnGKTc(h*Pu5>k6Nb>vbZ4;Hkc zP*{difXFiy&KHjK#$;ER9y3Kq$5oeChUgZ~GF(}%zK4SgkM3AxhTNtds)Uc#G)Bfz z<5t~2s1XPu5h6?miqakk)E2<_bQGmolHIR<_R3vYz3B0!cwK;mFJ~K^C$?h;b^)3w zTy{P)oghfT9BlQj8`U1|r$gYd^4wr+<&d`&7%)!|-^=G2Vy+;bpL?;c>liZ_JSBao zo#!(&nV#7i%>Oloy;|+j{tZ}pE`?R+`3IC^AaafaGj#t&&SjfHs2aXQjQS;?|DTIX z#>hV_4HLaeQF`IUuBRDA^6YUq{{j8Tz;{aZOF(CpEW}Yv_ zcVHNw@!KUutJS*2wr^>*TA~K<8>jl&{00Efx4)eN9Hok=^&M#ht0Q@XdhkTUM3-$w zhPkIc(%#N`gPj^xX>H&Ava8J5Y)^am#8iyP!CQlI<6u{rrgD$&?ovSUFSV5m*+z*j za+iTUbv_+Q;cQ_sn2tIRpgA@~hYNBfYtZ^0k{Hs^M%Val<12Aml2m}4`rIY@bfQc`obU2*q>eUESYBfS9`r)@3CI5*Sopb zTVCpUgKQRDW`O2*`70J>rC!5j%%s%wC^Z>#y)SX2SNifprBb!jYi#3q#9LACl^C@M zDVGVcC@U>DyqCx7d6Ye4AL_mKG?ri9A)n~=dcD8v^?JRe*X#A(+3WRsuzDbLP!Gra zFQ0meceD@l4*OHwnC|p?y&l{L@I1u}MqgJlen!FrklQMfF=M0*l*HuptkpiGQwpZ-QB@L=0bV@4#;JhL2MbwWoh4)p`vWn zneVdYbTGKIR4|yOYvqY}2hMXyBNW;gc%}6TkF%`!!vx16}4|Z7Aia2VB288*?8}PJV#( z)pqQwjN5xYPO)^@h!C)G#Lr*_i}BOJDxbzIPZBxJXbafF5W9vUDdBr0TA!#`s04*03ik(29497+*mG5T_;Opm6fOlS}M?6NHD5KS5aL` zJ-3}_0A@kAtUX}!HZGjkLWA^V!NqL}CeY!c9u{18JT|V@NrTA7B-8~G>+oEiY$$G~ zHl1W><-Bnj9HdT=+fyUFuRsmyZDnt`8ZoVrZ?D^rTTxW0M3E(xX-P*%vExY7Qt}g8 zN>ejzZ)=9_YNg$If1zSyrnha(v{kp44jWkbxQ18W+0>>bm6Ae8rKDxvgO6zt#Cvz5Qah01LL^EDD(HyAuln((K6zK-6oeTlx4_TlE)SfVuGXDqRNo< zpCDoWg|0EwiSC4s0~dNcXI>mWVlUY*StwJBa61dbdOZx;HN&Xft#!-MupWktg<<{P zXxJ_PIbB`%$P()dZpUk((a{;R&y~BwsJ>A>?-M)IuQ%Riyo9&eo0Q6oP7VYxMSoK~ zM>hv`b*49p?5I4z-7@jUJ^0XNqLjoM_!9{B&=VB5%vchS25ioRyoIs9G8hgREPyKh zzWZw?qg*IQFoZB>3P5p;05PFW!6`E>*HTj2TH8`7%e5Z!5&k>C=-$e$q=8?XAE8p} zUc?=6SmV028r-^eU4uE`@TjMyq_vxcqn^&Sy8-&}i+)UoA71WLyL8nMCyjr!O%url z8}zkudhNASd94O}K_b(%uf12f?QbMDED>z#@tpWN@2+L*WQE!+2hP7%2wsx%rJw+# zh;*%Q^hF1R;C?XRUh9u4+g3jsH28Hmzolf09M>G-rBmOdVU)}hKdq}GpF)ptMZG^k z3yQ1@nr{=g0zOMCiRNm5sDcPw&fG7pheT6y#2w1L{x2@CVCzXSM)tStu<52_* zJpit0hB<)3qU1_ntxnZt=0`PZ&EL@oz;Wv-hRp}9Km3KjTOdfJO!`;{*An#mRV~2H&-R{^#wa-A?jYgePNc!5A6(eUze2P9@V( zGW84KAnKY%^)EqPiS~qVkt{W$Tt9mT@V!5)=%Ci?V5d2Q_*YXGjNE_$0MK)>wyAh< zxpux0L*h$8TH`P1zs?If#fC4#DQ}xh2cyYoCDFDIOH_n~ z<(P9g`AWnQstM9+tx4fx&J+s55{hF~3In7V$DWjbQc5QU9?5CC%t+W(Wl27`6b zj^iL8Qc~nNj)wh%Ap^t-gCOWP!U%~g6-C-cO)NRbLimd@LeZix1m;}Q6fBETB`HY3 zH&#}dWE4EVN7sjga+z>W%H`o;o%VbWD3feuWrGU|R2l{{jLSSdsJyMNWlIiomCJyO zkHmp!?RpNs;PGqG+Pg*I(z}{Ag}L**zg|9i+4zzVrTO~}%%Lyp!jwFuf}Ey8BbeY)~uCQVD^Dh`4=**Kxi~P#b*KWXzkt*JI55>_AJ2>{m1(DfEkj zX46@<zJSu0$JL$n@Q1h9&=-}q88Pozcf0Z!Qm=wD9lNRT8*FMizk7wmk znVHOM_{~|fb37}LN_aubLV3eG=;+%=^#+XU z4U`?PnrsO*9QAhFqDFlLjrxds_2Br8;8>MCddTiqxi)LS+^Z5tZ>fz{ zpuzq(zIT*{E>|mKZ%2%9Gx}9pdZeT^1Vbi-+~r5r=euC6yPwMy*ft7mYKNc4M%`F4 z_KhdFc-wf`Uqn0Bdpr@8C{+j5X}z6s9|te?Y$*E zH9kyk_XmQu1AT@?%$x0M@yxi^1J!4SJYhUb89Nfagg9X#9NVLtuqqn@!qjweo+P(Q zsRolNk@Q_j%!y9*96$@+lv= ze^C3i8!hGh--5;|)1FF7NReAtq{r^E*3!5M^FY=1i)3HTe#=wB;_Ts05(D19eiK}=tOHM7!2uy`swC;`_N({C z2*pood|!-Ed>__N#t6mtR{OiPD6(DxKPVP`4^T%37C9!g?G^*M=?QjAm1vn)j~Und z%7!EqFD@9ui`kR%;vU8flo<0N`x2H;>uQ_FlhH~NB`tC?0B){!`ryH=4baXG9y~q& zqORl7dLsp>H`WS{xUN=ao*T!m$I7)?nd059*6Y=N#D!B>Yt#YKbU*BReyQBtYnDsC z_x*W)q~NF^ND|*yONH_ZkkGPiE5vde?!v~{euq;i7nfAvCrJ<}xn!vg+H3W%qrP=P zMp+6!#f<}61pitC|N9NMnfmQFEFC&{^AXR}dd{V3e%4-EI&tE}iJn#pkW$Gv`f)Vw zxL$ZfYtQ?xsg(N6>y91E+Kz)jDV?sZZ5jqOc$bJXW3}!(tsVt4lLVt+tp6@&|} z+6_a6d0!8MnYB1RGn-ZaQScj>2n5`bpjK){5AVNWF>wLhu0=?|%B>pP7w>fGIN>8G zWpeI>$N|U!imE7AxIb%i*x575f9d3TDK!{0Y5-G;Ykk`DPWOF0V79YUn_oBrFu&5Y zqosUDcC*#*%{bqD-D%I$U#i-Y0a(?!xkP6Ol4Zlu@40Q9wzD7_Wy0=ZAOca@^OkMF zB-=yrXLhudC#LN)F`Dh{z}g3_b{=_T2d15O#%PC!4ukiM_8k<%+Ro1WcaLTw8)W?O zEE<_HHhT8PHgt7Zibh=*kr+T}=zXI2(jy4=iE#=$8XcVY$xQ3OIFfN* z5Z4sQ_fg7m5V$NNtG6;OAif|TvFvY;ER6iyE^|E4{Nqu`a2!62C?<#@gn$sw69hO= z{_PXBs%;Tq1QUu7LKG3t=ZN4XGyk2Por0Be9E-^(BfoF=I}cEPfPUo2hkvT-IK?9+ z-~aT^&U}_&JQ)f{ZS{CRZj?OW*l9`1Gp-UgB&lYN^8#SgIu&;?b*2`kf zhhJ~>FTnR4Dg<@BGSg%D1u3sRwzK}x%B@^1yl?lrQLUEaJXfnlImJ=KVEMv^YwS0! z8J#og<#rxwa6^VL9JlqW6|rbJ!CgwTmy1_IZj0{m#>Qbb(aMiErC3FMjpLXzy|q#U zpr4?pB+*@~tHX(IXi%Ts6elag!4RB7`cKQrBZjNfblBR054CRZ0l# zfYwDO8!yX5j4Fq53sAYT^hn@jpcY>{Fae6%eJD;M%p>31-^ma#h%L@J;PL7;-{rBS z3=y`qUu`71t+ln;LsuTd5lGHqZS(B7w_MeMYknC;58Wq~3E;N&t(}a~wNS2fPh26T zK!{Rx>QqEJYY)k><4OnwLeP_^mda%m*zRy^-&D#KKhMbKX0PcxTa+acCaB%sx3({) zob!#1Q=?VAY{B?5zxWO!8qG4?t-wk_R)S)Qj-zV}vo@?~>={d%4^p?# z=OGMadNdPMvFK5)2nsQLuo>EGB>^cqmFEP^&%Son&iK9h*j|Tsf{PN6MbCVXm8@J% z0L0Tm7*_Wd`WJheiyr4))oMok7n_I*?~^RC@WqAh`l3Jd1IBA?Vu#&ud-Tv@e+7iHSnIY=xy<4b&O^F4_%0v^WA5TD&fpz?66eB1qtI4P~X zKs+ZB&_stzuG8R%I!vjY7F=k@b+p2i9vhD%c&=bkN?hiZ5#+Dyf0dkh3HM~V<8$R@ z7H3%G&7vl{BtlIz@Q`p|Y&LswHk-}dRciX)M~JAMVc11{pDx^YzOQ3i-de}A%uc7X*6D0d z1@4;E8m4iyg>ai_>d*sW{2+k~1031sZkUD7KTa@?Z79xg*y)T`JDq@VrZ$eB4v#sf zz{iZK9v16o=qbjq4@Va9 zhd<(X8b1_Fz(+R?lXyBDtqvQb)#+Gq7Qq?D5qRLw#%MH*r^9JHecVz8V_2qM=+xx6 zz$kW(m}ZO-(ptmNf)%Kr8hZ(|EtfFR$L>a~gax;$#1IhpSOW+`7J!8i`Pg4%Ab<&M zENF9(o=#^UFkWN4VElrHk)qYln#B;mqb`5%CO?}QP}?P>ng^aB!!lxek8Q&wut3aK%x7#7`J^=(bMAsJI~-Gd5(yq|G6PNdadivk2>-X543679pN( zS_Ct$4{GXT#`On@W!aiD>{ESEbB2j!YM0zom;DvYxONHQOl#939@d9!(;~U&d^7Ds z8hgYtwPu_UH_X%(oC>e_7P74!zlyOY!YCU z-z3CMz!+sW3vn}}3^$uN%DGLygfZrXEG`nlF~$QTB^jt$V-uU7TvZC4`1QuSd@GTN zp0mLBJ2iM?*qBbHtJBrtWI7BmVa_J5)5v7kSB3F*9I-zcCT-r2iO1IAzK3vh!2c9mddPI*GG%3Z3(7>vRY|=7gc+XggO70gwrp0W*6Dag4Mbg;mbG z$~F7jz%N6d`u!A8-t2SjpRa z(a&UXEKhuBoG~6NuS9&JyJ|-QP#R|C5d(6iG|qG+{{^HCJ{)b5QWPie{`kRhAG}v{ zuT24w5=WGfdP)f4MFN<#J;Vsw+v2ktjYmi+N{i`sa74-9nZMDXKnW?fD8|V55yrGt z#FPSUP`W;6@Q}9Mz&K_+Wqi)~E#oiCf=1AeO{Rn4ogmUXBW(rsk8ZM1ABm^=LsSMW zD!E7O}uCvLR~KH#V+1xv^2_ z%%T+EZUdF;9zA;JT~{1+UFE46U#7&AT8v+PvTwz&VMbghpEw>Q(tnQaEcdg?_|L!j zrx9Z&faCjGYo@iUq~H?Zi-1hVkpuuCICr(fw01mSUo~sD0ov^uVcNEJ#gA-_5Wan5 z6QRwG+xO!&jQonWZOuq_`K-YAB+x5>ll!ZW{bJEVU;)@p5NJ**0R$k=0)SO4`f}SF zrIhO+aBKhzK27y}PQibuzXdbnNW(rfmt9`#qcF+j74srkf=SFsLu=gPh$1mHdG|1` zT-~z_23P5pe>2bUTh7&kK?=nM6;WJsRZUVOqg4zddAzDC9`s+iPtGyb&~4F(N4g1rokFN@RqzA4hucKNNn4{Tn$ z3H31QAn!s;S`Se;4cwLDRaD8j)y%tD)}Zk7e(&C1T%}ZU**JH5@Z|6t@}{0)Z#^1g zW>aU4hmE&-{}!tuO0s~^5v@23n5s1D&~87uW0~FnU0A|oL2ZK-+xa9^bT76l*jx1J zxbAglrVup~{M|i&6f&gi{{Z$mas616eRauQ;*}c*EPkIKFRRy@5NfNI_Z8 z7sm)U>ihN`-*zJ`x^eUcmxz(;+F=*cbpQUN_Ys8f?~|MrauBrMe{|peGzG^2&@;VY ziGE^C4ip_it+t~$GOqTT3$jeReJs&9gV0S30i1n8A&FQ@k9_5tLxs?uA&AVNIOP>7 zwR4nf!NDNetz~+T+NFxGZ9=q;>m~cqRz44*lsoqn6H;o|^pJX>2d(Jb#X!2d^Rdo= z7d_KTz*JsNw+uHA`F!ieqx<)#Da>Dd3aT$Az3-`h85&%qPEW^^X$xQ_ z%6KwW#5xa$gKym74?+l@a(sJY@h>~ciJY=+wW3rGZZ7}->tCKPZyl?0bu>nN=Xg$k zS=bZXx2^f#`;b>^McKB>|3Ud9*Z;ryd$*2N1d6HRhA@oFc^>6U0%(jMnh^uIarWCx zHy5XikE=qOoo0f;f{{KfP{$P*El3dT;_V0@LAL9%#UjPF>xzXUeQ4nUKY8&{KU}w&KpRBd@;B9;$}FOn0@EzsLdjxrx58 zmc&~!->9zsZl3A1@mk{n<4NP)x|RyOzD2#`6w!j1$=7k^-6uJ$DZ`>?ueBdXsx*Oy zEQD%vg$c-L>WK5(=UW)o!`|HYB}^xmSUQiGxSZ`qz94~d^`hbo$$Y*6)P(#wCIf+C zin%2+$9u}X1}1G((<3L$HTL$UFc=mEVJ!gN$QZiZiVH?Mo@dkzcLs+s35mdgMJ5GN zeEh_XaNz#*e!~H{kq#Sa60bvyPI383<8}tW%Cf1!#_4ANdH>BjFWvN5t_k<@dzvl3 z@4Qzkm+%uo`Nqe?^5tKAJSuAvWEGe^n)VcXyqmr*KJTqv18*%-aGA;K>5a_){oV1q z<9Ej>KBu=Dst^6oYR7o5@rgN%vt$^JB9}HOg(EfxktuI(L@bTceTJ;74x^RroS*lF z={Qn-3y|3d4Ui3hWGk4dG>xq6c8&$iZcMl6(Ec$ zS@Iy9YiMj;G64uj6$68SP)ZO1L}{_ViYToOIEhk<@yfvfm{F4nZb>0o8}!iv@45Sd z?+)wLc^>}*|9Rt2{#)8QsXL{;?+&^QJ`9^pN#7?I%!lYmE0a;apWiaR*Z8pUlg4lL z4(7HYFA)gCQJ>rhd7BS&61siSJ+PH~!Us0`UD^lzqpU3JF785NTQ)8pN#Y10(0?W1 z>t-%ju4soRSoFtH%70{NFZdKNuCA(rr(%)9-z!D`n$(Lt?NB0xcfCUsB8BH^hp@*A zwk>3#Sh>j(VVv``rXw&mxukKAwKDl)S_QX8J2_lF-}#-CO6mEoLvu*qi~2vgRP>14qGgwz82rPOd*QW((V;CYhn(Yu7B zetdf{xCl)cUfi4VrB3+n{$itOEExNxrp~tgxyrbMsDn+_n@mOFZg|WA*v5}YG=)Q8 zHvl=tuQ~$H%jd!XAZ@IyHW~mykk5HcO7?@4!W%R_HT5hJlxllwH}Kf2jl@e5FR8yP zOdG9MX>@<=JSw$XjWiTu5Bf?Ww5$!P!T;#8{jf2NL#6&_#J1Z-w8!SZG5z&nF${~t z|1A5_F{*+TPoxcP&HAJJOeF;JcoXfQs+lUzHSKbJJN=i%Ll>! zPmUT5c&a9m>Jx)^2f;o{=YRX&_AC*fPwIR1KV>+6*p9%+)hJHnOFxe2EA`$wjKi0T z!~YBs1Af2qKk%z^s-Frxn`Tm*GxC!t|Bpfb&;w^8`u6Ne;w7wxOmt)&0 zwVI_;>AwUxe^+L2nL+JSZ+U~Q_4SV9dN)Lo?G%fpRm}f(wAZCwqQ%#~{c%v|?O$!%bSS?}GF3 z>yp3>+oncLpWpesTE+q13Ij&WYb1+t<*Ztro=(xqm#|H`f?lxK@u#xG*v{5i6IHrZ zQ1erhj@9W7+CSIfr~GB%Ix;okE;IsG7Tjkhof}yFJe6tD0k(0*nSy#S*#dm{iH`E| zTt8=;rwMfCmpVXBmt*Q`-WP*kiUfV>8T^V;rwN^Z0S-}edj7BdqP+7bNt_+gCnkQy zP@Xl0emG5S2S!uQ)3&bS2jO~OmN4W(<8}uBW+Cha{#W037h^+v2nXu*Nx;Cp=(1o^ zuYt!0{w8nLo+qXCzB}Jit+w-lem^eMJ%qe^A@27NfEr`-M*kcY=_0gXA`vK&R3ZHD zgbh%yxFQy#eLMl<(Mk&(2@C4i&I_rIM(^q=vi_o$QWW*6VzK+8quoCsVwH4?gV_x9 z6Q*6WwM{;2=5jTux_TWKJzmbhKda~&j!VYSQ;yYZumP3gL{dXYbE$^oTNSQPUm3MC zMs8f>=S{7_6lZBES#qYFjVew`Z;|+BM;Fy?NNAsI*Fu?GdXhJRV1ON)FnR#QJe9&Zx%qsWxeyJz<$LQ0Ya51v3}o+*c+W8P z3C2fw0}fcC#VmsX*^WZh~Kbc6mnqyhY^ZLhy>-6<5DTsFS^y2~oNpQ%)+i0W^D=nP}m zaL3^;j8#?B#<2W5bJ|@!+?fw8!$+J#!C8OZx^3sO-@N>~%c@5U?T+2g)c^U=8SXgz z8pd20YnrM)4ZUgit$OA|%XN~(pA1u337w%sFDk6?gpn#X3=tS>?mRS(esOb1NZfz$ zf)TbOOSYyR!EQVBH4o;T$Pxs9`*8NhmT_9esGba0d&_5BQ`k70z6&6Kmj#MwcH<9O z0`RYf#4MVguLjoDl72lkvVVAl-2vl1rs$hknZhS9v@kwyJJj+W3GLe03}JnL_lT4A*(exILc!k!Swm~*u_RJCN5mPJJ&3_Q5d-YoolB~K4uB)9nDCiIj{8$$Wm4f}Z zfsIpA`;Kgn2A1;%OqP>m9Fq3kh%!s9(FSl1?<%YsAVh_Cm0@$Qi5lJ%ml?3^IKRUI z_*d#18@ZdC+1RLmg#+;40aWLf6UwvxyD(P-;f!p{qI{X(<}c5NY;)u=eXEBtx*iff zd;-`Og|%`&HCVxqq^*8YOV=@JRTVIA)Y5d7c8~Ed6fwO+hba3_OsK-E;l{Z_C(~k0 zN{MFLX0V`AO;1oaOiy0yu+2*=ccu(1VXdumfGvB{7 zIZFV(v3u(IZ%ih$D<%)h+%L|24 zO+w_dOll_hcxH-kwhboR?ul`wQ&Xjqe!JaaUZ?7L0FGU~fdKctn}(o>0xOt(AD(vY z!8W{`{j{#ah>2r?h*N~ue5G1#iUzZXJqIsWXS`Lu_C!7caJ|Y-EuW`_PDgp&`dC{2a=%||e$%n1`#3V($YeY@6(t5g`TJ9nx#y;ps|`q+!=oz6|~_wUnQ z_aoXzwa@>hcAx(``0*UZxoplgU5|b-2kbkgZDU<$Fm6r$`U@_jJyBOfwxlIL-SS&C zR(z%D7FZQ7o2hh=4Enun5ZU`ui@V?Y`G0W&yv7^R(qgA)+r7@>QqBDV~7H`xs_@_M(z_BZVyPOLZsvL1lQ{}uwwIy8?EX&(ju2kKsZ(1^Z z@K~FByjij~t>U2Ux?r|kz=l8+vsCJvwrd`@J>l;J#mFAl(6-=o$1p z^0izVex6Rk!^KIWQJju@j{8rRn~aT);$XW3?OyA-OZcd<)g$O%#{}WPk%cpI6gG!4 zc3#+^{bac%R?=I#Gw!`lI@LdPqdb9Jo>=nPLg%5P-o(8Pg`s0EGnXKfH z5_pMeQR(qSx{!F0!SKdmug9qLN@}yD#%H2AW-u#yg2`mIuWT1A8iBC{h9IO%GV^Cl z;Vm#e`N+oC`*wGCGlCB$p=v7~XFkBvw%aZqZ%^T|g7JgJ2qt$Mf+R4b&xaAfHs# zn^nW0e<(>Nd{FcH*AQ7cy!A#}6$dTbP80slpZ8ad<9QtL1Y1 z?b$kxt#E~A)hp?hnG!|eSds`O1QaU6>jgqUq(CXl5h{b{d7e;OT-C46%c3kv6hPJL z(QK6p6sR)$zNbtSWnvjrm1K=7L?Nn56osgoEKzFwzsoNW==SeYMc1MqLI`?Zzt?yB zt~VsZ#LMy;L=!kfIV^=U2b-&9FniwVJ|riyPcWLshrS6IPv-^32;e*HOi(OzR`LZ7 zv)T+w0q65ex=i}*fQi8hXD@_t=fLptIXlIS0{*-Gh$&?X={~MpiEm8?>qe_wE)#w! z{vF0dAqP(({Hj(=*ELyE^}|SbqG){Ls90hq&E7~j|V&TG`U z_7!;Vg=q9AeTpiOiN-QP|{UHV{-c>!8uTv2yIm;ZmN^Ii&sC~jv_TG&0P68&?itv zR_dvoW32s*7_HKU!4fL2{$eEX-jX00L~>oJq7({BMRr_?7@}CJXo}~RtHm2NMWT5O zf?&ChSN1$btNioA>cOqD3*fw|fN|kX4uD(UI=H&fS*!TIBJ*`w)fE!}Gnq(=?^o8_ z2q7dQbh*B{YM?w-Vaj1MG7E*PGZCSyCL2)NFB4UqC>@RGQl#u_5Iu5Vq0#7Eap=&B zgaz`>ZxwZ|tLaPKZXIkYD#d$mqV{TaUH-j82d?;?ObBs*^^zORg|vBaX*m$el{G>X zp?Bu?<0l*uR#vWgORjqL%}qfPl`F>MrR<5H^nbm~N6eKPJkA}wg$|=L=vH*cSa75C z)zKc79S-RU+o>)o5myNS3K2x}y@l8i56(uU(lC*oMI~rAGlyk@YsE>uFw8FT{T0tC zz4!jaO~Npnhat?KM80k8h2icq)fuIi2GEXzkzvjGcE%~Vzl%^)(7Fy)eRxs%9cXmP z(CczM2!gy$Q+5T(9gr)@c2z2ZyqP0c$c*J+mSarLSnVV4;cN_zJTN;u{+t$veD)Uw z#|3bm0vy~HP&X#8?w@Q|$0b;@I#Bl!*Y4k{tFG7ZT+DuyVb^N_|L&Xrs3g%+x%rWg zG|MH5!#sn_rj66+Ve|tY|7dn)>?U&iH!7`K+19ft)3A$5<#!yiNJlK$GMD)`={wYFedDkUeCby7)e?Bj|KX2j&d*MBa6L9gJe7Kshd zUC}ETpz^4W?uwdT!G1?`l*wdTN>!agW1fuFS7=4#2GofK(lAE`CLF~BpOhuLME>^!0=xNYHJ`6m@&}3q*Nqyz zqN%B>W)^#mhU)?@6b_i7yEb2=F;G?4RSH6{x0S3W^$4&c0Z0mlsGcON2l_o>!WA%B z1C9}*WkvOh&K=arv7+2~6?z1{)7mQ?5C99wTO$%zQE5d}V}3G7sly@b&g~E02oNid zrB;ruQjb%dGBXCrAdv|xXJ8mavd8FZUXKGgS_HNPgySiBglSPDB6zWXOp1jyGoP!~ za(Q#DP$Y&ZmCKT7@O;kqm9?`J-_Pawmz}fs5MR>-u_ZS(&6DM@U%@uQTexFcmgVqi z=cPROdATJDn&uO(X+md&<3pMF{%qDVF-Syu6dKbBi3qMsmDGO$hr2Fo`2RZ@4q|MYg-R|^)$+xXrUto6 z!8CD9$ja|nKkY4xCC`&(#)?IZi$%s{+4D-`vL_KD`dggri-bsUR-Va=o|l#th#v4* zoyZ;u)k@v78pY6PL9iL3@P<*N`)=cWyuID)ZXIkJ3WdLJZyj8L-u8AohpA$`4O(Ho zcXf(I_`5#}M9{PfXk|?YqUc4?wK8Pisc0IA!5`@gnRHrj%sMKyqG9I1=jRBzvIQ|R z(oOGitLZ46f<1cJ{b#6EM(7rk5WB%oUxJ8)!}K8VgD;yp_nP`97Zjyv+aLy<8M?<9 z^D#3#ft&uXdj`WkW6aYH#sf$EIE$hP-1MIUuFX3jm+j?D4vhJFW4_LsN?o^*a~#$7 z1Iv;X8d#?6Gd7S-E1-&OS%Gh>j*~06F13{D7T9MDxS50V&qjUohz7pukJbitI&?CL z5x#8EVeVTK-X8?l=Ve=T<$^Ad8Nx!1>3BE6kD1~NJn@!7<`r%2A)~Z{HO;oymo!6H zW|6V2+S8#wShz@bN?KNinOVN7yG?r##E3teuiMRC*EGpJWy>C0qRYR~Rk6k)tpAWQ zWV1}uEK~fc9dsC7U2~I3vVeJ?9y_J<=)5ObMj`fA5DeKNZf?B`HYE~e*?rtF#{Z}Z zJxK{N;apF)&-7Ow>SG<_JQ$oIyB?3ZU|cb`qlARZzm9K*FQW#!3f+L@$x#li%rJ0~ zHbd=%mK)drMwR4?1KkWF$&W2EWS*{yFzDO!tP!`mK-$3TL=Gf;SMPvy6kpK9@>Lpv zg56nUZo^6Rf4+#?#i#Qo7f4ZwL`^d|lVw5qt|Dog!3`n{4K3>NAjq2<34c=p?cI0# zir@xBa6$Bm=y{6h!I#}-{Z;}PxdUwF${G>9;C(OZt&!q5h3oysI}BMCL{Za>>fx#( z6LEf+w@30ZU!mlnK)a(2RcL%zP~ca^SKJR%^2t4Pu_??@7md&sx(1y?2qs;&bjv1h zQJlb?qc`26Xi(ra>l~6{6eJeMFwsmARf59WLJ$dxYJ?wyGI`sKs+n@^t8zMeE~tEI zxpH^ET7_)UQ>w2W-t+&CsQlFTLE@hkhxU$S>8&KmhN$bA`VuE?o(>|gG_-mtsT{lh?eJ=#r zq+6m%MiR~^N>L<8QjlP2Chim?(kES5GMnrdR`cA{xCHL4(B$^zU>x&RU9-T9db0hu zUC%c56hTxs^8%&no+60aMqZ$rq7@f|EyL-zD6UuR3@zA4na#tZ=PGZ(WPf~UX*xk* z0sy>`>nB8`a8e^OnM2s=m+O($kXu88YuUTfXt+8a?7(^iwNf!M5LRi^3n4CnZ(rn& z%`Y-`kvk5*$oP#DN)=%0e6UK5b3he3At3(shRwFaFLGdyoLRY^NTRyRa?}NO8KtY5 zD9G1Kgh=O>_?pryqmPHdV6rV0Z3_@ggFN|wi1?mM0?7{y1yhMz#FocMJ>w+p`)z}a z4pXXV8$@yD%W^B*=gQZb!~X~dVB|T_#8#sK4x%k9Hj~$Lp|!oF;~6@ ztI;q~4GlDa`%r3@&lh-2W^zFm1fH3!W9}MRcFfOf6i>avpih>WAuHDPTP=$vZIQK> zra6v5!TvZ2>Ah37M^?<(Tb|MH870fkx3QcBCZ_&V`bphMAd&s*{N5Tq%`53JsZKzBD7`Q^`T8;lCfu-+83NTLs zSY{pq*Q;h9tlC)2w$2!ts6Aw4sKlUXOR&u|<|`N4@uKTUHW#A~Eq(?+s25xu2nkaa z8(jC(KCfsVS6|vM^)P$QHOVTevSR7%vrG6SRaAR!s|uY^+oqE@>zZ|*hSfQqw=_N5 zKPk)v(=<7^Z2z8ldi7Iv%{ssHHEuLV`@7*>p2NSyBzcIMp7!7hL`1m4^Gz z5hr!GojYHU7Oy)Q(~1FwZS4<^i(6fwk=KQ1x5EU#?iI)Dr8Gtr%!jbb)*RAtpQm%Z zgu{dJ;&gbj=i2-oA7lS_Jnmt~T6V7Y{;{EY?sLK3x4{wwRO*l7<}MRm-ii1hPt^OZ zep5Li7u)+T0r7IBn)}xwqA}id2U**S<7s2amf1#NNxQ?-;UVYdyDZ9PZQp13pr;Y% zLt!xAU2nhIFjNkBC2*fz+T(WR;^QqHdUcvZ$MG0HiB*1?Gm+a#2=Xm0QRo}_y{o9> z>Q@6`A@)BXp$+gFoN4r7SEtU0_xGf27jriL7Rd=1yQoQ(wE0GKA9@r$-AnrtQM8OI zcBWh=9o0l<3iieAox9R1*oTD?m4qYNg%Yt89!->y3#N_X*B=rM7m5Cgui@4?E7XgvU?-flG>`-|)yy5V$jK|O@;DPixloMbTCLY_cW5Xm)Xx4* zFpM?dW`f}d762Su$mekF$dP5eR$qGi=Kjx&@LSY%^Nzka_$i_9Nh0`?ysp`f|5KeX zv>hmPv|O(69wISGpt5XHiUnqv&8A`K0^{D#EUhfpLLymqt-kbAzT>EOSd?PXFf3VO zqDW;4evMYcPRCFSvFFLpGEt zMt^|NSc$;pf7zXcq%PG=i(e-)XXp`G>q(Ntk=G~{Rl#s0sDFf=)1-_%N{*x>+Hc_~ zwb2?xCrAKGRn1K=^%gtyk)HO!k6gVQg&y<$TCLr#)q?FA4qtMN)(F?rVD2Pz-ahT^ zKIV#=W^&EYWWmAM5oFEKxT$HPXWEjcT8sa37i0HaEmf0jOL_gC7=)s0ZV#X0!?>#x zTdEfRD*yPs!SGR0C}@?pw?}ui*hg_f7sG|aCI88Xwlte7 z-aPCK{4I3|<5s;&w+HG=8fK*U+T?BAv~FAn-?{gL$V+1304lDf9th?g75BmZkuXvN zvkhbp&lc2rsT*bxJRPYZp`vX1l(5=UlzGli$Ba_N439CMOy0iE zG#|AysyzT)nE#?+v zi2GLz^X%^lXJkjQJzct4);yc+{JdsV8jM+tsBM80Ut3sMkdZpseAQR-0Uba;@9D(W zG@Iz&`B-d0C@G4{TT*9toR3wrkK`9dv3Nkj&zk`K5W!ehCoCAH&|bDwwF;oFs@8H} zl|dUQtY)&Cr&lm=ZdsfIUYQrl< zyA`hvSBGiTIMGx_Ru}D;No|ylk~kVBo?3gQ{XIj|9tdkOTu>C;2?#$x=oDYU`}0xM znayVU?Qs*8>PZj!%-utRAW1XmBXW>H`i+WZO?okZ8tD5WU2IpFmR&L4XbF;X^OdXY z1=XP^C!=&IRgZG;`SMa*(&b$9<36#y#ru$@xSeTUhT!{RD=0HyMlc~IUNyU`AUUy( z+Q3a3%Bez%&Af#PCy+V6q$?nKY-~P*fa|2~+Yq9b-p-Vi`80d}9#d@EeAJoU_3vda zYi}zl`t>8>I5xp$cpf!kEK%6qBWh5jJ`VAU=v zLaY`q23{iIGl&pfz}0mhBM6wH>+<6|?Aw3r08f$cBikY#w;BjlTyAmMogi4!rHV8Q^fWmjubuJinW z2+tz~5JC(QOcAl|YF#neyX`2q8E^G9j^5&RzSnrK zVYGOgx(5osValZQp=RKSaZSfzolbCmL`cg{k0#S>B4HXrsGPC_Tk>``O%ukm$&^p3 zX@8e_a!EUz#t9dFN@djByy+J&TXiS+2T!J!lA&#y%Nx+g6D|xJ%cg0?Qdz0+9E6bRC?oHFGL5hF6%~`TyykC-`9e`f-K{{-h7$+PIp-+QhBuA}! zV6*?(M`$DGNXjd0x!LWYk4t4~ha#yM2T2tI@wG;dAgR3@%9Yjt7&{c(0Dw%}z(G-j z`f<#clwbgWJF9&gCP-_FP!J?vV+B-}62TE71S7xzhyVoutTjUzTN)v4BBF{p$;r{a z5dq-#*U5W~*BNh$BFbd-4Me?8w#;5C9;ag}F>pSqKqZ4^w(6sC8vSWt@EE@U0t}V$oj|>J%_4qhPI3uopq@ zG_UWA3mCnv#n2gcceb~8c7;BrG+se(JDOqoz8K9f0l13pK&)%!xyj40XY7~nAJISO zts0F-m&N4aq(1l zhA?3(ltSNIY_}HA?!Q-y?{>4FvTb*`AI#A%q^bJ%`*6XmM)OSX1qmR2D&cSSlM+C_ z@XojZe&9Y*c3fD0#0?$>*Ku6NtEgT_qqIK`dyd-+#{K5My7y@=*v5ml{on@ULf_|N%i`nf zlrnRV`M__wiG%-G4w$tasKa^t)!MxIn0&6f3mGfaR59qF895BBca}3k-lQgqToT zv4C-~DwL9C|La#otwK>SrSc5eK2VraLCHd~WOn-i^n>fi7Z(vMEgoMl6euOQyV6}K z6X0Cr3s)>rE@)D%)LVsuI22$)SVJJjkgPL8a0E3Dz~>huObDw>#2Au4z6baRMWN8D zSE>mWoGue44FQ*Z42UP5Dg;wk5M?p`SGW9kpwgGrO}7g;p%WTphk!J zt%xx~if+{=B#5P|B9j==P#}DaeSr{076pufYGA3-Bs`2gIsY46uu;_%aX^S&b&G^B z7SR?4f)UQCa=F_rmsJj7ih;D~f7c2Pb3P`7u|my@lElf?Dx%JNBKU4W6TldV#t0$t zC?V%0AcU4&FYF+MKr}?9mUEIM@@fUf2#H-6poTF*fFWup)&kllLX?skfa?m*>d*KX zsaN~BjjH)wVymOZ^@cGWwK+>E%|u#eR|{@fMQJX=*y@BTA*P z9w$+&H%9L{RuYm-Go<^b@-8WL$x~)uBc?NG60$h=f1)zYz*@T70;X@!i0QLm(hTVv zGz07Gv-5vK)k}_ZsfyUX)eO(qCUh;6&?(o}1#u13hBT4SZK z*3{ZhwZ=KBHO^JA)-;E;rn&pBsW+_Cl%BR4^=lY248y=i_42QyD(o3=Fy3gqU>LyF z8d%NV`1q!J1Sms{(vW6cp5iJ*^$U8Hd8XirA1AyKFeYJ~m;lY^U_R*QfxvekZ}3Ly zBPcp6M~q9R_VYHKOq1Awb_RQ<1IPQTko<4M@$(slCrS~Z_{Ovxr=E=?z&uhjB+$CtbrPLf92>32*a zS>wRg6~*|VqzhpkP#hr?lq%AfMX}+_N-02Ed5@qTE>O8yUzn|})gDcKtKIg3dOh&k zZOc!ucPfaczGzal?=TQn4%~wA7VuGDbV_!!_Peq&9A9$0AIHOx^89=j3mW$6kDs4) zW`mhuwSQ=qYy$ABLfnaPcofP$PiP|oIHCo2lIAysa^urm} z7Y04wg?jBA<JK88<8DxPJCYL$^{78P@Fb_2{I$xH5M z7XhndrWNe1;+>01STe2%*=mc8OXKaS3@^>9rp{eH#=w~m?yLLRwhOkCyq(8KEf??L z7hfDoshuQ2C`lY!s^OBAC-SY78%_+jM?nhnhj z<7(qJ;}Kd1(A&cs!egSjjqozPf#NUWXc#o9X1OU_FK*FdxGn%Q3SYAXIX0YApe!kQ zmG~ND9=s@Mp z%|`32T$LLE2xDCnrM%Y8Mm@sLpcP{2g97U`pUjX2zo3BfVO zG3PPH@u*wLDW~sAks%LootkTZc-CPXgzn5fzER*4d$0tRhSS@p9TI6im}{nQ0kHd8JI} zZpAs++93#7yWIC(k z-0}RJc}EK^lxKQg-YaF+y=Yj%|x7(^S;5$ZU^zsNL+M~R$N{mnf$hK_&7bAqC$YC5&PjMk-98ipr8C*)*CajE@7psuA&aMtR?Kofvuk+jec*-JWfCrx(#u@8~-dfcxHg#ZnKz zf1Y2}VbwhK%rmD_^O?gZMyvKuKD01;?L$9luZ~WP7T!;dUoxu3BK{ai6oq97BzK9c zT8Yvz@5jXL%M3~O)6>DiC87Z#LsRCPa{It-U_KdGHj(v%v7zt zQ{7eiez9V@u6?78K$)&<@6YmC+aLN$)_b=i@Em-hD3$+6ngj7g#hLReK4&3N$4%F@ zZ3L>nT*kC^Yon1yY2D~dl*G{^2g_wLwG+!GeYOqj#t{T;OPe=_gP|pdh~Y6gq#q2D zn^KyMSNox#uG_G-rZwd5VuYHnN0|c{etIw9IH0d)7@GwT9(Qk!fD4b1pJ^wFKDjr3 z^Udz#;O9+@+11+IahoJb`)3I81P8}i0R-V2?5aZY7Sp!49iPvY&y;1nElmZ`H!GFS zj+XLcl{4ks`N-myZM``uo^k-3GqzM9r2TxSTCs)zrYW`)VHk!1uc}_DCyQ5&>nZ7r zUtH{`<|k-YIxu!133+3j@i65=1+quAD$3kQX+Va->!^N;Q#=vW$91If5^M`23A@gP zHiS^%%TX+LixfwcK%oGHMwpguKnU#e!_5jsn3+;dl?Bpd7|}|T8(8g~^NYd;bM4vO zi?KcLs)y6BUBa#qmecik$3)M(MGptZvv<;lXo6|UW; zsiy#h<+|2W`D(rnxqPdc%K>P|_bp5)wgTVL0PZ%PDj}@-uUb~5C*M9e(9Guma`|Rh zDCTlDA$BfTEQE%y(3KU_c$EW&VQ2-k<;)(9@pPO<2Loc<2xT!Ol4!8iamu52fvQrP zU`rtOd<2xeB*#zeo~;P!>m<%si&1Qvo%?R6Na5F3tHsx^z#e>bhx}X}c0IeeK3r}7 z*VC7O>R^&K>xpdz-a>D=mL(lL49>O>e&eUWVVlV3ZHhPeYHD2N&7|o?U>vhO!PN)m zKZz&P;6ToCTZHDL075bjbzr3_+5Q^9X5hq~9=HeO)3u&9d zt`-uK`H#HUtK)lJsIPl~BlwJv`b#%6!hMn6o1mR{p007+Fld7h8)u&C$|x51TjcCT ze!tSrrpo7*5NmAWMkW&W=k{fAJwh1Yw6Tuy`o>KdBV=M^E-eQp@T;`{*z%$R&>z35 zff>V%s~7?@wZTOA$PtW`JtYX34`^fKrkgf45P)eh_tvzfm%}BdjsC|x%Ggm87^Ra_ zCZJ{$fq7~|83jWa<1UA4#x%YfXiulMVuXtxs+YE#`RNmZeXyd@ifv<>GMuDSJPPYv zWW9e$^3 z{&(&6?Pt%PJzKB;K)r6zvYZ(kePheGCI;$PC0+)$;Z3$6iC$nlMQ>!b88iV_(=3sT zlQ@SXy+ZcrJ1|uDIrQo70U{h<_4FG3YDI&QF_b{-nRNh%=y29 z?-$<|*vBZX$!JHi_Qu>OYHhC;d_%17(=WbtnkHM2aXFEF?_>x?yMHBVnoRjLPi~#F@Dtep!C!v z9u5R?XKj;+yfYp(7B-SN8I0V`iSwOmSSg)!2{)cfidm|CDUVYX;waqUNL<5U%pMk( z?szmAb!WigqtQ6!^>ICdTmd0U7)2;Q+DtGfY{mGfyifqag;i^p5hfTg07isTgtJ=D z2NVZHNq%>7P$x#<_i7nN42b0#0Ko*Ka=T`6$pJ7R0EP(wLdoXJzE@wJb^6Tsa~={Q zVUJ$Z!=cooevHa+&gpg(`_xJg0lvxJ2%{JSD61gX zC;-NUC_xYacbg9w3KaRn_)pMU>^pfw3sU(hnr6>Byh}5Q^y38IAfzHc4Cn=qvHHJe zvhVE=JiA9u;@bcp7IqLBw+k#ocw;F4V1;CN@MR1d(aMWeVgJUcjkfU1yBybj^z|At z-Wy&{5SLt0)9NTvrm7aP))TGW!U?rT>$ml8>29aG#I`St)WJm9v{(=zG-xOjFXXsy z9F*;pgwPHWvOz>|lw$MJXO;)>Y0X5EkrN&_7)|S*{Q~wndbvofUZK#lNP(JJJ~(REqGOc!^?TFt1}50QrE9yAYxZ zny;$ZTIJn(!X{il@POvTzUnHQP=)aW4`8e)v9G!c82o~NzUq=_`9Vd;R3HrsL|=+( zfhkK=fE9T)KgG38mY0dGdA-iHg5_lZ>9BhJo5x#bwsCR&A$+5$u3(g+NHlHaF(yKlC9Z#sT78W9)zGp6d-hO8%HMD022ANgUr+WGHRnfo!sT zW$!dK+-Bg^b{qajJo{m@RBF`A%Dkh;Jiv03UQMr}g^t&6r1HbF89~r!cKl`G;2g(m zHO~M_{GfY7XH=#)HVMGrjBHO!xs405@aqIhrQY`Jg(GIu9*iwWubqU9D{&z3;TNf_;RHds8N!wcy&V=49E!y*WnPMXze*{!Q|B{153d-D z#-?#E9Wjbr%dn3?149QD0jgCLdrvIPMkv)5XADH%o;NyW)O!7Lx|AR2Caa40N?t3B#RNdIHhT3st2nXf5m` zj1VpsGB~jDS}v#TJlSLz=y}-b)gJ!+qY4KNYA{5@K{JBbqvOexqp1LK_EyGS5X}3N zH#%sJp=><41(U30p*r10LNlzgIShJ62`*f9s4|$p+REo40g}33Uz7kiTMlR+X$=Tb z$}FTE2sN^24phyqm-8)~L|Du(Cyl|Nk(itZp9;9Je&=mF=*RR`k`f}ETe6D2_=cdW zv~%-)MaB61!W(F=76k{u@qj~jsUXa?xx3mz;2sFURNlk3`AAX+s3%qzk{+>s>5MRH z7^+Min?|64wwg*qFz`C#4&zb7m^LGplF)%N z=!P`m8EfLUY&;FegW)voq-lcNW8tlvvSg(UA^YOSWVjlIs0RO6^Aw=}eSyOR4}Foq zS2%*-K!6c?2`~qA&9#r+&bVN=|L!;MzWa+$5%e2?ID9n#e&L}9K97JS^b$g6PX8n! z2u@vv-by}30D8|5xG@Hf(1*U@V2BTKfU^ie9}q%!fJL&tCwH&{+_N zVt^%tIK*H05ZsE8fIAUFF#N&i$j1nJrU$_Po$Onysuts`O{(DYwlj|>Nh@@Km2*9g zl1aCRg#+#X)oMCP1VX=wG$HS+0&w^k`R(5(oCN9nob^%ommqn$k7T3l+9 zQ4V{$o7=o7txQ6A?(65^#{*EY_EDT`Br#NH-@A0N(tDV<)z=3>0C)`Z=l;;KEt4R| zZ8wI4hJmjQ>UsL3Gmaal4P&dW2g-13eo0f5;~s?QqKqsWnQ-C+Koy4*@6cqQMx%cg{`MZe8DGA69%31o% z7j$}B6APjeRA%{;2^ob_H%XMNlxt@@5@P_*%jbO$aZ%M8JTLEXCT-aT&o8bXIkGy0 z1Yr$fkjr}u4b@S$WXvtN9{7GDI6^@f|Z={8lmGNQ2upW0~&j^eKX$6hg zj;epu_;Ev8)nH4BbS4HF4>M+}RNXiPNjR8Q!RE(M4Tx`CMTd_BkbAI9u24LIY_Dv?sv@(hqT;yVasGUSZ$ zP*yP^s$4FY6eXl`UP(!+%the(hb01*uK}XY5vde$3B;!(3NXK{2?83Oj)AyDDS0%A zkz5EgqAk$;Va#`y`QOU*Ns`)9hur^JhE)5f6ecVv2_<u|5ke8A6*HhTMkww!6~b(J8^y*dG$x96(l7^jHPYIW zLQTRs!SDwj)Ppt-8TS}Fy;z6Zf?aeN$blxTODamEjNHU8t+>V`1Fx#qv<1m`v`T^R zyy*sd6*)y@l<`QrO5Wsa5%TsXWJx-{D1$_SX((1)&xECrVu!`xI8>V(w--3rSLq!K zfvq7faIk#`!10sR{qA;Yrc?+@E2c1hvTkl?2ljU2Mq$h{z0>ze9;cUT5Re1vTRqb{ ztBGt!+^_ARs8gE3wu7QRhH^b;yd*dmOJfA=Icc?;)-LVr#MwOfJ!;$EcYn;|h7lyi z1!Skhw|9xq2qACB0|C{AP-Ork>Y&+wvJ7z*F#PHA!=UX2o%nzZb_-GlAOc+^+UkLD zL(`;!pQ8xH&H>xSj%Ql1Fuqv!eC-DstRKEn^+iGqzpNgM&L9)4K`^7?$>txmB9qt- zEl+w?=|$gqYg}tzeSJ`_v<^y@4^TUH9D(I^NG~1M%j%luqO$TrN;jzeZO2P&O%n`4UZmO;oH$LDsvt&trM;!zePLq|If&!D2hv^ z05A{(U5SPvpon^2!uc(pM=1YhTrS5^^beG-7>3~*#^pVQ_2@kZnOB$aA^ z#kgR6$M`3}+QOk6OOfPp`f)o;M>7&C*l#U@7Qq9n|-Jo1*WUi=Ev3>K@ynx4^X$!O+FUdHXs|e-G7?A1c9mk z-hiU-?xh^exrADbKz&>HjTo(PxN7#_Zg>Cdxb2q#HQ-M@#bL@5|IuO{m{y*2ASScN zSHU?4?Ht%9Vn(%0>p2H%C~wCx{5m_2<~LYe43_pY#m__gRnm2!K1fvS8wcWpFM}c< zpft*u@9!|mw$P-CVh6E4YTKPzk}Z6h+SwO}j165(DRzg94aJ2Ulvw-KruXQJqMEk| zvGRmW*Fer0+7bG4k8}LiG792i(gm=TD#bC+1DISkFAOzDL)s5=k>k=L$g?NaK|vpa#I*a!cIe-~7T*C# z2+6VhYD0X2_v{rgKZ1}+kn0xjM99J}JP(fB_bfYnkPzEnYGZvkorEaIC1K{k{ELL- zI6!jG_}%Sw#J5AOTew3rB9-N|F&6T0Td=6dkhKsH_I$(9$Q*dN)VQJ}Am3oGUY!MA0pz$zb5h)6t*q}T} zAORO{!el%c4mLq7`kv|diN4Y^i3!FY6;DlCP59_isg=tEvRw_}0#pi|#xhs)q{MOV z?NZuREoABi%rvcf05d~9>;RzQ^|mAg6BSAt*CEt^tkjwvUBk7IZCmqV@kkJ!O}gml z*!8pIh3n{Zeyp|(_wu$$D79sDRj?}p_*c>)_tFdzN!%eyrf6-wTFHd_!oUrV^V#BbaZsxP@j~_F5rkKsomGFP=JA`e zRL?WhvV{a>(#7dg{{}xYdhV(efUTp&dY;2^3CL8oC20d{wZ7+MfGP;eGYf1#(l&&& zts!J}rR$5`b>TwG4IwcMAGE7xltfB6X$FAP6Ag%%m?%|BCwbVnxSrY!wPz1(MUi+) zJ4BvmhRStSXnI~Ga?<`N+B)zo^o5vC&=Kp`B-nv^eb67A?k@uf5qEq5zY_}q&|f}1 z=nv|3=;{Klw2VO$@QfcczCith3^aua*!h8ty3B@1W>8G9&Xy%E-S(e11Fdn} ziAsSfXuW}HgRhP!o3J`w9T$&vyQD^@By3_)ScZ@+lxTOMT&6UED!(ezjXn%UC221$ z=Z(jsl_5Hjf3czKo}IR5YyjB^!=!manmrn8Tfc$Jzcmq52-opE$2FD8n^7;69~LW9+|!4d>R zow2B)mKYHdHKJ{1ORVaRLc7&Ax0;O6+{ljN-rR6Gkc1&ZObCX`z7Op}z(tSR)&`)= z1pp+1(fDUuZ~}nUW>S0F%4oE8<#^Q;Hj7I=_=v%BCBrN*&K*03OiXA7(}9Z+=KyjsOgad4EX_P7(w3i?$UiV-m9*GsrMk#S|E2+~ zARMizz(zqBCun?lV;k%lk>{FVIj5WhGY=kcFEPBhREWCAELAULwv^hGnKUuhEe6%= ziwI&uV_8LzY}P_u@*9j~rvp$gW;amS2sSW*3$@I~+nr)Mp@8H~Ku{P24KJ)6Q9I|zCc;RAu{eVjjKonPV+R=?a1eYXg#hG8yJ6q4X3UxgH_$IdL z=3!}mp%VCn1VOG$<-1a=4)SW`!#4d2zh!k$o@|PPFwqzQl2h_Zl}dhWkw?c;h>u6$ z50o8X>ewvK1m!9KNmUubxjtQo@TlIr?0JB?-Hij?4*JsDT*%4bJ(ffZ7R>*KTbA|H zKhy0_$}ha2F>jxr`RVi-Fl!V`9zo)Lu~#bEa?<9_U?auM`cOV%vX$P4iB9?Pf6qaGSl9+~fRIjiKXoPK7 zv)t*4z$NN98s*zuO5aEAJkpLsOIS=!=a_bFTqNrL`xPnP?pqG$Cg31Dt2w>>CJ#WG?`pGM!r0!U>qU@#d0b8@vW7Wvb_dU{XKmVO{Ql+ z&mQI4$pqySP1?5V5q{6=eKN4%q)mXCYSivYY=B8qX+kJgj@wLp;O}|aB z$vi=8a*2T@<7y=1Q8Z%g>e}Cm0*Bf-&Wt@9#tHEA!Usav6@v#n)cc%XC{}BpX+gXg za6z)CPm zjejEV4D6@jdq=?`ut7OC~jD$*DLCxM9cU5W1ON?4{?rVtHfq+-gf-3^^gwy z%yPjcxqMLS%I*~<_$mM{C>Dktg#_^d<4TJNQ43@1XqvP$KB6Sww3@AEDJ!XmakVFy z5kyqE!O_b7k>D2Wrschi8E4Tn8fA<_lq+|uHGSshLw4@a_dLl!ssjH5XXCiHUUQ0T z6TVl7m4nZqo@VX;f|? z`@PgtW5bYfz8+K|=4|P&jFCQN80wz*6gY@QVe(riGh40pQDfLn8_^&oHh{SAo9siI zQ#q2k0d3tBM&pc+H5mG=3I9D1`i#ym*sS1&*M(qnnOS^t>!|P<)yc(g2Dc5tiRs z!>?UE`+}kIe8O4+-q6bZ(3EYHL|Q0-6T960nKx+I!G3)n5R)3=?aEtfC#p;*Su`lZ z>pU_1_Yp^k4|A&7ZkIn21UHBILimv~D?@<+ma zA-p*VK2mPCo2OhPe#ZI7Zhq$GXW%=@MwHd##+x|9*jI?+dTO0dvbL+1;x=b6F$TG0 zT*T2m?$z|oe&RtoNFfpZq$-=s#AX4x@N{9rFkypOdbLk-FG#F>-bwzQ3 zpSKuy?R52NZb7g(a8sk5=t4n;pb{$c5!zvq$*2-lDp4hpZ1EMd?l^HeW8S5B2%Fh} zVt^O{Sjki0+btHs)`D|NCD(&mbx;I{VJ<=y_UzL!2$l6e(uqQC$wpC~8COO91Cgvc}%KK&GEr_1| z{Dch{q{Bl~?rR4dS;8qhHskdrpLlebuzMgHCodz?^~|2GZ*t@?mvr3ydU!B9@Wg2+ znCtEr>p0QG?x)2|Vx7*sKg7P2ws~2apHO#G9(}8_G^xAMcd-Zm{`Ge377F!#tzPKD zmKPMSO|jVh-N@|o5L1WuDZ%oINcBZXsKfgr{F_J(Sn&CeRvtVNnSCA*;_$u<_S^P< z%!6~0iJWs%O7h<|L-YHDVQ_;M+F)%QHtsfFZ@kU;5#v*GlW~JGju2um1TUghhl62d zPmpCK$T=5xBkouG4{1!#2`X`&Bh?n^u?%1$i6BQ7^Ya>~VEC21=YgqwH(|MVLO$PG z%-0uJZ6pZV+Co?&`=msRi%6dQ&$9@rnP?54K65DF4;KwE(m45Om6oUx6i=z`gu9|g z%((hihj9$!iq1E$9qwC=QnQuM0jlP}dK`_dEkwj)+tGHtLTpA+X;k)o5N&U%wE)mK zDrf9(ZJd_li2j;6U_3!nk5F-uAdi3bJRQ*XYmB>%r;Q&l3^5|Or7b&Zbqnj<5GKk!Vw(#$ofrQB81dzya~ z;0r-quebm1w1bev#lj+E5|Bk$Y!O}KlcsQFP_x}Ktsj;h;7f(P{sZwE5+A&Bp!4tczI z%rbqvN3%9xlJ5ItJ8KNbY0}tO(jM%^N$Leq4O}lcly&Nj;qdyr;`<)ibq7wZt}b;4 zgTnz_G1@lx0cjiIa$3OHwh<~FNWIk2Is#MCI;IXK?JMs_3L%kQ`=q)TVgJ98U5LLf zca0}$cNc1*FUl4g;qK%!{$eh6aey7*?3V=s;NsBA{CO>PsxIB6AC(8Ss{ z>IH?M5ClyDu>xqdN8`+RH`1YCC8`$qQ%|>Dt74^ePKeT0(NbE_t#ST5T$(e!UlT60 z+sxYT1wl}tk~Mh`z~b6gX0EyR=9x%u?+xtkNvXg6LDw{)YKuZ~4R&iVFQ`vz%^5cu zMk~c}_F4Q~akf#XvW;=p-S#4wS*Rq*Mas#F$dv&shdqf$fH7;-|q%- zr2%K{g<+v$aWB4K3|x`Vr`=)^xTwbGY>-LXL*?QS{W6i}^P=7BOgpe^bd2MXoe~To zn9zpojo!V?PK$^L6(?)jYbmZxUHboRk+nIj-FU^ZZkNB*7HPVF{rIu9eT{nJ{H3KU zue=3~8;zA(T(3|HgIjEY+U+&i91hE+EwnB!9=@XAM+sM1t*)-lU>En6PMo;$0SCZ& z@c71hnxaO!Z{IP*#@*j?;>5xN?2%S`{E!3SJW>dJ41Q3;dmOmdYQi?IR!5@)589Y> z&f(=gf#u#6XpysKqfxm6w7qFRDjOd;K4mt6f;tq!razklR<(Pd`wjR ztz4XB0KHLbKS_}Rm&g2X_QQXCxYt9dI)6_rVEK1I9H`BW4PPDDWudiLoc)wSus;RJqRR zg8}s2sPd!4*)M)59S+kCww2oylb~MjZgsm`oJ-opW0G^uFs{mE@ng?2G7@@^Qj(x4?IhTqH`|Lwwn5jr{vAx8LiUJu!uLH8x zm%19~RER=gG+`A(MOuQ7RSe0AY1`Mb|{$y_Q) zr}q=qEjXMXvTZNxyNpE5f#Ye@QTx;L^AIPEPHxWykmGx~PQ#y1*1l5<_5n!ov69pM zvgm#7{#=>uy>r;$?&Y(+F>nB!;B&?P_s*d>dP%pV9reU27d5$Qu8$8Tn^tP+(c!c% zcHo*g)b_DHkxIQ^U}7HY6Nwq43Er&YC9&>w+y3|2zH8fr@Zt^GXHxFY-xFbAaHri2J=2{3l%K-QmiZdclq!BG_ak|>Gyl0xcd_;> z7{GxaH5~^~)UCy}4+O63Z8RNw{%ubnesC>4^yk$u$~!hf&9Y$_*m(cPu`!X+1o7TY zk4Y%W`gB=4%~qz#Xj+;fi>n6h^I!=wQBA#6Y;FP6IEW_H_vgaLYYizfkb2!m@;4Ec)UeQ^*kZLMhCP)-g}Y z2q0=nxq8ext@iI%;EFRrmk}!KHn9Od%zxv}g8;%7XuwUHJD%$Sc&-PN6Wd0^4%B{I zW7#_Q>R$X`^hpQaU5Jx3YV~6Y%Vhm34py=uwg`UDr@iM!W&)DTy9?2exE(Y>nv7@! zF3w3?(q3eK0S0H!2>>?Gf#cf+?`c{I36O&l|9$=pc8qI{&l>+x<6apL2k}Y6ZQzM1 zggWA}3LS35ESO9)+-fe`EMc5DHMU;HxXH8Vsn9!sdPL1xkcF4%0yUjdsBZU@`Lopk?;SZfMtElG?JVS+m13Z z65O5}cZ4<4Jl=8|eEz7J8}Pp<7a%245{X94y$vOn5^+wEskF@n7PcUdmt_kqxUH3m zUZk8ODX~=YKN_DU5Sy7497$VemsRB^p?e;%WrTCgHam_1oaWz5TLxI+DF?Z&@7r1$_hG!QQ%~6|JlTWGSUH% z<-#}y%7}J)%ge=_Wi2@oV+STh-!D!!Ig6Yn%gPn{%RNUEMq&Q#UGNWkt?lSelyAl{ zZd7ISZLNC4ZZ9ph?Z!=c)RdJJ$8qx$n>B|PDqBN}2@CzzGzCc0RX=0|)8SU7K%LqK z$C!8`Z`r+Ge^8VZF^0^lo6EUX6ETLUEcOSzo^9o&OE6|lZAYPgEH8F{S}1n1f%I1z z|EiSR^t{xYf4$JGulRD1b>z+=Iqu`oSdreH-i%NewKN*QML76>^uEwX@%g2}B1L7a5KKBH(Ll*TjdkI^c{!%0H4356-k|3JGqx*Z}LWy9}^sBUMg`C#pbzF+EnVh2$Gev1hnNv2A(X@3rAa=tC;B1=k=>*0q zs{ae#&XR00os1L4;h*9xTVBXYCc(VUEz2$n=_!thIe*#0nAf;vTX5?n4D+AIp>`w3 z{>jbiX7$01>PGd^jp{}T5SBhE2@jo~0z0IKsB9sfh{qh-=yw|KHrQ&8bN+ z|9WHp`nrt|aC`vR{1-F79n3O6^AERz%=^urw3i+6P$(qlq3ak1GK|ZwA_Mk}nlYkN zCMd`$Oe;}v;6px*0-lX_2o;Owa9HScyXC13{r{m|*&)OXUKlE6n)~i;g|X}QZ*>H( zwgJ^eb77&Luh*-P22$15{&~4p=Km>`&kwGcrc(P>{A|$g=h9lOp06(~q@oU}UE#u! z&xOhpYSgPL-r%*yEymr(!^RWF^Ts<3IYwcZE0BY?3Bln?&Oy`*oSkqT&iq86VFcGL zSC(L{d!M7gEO(kJj>6{C-^%+QNy;A_WS$2k#Pf4&8YTC9XOFY7a=qZ=IR-HEYY?2$ zH!S`j^^<+khu$u`pyoKaALaZCc);0LaQ>q?$BFYsNu4j4E2iQ7<>pM009ULw16q$w zmoHy_6(PGZOiqpKjEDU|)Q44FXoX@ap!;)EZ(B)jq#Jk?C;UlGYS`2Y>1F*Vi%<7N zADfvJd0%wIl|JBnD}BIsSf}G$oqNa9q1?a+6h9QWl>^GM%|yzrihr&qV?g2GxeM!Z zVt^oUDqGUFRjkz3M}#z27w(iEPAiJu70LNecm*pPJuq$A z!N;&+MYAw$!#9f5&((y)&<@F{mGaSelt!bBjsk;z7E5S4tqWBlv`Q0xZSbZ-C|nyf z@E}L5y9#&AFWy~v)7$TPQ-1#J9fi9roI@U}g=B7!aA?x_440F!RxZZfoFu=}g`?Hjf#wN>a#KXaO zMGo_xDm*LqcQxY1YE=yg>T=9J${CjPIDHQRAJ_M6<|;pQci~OHR!XFdB9!a}Ic(i! zS@Xj?;dnSY|H}8D2jA=?H2Pn$U+GS2b%5UT;Um2s%H=aZskHNXu&q3HUB^Kg0*o|c zIk@ro^QGePot@+Pq7*@Z`aN*lgac}A2h43B?X-VZYk1jr0NKv!$^9qFVU)Fo<8gMl zw}jAA?{H;#x%KBRBuO`nq6&$kFhqTX38_>np%G66-jdbyn5wezHxZ_B`2#?WWDBc1 zr)#r6^=UCH)WE+EYT#vw@X|%|s*+(Gj74HyTizHo>;WNk_SFVUTs_J{SIQ7}&1{lO zkgg!*tX=3J6Q|>v!brYAv81Pfd=3$liiQcD%%(UQWm8rQhrqWl!PsObe$oYnFa2sh z(3V$<3%W@nTg&(7i1!|sJWB^9Nkb(hQA$N26)&Ypr5dM|CG&xBp-;=0f8MR=EQd4Ud5RO&O&OD_5vTzt2ONC%!3=3|K| zk(EkFRg@fuQm0cA{r}o&1=zuj1$I~8)pbn(y3OhFf?n`4xtETvC9}E z{9_Ewf8<>A_Ta|g_U1Y5GREXR#f8Q0kH%s!6!A-)g~j5%k}>9Td>C_AJ6zreand62_d5#yIJa(_u2C*jR-Jyh%PXN`6?4BE&j zz(`Tqd0q3BqB!xbPjSE6Wg@vCkd>Pu>)*-yVB4wY6<|&(54IP##E;L80OI=Fq#b(uH zPHQy|PFa{OE6Y~%->JkgY%doZ@S{D)WZt9-JRGuwU$g?A;doj^=aMO5zL(R>tp$eT~bt=#{JZds}Xf2|j4-hEo zCaZ(ixsaO&1SN=97w?eI3rdjBKuUA}#b5h3!xhAA*&9%X@V z3l3NyLdC{@Q%YbyB2)-$gS#i&&=(EtMDM@2@LGjhgVxb+Dn>~G7~@IaQW6u!#AMTC zjO2hZ5ii&)1z=R{JMb96Qd#+gGX@31g_^E74&Z+-77NB8M;J3VCxS8hFo>Z^wdzX( zacakMXv!5>>U4In6{*%=xVj>J15}#~dciq!xw3MK=cP(H)C^KSF zk#}8tX3LHfJaWSzc~6j>+NwT|g^i_+3^NxorqHM4!S3!~2XeT47BPkn_b{cnv5Xi) zy%bZ5&k`v;*mIP`@PT=cb9nH_8GHM0G4?CZQ3}3mSpcT#ltUV>5gU^}+>GX^%1RPB z2W3z?rcpYXj*@iTk!}dY$RC6AGw;LeFdDZ;agvTB}b~-b3zTh3%+tfwR8avvvlz&%dLESI1D3^v`KjxiTu`{ixy$2OAre zs=WcVGakZWO-j4!NF}9Rt)Xvv2#5Kd^=id(hJ%d@H^ha!k4G^xXEcp<sPe;2fLU)ga6yi#Yk|O3nR}E+W5Ml4YlYr1i#dRH3+V{9G&?leV^wx=2aq1=ReCrEPhviC%D| zLhjKg{ansJCJ3>YCzEBH5OM51dIPXs{|8;a{xKUNxqh2A74(v)B|`RNNe`5%Z(E;V zHUZ4XY}@8h#BJMt%r9TDGD;C^8=o=mqMQayjw45tsV0d8_e9Y{PtRnm57YMZjK*zC zdk73NYN{k~gT&Y<+2W78O82FE4dfl?OF4t@Ko#wJc9-jNnwB;19<3q&(~h#}UrqPfGi+TSeYx`TTb4c#zo*S)1uE#rsGCKsxd?yI$N@Z&ym8R5YjAS>s zVu0*Cel9lHcKCc}OJkIJ9U7XR+gES~%FLzAVT`~Y>f2De5Vsa7v56V?0M&uq#^)P(%)X*KxF8hEJQF&P9_x3X$DX&+q8 ziYKK04o*v3%R8hzqq<8= z9a}x*112;#pd|4>dmpq_guqv)m1WC2l$`(B(Gy2ceB$VdqbGjx^gwCb>?<`mE#)1` zw$vHv1B#UWkO#y&-erQpe@NM#rKPSqBjp{+((3S$E03P|#E~nHT#0)dx<+48H`|?- zJ85(Bak<)hhmQ>TX^b=4oAlvZF+%ZXw{!WgPNrw2BIydwe=U_ie`A?o^q7s<=-=rM|zNif>>5eBNf&Su-7+EDGcT-#2Hz!0>1{S0>0Pg64kQ$~BU8+bdnl|SJ3AEVE6w(l99(J&4e zr{c)O0$Rjb2$BZsv|*t>8MiaHPNR%MfSfE0F=Y1lriBB7fqoca4X*HZec9(A3ZX6pmeK063x2`gy_ zvN&>V4YXE;*ort%gc5@o#^pUUgFVADHjV3zy9@&+)8S;Ap9+(JP#rO;QH#eFHJ@OG zeS;xR84)zv8BM1#(BlQwR?#RqLPI`68(=C~{W)NlCUi)DIm1E7dhI6Z4y&2Z(+DaH!~v(}wA3>v3uY8BRC#f+Po5#o^m zc=e*<3aX*eT*&o7(K^sZHO#`wf-*y9h0V7p?xbl&$bXR#vE748}qd! z!2V!jP|Aljnr=~W?iY?<5i+q^4C`LSn^=c2%XBca5hxL02oN?M2V>XCNvR3boCO$M z1fX39zaJb20xAS0k6KqIPkSx=>-I_3Vazr)rW!W(F%-eBNNou|aS^@t;5uHaAV8Ek zng9VTI02+o&KCkB%(Ny5uwVqRQsV441_j0n=!9EuD~d(GFEBB;-7Wp@+1Sj(cqgNn zOSi5mQ+;Un5ozkFSv^j`b0!x zkYGRSU>FX0TfOL+jAw)KV5rWxpLy|Wc1 zWyW<0Ij%-Sp&iu9rUE!x3}ZFz2Q$NU{OnSVzEvTX#qMrYXh zcLg|`8)F=*7&6TcbhJ&ZmVlXkhyo`rBXqt3opS635%e7Zr)&{hYd#IU2>$Gx8$1oUHBTsI;7Ag@bja+gg@;u#jcT#rWkM zQiG%yPa{fnz3PAXCw@p0xQV4#FWWLM7Dse7#wd2(hClkFqVlyk@nwXj#{hsgH^I;DPO}=O2uc#DCm0 zS1rdeUte1Pk*HXR!tlvjy1zH8aV1@IRN+VVWtvV+GuUV`tR9*WEveaN+Cs~?1qi}Yt6D*C zzIHmP!1x+1rH#m<%)7qm2jBW2YA5!S(mGOrML_ zUeya1P8{_qww=g}V_8j4wokVfWzZgU&UUYAj^V1@YV+#O+0J0W#*3}f?UQL$#))fS z!??T$vWYEgBKN5cM$?CJe`m=yUr-0O|55rDs#w2a6w z>Sn1KrBR0lr`OiN;1<7=0ZW#g{}nRO#>UONFH<(TN&BNj3A|Fu7s z2N&qn3<*Gdy&&_qnL}{cB^lYmR-c2Bf=A2-yJ0qwhEc(3Z7HF1OZsBgr4dcz6+Z15 z>7FRo8-m`=ZpX?ljlZPDvk}kA>1^4h@u75XXG;k|VIYr>_@hQsN5ti_@@7HuHgZ6z zIi({NEyDBMhgixkMl3vf5u?DlPZdyZD>;Q^u$VSFgrx$*Q5@St@ZQY2w*5 zS>{!T*Lsfx#it%7MtH%8N<4UYc{*j-zeaL-#J4EwqMvJ3huV4Rdc#I| zfcs*`9$qX^8;C87Q|@9dwLKE^A!+Sv9CP^Ap^9+LW?C9V^<&*22-}`j(z&E_w3eUN z>J3V9aWh4@HUAys*8NpN>K)h`iAomN72N-c&EjTV@O(c42E{^kHCNbI&*iwo{7!6H z>4B0{4XagWV*|9A-0gL%m z547f+AzxTp9M?4Cz7od)h@+yim4NeTI6QQC$_M}XP7fa%4$(8!<^F;L;0#ws4O1%X zm{BvFR*J)r-ZZnLg~*N^M(Qmho?hgPx~<0Pcr;GOsCKTVu|nPAuu%TgqqVJD9rZ? zK|l$IT~6j_Sww~I!Qb3?&1*I`eT0Bg#>M~EOW(Ii7P=wutK z;N9xM>PFT9WK^m8?nOm0gF@lJ=7Zm}u~{l%5aiQGR>!%UpYs5`=Wfo8SC1S!_Lx#q zVBe?Ab{y9uAp9*u{Ql!Z#%tsz@MAg8bp(Md6c6G_U{H1DSqRQvkUg74hMKHYBh6wf zsD?-5p*Hi4vgfPc^C}&Q#zy{0dn~pNF9xV~U$~E2_F_gr3>y3}gz;~oB3SWk%ZN_x z+=Y)5LYy=PHH?732x@N>!;qt%9{>YE;gC+B!4PA6nh%D9Xnv$IOgGoT2cI2Sgf`5H zU>JvxUcq#Uv6ddqPbD#@VDrIQNnC{%Q1;tnyASYJ`C2VE->sSU(o!9^lVruQZBt4i z83_-fR6Dkv@M2VJ+cuRD(zK*>=IzxznJ9naUTVGnT%^GayYPJ0Bnx0p#OiCdnDBE^4r2vkULYn`5@)%2{Omp=UB8

3#sN8Pr!Qz=q~QxSnL9Tl)GOSlu|0b{v2Uk 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 literal 0 HcmV?d00001 diff --git a/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-v4compatibility.ttf b/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/fa-v4compatibility.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e9545ed579e6d86383c254713e8bd17356f72e6c GIT binary patch literal 10556 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 literal 0 HcmV?d00001 diff --git a/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/all.css b/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/all.css new file mode 100644 index 00000000..ab3fcbd3 --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/all.css @@ -0,0 +1,7831 @@ +/*! + * Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +.fa { + font-family: var(--fa-style-family, "Font Awesome 6 Free"); + font-weight: var(--fa-style, 900); } + +.fa, +.fas, +.fa-solid, +.far, +.fa-regular, +.fal, +.fa-light, +.fat, +.fa-thin, +.fad, +.fa-duotone, +.fab, +.fa-brands { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--fa-display, inline-block); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; } + +.fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; } + +.fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; } + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; } + +.fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; } + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: calc(var(--fa-li-width, 2em) * -1); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; } + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); } + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); } + +.fa-beat { + -webkit-animation-name: fa-beat; + animation-name: fa-beat; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-bounce { + -webkit-animation-name: fa-bounce; + animation-name: fa-bounce; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + +.fa-fade { + -webkit-animation-name: fa-fade; + animation-name: fa-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-beat-fade { + -webkit-animation-name: fa-beat-fade; + animation-name: fa-beat-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-flip { + -webkit-animation-name: fa-flip; + animation-name: fa-flip; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-shake { + -webkit-animation-name: fa-shake; + animation-name: fa-shake; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 2s); + animation-duration: var(--fa-animation-duration, 2s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin-reverse { + --fa-animation-direction: reverse; } + +.fa-pulse, +.fa-spin-pulse { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); + animation-timing-function: var(--fa-animation-timing, steps(8)); } + +@media (prefers-reduced-motion: reduce) { + .fa-beat, + .fa-bounce, + .fa-fade, + .fa-beat-fade, + .fa-flip, + .fa-pulse, + .fa-shake, + .fa-spin, + .fa-spin-pulse { + -webkit-animation-delay: -1ms; + animation-delay: -1ms; + -webkit-animation-duration: 1ms; + animation-duration: 1ms; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; } } + +@-webkit-keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@-webkit-keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@-webkit-keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@-webkit-keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@-webkit-keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@-webkit-keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +.fa-rotate-by { + -webkit-transform: rotate(var(--fa-rotate-angle, none)); + transform: rotate(var(--fa-rotate-angle, none)); } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--fa-stack-z-index, auto); } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: var(--fa-inverse, #fff); } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ +.fa-0::before { + content: "\30"; } + +.fa-1::before { + content: "\31"; } + +.fa-2::before { + content: "\32"; } + +.fa-3::before { + content: "\33"; } + +.fa-4::before { + content: "\34"; } + +.fa-5::before { + content: "\35"; } + +.fa-6::before { + content: "\36"; } + +.fa-7::before { + content: "\37"; } + +.fa-8::before { + content: "\38"; } + +.fa-9::before { + content: "\39"; } + +.fa-a::before { + content: "\41"; } + +.fa-address-book::before { + content: "\f2b9"; } + +.fa-contact-book::before { + content: "\f2b9"; } + +.fa-address-card::before { + content: "\f2bb"; } + +.fa-contact-card::before { + content: "\f2bb"; } + +.fa-vcard::before { + content: "\f2bb"; } + +.fa-align-center::before { + content: "\f037"; } + +.fa-align-justify::before { + content: "\f039"; } + +.fa-align-left::before { + content: "\f036"; } + +.fa-align-right::before { + content: "\f038"; } + +.fa-anchor::before { + content: "\f13d"; } + +.fa-anchor-circle-check::before { + content: "\e4aa"; } + +.fa-anchor-circle-exclamation::before { + content: "\e4ab"; } + +.fa-anchor-circle-xmark::before { + content: "\e4ac"; } + +.fa-anchor-lock::before { + content: "\e4ad"; } + +.fa-angle-down::before { + content: "\f107"; } + +.fa-angle-left::before { + content: "\f104"; } + +.fa-angle-right::before { + content: "\f105"; } + +.fa-angle-up::before { + content: "\f106"; } + +.fa-angles-down::before { + content: "\f103"; } + +.fa-angle-double-down::before { + content: "\f103"; } + +.fa-angles-left::before { + content: "\f100"; } + +.fa-angle-double-left::before { + content: "\f100"; } + +.fa-angles-right::before { + content: "\f101"; } + +.fa-angle-double-right::before { + content: "\f101"; } + +.fa-angles-up::before { + content: "\f102"; } + +.fa-angle-double-up::before { + content: "\f102"; } + +.fa-ankh::before { + content: "\f644"; } + +.fa-apple-whole::before { + content: "\f5d1"; } + +.fa-apple-alt::before { + content: "\f5d1"; } + +.fa-archway::before { + content: "\f557"; } + +.fa-arrow-down::before { + content: "\f063"; } + +.fa-arrow-down-1-9::before { + content: "\f162"; } + +.fa-sort-numeric-asc::before { + content: "\f162"; } + +.fa-sort-numeric-down::before { + content: "\f162"; } + +.fa-arrow-down-9-1::before { + content: "\f886"; } + +.fa-sort-numeric-desc::before { + content: "\f886"; } + +.fa-sort-numeric-down-alt::before { + content: "\f886"; } + +.fa-arrow-down-a-z::before { + content: "\f15d"; } + +.fa-sort-alpha-asc::before { + content: "\f15d"; } + +.fa-sort-alpha-down::before { + content: "\f15d"; } + +.fa-arrow-down-long::before { + content: "\f175"; } + +.fa-long-arrow-down::before { + content: "\f175"; } + +.fa-arrow-down-short-wide::before { + content: "\f884"; } + +.fa-sort-amount-desc::before { + content: "\f884"; } + +.fa-sort-amount-down-alt::before { + content: "\f884"; } + +.fa-arrow-down-up-across-line::before { + content: "\e4af"; } + +.fa-arrow-down-up-lock::before { + content: "\e4b0"; } + +.fa-arrow-down-wide-short::before { + content: "\f160"; } + +.fa-sort-amount-asc::before { + content: "\f160"; } + +.fa-sort-amount-down::before { + content: "\f160"; } + +.fa-arrow-down-z-a::before { + content: "\f881"; } + +.fa-sort-alpha-desc::before { + content: "\f881"; } + +.fa-sort-alpha-down-alt::before { + content: "\f881"; } + +.fa-arrow-left::before { + content: "\f060"; } + +.fa-arrow-left-long::before { + content: "\f177"; } + +.fa-long-arrow-left::before { + content: "\f177"; } + +.fa-arrow-pointer::before { + content: "\f245"; } + +.fa-mouse-pointer::before { + content: "\f245"; } + +.fa-arrow-right::before { + content: "\f061"; } + +.fa-arrow-right-arrow-left::before { + content: "\f0ec"; } + +.fa-exchange::before { + content: "\f0ec"; } + +.fa-arrow-right-from-bracket::before { + content: "\f08b"; } + +.fa-sign-out::before { + content: "\f08b"; } + +.fa-arrow-right-long::before { + content: "\f178"; } + +.fa-long-arrow-right::before { + content: "\f178"; } + +.fa-arrow-right-to-bracket::before { + content: "\f090"; } + +.fa-sign-in::before { + content: "\f090"; } + +.fa-arrow-right-to-city::before { + content: "\e4b3"; } + +.fa-arrow-rotate-left::before { + content: "\f0e2"; } + +.fa-arrow-left-rotate::before { + content: "\f0e2"; } + +.fa-arrow-rotate-back::before { + content: "\f0e2"; } + +.fa-arrow-rotate-backward::before { + content: "\f0e2"; } + +.fa-undo::before { + content: "\f0e2"; } + +.fa-arrow-rotate-right::before { + content: "\f01e"; } + +.fa-arrow-right-rotate::before { + content: "\f01e"; } + +.fa-arrow-rotate-forward::before { + content: "\f01e"; } + +.fa-redo::before { + content: "\f01e"; } + +.fa-arrow-trend-down::before { + content: "\e097"; } + +.fa-arrow-trend-up::before { + content: "\e098"; } + +.fa-arrow-turn-down::before { + content: "\f149"; } + +.fa-level-down::before { + content: "\f149"; } + +.fa-arrow-turn-up::before { + content: "\f148"; } + +.fa-level-up::before { + content: "\f148"; } + +.fa-arrow-up::before { + content: "\f062"; } + +.fa-arrow-up-1-9::before { + content: "\f163"; } + +.fa-sort-numeric-up::before { + content: "\f163"; } + +.fa-arrow-up-9-1::before { + content: "\f887"; } + +.fa-sort-numeric-up-alt::before { + content: "\f887"; } + +.fa-arrow-up-a-z::before { + content: "\f15e"; } + +.fa-sort-alpha-up::before { + content: "\f15e"; } + +.fa-arrow-up-from-bracket::before { + content: "\e09a"; } + +.fa-arrow-up-from-ground-water::before { + content: "\e4b5"; } + +.fa-arrow-up-from-water-pump::before { + content: "\e4b6"; } + +.fa-arrow-up-long::before { + content: "\f176"; } + +.fa-long-arrow-up::before { + content: "\f176"; } + +.fa-arrow-up-right-dots::before { + content: "\e4b7"; } + +.fa-arrow-up-right-from-square::before { + content: "\f08e"; } + +.fa-external-link::before { + content: "\f08e"; } + +.fa-arrow-up-short-wide::before { + content: "\f885"; } + +.fa-sort-amount-up-alt::before { + content: "\f885"; } + +.fa-arrow-up-wide-short::before { + content: "\f161"; } + +.fa-sort-amount-up::before { + content: "\f161"; } + +.fa-arrow-up-z-a::before { + content: "\f882"; } + +.fa-sort-alpha-up-alt::before { + content: "\f882"; } + +.fa-arrows-down-to-line::before { + content: "\e4b8"; } + +.fa-arrows-down-to-people::before { + content: "\e4b9"; } + +.fa-arrows-left-right::before { + content: "\f07e"; } + +.fa-arrows-h::before { + content: "\f07e"; } + +.fa-arrows-left-right-to-line::before { + content: "\e4ba"; } + +.fa-arrows-rotate::before { + content: "\f021"; } + +.fa-refresh::before { + content: "\f021"; } + +.fa-sync::before { + content: "\f021"; } + +.fa-arrows-spin::before { + content: "\e4bb"; } + +.fa-arrows-split-up-and-left::before { + content: "\e4bc"; } + +.fa-arrows-to-circle::before { + content: "\e4bd"; } + +.fa-arrows-to-dot::before { + content: "\e4be"; } + +.fa-arrows-to-eye::before { + content: "\e4bf"; } + +.fa-arrows-turn-right::before { + content: "\e4c0"; } + +.fa-arrows-turn-to-dots::before { + content: "\e4c1"; } + +.fa-arrows-up-down::before { + content: "\f07d"; } + +.fa-arrows-v::before { + content: "\f07d"; } + +.fa-arrows-up-down-left-right::before { + content: "\f047"; } + +.fa-arrows::before { + content: "\f047"; } + +.fa-arrows-up-to-line::before { + content: "\e4c2"; } + +.fa-asterisk::before { + content: "\2a"; } + +.fa-at::before { + content: "\40"; } + +.fa-atom::before { + content: "\f5d2"; } + +.fa-audio-description::before { + content: "\f29e"; } + +.fa-austral-sign::before { + content: "\e0a9"; } + +.fa-award::before { + content: "\f559"; } + +.fa-b::before { + content: "\42"; } + +.fa-baby::before { + content: "\f77c"; } + +.fa-baby-carriage::before { + content: "\f77d"; } + +.fa-carriage-baby::before { + content: "\f77d"; } + +.fa-backward::before { + content: "\f04a"; } + +.fa-backward-fast::before { + content: "\f049"; } + +.fa-fast-backward::before { + content: "\f049"; } + +.fa-backward-step::before { + content: "\f048"; } + +.fa-step-backward::before { + content: "\f048"; } + +.fa-bacon::before { + content: "\f7e5"; } + +.fa-bacteria::before { + content: "\e059"; } + +.fa-bacterium::before { + content: "\e05a"; } + +.fa-bag-shopping::before { + content: "\f290"; } + +.fa-shopping-bag::before { + content: "\f290"; } + +.fa-bahai::before { + content: "\f666"; } + +.fa-baht-sign::before { + content: "\e0ac"; } + +.fa-ban::before { + content: "\f05e"; } + +.fa-cancel::before { + content: "\f05e"; } + +.fa-ban-smoking::before { + content: "\f54d"; } + +.fa-smoking-ban::before { + content: "\f54d"; } + +.fa-bandage::before { + content: "\f462"; } + +.fa-band-aid::before { + content: "\f462"; } + +.fa-barcode::before { + content: "\f02a"; } + +.fa-bars::before { + content: "\f0c9"; } + +.fa-navicon::before { + content: "\f0c9"; } + +.fa-bars-progress::before { + content: "\f828"; } + +.fa-tasks-alt::before { + content: "\f828"; } + +.fa-bars-staggered::before { + content: "\f550"; } + +.fa-reorder::before { + content: "\f550"; } + +.fa-stream::before { + content: "\f550"; } + +.fa-baseball::before { + content: "\f433"; } + +.fa-baseball-ball::before { + content: "\f433"; } + +.fa-baseball-bat-ball::before { + content: "\f432"; } + +.fa-basket-shopping::before { + content: "\f291"; } + +.fa-shopping-basket::before { + content: "\f291"; } + +.fa-basketball::before { + content: "\f434"; } + +.fa-basketball-ball::before { + content: "\f434"; } + +.fa-bath::before { + content: "\f2cd"; } + +.fa-bathtub::before { + content: "\f2cd"; } + +.fa-battery-empty::before { + content: "\f244"; } + +.fa-battery-0::before { + content: "\f244"; } + +.fa-battery-full::before { + content: "\f240"; } + +.fa-battery::before { + content: "\f240"; } + +.fa-battery-5::before { + content: "\f240"; } + +.fa-battery-half::before { + content: "\f242"; } + +.fa-battery-3::before { + content: "\f242"; } + +.fa-battery-quarter::before { + content: "\f243"; } + +.fa-battery-2::before { + content: "\f243"; } + +.fa-battery-three-quarters::before { + content: "\f241"; } + +.fa-battery-4::before { + content: "\f241"; } + +.fa-bed::before { + content: "\f236"; } + +.fa-bed-pulse::before { + content: "\f487"; } + +.fa-procedures::before { + content: "\f487"; } + +.fa-beer-mug-empty::before { + content: "\f0fc"; } + +.fa-beer::before { + content: "\f0fc"; } + +.fa-bell::before { + content: "\f0f3"; } + +.fa-bell-concierge::before { + content: "\f562"; } + +.fa-concierge-bell::before { + content: "\f562"; } + +.fa-bell-slash::before { + content: "\f1f6"; } + +.fa-bezier-curve::before { + content: "\f55b"; } + +.fa-bicycle::before { + content: "\f206"; } + +.fa-binoculars::before { + content: "\f1e5"; } + +.fa-biohazard::before { + content: "\f780"; } + +.fa-bitcoin-sign::before { + content: "\e0b4"; } + +.fa-blender::before { + content: "\f517"; } + +.fa-blender-phone::before { + content: "\f6b6"; } + +.fa-blog::before { + content: "\f781"; } + +.fa-bold::before { + content: "\f032"; } + +.fa-bolt::before { + content: "\f0e7"; } + +.fa-zap::before { + content: "\f0e7"; } + +.fa-bolt-lightning::before { + content: "\e0b7"; } + +.fa-bomb::before { + content: "\f1e2"; } + +.fa-bone::before { + content: "\f5d7"; } + +.fa-bong::before { + content: "\f55c"; } + +.fa-book::before { + content: "\f02d"; } + +.fa-book-atlas::before { + content: "\f558"; } + +.fa-atlas::before { + content: "\f558"; } + +.fa-book-bible::before { + content: "\f647"; } + +.fa-bible::before { + content: "\f647"; } + +.fa-book-bookmark::before { + content: "\e0bb"; } + +.fa-book-journal-whills::before { + content: "\f66a"; } + +.fa-journal-whills::before { + content: "\f66a"; } + +.fa-book-medical::before { + content: "\f7e6"; } + +.fa-book-open::before { + content: "\f518"; } + +.fa-book-open-reader::before { + content: "\f5da"; } + +.fa-book-reader::before { + content: "\f5da"; } + +.fa-book-quran::before { + content: "\f687"; } + +.fa-quran::before { + content: "\f687"; } + +.fa-book-skull::before { + content: "\f6b7"; } + +.fa-book-dead::before { + content: "\f6b7"; } + +.fa-bookmark::before { + content: "\f02e"; } + +.fa-border-all::before { + content: "\f84c"; } + +.fa-border-none::before { + content: "\f850"; } + +.fa-border-top-left::before { + content: "\f853"; } + +.fa-border-style::before { + content: "\f853"; } + +.fa-bore-hole::before { + content: "\e4c3"; } + +.fa-bottle-droplet::before { + content: "\e4c4"; } + +.fa-bottle-water::before { + content: "\e4c5"; } + +.fa-bowl-food::before { + content: "\e4c6"; } + +.fa-bowl-rice::before { + content: "\e2eb"; } + +.fa-bowling-ball::before { + content: "\f436"; } + +.fa-box::before { + content: "\f466"; } + +.fa-box-archive::before { + content: "\f187"; } + +.fa-archive::before { + content: "\f187"; } + +.fa-box-open::before { + content: "\f49e"; } + +.fa-box-tissue::before { + content: "\e05b"; } + +.fa-boxes-packing::before { + content: "\e4c7"; } + +.fa-boxes-stacked::before { + content: "\f468"; } + +.fa-boxes::before { + content: "\f468"; } + +.fa-boxes-alt::before { + content: "\f468"; } + +.fa-braille::before { + content: "\f2a1"; } + +.fa-brain::before { + content: "\f5dc"; } + +.fa-brazilian-real-sign::before { + content: "\e46c"; } + +.fa-bread-slice::before { + content: "\f7ec"; } + +.fa-bridge::before { + content: "\e4c8"; } + +.fa-bridge-circle-check::before { + content: "\e4c9"; } + +.fa-bridge-circle-exclamation::before { + content: "\e4ca"; } + +.fa-bridge-circle-xmark::before { + content: "\e4cb"; } + +.fa-bridge-lock::before { + content: "\e4cc"; } + +.fa-bridge-water::before { + content: "\e4ce"; } + +.fa-briefcase::before { + content: "\f0b1"; } + +.fa-briefcase-medical::before { + content: "\f469"; } + +.fa-broom::before { + content: "\f51a"; } + +.fa-broom-ball::before { + content: "\f458"; } + +.fa-quidditch::before { + content: "\f458"; } + +.fa-quidditch-broom-ball::before { + content: "\f458"; } + +.fa-brush::before { + content: "\f55d"; } + +.fa-bucket::before { + content: "\e4cf"; } + +.fa-bug::before { + content: "\f188"; } + +.fa-bug-slash::before { + content: "\e490"; } + +.fa-bugs::before { + content: "\e4d0"; } + +.fa-building::before { + content: "\f1ad"; } + +.fa-building-circle-arrow-right::before { + content: "\e4d1"; } + +.fa-building-circle-check::before { + content: "\e4d2"; } + +.fa-building-circle-exclamation::before { + content: "\e4d3"; } + +.fa-building-circle-xmark::before { + content: "\e4d4"; } + +.fa-building-columns::before { + content: "\f19c"; } + +.fa-bank::before { + content: "\f19c"; } + +.fa-institution::before { + content: "\f19c"; } + +.fa-museum::before { + content: "\f19c"; } + +.fa-university::before { + content: "\f19c"; } + +.fa-building-flag::before { + content: "\e4d5"; } + +.fa-building-lock::before { + content: "\e4d6"; } + +.fa-building-ngo::before { + content: "\e4d7"; } + +.fa-building-shield::before { + content: "\e4d8"; } + +.fa-building-un::before { + content: "\e4d9"; } + +.fa-building-user::before { + content: "\e4da"; } + +.fa-building-wheat::before { + content: "\e4db"; } + +.fa-bullhorn::before { + content: "\f0a1"; } + +.fa-bullseye::before { + content: "\f140"; } + +.fa-burger::before { + content: "\f805"; } + +.fa-hamburger::before { + content: "\f805"; } + +.fa-burst::before { + content: "\e4dc"; } + +.fa-bus::before { + content: "\f207"; } + +.fa-bus-simple::before { + content: "\f55e"; } + +.fa-bus-alt::before { + content: "\f55e"; } + +.fa-business-time::before { + content: "\f64a"; } + +.fa-briefcase-clock::before { + content: "\f64a"; } + +.fa-c::before { + content: "\43"; } + +.fa-cake-candles::before { + content: "\f1fd"; } + +.fa-birthday-cake::before { + content: "\f1fd"; } + +.fa-cake::before { + content: "\f1fd"; } + +.fa-calculator::before { + content: "\f1ec"; } + +.fa-calendar::before { + content: "\f133"; } + +.fa-calendar-check::before { + content: "\f274"; } + +.fa-calendar-day::before { + content: "\f783"; } + +.fa-calendar-days::before { + content: "\f073"; } + +.fa-calendar-alt::before { + content: "\f073"; } + +.fa-calendar-minus::before { + content: "\f272"; } + +.fa-calendar-plus::before { + content: "\f271"; } + +.fa-calendar-week::before { + content: "\f784"; } + +.fa-calendar-xmark::before { + content: "\f273"; } + +.fa-calendar-times::before { + content: "\f273"; } + +.fa-camera::before { + content: "\f030"; } + +.fa-camera-alt::before { + content: "\f030"; } + +.fa-camera-retro::before { + content: "\f083"; } + +.fa-camera-rotate::before { + content: "\e0d8"; } + +.fa-campground::before { + content: "\f6bb"; } + +.fa-candy-cane::before { + content: "\f786"; } + +.fa-cannabis::before { + content: "\f55f"; } + +.fa-capsules::before { + content: "\f46b"; } + +.fa-car::before { + content: "\f1b9"; } + +.fa-automobile::before { + content: "\f1b9"; } + +.fa-car-battery::before { + content: "\f5df"; } + +.fa-battery-car::before { + content: "\f5df"; } + +.fa-car-burst::before { + content: "\f5e1"; } + +.fa-car-crash::before { + content: "\f5e1"; } + +.fa-car-on::before { + content: "\e4dd"; } + +.fa-car-rear::before { + content: "\f5de"; } + +.fa-car-alt::before { + content: "\f5de"; } + +.fa-car-side::before { + content: "\f5e4"; } + +.fa-car-tunnel::before { + content: "\e4de"; } + +.fa-caravan::before { + content: "\f8ff"; } + +.fa-caret-down::before { + content: "\f0d7"; } + +.fa-caret-left::before { + content: "\f0d9"; } + +.fa-caret-right::before { + content: "\f0da"; } + +.fa-caret-up::before { + content: "\f0d8"; } + +.fa-carrot::before { + content: "\f787"; } + +.fa-cart-arrow-down::before { + content: "\f218"; } + +.fa-cart-flatbed::before { + content: "\f474"; } + +.fa-dolly-flatbed::before { + content: "\f474"; } + +.fa-cart-flatbed-suitcase::before { + content: "\f59d"; } + +.fa-luggage-cart::before { + content: "\f59d"; } + +.fa-cart-plus::before { + content: "\f217"; } + +.fa-cart-shopping::before { + content: "\f07a"; } + +.fa-shopping-cart::before { + content: "\f07a"; } + +.fa-cash-register::before { + content: "\f788"; } + +.fa-cat::before { + content: "\f6be"; } + +.fa-cedi-sign::before { + content: "\e0df"; } + +.fa-cent-sign::before { + content: "\e3f5"; } + +.fa-certificate::before { + content: "\f0a3"; } + +.fa-chair::before { + content: "\f6c0"; } + +.fa-chalkboard::before { + content: "\f51b"; } + +.fa-blackboard::before { + content: "\f51b"; } + +.fa-chalkboard-user::before { + content: "\f51c"; } + +.fa-chalkboard-teacher::before { + content: "\f51c"; } + +.fa-champagne-glasses::before { + content: "\f79f"; } + +.fa-glass-cheers::before { + content: "\f79f"; } + +.fa-charging-station::before { + content: "\f5e7"; } + +.fa-chart-area::before { + content: "\f1fe"; } + +.fa-area-chart::before { + content: "\f1fe"; } + +.fa-chart-bar::before { + content: "\f080"; } + +.fa-bar-chart::before { + content: "\f080"; } + +.fa-chart-column::before { + content: "\e0e3"; } + +.fa-chart-gantt::before { + content: "\e0e4"; } + +.fa-chart-line::before { + content: "\f201"; } + +.fa-line-chart::before { + content: "\f201"; } + +.fa-chart-pie::before { + content: "\f200"; } + +.fa-pie-chart::before { + content: "\f200"; } + +.fa-chart-simple::before { + content: "\e473"; } + +.fa-check::before { + content: "\f00c"; } + +.fa-check-double::before { + content: "\f560"; } + +.fa-check-to-slot::before { + content: "\f772"; } + +.fa-vote-yea::before { + content: "\f772"; } + +.fa-cheese::before { + content: "\f7ef"; } + +.fa-chess::before { + content: "\f439"; } + +.fa-chess-bishop::before { + content: "\f43a"; } + +.fa-chess-board::before { + content: "\f43c"; } + +.fa-chess-king::before { + content: "\f43f"; } + +.fa-chess-knight::before { + content: "\f441"; } + +.fa-chess-pawn::before { + content: "\f443"; } + +.fa-chess-queen::before { + content: "\f445"; } + +.fa-chess-rook::before { + content: "\f447"; } + +.fa-chevron-down::before { + content: "\f078"; } + +.fa-chevron-left::before { + content: "\f053"; } + +.fa-chevron-right::before { + content: "\f054"; } + +.fa-chevron-up::before { + content: "\f077"; } + +.fa-child::before { + content: "\f1ae"; } + +.fa-child-dress::before { + content: "\e59c"; } + +.fa-child-reaching::before { + content: "\e59d"; } + +.fa-child-rifle::before { + content: "\e4e0"; } + +.fa-children::before { + content: "\e4e1"; } + +.fa-church::before { + content: "\f51d"; } + +.fa-circle::before { + content: "\f111"; } + +.fa-circle-arrow-down::before { + content: "\f0ab"; } + +.fa-arrow-circle-down::before { + content: "\f0ab"; } + +.fa-circle-arrow-left::before { + content: "\f0a8"; } + +.fa-arrow-circle-left::before { + content: "\f0a8"; } + +.fa-circle-arrow-right::before { + content: "\f0a9"; } + +.fa-arrow-circle-right::before { + content: "\f0a9"; } + +.fa-circle-arrow-up::before { + content: "\f0aa"; } + +.fa-arrow-circle-up::before { + content: "\f0aa"; } + +.fa-circle-check::before { + content: "\f058"; } + +.fa-check-circle::before { + content: "\f058"; } + +.fa-circle-chevron-down::before { + content: "\f13a"; } + +.fa-chevron-circle-down::before { + content: "\f13a"; } + +.fa-circle-chevron-left::before { + content: "\f137"; } + +.fa-chevron-circle-left::before { + content: "\f137"; } + +.fa-circle-chevron-right::before { + content: "\f138"; } + +.fa-chevron-circle-right::before { + content: "\f138"; } + +.fa-circle-chevron-up::before { + content: "\f139"; } + +.fa-chevron-circle-up::before { + content: "\f139"; } + +.fa-circle-dollar-to-slot::before { + content: "\f4b9"; } + +.fa-donate::before { + content: "\f4b9"; } + +.fa-circle-dot::before { + content: "\f192"; } + +.fa-dot-circle::before { + content: "\f192"; } + +.fa-circle-down::before { + content: "\f358"; } + +.fa-arrow-alt-circle-down::before { + content: "\f358"; } + +.fa-circle-exclamation::before { + content: "\f06a"; } + +.fa-exclamation-circle::before { + content: "\f06a"; } + +.fa-circle-h::before { + content: "\f47e"; } + +.fa-hospital-symbol::before { + content: "\f47e"; } + +.fa-circle-half-stroke::before { + content: "\f042"; } + +.fa-adjust::before { + content: "\f042"; } + +.fa-circle-info::before { + content: "\f05a"; } + +.fa-info-circle::before { + content: "\f05a"; } + +.fa-circle-left::before { + content: "\f359"; } + +.fa-arrow-alt-circle-left::before { + content: "\f359"; } + +.fa-circle-minus::before { + content: "\f056"; } + +.fa-minus-circle::before { + content: "\f056"; } + +.fa-circle-nodes::before { + content: "\e4e2"; } + +.fa-circle-notch::before { + content: "\f1ce"; } + +.fa-circle-pause::before { + content: "\f28b"; } + +.fa-pause-circle::before { + content: "\f28b"; } + +.fa-circle-play::before { + content: "\f144"; } + +.fa-play-circle::before { + content: "\f144"; } + +.fa-circle-plus::before { + content: "\f055"; } + +.fa-plus-circle::before { + content: "\f055"; } + +.fa-circle-question::before { + content: "\f059"; } + +.fa-question-circle::before { + content: "\f059"; } + +.fa-circle-radiation::before { + content: "\f7ba"; } + +.fa-radiation-alt::before { + content: "\f7ba"; } + +.fa-circle-right::before { + content: "\f35a"; } + +.fa-arrow-alt-circle-right::before { + content: "\f35a"; } + +.fa-circle-stop::before { + content: "\f28d"; } + +.fa-stop-circle::before { + content: "\f28d"; } + +.fa-circle-up::before { + content: "\f35b"; } + +.fa-arrow-alt-circle-up::before { + content: "\f35b"; } + +.fa-circle-user::before { + content: "\f2bd"; } + +.fa-user-circle::before { + content: "\f2bd"; } + +.fa-circle-xmark::before { + content: "\f057"; } + +.fa-times-circle::before { + content: "\f057"; } + +.fa-xmark-circle::before { + content: "\f057"; } + +.fa-city::before { + content: "\f64f"; } + +.fa-clapperboard::before { + content: "\e131"; } + +.fa-clipboard::before { + content: "\f328"; } + +.fa-clipboard-check::before { + content: "\f46c"; } + +.fa-clipboard-list::before { + content: "\f46d"; } + +.fa-clipboard-question::before { + content: "\e4e3"; } + +.fa-clipboard-user::before { + content: "\f7f3"; } + +.fa-clock::before { + content: "\f017"; } + +.fa-clock-four::before { + content: "\f017"; } + +.fa-clock-rotate-left::before { + content: "\f1da"; } + +.fa-history::before { + content: "\f1da"; } + +.fa-clone::before { + content: "\f24d"; } + +.fa-closed-captioning::before { + content: "\f20a"; } + +.fa-cloud::before { + content: "\f0c2"; } + +.fa-cloud-arrow-down::before { + content: "\f0ed"; } + +.fa-cloud-download::before { + content: "\f0ed"; } + +.fa-cloud-download-alt::before { + content: "\f0ed"; } + +.fa-cloud-arrow-up::before { + content: "\f0ee"; } + +.fa-cloud-upload::before { + content: "\f0ee"; } + +.fa-cloud-upload-alt::before { + content: "\f0ee"; } + +.fa-cloud-bolt::before { + content: "\f76c"; } + +.fa-thunderstorm::before { + content: "\f76c"; } + +.fa-cloud-meatball::before { + content: "\f73b"; } + +.fa-cloud-moon::before { + content: "\f6c3"; } + +.fa-cloud-moon-rain::before { + content: "\f73c"; } + +.fa-cloud-rain::before { + content: "\f73d"; } + +.fa-cloud-showers-heavy::before { + content: "\f740"; } + +.fa-cloud-showers-water::before { + content: "\e4e4"; } + +.fa-cloud-sun::before { + content: "\f6c4"; } + +.fa-cloud-sun-rain::before { + content: "\f743"; } + +.fa-clover::before { + content: "\e139"; } + +.fa-code::before { + content: "\f121"; } + +.fa-code-branch::before { + content: "\f126"; } + +.fa-code-commit::before { + content: "\f386"; } + +.fa-code-compare::before { + content: "\e13a"; } + +.fa-code-fork::before { + content: "\e13b"; } + +.fa-code-merge::before { + content: "\f387"; } + +.fa-code-pull-request::before { + content: "\e13c"; } + +.fa-coins::before { + content: "\f51e"; } + +.fa-colon-sign::before { + content: "\e140"; } + +.fa-comment::before { + content: "\f075"; } + +.fa-comment-dollar::before { + content: "\f651"; } + +.fa-comment-dots::before { + content: "\f4ad"; } + +.fa-commenting::before { + content: "\f4ad"; } + +.fa-comment-medical::before { + content: "\f7f5"; } + +.fa-comment-slash::before { + content: "\f4b3"; } + +.fa-comment-sms::before { + content: "\f7cd"; } + +.fa-sms::before { + content: "\f7cd"; } + +.fa-comments::before { + content: "\f086"; } + +.fa-comments-dollar::before { + content: "\f653"; } + +.fa-compact-disc::before { + content: "\f51f"; } + +.fa-compass::before { + content: "\f14e"; } + +.fa-compass-drafting::before { + content: "\f568"; } + +.fa-drafting-compass::before { + content: "\f568"; } + +.fa-compress::before { + content: "\f066"; } + +.fa-computer::before { + content: "\e4e5"; } + +.fa-computer-mouse::before { + content: "\f8cc"; } + +.fa-mouse::before { + content: "\f8cc"; } + +.fa-cookie::before { + content: "\f563"; } + +.fa-cookie-bite::before { + content: "\f564"; } + +.fa-copy::before { + content: "\f0c5"; } + +.fa-copyright::before { + content: "\f1f9"; } + +.fa-couch::before { + content: "\f4b8"; } + +.fa-cow::before { + content: "\f6c8"; } + +.fa-credit-card::before { + content: "\f09d"; } + +.fa-credit-card-alt::before { + content: "\f09d"; } + +.fa-crop::before { + content: "\f125"; } + +.fa-crop-simple::before { + content: "\f565"; } + +.fa-crop-alt::before { + content: "\f565"; } + +.fa-cross::before { + content: "\f654"; } + +.fa-crosshairs::before { + content: "\f05b"; } + +.fa-crow::before { + content: "\f520"; } + +.fa-crown::before { + content: "\f521"; } + +.fa-crutch::before { + content: "\f7f7"; } + +.fa-cruzeiro-sign::before { + content: "\e152"; } + +.fa-cube::before { + content: "\f1b2"; } + +.fa-cubes::before { + content: "\f1b3"; } + +.fa-cubes-stacked::before { + content: "\e4e6"; } + +.fa-d::before { + content: "\44"; } + +.fa-database::before { + content: "\f1c0"; } + +.fa-delete-left::before { + content: "\f55a"; } + +.fa-backspace::before { + content: "\f55a"; } + +.fa-democrat::before { + content: "\f747"; } + +.fa-desktop::before { + content: "\f390"; } + +.fa-desktop-alt::before { + content: "\f390"; } + +.fa-dharmachakra::before { + content: "\f655"; } + +.fa-diagram-next::before { + content: "\e476"; } + +.fa-diagram-predecessor::before { + content: "\e477"; } + +.fa-diagram-project::before { + content: "\f542"; } + +.fa-project-diagram::before { + content: "\f542"; } + +.fa-diagram-successor::before { + content: "\e47a"; } + +.fa-diamond::before { + content: "\f219"; } + +.fa-diamond-turn-right::before { + content: "\f5eb"; } + +.fa-directions::before { + content: "\f5eb"; } + +.fa-dice::before { + content: "\f522"; } + +.fa-dice-d20::before { + content: "\f6cf"; } + +.fa-dice-d6::before { + content: "\f6d1"; } + +.fa-dice-five::before { + content: "\f523"; } + +.fa-dice-four::before { + content: "\f524"; } + +.fa-dice-one::before { + content: "\f525"; } + +.fa-dice-six::before { + content: "\f526"; } + +.fa-dice-three::before { + content: "\f527"; } + +.fa-dice-two::before { + content: "\f528"; } + +.fa-disease::before { + content: "\f7fa"; } + +.fa-display::before { + content: "\e163"; } + +.fa-divide::before { + content: "\f529"; } + +.fa-dna::before { + content: "\f471"; } + +.fa-dog::before { + content: "\f6d3"; } + +.fa-dollar-sign::before { + content: "\24"; } + +.fa-dollar::before { + content: "\24"; } + +.fa-usd::before { + content: "\24"; } + +.fa-dolly::before { + content: "\f472"; } + +.fa-dolly-box::before { + content: "\f472"; } + +.fa-dong-sign::before { + content: "\e169"; } + +.fa-door-closed::before { + content: "\f52a"; } + +.fa-door-open::before { + content: "\f52b"; } + +.fa-dove::before { + content: "\f4ba"; } + +.fa-down-left-and-up-right-to-center::before { + content: "\f422"; } + +.fa-compress-alt::before { + content: "\f422"; } + +.fa-down-long::before { + content: "\f309"; } + +.fa-long-arrow-alt-down::before { + content: "\f309"; } + +.fa-download::before { + content: "\f019"; } + +.fa-dragon::before { + content: "\f6d5"; } + +.fa-draw-polygon::before { + content: "\f5ee"; } + +.fa-droplet::before { + content: "\f043"; } + +.fa-tint::before { + content: "\f043"; } + +.fa-droplet-slash::before { + content: "\f5c7"; } + +.fa-tint-slash::before { + content: "\f5c7"; } + +.fa-drum::before { + content: "\f569"; } + +.fa-drum-steelpan::before { + content: "\f56a"; } + +.fa-drumstick-bite::before { + content: "\f6d7"; } + +.fa-dumbbell::before { + content: "\f44b"; } + +.fa-dumpster::before { + content: "\f793"; } + +.fa-dumpster-fire::before { + content: "\f794"; } + +.fa-dungeon::before { + content: "\f6d9"; } + +.fa-e::before { + content: "\45"; } + +.fa-ear-deaf::before { + content: "\f2a4"; } + +.fa-deaf::before { + content: "\f2a4"; } + +.fa-deafness::before { + content: "\f2a4"; } + +.fa-hard-of-hearing::before { + content: "\f2a4"; } + +.fa-ear-listen::before { + content: "\f2a2"; } + +.fa-assistive-listening-systems::before { + content: "\f2a2"; } + +.fa-earth-africa::before { + content: "\f57c"; } + +.fa-globe-africa::before { + content: "\f57c"; } + +.fa-earth-americas::before { + content: "\f57d"; } + +.fa-earth::before { + content: "\f57d"; } + +.fa-earth-america::before { + content: "\f57d"; } + +.fa-globe-americas::before { + content: "\f57d"; } + +.fa-earth-asia::before { + content: "\f57e"; } + +.fa-globe-asia::before { + content: "\f57e"; } + +.fa-earth-europe::before { + content: "\f7a2"; } + +.fa-globe-europe::before { + content: "\f7a2"; } + +.fa-earth-oceania::before { + content: "\e47b"; } + +.fa-globe-oceania::before { + content: "\e47b"; } + +.fa-egg::before { + content: "\f7fb"; } + +.fa-eject::before { + content: "\f052"; } + +.fa-elevator::before { + content: "\e16d"; } + +.fa-ellipsis::before { + content: "\f141"; } + +.fa-ellipsis-h::before { + content: "\f141"; } + +.fa-ellipsis-vertical::before { + content: "\f142"; } + +.fa-ellipsis-v::before { + content: "\f142"; } + +.fa-envelope::before { + content: "\f0e0"; } + +.fa-envelope-circle-check::before { + content: "\e4e8"; } + +.fa-envelope-open::before { + content: "\f2b6"; } + +.fa-envelope-open-text::before { + content: "\f658"; } + +.fa-envelopes-bulk::before { + content: "\f674"; } + +.fa-mail-bulk::before { + content: "\f674"; } + +.fa-equals::before { + content: "\3d"; } + +.fa-eraser::before { + content: "\f12d"; } + +.fa-ethernet::before { + content: "\f796"; } + +.fa-euro-sign::before { + content: "\f153"; } + +.fa-eur::before { + content: "\f153"; } + +.fa-euro::before { + content: "\f153"; } + +.fa-exclamation::before { + content: "\21"; } + +.fa-expand::before { + content: "\f065"; } + +.fa-explosion::before { + content: "\e4e9"; } + +.fa-eye::before { + content: "\f06e"; } + +.fa-eye-dropper::before { + content: "\f1fb"; } + +.fa-eye-dropper-empty::before { + content: "\f1fb"; } + +.fa-eyedropper::before { + content: "\f1fb"; } + +.fa-eye-low-vision::before { + content: "\f2a8"; } + +.fa-low-vision::before { + content: "\f2a8"; } + +.fa-eye-slash::before { + content: "\f070"; } + +.fa-f::before { + content: "\46"; } + +.fa-face-angry::before { + content: "\f556"; } + +.fa-angry::before { + content: "\f556"; } + +.fa-face-dizzy::before { + content: "\f567"; } + +.fa-dizzy::before { + content: "\f567"; } + +.fa-face-flushed::before { + content: "\f579"; } + +.fa-flushed::before { + content: "\f579"; } + +.fa-face-frown::before { + content: "\f119"; } + +.fa-frown::before { + content: "\f119"; } + +.fa-face-frown-open::before { + content: "\f57a"; } + +.fa-frown-open::before { + content: "\f57a"; } + +.fa-face-grimace::before { + content: "\f57f"; } + +.fa-grimace::before { + content: "\f57f"; } + +.fa-face-grin::before { + content: "\f580"; } + +.fa-grin::before { + content: "\f580"; } + +.fa-face-grin-beam::before { + content: "\f582"; } + +.fa-grin-beam::before { + content: "\f582"; } + +.fa-face-grin-beam-sweat::before { + content: "\f583"; } + +.fa-grin-beam-sweat::before { + content: "\f583"; } + +.fa-face-grin-hearts::before { + content: "\f584"; } + +.fa-grin-hearts::before { + content: "\f584"; } + +.fa-face-grin-squint::before { + content: "\f585"; } + +.fa-grin-squint::before { + content: "\f585"; } + +.fa-face-grin-squint-tears::before { + content: "\f586"; } + +.fa-grin-squint-tears::before { + content: "\f586"; } + +.fa-face-grin-stars::before { + content: "\f587"; } + +.fa-grin-stars::before { + content: "\f587"; } + +.fa-face-grin-tears::before { + content: "\f588"; } + +.fa-grin-tears::before { + content: "\f588"; } + +.fa-face-grin-tongue::before { + content: "\f589"; } + +.fa-grin-tongue::before { + content: "\f589"; } + +.fa-face-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-face-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-face-grin-wide::before { + content: "\f581"; } + +.fa-grin-alt::before { + content: "\f581"; } + +.fa-face-grin-wink::before { + content: "\f58c"; } + +.fa-grin-wink::before { + content: "\f58c"; } + +.fa-face-kiss::before { + content: "\f596"; } + +.fa-kiss::before { + content: "\f596"; } + +.fa-face-kiss-beam::before { + content: "\f597"; } + +.fa-kiss-beam::before { + content: "\f597"; } + +.fa-face-kiss-wink-heart::before { + content: "\f598"; } + +.fa-kiss-wink-heart::before { + content: "\f598"; } + +.fa-face-laugh::before { + content: "\f599"; } + +.fa-laugh::before { + content: "\f599"; } + +.fa-face-laugh-beam::before { + content: "\f59a"; } + +.fa-laugh-beam::before { + content: "\f59a"; } + +.fa-face-laugh-squint::before { + content: "\f59b"; } + +.fa-laugh-squint::before { + content: "\f59b"; } + +.fa-face-laugh-wink::before { + content: "\f59c"; } + +.fa-laugh-wink::before { + content: "\f59c"; } + +.fa-face-meh::before { + content: "\f11a"; } + +.fa-meh::before { + content: "\f11a"; } + +.fa-face-meh-blank::before { + content: "\f5a4"; } + +.fa-meh-blank::before { + content: "\f5a4"; } + +.fa-face-rolling-eyes::before { + content: "\f5a5"; } + +.fa-meh-rolling-eyes::before { + content: "\f5a5"; } + +.fa-face-sad-cry::before { + content: "\f5b3"; } + +.fa-sad-cry::before { + content: "\f5b3"; } + +.fa-face-sad-tear::before { + content: "\f5b4"; } + +.fa-sad-tear::before { + content: "\f5b4"; } + +.fa-face-smile::before { + content: "\f118"; } + +.fa-smile::before { + content: "\f118"; } + +.fa-face-smile-beam::before { + content: "\f5b8"; } + +.fa-smile-beam::before { + content: "\f5b8"; } + +.fa-face-smile-wink::before { + content: "\f4da"; } + +.fa-smile-wink::before { + content: "\f4da"; } + +.fa-face-surprise::before { + content: "\f5c2"; } + +.fa-surprise::before { + content: "\f5c2"; } + +.fa-face-tired::before { + content: "\f5c8"; } + +.fa-tired::before { + content: "\f5c8"; } + +.fa-fan::before { + content: "\f863"; } + +.fa-faucet::before { + content: "\e005"; } + +.fa-faucet-drip::before { + content: "\e006"; } + +.fa-fax::before { + content: "\f1ac"; } + +.fa-feather::before { + content: "\f52d"; } + +.fa-feather-pointed::before { + content: "\f56b"; } + +.fa-feather-alt::before { + content: "\f56b"; } + +.fa-ferry::before { + content: "\e4ea"; } + +.fa-file::before { + content: "\f15b"; } + +.fa-file-arrow-down::before { + content: "\f56d"; } + +.fa-file-download::before { + content: "\f56d"; } + +.fa-file-arrow-up::before { + content: "\f574"; } + +.fa-file-upload::before { + content: "\f574"; } + +.fa-file-audio::before { + content: "\f1c7"; } + +.fa-file-circle-check::before { + content: "\e493"; } + +.fa-file-circle-exclamation::before { + content: "\e4eb"; } + +.fa-file-circle-minus::before { + content: "\e4ed"; } + +.fa-file-circle-plus::before { + content: "\e4ee"; } + +.fa-file-circle-question::before { + content: "\e4ef"; } + +.fa-file-circle-xmark::before { + content: "\e494"; } + +.fa-file-code::before { + content: "\f1c9"; } + +.fa-file-contract::before { + content: "\f56c"; } + +.fa-file-csv::before { + content: "\f6dd"; } + +.fa-file-excel::before { + content: "\f1c3"; } + +.fa-file-export::before { + content: "\f56e"; } + +.fa-arrow-right-from-file::before { + content: "\f56e"; } + +.fa-file-image::before { + content: "\f1c5"; } + +.fa-file-import::before { + content: "\f56f"; } + +.fa-arrow-right-to-file::before { + content: "\f56f"; } + +.fa-file-invoice::before { + content: "\f570"; } + +.fa-file-invoice-dollar::before { + content: "\f571"; } + +.fa-file-lines::before { + content: "\f15c"; } + +.fa-file-alt::before { + content: "\f15c"; } + +.fa-file-text::before { + content: "\f15c"; } + +.fa-file-medical::before { + content: "\f477"; } + +.fa-file-pdf::before { + content: "\f1c1"; } + +.fa-file-pen::before { + content: "\f31c"; } + +.fa-file-edit::before { + content: "\f31c"; } + +.fa-file-powerpoint::before { + content: "\f1c4"; } + +.fa-file-prescription::before { + content: "\f572"; } + +.fa-file-shield::before { + content: "\e4f0"; } + +.fa-file-signature::before { + content: "\f573"; } + +.fa-file-video::before { + content: "\f1c8"; } + +.fa-file-waveform::before { + content: "\f478"; } + +.fa-file-medical-alt::before { + content: "\f478"; } + +.fa-file-word::before { + content: "\f1c2"; } + +.fa-file-zipper::before { + content: "\f1c6"; } + +.fa-file-archive::before { + content: "\f1c6"; } + +.fa-fill::before { + content: "\f575"; } + +.fa-fill-drip::before { + content: "\f576"; } + +.fa-film::before { + content: "\f008"; } + +.fa-filter::before { + content: "\f0b0"; } + +.fa-filter-circle-dollar::before { + content: "\f662"; } + +.fa-funnel-dollar::before { + content: "\f662"; } + +.fa-filter-circle-xmark::before { + content: "\e17b"; } + +.fa-fingerprint::before { + content: "\f577"; } + +.fa-fire::before { + content: "\f06d"; } + +.fa-fire-burner::before { + content: "\e4f1"; } + +.fa-fire-extinguisher::before { + content: "\f134"; } + +.fa-fire-flame-curved::before { + content: "\f7e4"; } + +.fa-fire-alt::before { + content: "\f7e4"; } + +.fa-fire-flame-simple::before { + content: "\f46a"; } + +.fa-burn::before { + content: "\f46a"; } + +.fa-fish::before { + content: "\f578"; } + +.fa-fish-fins::before { + content: "\e4f2"; } + +.fa-flag::before { + content: "\f024"; } + +.fa-flag-checkered::before { + content: "\f11e"; } + +.fa-flag-usa::before { + content: "\f74d"; } + +.fa-flask::before { + content: "\f0c3"; } + +.fa-flask-vial::before { + content: "\e4f3"; } + +.fa-floppy-disk::before { + content: "\f0c7"; } + +.fa-save::before { + content: "\f0c7"; } + +.fa-florin-sign::before { + content: "\e184"; } + +.fa-folder::before { + content: "\f07b"; } + +.fa-folder-blank::before { + content: "\f07b"; } + +.fa-folder-closed::before { + content: "\e185"; } + +.fa-folder-minus::before { + content: "\f65d"; } + +.fa-folder-open::before { + content: "\f07c"; } + +.fa-folder-plus::before { + content: "\f65e"; } + +.fa-folder-tree::before { + content: "\f802"; } + +.fa-font::before { + content: "\f031"; } + +.fa-football::before { + content: "\f44e"; } + +.fa-football-ball::before { + content: "\f44e"; } + +.fa-forward::before { + content: "\f04e"; } + +.fa-forward-fast::before { + content: "\f050"; } + +.fa-fast-forward::before { + content: "\f050"; } + +.fa-forward-step::before { + content: "\f051"; } + +.fa-step-forward::before { + content: "\f051"; } + +.fa-franc-sign::before { + content: "\e18f"; } + +.fa-frog::before { + content: "\f52e"; } + +.fa-futbol::before { + content: "\f1e3"; } + +.fa-futbol-ball::before { + content: "\f1e3"; } + +.fa-soccer-ball::before { + content: "\f1e3"; } + +.fa-g::before { + content: "\47"; } + +.fa-gamepad::before { + content: "\f11b"; } + +.fa-gas-pump::before { + content: "\f52f"; } + +.fa-gauge::before { + content: "\f624"; } + +.fa-dashboard::before { + content: "\f624"; } + +.fa-gauge-med::before { + content: "\f624"; } + +.fa-tachometer-alt-average::before { + content: "\f624"; } + +.fa-gauge-high::before { + content: "\f625"; } + +.fa-tachometer-alt::before { + content: "\f625"; } + +.fa-tachometer-alt-fast::before { + content: "\f625"; } + +.fa-gauge-simple::before { + content: "\f629"; } + +.fa-gauge-simple-med::before { + content: "\f629"; } + +.fa-tachometer-average::before { + content: "\f629"; } + +.fa-gauge-simple-high::before { + content: "\f62a"; } + +.fa-tachometer::before { + content: "\f62a"; } + +.fa-tachometer-fast::before { + content: "\f62a"; } + +.fa-gavel::before { + content: "\f0e3"; } + +.fa-legal::before { + content: "\f0e3"; } + +.fa-gear::before { + content: "\f013"; } + +.fa-cog::before { + content: "\f013"; } + +.fa-gears::before { + content: "\f085"; } + +.fa-cogs::before { + content: "\f085"; } + +.fa-gem::before { + content: "\f3a5"; } + +.fa-genderless::before { + content: "\f22d"; } + +.fa-ghost::before { + content: "\f6e2"; } + +.fa-gift::before { + content: "\f06b"; } + +.fa-gifts::before { + content: "\f79c"; } + +.fa-glass-water::before { + content: "\e4f4"; } + +.fa-glass-water-droplet::before { + content: "\e4f5"; } + +.fa-glasses::before { + content: "\f530"; } + +.fa-globe::before { + content: "\f0ac"; } + +.fa-golf-ball-tee::before { + content: "\f450"; } + +.fa-golf-ball::before { + content: "\f450"; } + +.fa-gopuram::before { + content: "\f664"; } + +.fa-graduation-cap::before { + content: "\f19d"; } + +.fa-mortar-board::before { + content: "\f19d"; } + +.fa-greater-than::before { + content: "\3e"; } + +.fa-greater-than-equal::before { + content: "\f532"; } + +.fa-grip::before { + content: "\f58d"; } + +.fa-grip-horizontal::before { + content: "\f58d"; } + +.fa-grip-lines::before { + content: "\f7a4"; } + +.fa-grip-lines-vertical::before { + content: "\f7a5"; } + +.fa-grip-vertical::before { + content: "\f58e"; } + +.fa-group-arrows-rotate::before { + content: "\e4f6"; } + +.fa-guarani-sign::before { + content: "\e19a"; } + +.fa-guitar::before { + content: "\f7a6"; } + +.fa-gun::before { + content: "\e19b"; } + +.fa-h::before { + content: "\48"; } + +.fa-hammer::before { + content: "\f6e3"; } + +.fa-hamsa::before { + content: "\f665"; } + +.fa-hand::before { + content: "\f256"; } + +.fa-hand-paper::before { + content: "\f256"; } + +.fa-hand-back-fist::before { + content: "\f255"; } + +.fa-hand-rock::before { + content: "\f255"; } + +.fa-hand-dots::before { + content: "\f461"; } + +.fa-allergies::before { + content: "\f461"; } + +.fa-hand-fist::before { + content: "\f6de"; } + +.fa-fist-raised::before { + content: "\f6de"; } + +.fa-hand-holding::before { + content: "\f4bd"; } + +.fa-hand-holding-dollar::before { + content: "\f4c0"; } + +.fa-hand-holding-usd::before { + content: "\f4c0"; } + +.fa-hand-holding-droplet::before { + content: "\f4c1"; } + +.fa-hand-holding-water::before { + content: "\f4c1"; } + +.fa-hand-holding-hand::before { + content: "\e4f7"; } + +.fa-hand-holding-heart::before { + content: "\f4be"; } + +.fa-hand-holding-medical::before { + content: "\e05c"; } + +.fa-hand-lizard::before { + content: "\f258"; } + +.fa-hand-middle-finger::before { + content: "\f806"; } + +.fa-hand-peace::before { + content: "\f25b"; } + +.fa-hand-point-down::before { + content: "\f0a7"; } + +.fa-hand-point-left::before { + content: "\f0a5"; } + +.fa-hand-point-right::before { + content: "\f0a4"; } + +.fa-hand-point-up::before { + content: "\f0a6"; } + +.fa-hand-pointer::before { + content: "\f25a"; } + +.fa-hand-scissors::before { + content: "\f257"; } + +.fa-hand-sparkles::before { + content: "\e05d"; } + +.fa-hand-spock::before { + content: "\f259"; } + +.fa-handcuffs::before { + content: "\e4f8"; } + +.fa-hands::before { + content: "\f2a7"; } + +.fa-sign-language::before { + content: "\f2a7"; } + +.fa-signing::before { + content: "\f2a7"; } + +.fa-hands-asl-interpreting::before { + content: "\f2a3"; } + +.fa-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-asl-interpreting::before { + content: "\f2a3"; } + +.fa-hands-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-hands-bound::before { + content: "\e4f9"; } + +.fa-hands-bubbles::before { + content: "\e05e"; } + +.fa-hands-wash::before { + content: "\e05e"; } + +.fa-hands-clapping::before { + content: "\e1a8"; } + +.fa-hands-holding::before { + content: "\f4c2"; } + +.fa-hands-holding-child::before { + content: "\e4fa"; } + +.fa-hands-holding-circle::before { + content: "\e4fb"; } + +.fa-hands-praying::before { + content: "\f684"; } + +.fa-praying-hands::before { + content: "\f684"; } + +.fa-handshake::before { + content: "\f2b5"; } + +.fa-handshake-angle::before { + content: "\f4c4"; } + +.fa-hands-helping::before { + content: "\f4c4"; } + +.fa-handshake-simple::before { + content: "\f4c6"; } + +.fa-handshake-alt::before { + content: "\f4c6"; } + +.fa-handshake-simple-slash::before { + content: "\e05f"; } + +.fa-handshake-alt-slash::before { + content: "\e05f"; } + +.fa-handshake-slash::before { + content: "\e060"; } + +.fa-hanukiah::before { + content: "\f6e6"; } + +.fa-hard-drive::before { + content: "\f0a0"; } + +.fa-hdd::before { + content: "\f0a0"; } + +.fa-hashtag::before { + content: "\23"; } + +.fa-hat-cowboy::before { + content: "\f8c0"; } + +.fa-hat-cowboy-side::before { + content: "\f8c1"; } + +.fa-hat-wizard::before { + content: "\f6e8"; } + +.fa-head-side-cough::before { + content: "\e061"; } + +.fa-head-side-cough-slash::before { + content: "\e062"; } + +.fa-head-side-mask::before { + content: "\e063"; } + +.fa-head-side-virus::before { + content: "\e064"; } + +.fa-heading::before { + content: "\f1dc"; } + +.fa-header::before { + content: "\f1dc"; } + +.fa-headphones::before { + content: "\f025"; } + +.fa-headphones-simple::before { + content: "\f58f"; } + +.fa-headphones-alt::before { + content: "\f58f"; } + +.fa-headset::before { + content: "\f590"; } + +.fa-heart::before { + content: "\f004"; } + +.fa-heart-circle-bolt::before { + content: "\e4fc"; } + +.fa-heart-circle-check::before { + content: "\e4fd"; } + +.fa-heart-circle-exclamation::before { + content: "\e4fe"; } + +.fa-heart-circle-minus::before { + content: "\e4ff"; } + +.fa-heart-circle-plus::before { + content: "\e500"; } + +.fa-heart-circle-xmark::before { + content: "\e501"; } + +.fa-heart-crack::before { + content: "\f7a9"; } + +.fa-heart-broken::before { + content: "\f7a9"; } + +.fa-heart-pulse::before { + content: "\f21e"; } + +.fa-heartbeat::before { + content: "\f21e"; } + +.fa-helicopter::before { + content: "\f533"; } + +.fa-helicopter-symbol::before { + content: "\e502"; } + +.fa-helmet-safety::before { + content: "\f807"; } + +.fa-hard-hat::before { + content: "\f807"; } + +.fa-hat-hard::before { + content: "\f807"; } + +.fa-helmet-un::before { + content: "\e503"; } + +.fa-highlighter::before { + content: "\f591"; } + +.fa-hill-avalanche::before { + content: "\e507"; } + +.fa-hill-rockslide::before { + content: "\e508"; } + +.fa-hippo::before { + content: "\f6ed"; } + +.fa-hockey-puck::before { + content: "\f453"; } + +.fa-holly-berry::before { + content: "\f7aa"; } + +.fa-horse::before { + content: "\f6f0"; } + +.fa-horse-head::before { + content: "\f7ab"; } + +.fa-hospital::before { + content: "\f0f8"; } + +.fa-hospital-alt::before { + content: "\f0f8"; } + +.fa-hospital-wide::before { + content: "\f0f8"; } + +.fa-hospital-user::before { + content: "\f80d"; } + +.fa-hot-tub-person::before { + content: "\f593"; } + +.fa-hot-tub::before { + content: "\f593"; } + +.fa-hotdog::before { + content: "\f80f"; } + +.fa-hotel::before { + content: "\f594"; } + +.fa-hourglass::before { + content: "\f254"; } + +.fa-hourglass-2::before { + content: "\f254"; } + +.fa-hourglass-half::before { + content: "\f254"; } + +.fa-hourglass-empty::before { + content: "\f252"; } + +.fa-hourglass-end::before { + content: "\f253"; } + +.fa-hourglass-3::before { + content: "\f253"; } + +.fa-hourglass-start::before { + content: "\f251"; } + +.fa-hourglass-1::before { + content: "\f251"; } + +.fa-house::before { + content: "\f015"; } + +.fa-home::before { + content: "\f015"; } + +.fa-home-alt::before { + content: "\f015"; } + +.fa-home-lg-alt::before { + content: "\f015"; } + +.fa-house-chimney::before { + content: "\e3af"; } + +.fa-home-lg::before { + content: "\e3af"; } + +.fa-house-chimney-crack::before { + content: "\f6f1"; } + +.fa-house-damage::before { + content: "\f6f1"; } + +.fa-house-chimney-medical::before { + content: "\f7f2"; } + +.fa-clinic-medical::before { + content: "\f7f2"; } + +.fa-house-chimney-user::before { + content: "\e065"; } + +.fa-house-chimney-window::before { + content: "\e00d"; } + +.fa-house-circle-check::before { + content: "\e509"; } + +.fa-house-circle-exclamation::before { + content: "\e50a"; } + +.fa-house-circle-xmark::before { + content: "\e50b"; } + +.fa-house-crack::before { + content: "\e3b1"; } + +.fa-house-fire::before { + content: "\e50c"; } + +.fa-house-flag::before { + content: "\e50d"; } + +.fa-house-flood-water::before { + content: "\e50e"; } + +.fa-house-flood-water-circle-arrow-right::before { + content: "\e50f"; } + +.fa-house-laptop::before { + content: "\e066"; } + +.fa-laptop-house::before { + content: "\e066"; } + +.fa-house-lock::before { + content: "\e510"; } + +.fa-house-medical::before { + content: "\e3b2"; } + +.fa-house-medical-circle-check::before { + content: "\e511"; } + +.fa-house-medical-circle-exclamation::before { + content: "\e512"; } + +.fa-house-medical-circle-xmark::before { + content: "\e513"; } + +.fa-house-medical-flag::before { + content: "\e514"; } + +.fa-house-signal::before { + content: "\e012"; } + +.fa-house-tsunami::before { + content: "\e515"; } + +.fa-house-user::before { + content: "\e1b0"; } + +.fa-home-user::before { + content: "\e1b0"; } + +.fa-hryvnia-sign::before { + content: "\f6f2"; } + +.fa-hryvnia::before { + content: "\f6f2"; } + +.fa-hurricane::before { + content: "\f751"; } + +.fa-i::before { + content: "\49"; } + +.fa-i-cursor::before { + content: "\f246"; } + +.fa-ice-cream::before { + content: "\f810"; } + +.fa-icicles::before { + content: "\f7ad"; } + +.fa-icons::before { + content: "\f86d"; } + +.fa-heart-music-camera-bolt::before { + content: "\f86d"; } + +.fa-id-badge::before { + content: "\f2c1"; } + +.fa-id-card::before { + content: "\f2c2"; } + +.fa-drivers-license::before { + content: "\f2c2"; } + +.fa-id-card-clip::before { + content: "\f47f"; } + +.fa-id-card-alt::before { + content: "\f47f"; } + +.fa-igloo::before { + content: "\f7ae"; } + +.fa-image::before { + content: "\f03e"; } + +.fa-image-portrait::before { + content: "\f3e0"; } + +.fa-portrait::before { + content: "\f3e0"; } + +.fa-images::before { + content: "\f302"; } + +.fa-inbox::before { + content: "\f01c"; } + +.fa-indent::before { + content: "\f03c"; } + +.fa-indian-rupee-sign::before { + content: "\e1bc"; } + +.fa-indian-rupee::before { + content: "\e1bc"; } + +.fa-inr::before { + content: "\e1bc"; } + +.fa-industry::before { + content: "\f275"; } + +.fa-infinity::before { + content: "\f534"; } + +.fa-info::before { + content: "\f129"; } + +.fa-italic::before { + content: "\f033"; } + +.fa-j::before { + content: "\4a"; } + +.fa-jar::before { + content: "\e516"; } + +.fa-jar-wheat::before { + content: "\e517"; } + +.fa-jedi::before { + content: "\f669"; } + +.fa-jet-fighter::before { + content: "\f0fb"; } + +.fa-fighter-jet::before { + content: "\f0fb"; } + +.fa-jet-fighter-up::before { + content: "\e518"; } + +.fa-joint::before { + content: "\f595"; } + +.fa-jug-detergent::before { + content: "\e519"; } + +.fa-k::before { + content: "\4b"; } + +.fa-kaaba::before { + content: "\f66b"; } + +.fa-key::before { + content: "\f084"; } + +.fa-keyboard::before { + content: "\f11c"; } + +.fa-khanda::before { + content: "\f66d"; } + +.fa-kip-sign::before { + content: "\e1c4"; } + +.fa-kit-medical::before { + content: "\f479"; } + +.fa-first-aid::before { + content: "\f479"; } + +.fa-kitchen-set::before { + content: "\e51a"; } + +.fa-kiwi-bird::before { + content: "\f535"; } + +.fa-l::before { + content: "\4c"; } + +.fa-land-mine-on::before { + content: "\e51b"; } + +.fa-landmark::before { + content: "\f66f"; } + +.fa-landmark-dome::before { + content: "\f752"; } + +.fa-landmark-alt::before { + content: "\f752"; } + +.fa-landmark-flag::before { + content: "\e51c"; } + +.fa-language::before { + content: "\f1ab"; } + +.fa-laptop::before { + content: "\f109"; } + +.fa-laptop-code::before { + content: "\f5fc"; } + +.fa-laptop-file::before { + content: "\e51d"; } + +.fa-laptop-medical::before { + content: "\f812"; } + +.fa-lari-sign::before { + content: "\e1c8"; } + +.fa-layer-group::before { + content: "\f5fd"; } + +.fa-leaf::before { + content: "\f06c"; } + +.fa-left-long::before { + content: "\f30a"; } + +.fa-long-arrow-alt-left::before { + content: "\f30a"; } + +.fa-left-right::before { + content: "\f337"; } + +.fa-arrows-alt-h::before { + content: "\f337"; } + +.fa-lemon::before { + content: "\f094"; } + +.fa-less-than::before { + content: "\3c"; } + +.fa-less-than-equal::before { + content: "\f537"; } + +.fa-life-ring::before { + content: "\f1cd"; } + +.fa-lightbulb::before { + content: "\f0eb"; } + +.fa-lines-leaning::before { + content: "\e51e"; } + +.fa-link::before { + content: "\f0c1"; } + +.fa-chain::before { + content: "\f0c1"; } + +.fa-link-slash::before { + content: "\f127"; } + +.fa-chain-broken::before { + content: "\f127"; } + +.fa-chain-slash::before { + content: "\f127"; } + +.fa-unlink::before { + content: "\f127"; } + +.fa-lira-sign::before { + content: "\f195"; } + +.fa-list::before { + content: "\f03a"; } + +.fa-list-squares::before { + content: "\f03a"; } + +.fa-list-check::before { + content: "\f0ae"; } + +.fa-tasks::before { + content: "\f0ae"; } + +.fa-list-ol::before { + content: "\f0cb"; } + +.fa-list-1-2::before { + content: "\f0cb"; } + +.fa-list-numeric::before { + content: "\f0cb"; } + +.fa-list-ul::before { + content: "\f0ca"; } + +.fa-list-dots::before { + content: "\f0ca"; } + +.fa-litecoin-sign::before { + content: "\e1d3"; } + +.fa-location-arrow::before { + content: "\f124"; } + +.fa-location-crosshairs::before { + content: "\f601"; } + +.fa-location::before { + content: "\f601"; } + +.fa-location-dot::before { + content: "\f3c5"; } + +.fa-map-marker-alt::before { + content: "\f3c5"; } + +.fa-location-pin::before { + content: "\f041"; } + +.fa-map-marker::before { + content: "\f041"; } + +.fa-location-pin-lock::before { + content: "\e51f"; } + +.fa-lock::before { + content: "\f023"; } + +.fa-lock-open::before { + content: "\f3c1"; } + +.fa-locust::before { + content: "\e520"; } + +.fa-lungs::before { + content: "\f604"; } + +.fa-lungs-virus::before { + content: "\e067"; } + +.fa-m::before { + content: "\4d"; } + +.fa-magnet::before { + content: "\f076"; } + +.fa-magnifying-glass::before { + content: "\f002"; } + +.fa-search::before { + content: "\f002"; } + +.fa-magnifying-glass-arrow-right::before { + content: "\e521"; } + +.fa-magnifying-glass-chart::before { + content: "\e522"; } + +.fa-magnifying-glass-dollar::before { + content: "\f688"; } + +.fa-search-dollar::before { + content: "\f688"; } + +.fa-magnifying-glass-location::before { + content: "\f689"; } + +.fa-search-location::before { + content: "\f689"; } + +.fa-magnifying-glass-minus::before { + content: "\f010"; } + +.fa-search-minus::before { + content: "\f010"; } + +.fa-magnifying-glass-plus::before { + content: "\f00e"; } + +.fa-search-plus::before { + content: "\f00e"; } + +.fa-manat-sign::before { + content: "\e1d5"; } + +.fa-map::before { + content: "\f279"; } + +.fa-map-location::before { + content: "\f59f"; } + +.fa-map-marked::before { + content: "\f59f"; } + +.fa-map-location-dot::before { + content: "\f5a0"; } + +.fa-map-marked-alt::before { + content: "\f5a0"; } + +.fa-map-pin::before { + content: "\f276"; } + +.fa-marker::before { + content: "\f5a1"; } + +.fa-mars::before { + content: "\f222"; } + +.fa-mars-and-venus::before { + content: "\f224"; } + +.fa-mars-and-venus-burst::before { + content: "\e523"; } + +.fa-mars-double::before { + content: "\f227"; } + +.fa-mars-stroke::before { + content: "\f229"; } + +.fa-mars-stroke-right::before { + content: "\f22b"; } + +.fa-mars-stroke-h::before { + content: "\f22b"; } + +.fa-mars-stroke-up::before { + content: "\f22a"; } + +.fa-mars-stroke-v::before { + content: "\f22a"; } + +.fa-martini-glass::before { + content: "\f57b"; } + +.fa-glass-martini-alt::before { + content: "\f57b"; } + +.fa-martini-glass-citrus::before { + content: "\f561"; } + +.fa-cocktail::before { + content: "\f561"; } + +.fa-martini-glass-empty::before { + content: "\f000"; } + +.fa-glass-martini::before { + content: "\f000"; } + +.fa-mask::before { + content: "\f6fa"; } + +.fa-mask-face::before { + content: "\e1d7"; } + +.fa-mask-ventilator::before { + content: "\e524"; } + +.fa-masks-theater::before { + content: "\f630"; } + +.fa-theater-masks::before { + content: "\f630"; } + +.fa-mattress-pillow::before { + content: "\e525"; } + +.fa-maximize::before { + content: "\f31e"; } + +.fa-expand-arrows-alt::before { + content: "\f31e"; } + +.fa-medal::before { + content: "\f5a2"; } + +.fa-memory::before { + content: "\f538"; } + +.fa-menorah::before { + content: "\f676"; } + +.fa-mercury::before { + content: "\f223"; } + +.fa-message::before { + content: "\f27a"; } + +.fa-comment-alt::before { + content: "\f27a"; } + +.fa-meteor::before { + content: "\f753"; } + +.fa-microchip::before { + content: "\f2db"; } + +.fa-microphone::before { + content: "\f130"; } + +.fa-microphone-lines::before { + content: "\f3c9"; } + +.fa-microphone-alt::before { + content: "\f3c9"; } + +.fa-microphone-lines-slash::before { + content: "\f539"; } + +.fa-microphone-alt-slash::before { + content: "\f539"; } + +.fa-microphone-slash::before { + content: "\f131"; } + +.fa-microscope::before { + content: "\f610"; } + +.fa-mill-sign::before { + content: "\e1ed"; } + +.fa-minimize::before { + content: "\f78c"; } + +.fa-compress-arrows-alt::before { + content: "\f78c"; } + +.fa-minus::before { + content: "\f068"; } + +.fa-subtract::before { + content: "\f068"; } + +.fa-mitten::before { + content: "\f7b5"; } + +.fa-mobile::before { + content: "\f3ce"; } + +.fa-mobile-android::before { + content: "\f3ce"; } + +.fa-mobile-phone::before { + content: "\f3ce"; } + +.fa-mobile-button::before { + content: "\f10b"; } + +.fa-mobile-retro::before { + content: "\e527"; } + +.fa-mobile-screen::before { + content: "\f3cf"; } + +.fa-mobile-android-alt::before { + content: "\f3cf"; } + +.fa-mobile-screen-button::before { + content: "\f3cd"; } + +.fa-mobile-alt::before { + content: "\f3cd"; } + +.fa-money-bill::before { + content: "\f0d6"; } + +.fa-money-bill-1::before { + content: "\f3d1"; } + +.fa-money-bill-alt::before { + content: "\f3d1"; } + +.fa-money-bill-1-wave::before { + content: "\f53b"; } + +.fa-money-bill-wave-alt::before { + content: "\f53b"; } + +.fa-money-bill-transfer::before { + content: "\e528"; } + +.fa-money-bill-trend-up::before { + content: "\e529"; } + +.fa-money-bill-wave::before { + content: "\f53a"; } + +.fa-money-bill-wheat::before { + content: "\e52a"; } + +.fa-money-bills::before { + content: "\e1f3"; } + +.fa-money-check::before { + content: "\f53c"; } + +.fa-money-check-dollar::before { + content: "\f53d"; } + +.fa-money-check-alt::before { + content: "\f53d"; } + +.fa-monument::before { + content: "\f5a6"; } + +.fa-moon::before { + content: "\f186"; } + +.fa-mortar-pestle::before { + content: "\f5a7"; } + +.fa-mosque::before { + content: "\f678"; } + +.fa-mosquito::before { + content: "\e52b"; } + +.fa-mosquito-net::before { + content: "\e52c"; } + +.fa-motorcycle::before { + content: "\f21c"; } + +.fa-mound::before { + content: "\e52d"; } + +.fa-mountain::before { + content: "\f6fc"; } + +.fa-mountain-city::before { + content: "\e52e"; } + +.fa-mountain-sun::before { + content: "\e52f"; } + +.fa-mug-hot::before { + content: "\f7b6"; } + +.fa-mug-saucer::before { + content: "\f0f4"; } + +.fa-coffee::before { + content: "\f0f4"; } + +.fa-music::before { + content: "\f001"; } + +.fa-n::before { + content: "\4e"; } + +.fa-naira-sign::before { + content: "\e1f6"; } + +.fa-network-wired::before { + content: "\f6ff"; } + +.fa-neuter::before { + content: "\f22c"; } + +.fa-newspaper::before { + content: "\f1ea"; } + +.fa-not-equal::before { + content: "\f53e"; } + +.fa-note-sticky::before { + content: "\f249"; } + +.fa-sticky-note::before { + content: "\f249"; } + +.fa-notes-medical::before { + content: "\f481"; } + +.fa-o::before { + content: "\4f"; } + +.fa-object-group::before { + content: "\f247"; } + +.fa-object-ungroup::before { + content: "\f248"; } + +.fa-oil-can::before { + content: "\f613"; } + +.fa-oil-well::before { + content: "\e532"; } + +.fa-om::before { + content: "\f679"; } + +.fa-otter::before { + content: "\f700"; } + +.fa-outdent::before { + content: "\f03b"; } + +.fa-dedent::before { + content: "\f03b"; } + +.fa-p::before { + content: "\50"; } + +.fa-pager::before { + content: "\f815"; } + +.fa-paint-roller::before { + content: "\f5aa"; } + +.fa-paintbrush::before { + content: "\f1fc"; } + +.fa-paint-brush::before { + content: "\f1fc"; } + +.fa-palette::before { + content: "\f53f"; } + +.fa-pallet::before { + content: "\f482"; } + +.fa-panorama::before { + content: "\e209"; } + +.fa-paper-plane::before { + content: "\f1d8"; } + +.fa-paperclip::before { + content: "\f0c6"; } + +.fa-parachute-box::before { + content: "\f4cd"; } + +.fa-paragraph::before { + content: "\f1dd"; } + +.fa-passport::before { + content: "\f5ab"; } + +.fa-paste::before { + content: "\f0ea"; } + +.fa-file-clipboard::before { + content: "\f0ea"; } + +.fa-pause::before { + content: "\f04c"; } + +.fa-paw::before { + content: "\f1b0"; } + +.fa-peace::before { + content: "\f67c"; } + +.fa-pen::before { + content: "\f304"; } + +.fa-pen-clip::before { + content: "\f305"; } + +.fa-pen-alt::before { + content: "\f305"; } + +.fa-pen-fancy::before { + content: "\f5ac"; } + +.fa-pen-nib::before { + content: "\f5ad"; } + +.fa-pen-ruler::before { + content: "\f5ae"; } + +.fa-pencil-ruler::before { + content: "\f5ae"; } + +.fa-pen-to-square::before { + content: "\f044"; } + +.fa-edit::before { + content: "\f044"; } + +.fa-pencil::before { + content: "\f303"; } + +.fa-pencil-alt::before { + content: "\f303"; } + +.fa-people-arrows-left-right::before { + content: "\e068"; } + +.fa-people-arrows::before { + content: "\e068"; } + +.fa-people-carry-box::before { + content: "\f4ce"; } + +.fa-people-carry::before { + content: "\f4ce"; } + +.fa-people-group::before { + content: "\e533"; } + +.fa-people-line::before { + content: "\e534"; } + +.fa-people-pulling::before { + content: "\e535"; } + +.fa-people-robbery::before { + content: "\e536"; } + +.fa-people-roof::before { + content: "\e537"; } + +.fa-pepper-hot::before { + content: "\f816"; } + +.fa-percent::before { + content: "\25"; } + +.fa-percentage::before { + content: "\25"; } + +.fa-person::before { + content: "\f183"; } + +.fa-male::before { + content: "\f183"; } + +.fa-person-arrow-down-to-line::before { + content: "\e538"; } + +.fa-person-arrow-up-from-line::before { + content: "\e539"; } + +.fa-person-biking::before { + content: "\f84a"; } + +.fa-biking::before { + content: "\f84a"; } + +.fa-person-booth::before { + content: "\f756"; } + +.fa-person-breastfeeding::before { + content: "\e53a"; } + +.fa-person-burst::before { + content: "\e53b"; } + +.fa-person-cane::before { + content: "\e53c"; } + +.fa-person-chalkboard::before { + content: "\e53d"; } + +.fa-person-circle-check::before { + content: "\e53e"; } + +.fa-person-circle-exclamation::before { + content: "\e53f"; } + +.fa-person-circle-minus::before { + content: "\e540"; } + +.fa-person-circle-plus::before { + content: "\e541"; } + +.fa-person-circle-question::before { + content: "\e542"; } + +.fa-person-circle-xmark::before { + content: "\e543"; } + +.fa-person-digging::before { + content: "\f85e"; } + +.fa-digging::before { + content: "\f85e"; } + +.fa-person-dots-from-line::before { + content: "\f470"; } + +.fa-diagnoses::before { + content: "\f470"; } + +.fa-person-dress::before { + content: "\f182"; } + +.fa-female::before { + content: "\f182"; } + +.fa-person-dress-burst::before { + content: "\e544"; } + +.fa-person-drowning::before { + content: "\e545"; } + +.fa-person-falling::before { + content: "\e546"; } + +.fa-person-falling-burst::before { + content: "\e547"; } + +.fa-person-half-dress::before { + content: "\e548"; } + +.fa-person-harassing::before { + content: "\e549"; } + +.fa-person-hiking::before { + content: "\f6ec"; } + +.fa-hiking::before { + content: "\f6ec"; } + +.fa-person-military-pointing::before { + content: "\e54a"; } + +.fa-person-military-rifle::before { + content: "\e54b"; } + +.fa-person-military-to-person::before { + content: "\e54c"; } + +.fa-person-praying::before { + content: "\f683"; } + +.fa-pray::before { + content: "\f683"; } + +.fa-person-pregnant::before { + content: "\e31e"; } + +.fa-person-rays::before { + content: "\e54d"; } + +.fa-person-rifle::before { + content: "\e54e"; } + +.fa-person-running::before { + content: "\f70c"; } + +.fa-running::before { + content: "\f70c"; } + +.fa-person-shelter::before { + content: "\e54f"; } + +.fa-person-skating::before { + content: "\f7c5"; } + +.fa-skating::before { + content: "\f7c5"; } + +.fa-person-skiing::before { + content: "\f7c9"; } + +.fa-skiing::before { + content: "\f7c9"; } + +.fa-person-skiing-nordic::before { + content: "\f7ca"; } + +.fa-skiing-nordic::before { + content: "\f7ca"; } + +.fa-person-snowboarding::before { + content: "\f7ce"; } + +.fa-snowboarding::before { + content: "\f7ce"; } + +.fa-person-swimming::before { + content: "\f5c4"; } + +.fa-swimmer::before { + content: "\f5c4"; } + +.fa-person-through-window::before { + content: "\e433"; } + +.fa-person-walking::before { + content: "\f554"; } + +.fa-walking::before { + content: "\f554"; } + +.fa-person-walking-arrow-loop-left::before { + content: "\e551"; } + +.fa-person-walking-arrow-right::before { + content: "\e552"; } + +.fa-person-walking-dashed-line-arrow-right::before { + content: "\e553"; } + +.fa-person-walking-luggage::before { + content: "\e554"; } + +.fa-person-walking-with-cane::before { + content: "\f29d"; } + +.fa-blind::before { + content: "\f29d"; } + +.fa-peseta-sign::before { + content: "\e221"; } + +.fa-peso-sign::before { + content: "\e222"; } + +.fa-phone::before { + content: "\f095"; } + +.fa-phone-flip::before { + content: "\f879"; } + +.fa-phone-alt::before { + content: "\f879"; } + +.fa-phone-slash::before { + content: "\f3dd"; } + +.fa-phone-volume::before { + content: "\f2a0"; } + +.fa-volume-control-phone::before { + content: "\f2a0"; } + +.fa-photo-film::before { + content: "\f87c"; } + +.fa-photo-video::before { + content: "\f87c"; } + +.fa-piggy-bank::before { + content: "\f4d3"; } + +.fa-pills::before { + content: "\f484"; } + +.fa-pizza-slice::before { + content: "\f818"; } + +.fa-place-of-worship::before { + content: "\f67f"; } + +.fa-plane::before { + content: "\f072"; } + +.fa-plane-arrival::before { + content: "\f5af"; } + +.fa-plane-circle-check::before { + content: "\e555"; } + +.fa-plane-circle-exclamation::before { + content: "\e556"; } + +.fa-plane-circle-xmark::before { + content: "\e557"; } + +.fa-plane-departure::before { + content: "\f5b0"; } + +.fa-plane-lock::before { + content: "\e558"; } + +.fa-plane-slash::before { + content: "\e069"; } + +.fa-plane-up::before { + content: "\e22d"; } + +.fa-plant-wilt::before { + content: "\e43b"; } + +.fa-plate-wheat::before { + content: "\e55a"; } + +.fa-play::before { + content: "\f04b"; } + +.fa-plug::before { + content: "\f1e6"; } + +.fa-plug-circle-bolt::before { + content: "\e55b"; } + +.fa-plug-circle-check::before { + content: "\e55c"; } + +.fa-plug-circle-exclamation::before { + content: "\e55d"; } + +.fa-plug-circle-minus::before { + content: "\e55e"; } + +.fa-plug-circle-plus::before { + content: "\e55f"; } + +.fa-plug-circle-xmark::before { + content: "\e560"; } + +.fa-plus::before { + content: "\2b"; } + +.fa-add::before { + content: "\2b"; } + +.fa-plus-minus::before { + content: "\e43c"; } + +.fa-podcast::before { + content: "\f2ce"; } + +.fa-poo::before { + content: "\f2fe"; } + +.fa-poo-storm::before { + content: "\f75a"; } + +.fa-poo-bolt::before { + content: "\f75a"; } + +.fa-poop::before { + content: "\f619"; } + +.fa-power-off::before { + content: "\f011"; } + +.fa-prescription::before { + content: "\f5b1"; } + +.fa-prescription-bottle::before { + content: "\f485"; } + +.fa-prescription-bottle-medical::before { + content: "\f486"; } + +.fa-prescription-bottle-alt::before { + content: "\f486"; } + +.fa-print::before { + content: "\f02f"; } + +.fa-pump-medical::before { + content: "\e06a"; } + +.fa-pump-soap::before { + content: "\e06b"; } + +.fa-puzzle-piece::before { + content: "\f12e"; } + +.fa-q::before { + content: "\51"; } + +.fa-qrcode::before { + content: "\f029"; } + +.fa-question::before { + content: "\3f"; } + +.fa-quote-left::before { + content: "\f10d"; } + +.fa-quote-left-alt::before { + content: "\f10d"; } + +.fa-quote-right::before { + content: "\f10e"; } + +.fa-quote-right-alt::before { + content: "\f10e"; } + +.fa-r::before { + content: "\52"; } + +.fa-radiation::before { + content: "\f7b9"; } + +.fa-radio::before { + content: "\f8d7"; } + +.fa-rainbow::before { + content: "\f75b"; } + +.fa-ranking-star::before { + content: "\e561"; } + +.fa-receipt::before { + content: "\f543"; } + +.fa-record-vinyl::before { + content: "\f8d9"; } + +.fa-rectangle-ad::before { + content: "\f641"; } + +.fa-ad::before { + content: "\f641"; } + +.fa-rectangle-list::before { + content: "\f022"; } + +.fa-list-alt::before { + content: "\f022"; } + +.fa-rectangle-xmark::before { + content: "\f410"; } + +.fa-rectangle-times::before { + content: "\f410"; } + +.fa-times-rectangle::before { + content: "\f410"; } + +.fa-window-close::before { + content: "\f410"; } + +.fa-recycle::before { + content: "\f1b8"; } + +.fa-registered::before { + content: "\f25d"; } + +.fa-repeat::before { + content: "\f363"; } + +.fa-reply::before { + content: "\f3e5"; } + +.fa-mail-reply::before { + content: "\f3e5"; } + +.fa-reply-all::before { + content: "\f122"; } + +.fa-mail-reply-all::before { + content: "\f122"; } + +.fa-republican::before { + content: "\f75e"; } + +.fa-restroom::before { + content: "\f7bd"; } + +.fa-retweet::before { + content: "\f079"; } + +.fa-ribbon::before { + content: "\f4d6"; } + +.fa-right-from-bracket::before { + content: "\f2f5"; } + +.fa-sign-out-alt::before { + content: "\f2f5"; } + +.fa-right-left::before { + content: "\f362"; } + +.fa-exchange-alt::before { + content: "\f362"; } + +.fa-right-long::before { + content: "\f30b"; } + +.fa-long-arrow-alt-right::before { + content: "\f30b"; } + +.fa-right-to-bracket::before { + content: "\f2f6"; } + +.fa-sign-in-alt::before { + content: "\f2f6"; } + +.fa-ring::before { + content: "\f70b"; } + +.fa-road::before { + content: "\f018"; } + +.fa-road-barrier::before { + content: "\e562"; } + +.fa-road-bridge::before { + content: "\e563"; } + +.fa-road-circle-check::before { + content: "\e564"; } + +.fa-road-circle-exclamation::before { + content: "\e565"; } + +.fa-road-circle-xmark::before { + content: "\e566"; } + +.fa-road-lock::before { + content: "\e567"; } + +.fa-road-spikes::before { + content: "\e568"; } + +.fa-robot::before { + content: "\f544"; } + +.fa-rocket::before { + content: "\f135"; } + +.fa-rotate::before { + content: "\f2f1"; } + +.fa-sync-alt::before { + content: "\f2f1"; } + +.fa-rotate-left::before { + content: "\f2ea"; } + +.fa-rotate-back::before { + content: "\f2ea"; } + +.fa-rotate-backward::before { + content: "\f2ea"; } + +.fa-undo-alt::before { + content: "\f2ea"; } + +.fa-rotate-right::before { + content: "\f2f9"; } + +.fa-redo-alt::before { + content: "\f2f9"; } + +.fa-rotate-forward::before { + content: "\f2f9"; } + +.fa-route::before { + content: "\f4d7"; } + +.fa-rss::before { + content: "\f09e"; } + +.fa-feed::before { + content: "\f09e"; } + +.fa-ruble-sign::before { + content: "\f158"; } + +.fa-rouble::before { + content: "\f158"; } + +.fa-rub::before { + content: "\f158"; } + +.fa-ruble::before { + content: "\f158"; } + +.fa-rug::before { + content: "\e569"; } + +.fa-ruler::before { + content: "\f545"; } + +.fa-ruler-combined::before { + content: "\f546"; } + +.fa-ruler-horizontal::before { + content: "\f547"; } + +.fa-ruler-vertical::before { + content: "\f548"; } + +.fa-rupee-sign::before { + content: "\f156"; } + +.fa-rupee::before { + content: "\f156"; } + +.fa-rupiah-sign::before { + content: "\e23d"; } + +.fa-s::before { + content: "\53"; } + +.fa-sack-dollar::before { + content: "\f81d"; } + +.fa-sack-xmark::before { + content: "\e56a"; } + +.fa-sailboat::before { + content: "\e445"; } + +.fa-satellite::before { + content: "\f7bf"; } + +.fa-satellite-dish::before { + content: "\f7c0"; } + +.fa-scale-balanced::before { + content: "\f24e"; } + +.fa-balance-scale::before { + content: "\f24e"; } + +.fa-scale-unbalanced::before { + content: "\f515"; } + +.fa-balance-scale-left::before { + content: "\f515"; } + +.fa-scale-unbalanced-flip::before { + content: "\f516"; } + +.fa-balance-scale-right::before { + content: "\f516"; } + +.fa-school::before { + content: "\f549"; } + +.fa-school-circle-check::before { + content: "\e56b"; } + +.fa-school-circle-exclamation::before { + content: "\e56c"; } + +.fa-school-circle-xmark::before { + content: "\e56d"; } + +.fa-school-flag::before { + content: "\e56e"; } + +.fa-school-lock::before { + content: "\e56f"; } + +.fa-scissors::before { + content: "\f0c4"; } + +.fa-cut::before { + content: "\f0c4"; } + +.fa-screwdriver::before { + content: "\f54a"; } + +.fa-screwdriver-wrench::before { + content: "\f7d9"; } + +.fa-tools::before { + content: "\f7d9"; } + +.fa-scroll::before { + content: "\f70e"; } + +.fa-scroll-torah::before { + content: "\f6a0"; } + +.fa-torah::before { + content: "\f6a0"; } + +.fa-sd-card::before { + content: "\f7c2"; } + +.fa-section::before { + content: "\e447"; } + +.fa-seedling::before { + content: "\f4d8"; } + +.fa-sprout::before { + content: "\f4d8"; } + +.fa-server::before { + content: "\f233"; } + +.fa-shapes::before { + content: "\f61f"; } + +.fa-triangle-circle-square::before { + content: "\f61f"; } + +.fa-share::before { + content: "\f064"; } + +.fa-arrow-turn-right::before { + content: "\f064"; } + +.fa-mail-forward::before { + content: "\f064"; } + +.fa-share-from-square::before { + content: "\f14d"; } + +.fa-share-square::before { + content: "\f14d"; } + +.fa-share-nodes::before { + content: "\f1e0"; } + +.fa-share-alt::before { + content: "\f1e0"; } + +.fa-sheet-plastic::before { + content: "\e571"; } + +.fa-shekel-sign::before { + content: "\f20b"; } + +.fa-ils::before { + content: "\f20b"; } + +.fa-shekel::before { + content: "\f20b"; } + +.fa-sheqel::before { + content: "\f20b"; } + +.fa-sheqel-sign::before { + content: "\f20b"; } + +.fa-shield::before { + content: "\f132"; } + +.fa-shield-blank::before { + content: "\f132"; } + +.fa-shield-cat::before { + content: "\e572"; } + +.fa-shield-dog::before { + content: "\e573"; } + +.fa-shield-halved::before { + content: "\f3ed"; } + +.fa-shield-alt::before { + content: "\f3ed"; } + +.fa-shield-heart::before { + content: "\e574"; } + +.fa-shield-virus::before { + content: "\e06c"; } + +.fa-ship::before { + content: "\f21a"; } + +.fa-shirt::before { + content: "\f553"; } + +.fa-t-shirt::before { + content: "\f553"; } + +.fa-tshirt::before { + content: "\f553"; } + +.fa-shoe-prints::before { + content: "\f54b"; } + +.fa-shop::before { + content: "\f54f"; } + +.fa-store-alt::before { + content: "\f54f"; } + +.fa-shop-lock::before { + content: "\e4a5"; } + +.fa-shop-slash::before { + content: "\e070"; } + +.fa-store-alt-slash::before { + content: "\e070"; } + +.fa-shower::before { + content: "\f2cc"; } + +.fa-shrimp::before { + content: "\e448"; } + +.fa-shuffle::before { + content: "\f074"; } + +.fa-random::before { + content: "\f074"; } + +.fa-shuttle-space::before { + content: "\f197"; } + +.fa-space-shuttle::before { + content: "\f197"; } + +.fa-sign-hanging::before { + content: "\f4d9"; } + +.fa-sign::before { + content: "\f4d9"; } + +.fa-signal::before { + content: "\f012"; } + +.fa-signal-5::before { + content: "\f012"; } + +.fa-signal-perfect::before { + content: "\f012"; } + +.fa-signature::before { + content: "\f5b7"; } + +.fa-signs-post::before { + content: "\f277"; } + +.fa-map-signs::before { + content: "\f277"; } + +.fa-sim-card::before { + content: "\f7c4"; } + +.fa-sink::before { + content: "\e06d"; } + +.fa-sitemap::before { + content: "\f0e8"; } + +.fa-skull::before { + content: "\f54c"; } + +.fa-skull-crossbones::before { + content: "\f714"; } + +.fa-slash::before { + content: "\f715"; } + +.fa-sleigh::before { + content: "\f7cc"; } + +.fa-sliders::before { + content: "\f1de"; } + +.fa-sliders-h::before { + content: "\f1de"; } + +.fa-smog::before { + content: "\f75f"; } + +.fa-smoking::before { + content: "\f48d"; } + +.fa-snowflake::before { + content: "\f2dc"; } + +.fa-snowman::before { + content: "\f7d0"; } + +.fa-snowplow::before { + content: "\f7d2"; } + +.fa-soap::before { + content: "\e06e"; } + +.fa-socks::before { + content: "\f696"; } + +.fa-solar-panel::before { + content: "\f5ba"; } + +.fa-sort::before { + content: "\f0dc"; } + +.fa-unsorted::before { + content: "\f0dc"; } + +.fa-sort-down::before { + content: "\f0dd"; } + +.fa-sort-desc::before { + content: "\f0dd"; } + +.fa-sort-up::before { + content: "\f0de"; } + +.fa-sort-asc::before { + content: "\f0de"; } + +.fa-spa::before { + content: "\f5bb"; } + +.fa-spaghetti-monster-flying::before { + content: "\f67b"; } + +.fa-pastafarianism::before { + content: "\f67b"; } + +.fa-spell-check::before { + content: "\f891"; } + +.fa-spider::before { + content: "\f717"; } + +.fa-spinner::before { + content: "\f110"; } + +.fa-splotch::before { + content: "\f5bc"; } + +.fa-spoon::before { + content: "\f2e5"; } + +.fa-utensil-spoon::before { + content: "\f2e5"; } + +.fa-spray-can::before { + content: "\f5bd"; } + +.fa-spray-can-sparkles::before { + content: "\f5d0"; } + +.fa-air-freshener::before { + content: "\f5d0"; } + +.fa-square::before { + content: "\f0c8"; } + +.fa-square-arrow-up-right::before { + content: "\f14c"; } + +.fa-external-link-square::before { + content: "\f14c"; } + +.fa-square-caret-down::before { + content: "\f150"; } + +.fa-caret-square-down::before { + content: "\f150"; } + +.fa-square-caret-left::before { + content: "\f191"; } + +.fa-caret-square-left::before { + content: "\f191"; } + +.fa-square-caret-right::before { + content: "\f152"; } + +.fa-caret-square-right::before { + content: "\f152"; } + +.fa-square-caret-up::before { + content: "\f151"; } + +.fa-caret-square-up::before { + content: "\f151"; } + +.fa-square-check::before { + content: "\f14a"; } + +.fa-check-square::before { + content: "\f14a"; } + +.fa-square-envelope::before { + content: "\f199"; } + +.fa-envelope-square::before { + content: "\f199"; } + +.fa-square-full::before { + content: "\f45c"; } + +.fa-square-h::before { + content: "\f0fd"; } + +.fa-h-square::before { + content: "\f0fd"; } + +.fa-square-minus::before { + content: "\f146"; } + +.fa-minus-square::before { + content: "\f146"; } + +.fa-square-nfi::before { + content: "\e576"; } + +.fa-square-parking::before { + content: "\f540"; } + +.fa-parking::before { + content: "\f540"; } + +.fa-square-pen::before { + content: "\f14b"; } + +.fa-pen-square::before { + content: "\f14b"; } + +.fa-pencil-square::before { + content: "\f14b"; } + +.fa-square-person-confined::before { + content: "\e577"; } + +.fa-square-phone::before { + content: "\f098"; } + +.fa-phone-square::before { + content: "\f098"; } + +.fa-square-phone-flip::before { + content: "\f87b"; } + +.fa-phone-square-alt::before { + content: "\f87b"; } + +.fa-square-plus::before { + content: "\f0fe"; } + +.fa-plus-square::before { + content: "\f0fe"; } + +.fa-square-poll-horizontal::before { + content: "\f682"; } + +.fa-poll-h::before { + content: "\f682"; } + +.fa-square-poll-vertical::before { + content: "\f681"; } + +.fa-poll::before { + content: "\f681"; } + +.fa-square-root-variable::before { + content: "\f698"; } + +.fa-square-root-alt::before { + content: "\f698"; } + +.fa-square-rss::before { + content: "\f143"; } + +.fa-rss-square::before { + content: "\f143"; } + +.fa-square-share-nodes::before { + content: "\f1e1"; } + +.fa-share-alt-square::before { + content: "\f1e1"; } + +.fa-square-up-right::before { + content: "\f360"; } + +.fa-external-link-square-alt::before { + content: "\f360"; } + +.fa-square-virus::before { + content: "\e578"; } + +.fa-square-xmark::before { + content: "\f2d3"; } + +.fa-times-square::before { + content: "\f2d3"; } + +.fa-xmark-square::before { + content: "\f2d3"; } + +.fa-staff-aesculapius::before { + content: "\e579"; } + +.fa-rod-asclepius::before { + content: "\e579"; } + +.fa-rod-snake::before { + content: "\e579"; } + +.fa-staff-snake::before { + content: "\e579"; } + +.fa-stairs::before { + content: "\e289"; } + +.fa-stamp::before { + content: "\f5bf"; } + +.fa-star::before { + content: "\f005"; } + +.fa-star-and-crescent::before { + content: "\f699"; } + +.fa-star-half::before { + content: "\f089"; } + +.fa-star-half-stroke::before { + content: "\f5c0"; } + +.fa-star-half-alt::before { + content: "\f5c0"; } + +.fa-star-of-david::before { + content: "\f69a"; } + +.fa-star-of-life::before { + content: "\f621"; } + +.fa-sterling-sign::before { + content: "\f154"; } + +.fa-gbp::before { + content: "\f154"; } + +.fa-pound-sign::before { + content: "\f154"; } + +.fa-stethoscope::before { + content: "\f0f1"; } + +.fa-stop::before { + content: "\f04d"; } + +.fa-stopwatch::before { + content: "\f2f2"; } + +.fa-stopwatch-20::before { + content: "\e06f"; } + +.fa-store::before { + content: "\f54e"; } + +.fa-store-slash::before { + content: "\e071"; } + +.fa-street-view::before { + content: "\f21d"; } + +.fa-strikethrough::before { + content: "\f0cc"; } + +.fa-stroopwafel::before { + content: "\f551"; } + +.fa-subscript::before { + content: "\f12c"; } + +.fa-suitcase::before { + content: "\f0f2"; } + +.fa-suitcase-medical::before { + content: "\f0fa"; } + +.fa-medkit::before { + content: "\f0fa"; } + +.fa-suitcase-rolling::before { + content: "\f5c1"; } + +.fa-sun::before { + content: "\f185"; } + +.fa-sun-plant-wilt::before { + content: "\e57a"; } + +.fa-superscript::before { + content: "\f12b"; } + +.fa-swatchbook::before { + content: "\f5c3"; } + +.fa-synagogue::before { + content: "\f69b"; } + +.fa-syringe::before { + content: "\f48e"; } + +.fa-t::before { + content: "\54"; } + +.fa-table::before { + content: "\f0ce"; } + +.fa-table-cells::before { + content: "\f00a"; } + +.fa-th::before { + content: "\f00a"; } + +.fa-table-cells-large::before { + content: "\f009"; } + +.fa-th-large::before { + content: "\f009"; } + +.fa-table-columns::before { + content: "\f0db"; } + +.fa-columns::before { + content: "\f0db"; } + +.fa-table-list::before { + content: "\f00b"; } + +.fa-th-list::before { + content: "\f00b"; } + +.fa-table-tennis-paddle-ball::before { + content: "\f45d"; } + +.fa-ping-pong-paddle-ball::before { + content: "\f45d"; } + +.fa-table-tennis::before { + content: "\f45d"; } + +.fa-tablet::before { + content: "\f3fb"; } + +.fa-tablet-android::before { + content: "\f3fb"; } + +.fa-tablet-button::before { + content: "\f10a"; } + +.fa-tablet-screen-button::before { + content: "\f3fa"; } + +.fa-tablet-alt::before { + content: "\f3fa"; } + +.fa-tablets::before { + content: "\f490"; } + +.fa-tachograph-digital::before { + content: "\f566"; } + +.fa-digital-tachograph::before { + content: "\f566"; } + +.fa-tag::before { + content: "\f02b"; } + +.fa-tags::before { + content: "\f02c"; } + +.fa-tape::before { + content: "\f4db"; } + +.fa-tarp::before { + content: "\e57b"; } + +.fa-tarp-droplet::before { + content: "\e57c"; } + +.fa-taxi::before { + content: "\f1ba"; } + +.fa-cab::before { + content: "\f1ba"; } + +.fa-teeth::before { + content: "\f62e"; } + +.fa-teeth-open::before { + content: "\f62f"; } + +.fa-temperature-arrow-down::before { + content: "\e03f"; } + +.fa-temperature-down::before { + content: "\e03f"; } + +.fa-temperature-arrow-up::before { + content: "\e040"; } + +.fa-temperature-up::before { + content: "\e040"; } + +.fa-temperature-empty::before { + content: "\f2cb"; } + +.fa-temperature-0::before { + content: "\f2cb"; } + +.fa-thermometer-0::before { + content: "\f2cb"; } + +.fa-thermometer-empty::before { + content: "\f2cb"; } + +.fa-temperature-full::before { + content: "\f2c7"; } + +.fa-temperature-4::before { + content: "\f2c7"; } + +.fa-thermometer-4::before { + content: "\f2c7"; } + +.fa-thermometer-full::before { + content: "\f2c7"; } + +.fa-temperature-half::before { + content: "\f2c9"; } + +.fa-temperature-2::before { + content: "\f2c9"; } + +.fa-thermometer-2::before { + content: "\f2c9"; } + +.fa-thermometer-half::before { + content: "\f2c9"; } + +.fa-temperature-high::before { + content: "\f769"; } + +.fa-temperature-low::before { + content: "\f76b"; } + +.fa-temperature-quarter::before { + content: "\f2ca"; } + +.fa-temperature-1::before { + content: "\f2ca"; } + +.fa-thermometer-1::before { + content: "\f2ca"; } + +.fa-thermometer-quarter::before { + content: "\f2ca"; } + +.fa-temperature-three-quarters::before { + content: "\f2c8"; } + +.fa-temperature-3::before { + content: "\f2c8"; } + +.fa-thermometer-3::before { + content: "\f2c8"; } + +.fa-thermometer-three-quarters::before { + content: "\f2c8"; } + +.fa-tenge-sign::before { + content: "\f7d7"; } + +.fa-tenge::before { + content: "\f7d7"; } + +.fa-tent::before { + content: "\e57d"; } + +.fa-tent-arrow-down-to-line::before { + content: "\e57e"; } + +.fa-tent-arrow-left-right::before { + content: "\e57f"; } + +.fa-tent-arrow-turn-left::before { + content: "\e580"; } + +.fa-tent-arrows-down::before { + content: "\e581"; } + +.fa-tents::before { + content: "\e582"; } + +.fa-terminal::before { + content: "\f120"; } + +.fa-text-height::before { + content: "\f034"; } + +.fa-text-slash::before { + content: "\f87d"; } + +.fa-remove-format::before { + content: "\f87d"; } + +.fa-text-width::before { + content: "\f035"; } + +.fa-thermometer::before { + content: "\f491"; } + +.fa-thumbs-down::before { + content: "\f165"; } + +.fa-thumbs-up::before { + content: "\f164"; } + +.fa-thumbtack::before { + content: "\f08d"; } + +.fa-thumb-tack::before { + content: "\f08d"; } + +.fa-ticket::before { + content: "\f145"; } + +.fa-ticket-simple::before { + content: "\f3ff"; } + +.fa-ticket-alt::before { + content: "\f3ff"; } + +.fa-timeline::before { + content: "\e29c"; } + +.fa-toggle-off::before { + content: "\f204"; } + +.fa-toggle-on::before { + content: "\f205"; } + +.fa-toilet::before { + content: "\f7d8"; } + +.fa-toilet-paper::before { + content: "\f71e"; } + +.fa-toilet-paper-slash::before { + content: "\e072"; } + +.fa-toilet-portable::before { + content: "\e583"; } + +.fa-toilets-portable::before { + content: "\e584"; } + +.fa-toolbox::before { + content: "\f552"; } + +.fa-tooth::before { + content: "\f5c9"; } + +.fa-torii-gate::before { + content: "\f6a1"; } + +.fa-tornado::before { + content: "\f76f"; } + +.fa-tower-broadcast::before { + content: "\f519"; } + +.fa-broadcast-tower::before { + content: "\f519"; } + +.fa-tower-cell::before { + content: "\e585"; } + +.fa-tower-observation::before { + content: "\e586"; } + +.fa-tractor::before { + content: "\f722"; } + +.fa-trademark::before { + content: "\f25c"; } + +.fa-traffic-light::before { + content: "\f637"; } + +.fa-trailer::before { + content: "\e041"; } + +.fa-train::before { + content: "\f238"; } + +.fa-train-subway::before { + content: "\f239"; } + +.fa-subway::before { + content: "\f239"; } + +.fa-train-tram::before { + content: "\f7da"; } + +.fa-tram::before { + content: "\f7da"; } + +.fa-transgender::before { + content: "\f225"; } + +.fa-transgender-alt::before { + content: "\f225"; } + +.fa-trash::before { + content: "\f1f8"; } + +.fa-trash-arrow-up::before { + content: "\f829"; } + +.fa-trash-restore::before { + content: "\f829"; } + +.fa-trash-can::before { + content: "\f2ed"; } + +.fa-trash-alt::before { + content: "\f2ed"; } + +.fa-trash-can-arrow-up::before { + content: "\f82a"; } + +.fa-trash-restore-alt::before { + content: "\f82a"; } + +.fa-tree::before { + content: "\f1bb"; } + +.fa-tree-city::before { + content: "\e587"; } + +.fa-triangle-exclamation::before { + content: "\f071"; } + +.fa-exclamation-triangle::before { + content: "\f071"; } + +.fa-warning::before { + content: "\f071"; } + +.fa-trophy::before { + content: "\f091"; } + +.fa-trowel::before { + content: "\e589"; } + +.fa-trowel-bricks::before { + content: "\e58a"; } + +.fa-truck::before { + content: "\f0d1"; } + +.fa-truck-arrow-right::before { + content: "\e58b"; } + +.fa-truck-droplet::before { + content: "\e58c"; } + +.fa-truck-fast::before { + content: "\f48b"; } + +.fa-shipping-fast::before { + content: "\f48b"; } + +.fa-truck-field::before { + content: "\e58d"; } + +.fa-truck-field-un::before { + content: "\e58e"; } + +.fa-truck-front::before { + content: "\e2b7"; } + +.fa-truck-medical::before { + content: "\f0f9"; } + +.fa-ambulance::before { + content: "\f0f9"; } + +.fa-truck-monster::before { + content: "\f63b"; } + +.fa-truck-moving::before { + content: "\f4df"; } + +.fa-truck-pickup::before { + content: "\f63c"; } + +.fa-truck-plane::before { + content: "\e58f"; } + +.fa-truck-ramp-box::before { + content: "\f4de"; } + +.fa-truck-loading::before { + content: "\f4de"; } + +.fa-tty::before { + content: "\f1e4"; } + +.fa-teletype::before { + content: "\f1e4"; } + +.fa-turkish-lira-sign::before { + content: "\e2bb"; } + +.fa-try::before { + content: "\e2bb"; } + +.fa-turkish-lira::before { + content: "\e2bb"; } + +.fa-turn-down::before { + content: "\f3be"; } + +.fa-level-down-alt::before { + content: "\f3be"; } + +.fa-turn-up::before { + content: "\f3bf"; } + +.fa-level-up-alt::before { + content: "\f3bf"; } + +.fa-tv::before { + content: "\f26c"; } + +.fa-television::before { + content: "\f26c"; } + +.fa-tv-alt::before { + content: "\f26c"; } + +.fa-u::before { + content: "\55"; } + +.fa-umbrella::before { + content: "\f0e9"; } + +.fa-umbrella-beach::before { + content: "\f5ca"; } + +.fa-underline::before { + content: "\f0cd"; } + +.fa-universal-access::before { + content: "\f29a"; } + +.fa-unlock::before { + content: "\f09c"; } + +.fa-unlock-keyhole::before { + content: "\f13e"; } + +.fa-unlock-alt::before { + content: "\f13e"; } + +.fa-up-down::before { + content: "\f338"; } + +.fa-arrows-alt-v::before { + content: "\f338"; } + +.fa-up-down-left-right::before { + content: "\f0b2"; } + +.fa-arrows-alt::before { + content: "\f0b2"; } + +.fa-up-long::before { + content: "\f30c"; } + +.fa-long-arrow-alt-up::before { + content: "\f30c"; } + +.fa-up-right-and-down-left-from-center::before { + content: "\f424"; } + +.fa-expand-alt::before { + content: "\f424"; } + +.fa-up-right-from-square::before { + content: "\f35d"; } + +.fa-external-link-alt::before { + content: "\f35d"; } + +.fa-upload::before { + content: "\f093"; } + +.fa-user::before { + content: "\f007"; } + +.fa-user-astronaut::before { + content: "\f4fb"; } + +.fa-user-check::before { + content: "\f4fc"; } + +.fa-user-clock::before { + content: "\f4fd"; } + +.fa-user-doctor::before { + content: "\f0f0"; } + +.fa-user-md::before { + content: "\f0f0"; } + +.fa-user-gear::before { + content: "\f4fe"; } + +.fa-user-cog::before { + content: "\f4fe"; } + +.fa-user-graduate::before { + content: "\f501"; } + +.fa-user-group::before { + content: "\f500"; } + +.fa-user-friends::before { + content: "\f500"; } + +.fa-user-injured::before { + content: "\f728"; } + +.fa-user-large::before { + content: "\f406"; } + +.fa-user-alt::before { + content: "\f406"; } + +.fa-user-large-slash::before { + content: "\f4fa"; } + +.fa-user-alt-slash::before { + content: "\f4fa"; } + +.fa-user-lock::before { + content: "\f502"; } + +.fa-user-minus::before { + content: "\f503"; } + +.fa-user-ninja::before { + content: "\f504"; } + +.fa-user-nurse::before { + content: "\f82f"; } + +.fa-user-pen::before { + content: "\f4ff"; } + +.fa-user-edit::before { + content: "\f4ff"; } + +.fa-user-plus::before { + content: "\f234"; } + +.fa-user-secret::before { + content: "\f21b"; } + +.fa-user-shield::before { + content: "\f505"; } + +.fa-user-slash::before { + content: "\f506"; } + +.fa-user-tag::before { + content: "\f507"; } + +.fa-user-tie::before { + content: "\f508"; } + +.fa-user-xmark::before { + content: "\f235"; } + +.fa-user-times::before { + content: "\f235"; } + +.fa-users::before { + content: "\f0c0"; } + +.fa-users-between-lines::before { + content: "\e591"; } + +.fa-users-gear::before { + content: "\f509"; } + +.fa-users-cog::before { + content: "\f509"; } + +.fa-users-line::before { + content: "\e592"; } + +.fa-users-rays::before { + content: "\e593"; } + +.fa-users-rectangle::before { + content: "\e594"; } + +.fa-users-slash::before { + content: "\e073"; } + +.fa-users-viewfinder::before { + content: "\e595"; } + +.fa-utensils::before { + content: "\f2e7"; } + +.fa-cutlery::before { + content: "\f2e7"; } + +.fa-v::before { + content: "\56"; } + +.fa-van-shuttle::before { + content: "\f5b6"; } + +.fa-shuttle-van::before { + content: "\f5b6"; } + +.fa-vault::before { + content: "\e2c5"; } + +.fa-vector-square::before { + content: "\f5cb"; } + +.fa-venus::before { + content: "\f221"; } + +.fa-venus-double::before { + content: "\f226"; } + +.fa-venus-mars::before { + content: "\f228"; } + +.fa-vest::before { + content: "\e085"; } + +.fa-vest-patches::before { + content: "\e086"; } + +.fa-vial::before { + content: "\f492"; } + +.fa-vial-circle-check::before { + content: "\e596"; } + +.fa-vial-virus::before { + content: "\e597"; } + +.fa-vials::before { + content: "\f493"; } + +.fa-video::before { + content: "\f03d"; } + +.fa-video-camera::before { + content: "\f03d"; } + +.fa-video-slash::before { + content: "\f4e2"; } + +.fa-vihara::before { + content: "\f6a7"; } + +.fa-virus::before { + content: "\e074"; } + +.fa-virus-covid::before { + content: "\e4a8"; } + +.fa-virus-covid-slash::before { + content: "\e4a9"; } + +.fa-virus-slash::before { + content: "\e075"; } + +.fa-viruses::before { + content: "\e076"; } + +.fa-voicemail::before { + content: "\f897"; } + +.fa-volcano::before { + content: "\f770"; } + +.fa-volleyball::before { + content: "\f45f"; } + +.fa-volleyball-ball::before { + content: "\f45f"; } + +.fa-volume-high::before { + content: "\f028"; } + +.fa-volume-up::before { + content: "\f028"; } + +.fa-volume-low::before { + content: "\f027"; } + +.fa-volume-down::before { + content: "\f027"; } + +.fa-volume-off::before { + content: "\f026"; } + +.fa-volume-xmark::before { + content: "\f6a9"; } + +.fa-volume-mute::before { + content: "\f6a9"; } + +.fa-volume-times::before { + content: "\f6a9"; } + +.fa-vr-cardboard::before { + content: "\f729"; } + +.fa-w::before { + content: "\57"; } + +.fa-walkie-talkie::before { + content: "\f8ef"; } + +.fa-wallet::before { + content: "\f555"; } + +.fa-wand-magic::before { + content: "\f0d0"; } + +.fa-magic::before { + content: "\f0d0"; } + +.fa-wand-magic-sparkles::before { + content: "\e2ca"; } + +.fa-magic-wand-sparkles::before { + content: "\e2ca"; } + +.fa-wand-sparkles::before { + content: "\f72b"; } + +.fa-warehouse::before { + content: "\f494"; } + +.fa-water::before { + content: "\f773"; } + +.fa-water-ladder::before { + content: "\f5c5"; } + +.fa-ladder-water::before { + content: "\f5c5"; } + +.fa-swimming-pool::before { + content: "\f5c5"; } + +.fa-wave-square::before { + content: "\f83e"; } + +.fa-weight-hanging::before { + content: "\f5cd"; } + +.fa-weight-scale::before { + content: "\f496"; } + +.fa-weight::before { + content: "\f496"; } + +.fa-wheat-awn::before { + content: "\e2cd"; } + +.fa-wheat-alt::before { + content: "\e2cd"; } + +.fa-wheat-awn-circle-exclamation::before { + content: "\e598"; } + +.fa-wheelchair::before { + content: "\f193"; } + +.fa-wheelchair-move::before { + content: "\e2ce"; } + +.fa-wheelchair-alt::before { + content: "\e2ce"; } + +.fa-whiskey-glass::before { + content: "\f7a0"; } + +.fa-glass-whiskey::before { + content: "\f7a0"; } + +.fa-wifi::before { + content: "\f1eb"; } + +.fa-wifi-3::before { + content: "\f1eb"; } + +.fa-wifi-strong::before { + content: "\f1eb"; } + +.fa-wind::before { + content: "\f72e"; } + +.fa-window-maximize::before { + content: "\f2d0"; } + +.fa-window-minimize::before { + content: "\f2d1"; } + +.fa-window-restore::before { + content: "\f2d2"; } + +.fa-wine-bottle::before { + content: "\f72f"; } + +.fa-wine-glass::before { + content: "\f4e3"; } + +.fa-wine-glass-empty::before { + content: "\f5ce"; } + +.fa-wine-glass-alt::before { + content: "\f5ce"; } + +.fa-won-sign::before { + content: "\f159"; } + +.fa-krw::before { + content: "\f159"; } + +.fa-won::before { + content: "\f159"; } + +.fa-worm::before { + content: "\e599"; } + +.fa-wrench::before { + content: "\f0ad"; } + +.fa-x::before { + content: "\58"; } + +.fa-x-ray::before { + content: "\f497"; } + +.fa-xmark::before { + content: "\f00d"; } + +.fa-close::before { + content: "\f00d"; } + +.fa-multiply::before { + content: "\f00d"; } + +.fa-remove::before { + content: "\f00d"; } + +.fa-times::before { + content: "\f00d"; } + +.fa-xmarks-lines::before { + content: "\e59a"; } + +.fa-y::before { + content: "\59"; } + +.fa-yen-sign::before { + content: "\f157"; } + +.fa-cny::before { + content: "\f157"; } + +.fa-jpy::before { + content: "\f157"; } + +.fa-rmb::before { + content: "\f157"; } + +.fa-yen::before { + content: "\f157"; } + +.fa-yin-yang::before { + content: "\f6ad"; } + +.fa-z::before { + content: "\5a"; } + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } +:root, :host { + --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"; } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("1e21o67/fa-brands-400.woff2") format("woff2"), url("1e21o67/fa-brands-400.ttf") format("truetype"); } + +.fab, +.fa-brands { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa-42-group:before { + content: "\e080"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-500px:before { + content: "\f26e"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-airbnb:before { + content: "\f834"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-artstation:before { + content: "\f77a"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-atlassian:before { + content: "\f77b"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-bilibili:before { + content: "\e3d9"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-bootstrap:before { + content: "\f836"; } + +.fa-bots:before { + content: "\e340"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-buffer:before { + content: "\f837"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-buy-n-large:before { + content: "\f8a6"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-canadian-maple-leaf:before { + content: "\f785"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-centos:before { + content: "\f789"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-chromecast:before { + content: "\f838"; } + +.fa-cloudflare:before { + content: "\e07d"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-cmplid:before { + content: "\e360"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-confluence:before { + content: "\f78d"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-cotton-bureau:before { + content: "\f89e"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-creative-commons-zero:before { + content: "\f4f3"; } + +.fa-critical-role:before { + content: "\f6c9"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-d-and-d-beyond:before { + content: "\f6ca"; } + +.fa-dailymotion:before { + content: "\e052"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-deezer:before { + content: "\e077"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-dev:before { + content: "\f6cc"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-dhl:before { + content: "\f790"; } + +.fa-diaspora:before { + content: "\f791"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-evernote:before { + content: "\f839"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-fedex:before { + content: "\f797"; } + +.fa-fedora:before { + content: "\f798"; } + +.fa-figma:before { + content: "\f799"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-firefox-browser:before { + content: "\e007"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-flag:before { + content: "\f2b4"; } + +.fa-font-awesome-logo-full:before { + content: "\f2b4"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-git-alt:before { + content: "\f841"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-golang:before { + content: "\e40f"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-google-pay:before { + content: "\e079"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-guilded:before { + content: "\e07e"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-hashnode:before { + content: "\e499"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-hive:before { + content: "\e07f"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-ideal:before { + content: "\e013"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-instalod:before { + content: "\e081"; } + +.fa-intercom:before { + content: "\f7af"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-invision:before { + content: "\f7b0"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-itch-io:before { + content: "\f83a"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-jira:before { + content: "\f7b1"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-mdb:before { + content: "\f8ca"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f23a"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-mendeley:before { + content: "\f7b3"; } + +.fa-microblog:before { + content: "\e01a"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-mixer:before { + content: "\e056"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-nfc-directional:before { + content: "\e530"; } + +.fa-nfc-symbol:before { + content: "\e531"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-node:before { + content: "\f419"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-octopus-deploy:before { + content: "\e082"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-orcid:before { + content: "\f8d2"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-padlet:before { + content: "\e4a0"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-perbyte:before { + content: "\e083"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-php:before { + content: "\f457"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-pied-piper-square:before { + content: "\e01e"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-pix:before { + content: "\e43a"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-raspberry-pi:before { + content: "\f7bb"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-reacteurope:before { + content: "\f75d"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-redhat:before { + content: "\f7bc"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-salesforce:before { + content: "\f83b"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-screenpal:before { + content: "\e570"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-shopify:before { + content: "\e057"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-sitrox:before { + content: "\e44a"; } + +.fa-sketch:before { + content: "\f7c6"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f198"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-sourcetree:before { + content: "\f7d3"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-speaker-deck:before { + content: "\f83c"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-square-font-awesome:before { + content: "\f425"; } + +.fa-square-font-awesome-stroke:before { + content: "\f35c"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-stackpath:before { + content: "\f842"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-suse:before { + content: "\f7d6"; } + +.fa-swift:before { + content: "\f8e1"; } + +.fa-symfony:before { + content: "\f83d"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f2c6"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-think-peaks:before { + content: "\f731"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-ubuntu:before { + content: "\f7df"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-umbraco:before { + content: "\f8e8"; } + +.fa-uncharted:before { + content: "\e084"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-unity:before { + content: "\e049"; } + +.fa-unsplash:before { + content: "\e07c"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-ups:before { + content: "\f7e0"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-usps:before { + content: "\f7e1"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-watchman-monitoring:before { + content: "\e087"; } + +.fa-waze:before { + content: "\f83f"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wirsindhandwerk:before { + content: "\e2d0"; } + +.fa-wsh:before { + content: "\e2d0"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-wizards-of-the-coast:before { + content: "\f730"; } + +.fa-wodu:before { + content: "\e088"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-yammer:before { + content: "\f840"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-yarn:before { + content: "\f7e3"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-zhihu:before { + content: "\f63f"; } +:root, :host { + --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("1e21o67/fa-regular-400.woff2") format("woff2"), url("1e21o67/fa-regular-400.ttf") format("truetype"); } + +.far, +.fa-regular { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } +:root, :host { + --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("1e21o67/fa-solid-900.woff2") format("woff2"), url("1e21o67/fa-solid-900.ttf") format("truetype"); } + +.fas, +.fa-solid { + font-family: 'Font Awesome 6 Free'; + font-weight: 900; } +@font-face { + font-family: "Font Awesome 5 Brands"; + font-display: block; + font-weight: 400; + src: url("1e21o67/fa-brands-400.woff2") format("woff2"), url("1e21o67/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: "Font Awesome 5 Free"; + font-display: block; + font-weight: 900; + src: url("1e21o67/fa-solid-900.woff2") format("woff2"), url("1e21o67/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: "Font Awesome 5 Free"; + font-display: block; + font-weight: 400; + src: url("1e21o67/fa-regular-400.woff2") format("woff2"), url("1e21o67/fa-regular-400.ttf") format("truetype"); } +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("1e21o67/fa-solid-900.woff2") format("woff2"), url("1e21o67/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("1e21o67/fa-brands-400.woff2") format("woff2"), url("1e21o67/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("1e21o67/fa-regular-400.woff2") format("woff2"), url("1e21o67/fa-regular-400.ttf") format("truetype"); + unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; } + +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("1e21o67/fa-v4compatibility.woff2") format("woff2"), url("1e21o67/fa-v4compatibility.ttf") format("truetype"); + unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F250,U+F252,U+F27A; } diff --git a/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/latex-fontsize.css b/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/latex-fontsize.css new file mode 100644 index 00000000..45545ecf --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-contrib/fontawesome6-0.1.0/latex-fontsize.css @@ -0,0 +1,30 @@ +.fa-tiny { + font-size: 0.5em; +} +.fa-scriptsize { + font-size: 0.7em; +} +.fa-footnotesize { + font-size: 0.8em; +} +.fa-small { + font-size: 0.9em; +} +.fa-normalsize { + font-size: 1em; +} +.fa-large { + font-size: 1.2em; +} +.fa-Large { + font-size: 1.5em; +} +.fa-LARGE { + font-size: 1.75em; +} +.fa-huge { + font-size: 2em; +} +.fa-Huge { + font-size: 2.5em; +} diff --git a/pr-preview/pr-51/site_libs/quarto-diagram/mermaid-init.js b/pr-preview/pr-51/site_libs/quarto-diagram/mermaid-init.js new file mode 100644 index 00000000..42129b4e --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-diagram/mermaid-init.js @@ -0,0 +1,266 @@ +// mermaid-init.js +// Initializes the quarto-mermaid JS runtime +// +// Copyright (C) 2022 Posit Software, PBC + +/** + * String.prototype.replaceAll() polyfill + * https://gomakethings.com/how-to-replace-a-section-of-a-string-with-another-one-with-vanilla-js/ + * @author Chris Ferdinandi + * @license MIT + */ +if (!String.prototype.replaceAll) { + String.prototype.replaceAll = function (str, newStr) { + // If a regex pattern + if ( + Object.prototype.toString.call(str).toLowerCase() === "[object regexp]" + ) { + return this.replace(str, newStr); + } + + // If a string + return this.replace(new RegExp(str, "g"), newStr); + }; +} + +const mermaidOpts = { + startOnLoad: false, +}; +// this CSS is adapted from +// mkdocs-material +// Copyright (c) 2016-2022 Martin Donath + +const defaultCSS = + '.label text {fill: var(--mermaid-fg-color);}.node circle, .node ellipse, .node path, .node polygon, .node rect {fill: var(--mermaid-node-bg-color);stroke: var(--mermaid-node-fg-color);}marker {fill: var(--mermaid-edge-color) !important;}.edgeLabel .label rect {fill: #0000;}.label {color: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}.label foreignObject {line-height: normal;overflow: visible;}.label div .edgeLabel {color: var(--mermaid-label-fg-color);}.edgeLabel, .edgeLabel rect, .label div .edgeLabel {background-color: var(--mermaid-label-bg-color);}.edgeLabel, .edgeLabel rect {fill: var(--mermaid-label-bg-color);color: var(--mermaid-edge-color);}.edgePath .path, .flowchart-link {stroke: var(--mermaid-edge-color);}.edgePath .arrowheadPath {fill: var(--mermaid-edge-color);stroke: none;}.cluster rect {fill: var(--mermaid-fg-color--lightest);stroke: var(--mermaid-fg-color--lighter);}.cluster span {color: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}defs #flowchart-circleEnd, defs #flowchart-circleStart, defs #flowchart-crossEnd, defs #flowchart-crossStart, defs #flowchart-pointEnd, defs #flowchart-pointStart {stroke: none;}g.classGroup line, g.classGroup rect {fill: var(--mermaid-node-bg-color);stroke: var(--mermaid-node-fg-color);}g.classGroup text {fill: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}.classLabel .box {fill: var(--mermaid-label-bg-color);background-color: var(--mermaid-label-bg-color);opacity: 1;}.classLabel .label {fill: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}.node .divider {stroke: var(--mermaid-node-fg-color);}.relation {stroke: var(--mermaid-edge-color);}.cardinality {fill: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}.cardinality text {fill: inherit !important;}defs #classDiagram-compositionEnd, defs #classDiagram-compositionStart, defs #classDiagram-dependencyEnd, defs #classDiagram-dependencyStart, defs #classDiagram-extensionEnd, defs #classDiagram-extensionStart {fill: var(--mermaid-edge-color) !important;stroke: var(--mermaid-edge-color) !important;}defs #classDiagram-aggregationEnd, defs #classDiagram-aggregationStart {fill: var(--mermaid-label-bg-color) !important;stroke: var(--mermaid-edge-color) !important;}g.stateGroup rect {fill: var(--mermaid-node-bg-color);stroke: var(--mermaid-node-fg-color);}g.stateGroup .state-title {fill: var(--mermaid-label-fg-color) !important;font-family: var(--mermaid-font-family);}g.stateGroup .composit {fill: var(--mermaid-label-bg-color);}.nodeLabel {color: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}.node circle.state-end, .node circle.state-start, .start-state {fill: var(--mermaid-edge-color);stroke: none;}.end-state-inner, .end-state-outer {fill: var(--mermaid-edge-color);}.end-state-inner, .node circle.state-end {stroke: var(--mermaid-label-bg-color);}.transition {stroke: var(--mermaid-edge-color);}[id^="state-fork"] rect, [id^="state-join"] rect {fill: var(--mermaid-edge-color) !important;stroke: none !important;}.statediagram-cluster.statediagram-cluster .inner {fill: var(--mermaid-bg-color);}.statediagram-cluster rect {fill: var(--mermaid-node-bg-color);stroke: var(--mermaid-node-fg-color);}.statediagram-state rect.divider {fill: var(--mermaid-fg-color--lightest);stroke: var(--mermaid-fg-color--lighter);}defs #statediagram-barbEnd {stroke: var(--mermaid-edge-color);}.entityBox {fill: var(--mermaid-label-bg-color);stroke: var(--mermaid-node-fg-color);}.entityLabel {fill: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}.relationshipLabelBox {fill: var(--mermaid-label-bg-color);fill-opacity: 1;background-color: var(--mermaid-label-bg-color);opacity: 1;}.relationshipLabel {fill: var(--mermaid-label-fg-color);}.relationshipLine {stroke: var(--mermaid-edge-color);}defs #ONE_OR_MORE_END *, defs #ONE_OR_MORE_START *, defs #ONLY_ONE_END *, defs #ONLY_ONE_START *, defs #ZERO_OR_MORE_END *, defs #ZERO_OR_MORE_START *, defs #ZERO_OR_ONE_END *, defs #ZERO_OR_ONE_START * {stroke: var(--mermaid-edge-color) !important;}.actor, defs #ZERO_OR_MORE_END circle, defs #ZERO_OR_MORE_START circle {fill: var(--mermaid-label-bg-color);}.actor {stroke: var(--mermaid-node-fg-color);}text.actor > tspan {fill: var(--mermaid-label-fg-color);font-family: var(--mermaid-font-family);}line {stroke: var(--mermaid-fg-color--lighter);}.messageLine0, .messageLine1 {stroke: var(--mermaid-edge-color);}.loopText > tspan, .messageText, .noteText > tspan {fill: var(--mermaid-edge-color);stroke: none;font-family: var(--mermaid-font-family) !important;}.noteText > tspan {fill: #000;}#arrowhead path {fill: var(--mermaid-edge-color);stroke: none;}.loopLine {stroke: var(--mermaid-node-fg-color);}.labelBox, .loopLine {fill: var(--mermaid-node-bg-color);}.labelBox {stroke: none;}.labelText, .labelText > span {fill: var(--mermaid-node-fg-color);font-family: var(--mermaid-font-family);}'; + +const mermaidThemeEl = document.querySelector('meta[name="mermaid-theme"]'); +if (mermaidThemeEl) { + mermaidOpts.theme = mermaidThemeEl.content; +} else { + mermaidOpts.themeCSS = defaultCSS; +} + +mermaid.initialize(mermaidOpts); + +const _quartoMermaid = { + // NB: there's effectively a copy of this function + // in `core/svg.ts`. + // if you change something here, you must keep it consistent there as well. + setSvgSize(svg) { + const { widthInPoints, heightInPoints, explicitHeight, explicitWidth } = + this.resolveSize(svg); + + if (explicitWidth && explicitHeight) { + svg.setAttribute("width", widthInPoints); + svg.setAttribute("height", heightInPoints); + svg.style.maxWidth = null; // remove mermaid's default max-width + } else { + if (explicitWidth) { + svg.style.maxWidth = `${widthInPoints}px`; + } + if (explicitHeight) { + svg.style.maxHeight = `${heightInPoints}px`; + } + } + }, + + // NB: there's effectively a copy of this function + // in `core/svg.ts`. + // if you change something here, you must keep it consistent there as well. + makeResponsive(svg) { + const width = svg.getAttribute("width"); + if (width === null) { + throw new Error("Couldn't find SVG width"); + } + const numWidth = Number(width.slice(0, -2)); + + if (numWidth > 650) { + changed = true; + svg.setAttribute("width", "100%"); + svg.removeAttribute("height"); + } + }, + + // NB: there's effectively a copy of this function + // in `core/svg.ts`. + // if you change something here, you must keep it consistent there as well. + fixupAlignment(svg, align) { + let style = svg.getAttribute("style") || ""; + + switch (align) { + case "left": + style = `${style}; display: block; margin: auto auto auto 0`; + break; + case "right": + style = `${style}; display: block; margin: auto 0 auto auto`; + break; + case "center": + style = `${style}; display: block; margin: auto auto auto auto`; + break; + } + svg.setAttribute("style", style); + }, + + resolveOptions(svgEl) { + return svgEl.parentElement.parentElement.parentElement.parentElement + .dataset; + }, + + // NB: there's effectively a copy of this function + // in our mermaid runtime in `core/svg.ts`. + // if you change something here, you must keep it consistent there as well. + resolveSize(svgEl) { + const inInches = (size) => { + if (size.endsWith("in")) { + return Number(size.slice(0, -2)); + } + if (size.endsWith("pt") || size.endsWith("px")) { + // assume 96 dpi for now + return Number(size.slice(0, -2)) / 96; + } + return Number(size); + }; + + // these are figWidth and figHeight on purpose, + // because data attributes are translated to camelCase by the DOM API + const kFigWidth = "figWidth", + kFigHeight = "figHeight"; + const options = this.resolveOptions(svgEl); + const width = svgEl.getAttribute("width"); + const height = svgEl.getAttribute("height"); + if (!width || !height) { + // attempt to resolve figure dimensions via viewBox + throw new Error("Internal error: couldn't find figure dimensions"); + } + const getViewBox = () => { + const vb = svgEl.attributes.getNamedItem("viewBox").value; // do it the roundabout way so that viewBox isn't dropped by deno_dom and text/html + if (!vb) return undefined; + const lst = vb.trim().split(" ").map(Number); + if (lst.length !== 4) return undefined; + if (lst.some(isNaN)) return undefined; + return lst; + }; + + let svgWidthInInches, svgHeightInInches; + + if ( + (width.slice(0, -2) === "pt" && height.slice(0, -2) === "pt") || + (width.slice(0, -2) === "px" && height.slice(0, -2) === "px") || + (!isNaN(Number(width)) && !isNaN(Number(height))) + ) { + // we assume 96 dpi which is generally what seems to be used. + svgWidthInInches = Number(width.slice(0, -2)) / 96; + svgHeightInInches = Number(height.slice(0, -2)) / 96; + } + const viewBox = getViewBox(); + if (viewBox !== undefined) { + // assume width and height come from viewbox. + const [_mx, _my, vbWidth, vbHeight] = viewBox; + svgWidthInInches = vbWidth / 96; + svgHeightInInches = vbHeight / 96; + } else { + throw new Error( + "Internal Error: Couldn't resolve width and height of SVG" + ); + } + const svgWidthOverHeight = svgWidthInInches / svgHeightInInches; + let widthInInches, heightInInches; + + if (options[kFigWidth] && options[kFigHeight]) { + // both were prescribed, so just go with them + widthInInches = inInches(String(options[kFigWidth])); + heightInInches = inInches(String(options[kFigHeight])); + } else if (options[kFigWidth]) { + // we were only given width, use that and adjust height based on aspect ratio; + widthInInches = inInches(String(options[kFigWidth])); + heightInInches = widthInInches / svgWidthOverHeight; + } else if (options[kFigHeight]) { + // we were only given height, use that and adjust width based on aspect ratio; + heightInInches = inInches(String(options[kFigHeight])); + widthInInches = heightInInches * svgWidthOverHeight; + } else { + // we were not given either, use svg's prescribed height + heightInInches = svgHeightInInches; + widthInInches = svgWidthInInches; + } + + return { + widthInInches, + heightInInches, + widthInPoints: Math.round(widthInInches * 96), + heightInPoints: Math.round(heightInInches * 96), + explicitWidth: options?.[kFigWidth] !== undefined, + explicitHeight: options?.[kFigHeight] !== undefined, + }; + }, + + postProcess(svg) { + const options = this.resolveOptions(svg); + if ( + options.responsive && + options["figWidth"] === undefined && + options["figHeight"] === undefined + ) { + this.makeResponsive(svg); + } else { + this.setSvgSize(svg); + } + if (options["reveal"]) { + this.fixupAlignment(svg, options["figAlign"] || "center"); + } + + // forward align attributes to the correct parent dif + // so that the svg figure is aligned correctly + const div = svg.parentElement.parentElement.parentElement; + const align = div.parentElement.parentElement.dataset.layoutAlign; + if (align) { + div.classList.remove("quarto-figure-left"); + div.classList.remove("quarto-figure-center"); + div.classList.remove("quarto-figure-right"); + div.classList.add(`quarto-figure-${align}`); + } + }, +}; + +// deno-lint-ignore no-window-prefix +window.addEventListener( + "load", + async function () { + let i = 0; + // we need pre because of whitespace preservation + for (const el of Array.from(document.querySelectorAll("pre.mermaid-js"))) { + //   doesn't appear to be treated as whitespace by mermaid + // so we replace it with a space. + const text = el.innerText.replaceAll(" ", " "); + const { svg: output } = await mermaid.mermaidAPI.render( + `mermaid-${++i}`, + text, + el + ); + el.innerHTML = output; + if (el.dataset.label) { + // patch mermaid's emitted style + const svg = el.firstChild; + const style = svg.querySelector("style"); + style.innerHTML = style.innerHTML.replaceAll( + `#${svg.id}`, + `#${el.dataset.label}` + ); + svg.id = el.dataset.label; + delete el.dataset.label; + } + + const svg = el.querySelector("svg"); + const parent = el.parentElement; + parent.removeChild(el); + parent.appendChild(svg); + svg.classList.add("mermaid-js"); + } + for (const svgEl of Array.from( + document.querySelectorAll("svg.mermaid-js") + )) { + _quartoMermaid.postProcess(svgEl); + } + }, + false +); diff --git a/pr-preview/pr-51/site_libs/quarto-diagram/mermaid.css b/pr-preview/pr-51/site_libs/quarto-diagram/mermaid.css new file mode 100644 index 00000000..9f8bb7c7 --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-diagram/mermaid.css @@ -0,0 +1,13 @@ +.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: "trebuchet ms", verdana, arial; + font-size: 12px; + background: #ffffde; + border: 1px solid #aaaa33; + border-radius: 2px; + pointer-events: none; + z-index: 1000; +} diff --git a/pr-preview/pr-51/site_libs/quarto-diagram/mermaid.min.js b/pr-preview/pr-51/site_libs/quarto-diagram/mermaid.min.js new file mode 100644 index 00000000..367f2e01 --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-diagram/mermaid.min.js @@ -0,0 +1,1621 @@ +(function(mN,cA){typeof exports=="object"&&typeof module<"u"?module.exports=cA():typeof define=="function"&&define.amd?define(cA):(mN=typeof globalThis<"u"?globalThis:mN||self,mN.mermaid=cA())})(this,function(){"use strict";function mN(i){for(var a=[],f=1;f=f?a:""+Array(f+1-w.length).join(p)+a},a5t=function(a){var f=-a.utcOffset(),p=Math.abs(f),w=Math.floor(p/60),y=p%60;return(f<=0?"+":"-")+Ffe(w,2,"0")+":"+Ffe(y,2,"0")},o5t=function i(a,f){if(a.date()1)return i(b[0])}else{var E=a.name;NE[E]=a,w=E}return!p&&w&&(kN=w),w||!p&&kN},ru=function(a,f){if(jfe(a))return a.clone();var p=typeof f=="object"?f:{};return p.date=a,p.args=arguments,new cU(p)},f5t=function(a,f){return ru(a,{locale:f.$L,utc:f.$u,x:f.$x,$offset:f.$offset})},tl=h5t;tl.l=oU,tl.i=jfe,tl.w=f5t;var d5t=function(a){var f=a.date,p=a.utc;if(f===null)return new Date(NaN);if(tl.u(f))return new Date;if(f instanceof Date)return new Date(f);if(typeof f=="string"&&!/Z$/i.test(f)){var w=f.match(r5t);if(w){var y=w[2]-1||0,b=(w[7]||"0").substring(0,3);return p?new Date(Date.UTC(w[1],y,w[3]||1,w[4]||0,w[5]||0,w[6]||0,b)):new Date(w[1],y,w[3]||1,w[4]||0,w[5]||0,w[6]||0,b)}}return new Date(f)},cU=function(){function i(f){this.$L=oU(f.locale,null,!0),this.parse(f)}var a=i.prototype;return a.parse=function(p){this.$d=d5t(p),this.$x=p.x||{},this.init()},a.init=function(){var p=this.$d;this.$y=p.getFullYear(),this.$M=p.getMonth(),this.$D=p.getDate(),this.$W=p.getDay(),this.$H=p.getHours(),this.$m=p.getMinutes(),this.$s=p.getSeconds(),this.$ms=p.getMilliseconds()},a.$utils=function(){return tl},a.isValid=function(){return this.$d.toString()!==yLe},a.isSame=function(p,w){var y=ru(p);return this.startOf(w)<=y&&y<=this.endOf(w)},a.isAfter=function(p,w){return ru(p){},debug:(...i)=>{},info:(...i)=>{},warn:(...i)=>{},error:(...i)=>{},fatal:(...i)=>{}},$fe=function(i="fatal"){let a=c5.fatal;typeof i=="string"?(i=i.toLowerCase(),i in c5&&(a=c5[i])):typeof i=="number"&&(a=i),Fe.trace=()=>{},Fe.debug=()=>{},Fe.info=()=>{},Fe.warn=()=>{},Fe.error=()=>{},Fe.fatal=()=>{},a<=c5.fatal&&(Fe.fatal=console.error?console.error.bind(console,Gb("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",Gb("FATAL"))),a<=c5.error&&(Fe.error=console.error?console.error.bind(console,Gb("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",Gb("ERROR"))),a<=c5.warn&&(Fe.warn=console.warn?console.warn.bind(console,Gb("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",Gb("WARN"))),a<=c5.info&&(Fe.info=console.info?console.info.bind(console,Gb("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",Gb("INFO"))),a<=c5.debug&&(Fe.debug=console.debug?console.debug.bind(console,Gb("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Gb("DEBUG"))),a<=c5.trace&&(Fe.trace=console.debug?console.debug.bind(console,Gb("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Gb("TRACE")))},Gb=i=>`%c${ru().format("ss.SSS")} : ${i} : `;var Wk=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function xLe(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var Hfe={};Object.defineProperty(Hfe,"__esModule",{value:!0});var u5=Hfe.sanitizeUrl=void 0,g5t=/^([^\w]*)(javascript|data|vbscript)/im,p5t=/&#(\w+)(^\w|;)?/g,b5t=/&(newline|tab);/gi,v5t=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,w5t=/^.+(:|:)/gim,m5t=[".","/"];function y5t(i){return m5t.indexOf(i[0])>-1}function k5t(i){return i.replace(p5t,function(a,f){return String.fromCharCode(f)})}function x5t(i){var a=k5t(i||"").replace(b5t,"").replace(v5t,"").trim();if(!a)return"about:blank";if(y5t(a))return a;var f=a.match(w5t);if(!f)return a;var p=f[0];return g5t.test(p)?"about:blank":a}u5=Hfe.sanitizeUrl=x5t;function uU(i,a){return i==null||a==null?NaN:ia?1:i>=a?0:NaN}function E5t(i,a){return i==null||a==null?NaN:ai?1:a>=i?0:NaN}function zfe(i){let a,f,p;i.length!==2?(a=uU,f=(E,S)=>uU(i(E),S),p=(E,S)=>i(E)-S):(a=i===uU||i===E5t?i:T5t,f=i,p=i);function w(E,S,N=0,B=E.length){if(N>>1;f(E[R],S)<0?N=R+1:B=R}while(N>>1;f(E[R],S)<=0?N=R+1:B=R}while(NN&&p(E[R-1],S)>-p(E[R],S)?R-1:R}return{left:w,center:b,right:y}}function T5t(){return 0}function _5t(i){return i===null?NaN:+i}const C5t=zfe(uU).right;zfe(_5t).center;const S5t=C5t;class ELe extends Map{constructor(a,f=M5t){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:f}}),a!=null)for(const[p,w]of a)this.set(p,w)}get(a){return super.get(TLe(this,a))}has(a){return super.has(TLe(this,a))}set(a,f){return super.set(A5t(this,a),f)}delete(a){return super.delete(L5t(this,a))}}function TLe({_intern:i,_key:a},f){const p=a(f);return i.has(p)?i.get(p):f}function A5t({_intern:i,_key:a},f){const p=a(f);return i.has(p)?i.get(p):(i.set(p,f),f)}function L5t({_intern:i,_key:a},f){const p=a(f);return i.has(p)&&(f=i.get(p),i.delete(p)),f}function M5t(i){return i!==null&&typeof i=="object"?i.valueOf():i}var Gfe=Math.sqrt(50),qfe=Math.sqrt(10),Vfe=Math.sqrt(2);function D5t(i,a,f){var p,w=-1,y,b,E;if(a=+a,i=+i,f=+f,i===a&&f>0)return[i];if((p=a0){let S=Math.round(i/E),N=Math.round(a/E);for(S*Ea&&--N,b=new Array(y=N-S+1);++wa&&--N,b=new Array(y=N-S+1);++w=0?(y>=Gfe?10:y>=qfe?5:y>=Vfe?2:1)*Math.pow(10,w):-Math.pow(10,-w)/(y>=Gfe?10:y>=qfe?5:y>=Vfe?2:1)}function Ufe(i,a,f){var p=Math.abs(a-i)/Math.max(0,f),w=Math.pow(10,Math.floor(Math.log(p)/Math.LN10)),y=p/w;return y>=Gfe?w*=10:y>=qfe?w*=5:y>=Vfe&&(w*=2),a=p)&&(f=p);else{let p=-1;for(let w of i)(w=a(w,++p,i))!=null&&(f=w)&&(f=w)}return f}function O5t(i,a){let f;if(a===void 0)for(const p of i)p!=null&&(f>p||f===void 0&&p>=p)&&(f=p);else{let p=-1;for(let w of i)(w=a(w,++p,i))!=null&&(f>w||f===void 0&&w>=w)&&(f=w)}return f}function N5t(i){return i}var lU=1,Wfe=2,Kfe=3,hU=4,CLe=1e-6;function P5t(i){return"translate("+i+",0)"}function B5t(i){return"translate(0,"+i+")"}function R5t(i){return a=>+i(a)}function F5t(i,a){return a=Math.max(0,i.bandwidth()-a*2)/2,i.round()&&(a=Math.round(a)),f=>+i(f)+a}function j5t(){return!this.__axis}function SLe(i,a){var f=[],p=null,w=null,y=6,b=6,E=3,S=typeof window<"u"&&window.devicePixelRatio>1?0:.5,N=i===lU||i===hU?-1:1,B=i===hU||i===Wfe?"x":"y",R=i===lU||i===Kfe?P5t:B5t;function j($){var V=p??(a.ticks?a.ticks.apply(a,f):a.domain()),Q=w??(a.tickFormat?a.tickFormat.apply(a,f):N5t),oe=Math.max(y,0)+E,ce=a.range(),se=+ce[0]+S,ge=+ce[ce.length-1]+S,ye=(a.bandwidth?F5t:R5t)(a.copy(),S),ke=$.selection?$.selection():$,Ae=ke.selectAll(".domain").data([null]),de=ke.selectAll(".tick").data(V,a).order(),ve=de.exit(),te=de.enter().append("g").attr("class","tick"),xe=de.select("line"),De=de.select("text");Ae=Ae.merge(Ae.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),de=de.merge(te),xe=xe.merge(te.append("line").attr("stroke","currentColor").attr(B+"2",N*y)),De=De.merge(te.append("text").attr("fill","currentColor").attr(B,N*oe).attr("dy",i===lU?"0em":i===Kfe?"0.71em":"0.32em")),$!==ke&&(Ae=Ae.transition($),de=de.transition($),xe=xe.transition($),De=De.transition($),ve=ve.transition($).attr("opacity",CLe).attr("transform",function(he){return isFinite(he=ye(he))?R(he+S):this.getAttribute("transform")}),te.attr("opacity",CLe).attr("transform",function(he){var Ie=this.parentNode.__axis;return R((Ie&&isFinite(Ie=Ie(he))?Ie:ye(he))+S)})),ve.remove(),Ae.attr("d",i===hU||i===Wfe?b?"M"+N*b+","+se+"H"+S+"V"+ge+"H"+N*b:"M"+S+","+se+"V"+ge:b?"M"+se+","+N*b+"V"+S+"H"+ge+"V"+N*b:"M"+se+","+S+"H"+ge),de.attr("opacity",1).attr("transform",function(he){return R(ye(he)+S)}),xe.attr(B+"2",N*y),De.attr(B,N*oe).text(Q),ke.filter(j5t).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",i===Wfe?"start":i===hU?"end":"middle"),ke.each(function(){this.__axis=ye})}return j.scale=function($){return arguments.length?(a=$,j):a},j.ticks=function(){return f=Array.from(arguments),j},j.tickArguments=function($){return arguments.length?(f=$==null?[]:Array.from($),j):f.slice()},j.tickValues=function($){return arguments.length?(p=$==null?null:Array.from($),j):p&&p.slice()},j.tickFormat=function($){return arguments.length?(w=$,j):w},j.tickSize=function($){return arguments.length?(y=b=+$,j):y},j.tickSizeInner=function($){return arguments.length?(y=+$,j):y},j.tickSizeOuter=function($){return arguments.length?(b=+$,j):b},j.tickPadding=function($){return arguments.length?(E=+$,j):E},j.offset=function($){return arguments.length?(S=+$,j):S},j}function $5t(i){return SLe(lU,i)}function H5t(i){return SLe(Kfe,i)}var z5t={value:()=>{}};function ALe(){for(var i=0,a=arguments.length,f={},p;i=0&&(p=f.slice(w+1),f=f.slice(0,w)),f&&!a.hasOwnProperty(f))throw new Error("unknown type: "+f);return{type:f,name:p}})}fU.prototype=ALe.prototype={constructor:fU,on:function(i,a){var f=this._,p=G5t(i+"",f),w,y=-1,b=p.length;if(arguments.length<2){for(;++y0)for(var f=new Array(w),p=0,w,y;p=0&&(a=i.slice(0,f))!=="xmlns"&&(i=i.slice(f+1)),MLe.hasOwnProperty(a)?{space:MLe[a],local:i}:i}function V5t(i){return function(){var a=this.ownerDocument,f=this.namespaceURI;return f===Yfe&&a.documentElement.namespaceURI===Yfe?a.createElement(i):a.createElementNS(f,i)}}function U5t(i){return function(){return this.ownerDocument.createElementNS(i.space,i.local)}}function DLe(i){var a=dU(i);return(a.local?U5t:V5t)(a)}function W5t(){}function Xfe(i){return i==null?W5t:function(){return this.querySelector(i)}}function K5t(i){typeof i!="function"&&(i=Xfe(i));for(var a=this._groups,f=a.length,p=new Array(f),w=0;w=ge&&(ge=se+1);!(ke=oe[ge])&&++ge=0;)(b=p[w])&&(y&&b.compareDocumentPosition(y)^4&&y.parentNode.insertBefore(b,y),y=b);return this}function w6t(i){i||(i=m6t);function a(R,j){return R&&j?i(R.__data__,j.__data__):!R-!j}for(var f=this._groups,p=f.length,w=new Array(p),y=0;ya?1:i>=a?0:NaN}function y6t(){var i=arguments[0];return arguments[0]=this,i.apply(null,arguments),this}function k6t(){return Array.from(this)}function x6t(){for(var i=this._groups,a=0,f=i.length;a1?this.each((a==null?O6t:typeof a=="function"?P6t:N6t)(i,a,f??"")):gA(this.node(),i)}function gA(i,a){return i.style.getPropertyValue(a)||RLe(i).getComputedStyle(i,null).getPropertyValue(a)}function R6t(i){return function(){delete this[i]}}function F6t(i,a){return function(){this[i]=a}}function j6t(i,a){return function(){var f=a.apply(this,arguments);f==null?delete this[i]:this[i]=f}}function $6t(i,a){return arguments.length>1?this.each((a==null?R6t:typeof a=="function"?j6t:F6t)(i,a)):this.node()[i]}function FLe(i){return i.trim().split(/^|\s+/)}function Qfe(i){return i.classList||new jLe(i)}function jLe(i){this._node=i,this._names=FLe(i.getAttribute("class")||"")}jLe.prototype={add:function(i){var a=this._names.indexOf(i);a<0&&(this._names.push(i),this._node.setAttribute("class",this._names.join(" ")))},remove:function(i){var a=this._names.indexOf(i);a>=0&&(this._names.splice(a,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(i){return this._names.indexOf(i)>=0}};function $Le(i,a){for(var f=Qfe(i),p=-1,w=a.length;++p=0&&(f=a.slice(p+1),a=a.slice(0,p)),{type:a,name:f}})}function gkt(i){return function(){var a=this.__on;if(a){for(var f=0,p=-1,w=a.length,y;f>8&15|a>>4&240,a>>4&15|a&240,(a&15)<<4|a&15,1):f===8?vU(a>>24&255,a>>16&255,a>>8&255,(a&255)/255):f===4?vU(a>>12&15|a>>8&240,a>>8&15|a>>4&240,a>>4&15|a&240,((a&15)<<4|a&15)/255):null):(a=Ekt.exec(i))?new v0(a[1],a[2],a[3],1):(a=Tkt.exec(i))?new v0(a[1]*255/100,a[2]*255/100,a[3]*255/100,1):(a=_kt.exec(i))?vU(a[1],a[2],a[3],a[4]):(a=Ckt.exec(i))?vU(a[1]*255/100,a[2]*255/100,a[3]*255/100,a[4]):(a=Skt.exec(i))?XLe(a[1],a[2]/100,a[3]/100,1):(a=Akt.exec(i))?XLe(a[1],a[2]/100,a[3]/100,a[4]):GLe.hasOwnProperty(i)?ULe(GLe[i]):i==="transparent"?new v0(NaN,NaN,NaN,0):null}function ULe(i){return new v0(i>>16&255,i>>8&255,i&255,1)}function vU(i,a,f,p){return p<=0&&(i=a=f=NaN),new v0(i,a,f,p)}function WLe(i){return i instanceof PE||(i=BE(i)),i?(i=i.rgb(),new v0(i.r,i.g,i.b,i.opacity)):new v0}function e1e(i,a,f,p){return arguments.length===1?WLe(i):new v0(i,a,f,p??1)}function v0(i,a,f,p){this.r=+i,this.g=+a,this.b=+f,this.opacity=+p}EN(v0,e1e,pU(PE,{brighter(i){return i=i==null?bU:Math.pow(bU,i),new v0(this.r*i,this.g*i,this.b*i,this.opacity)},darker(i){return i=i==null?TN:Math.pow(TN,i),new v0(this.r*i,this.g*i,this.b*i,this.opacity)},rgb(){return this},clamp(){return new v0(RE(this.r),RE(this.g),RE(this.b),wU(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:KLe,formatHex:KLe,formatHex8:Dkt,formatRgb:YLe,toString:YLe}));function KLe(){return`#${FE(this.r)}${FE(this.g)}${FE(this.b)}`}function Dkt(){return`#${FE(this.r)}${FE(this.g)}${FE(this.b)}${FE((isNaN(this.opacity)?1:this.opacity)*255)}`}function YLe(){const i=wU(this.opacity);return`${i===1?"rgb(":"rgba("}${RE(this.r)}, ${RE(this.g)}, ${RE(this.b)}${i===1?")":`, ${i})`}`}function wU(i){return isNaN(i)?1:Math.max(0,Math.min(1,i))}function RE(i){return Math.max(0,Math.min(255,Math.round(i)||0))}function FE(i){return i=RE(i),(i<16?"0":"")+i.toString(16)}function XLe(i,a,f,p){return p<=0?i=a=f=NaN:f<=0||f>=1?i=a=NaN:a<=0&&(i=NaN),new $w(i,a,f,p)}function QLe(i){if(i instanceof $w)return new $w(i.h,i.s,i.l,i.opacity);if(i instanceof PE||(i=BE(i)),!i)return new $w;if(i instanceof $w)return i;i=i.rgb();var a=i.r/255,f=i.g/255,p=i.b/255,w=Math.min(a,f,p),y=Math.max(a,f,p),b=NaN,E=y-w,S=(y+w)/2;return E?(a===y?b=(f-p)/E+(f0&&S<1?0:b,new $w(b,E,S,i.opacity)}function Ikt(i,a,f,p){return arguments.length===1?QLe(i):new $w(i,a,f,p??1)}function $w(i,a,f,p){this.h=+i,this.s=+a,this.l=+f,this.opacity=+p}EN($w,Ikt,pU(PE,{brighter(i){return i=i==null?bU:Math.pow(bU,i),new $w(this.h,this.s,this.l*i,this.opacity)},darker(i){return i=i==null?TN:Math.pow(TN,i),new $w(this.h,this.s,this.l*i,this.opacity)},rgb(){var i=this.h%360+(this.h<0)*360,a=isNaN(i)||isNaN(this.s)?0:this.s,f=this.l,p=f+(f<.5?f:1-f)*a,w=2*f-p;return new v0(t1e(i>=240?i-240:i+120,w,p),t1e(i,w,p),t1e(i<120?i+240:i-120,w,p),this.opacity)},clamp(){return new $w(ZLe(this.h),mU(this.s),mU(this.l),wU(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 i=wU(this.opacity);return`${i===1?"hsl(":"hsla("}${ZLe(this.h)}, ${mU(this.s)*100}%, ${mU(this.l)*100}%${i===1?")":`, ${i})`}`}}));function ZLe(i){return i=(i||0)%360,i<0?i+360:i}function mU(i){return Math.max(0,Math.min(1,i||0))}function t1e(i,a,f){return(i<60?a+(f-a)*i/60:i<180?f:i<240?a+(f-a)*(240-i)/60:a)*255}const Okt=Math.PI/180,Nkt=180/Math.PI,yU=18,JLe=.96422,eMe=1,tMe=.82521,nMe=4/29,bA=6/29,rMe=3*bA*bA,Pkt=bA*bA*bA;function iMe(i){if(i instanceof Jy)return new Jy(i.l,i.a,i.b,i.opacity);if(i instanceof l5)return sMe(i);i instanceof v0||(i=WLe(i));var a=s1e(i.r),f=s1e(i.g),p=s1e(i.b),w=n1e((.2225045*a+.7168786*f+.0606169*p)/eMe),y,b;return a===f&&f===p?y=b=w:(y=n1e((.4360747*a+.3850649*f+.1430804*p)/JLe),b=n1e((.0139322*a+.0971045*f+.7141733*p)/tMe)),new Jy(116*w-16,500*(y-w),200*(w-b),i.opacity)}function Bkt(i,a,f,p){return arguments.length===1?iMe(i):new Jy(i,a,f,p??1)}function Jy(i,a,f,p){this.l=+i,this.a=+a,this.b=+f,this.opacity=+p}EN(Jy,Bkt,pU(PE,{brighter(i){return new Jy(this.l+yU*(i??1),this.a,this.b,this.opacity)},darker(i){return new Jy(this.l-yU*(i??1),this.a,this.b,this.opacity)},rgb(){var i=(this.l+16)/116,a=isNaN(this.a)?i:i+this.a/500,f=isNaN(this.b)?i:i-this.b/200;return a=JLe*r1e(a),i=eMe*r1e(i),f=tMe*r1e(f),new v0(i1e(3.1338561*a-1.6168667*i-.4906146*f),i1e(-.9787684*a+1.9161415*i+.033454*f),i1e(.0719453*a-.2289914*i+1.4052427*f),this.opacity)}}));function n1e(i){return i>Pkt?Math.pow(i,1/3):i/rMe+nMe}function r1e(i){return i>bA?i*i*i:rMe*(i-nMe)}function i1e(i){return 255*(i<=.0031308?12.92*i:1.055*Math.pow(i,1/2.4)-.055)}function s1e(i){return(i/=255)<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4)}function Rkt(i){if(i instanceof l5)return new l5(i.h,i.c,i.l,i.opacity);if(i instanceof Jy||(i=iMe(i)),i.a===0&&i.b===0)return new l5(NaN,0()=>i;function aMe(i,a){return function(f){return i+f*a}}function Fkt(i,a,f){return i=Math.pow(i,f),a=Math.pow(a,f)-i,f=1/f,function(p){return Math.pow(i+p*a,f)}}function jkt(i,a){var f=a-i;return f?aMe(i,f>180||f<-180?f-360*Math.round(f/360):f):kU(isNaN(i)?a:i)}function $kt(i){return(i=+i)==1?CN:function(a,f){return f-a?Fkt(a,f,i):kU(isNaN(a)?f:a)}}function CN(i,a){var f=a-i;return f?aMe(i,f):kU(isNaN(i)?a:i)}const xU=function i(a){var f=$kt(a);function p(w,y){var b=f((w=e1e(w)).r,(y=e1e(y)).r),E=f(w.g,y.g),S=f(w.b,y.b),N=CN(w.opacity,y.opacity);return function(B){return w.r=b(B),w.g=E(B),w.b=S(B),w.opacity=N(B),w+""}}return p.gamma=i,p}(1);function Hkt(i,a){a||(a=[]);var f=i?Math.min(a.length,i.length):0,p=a.slice(),w;return function(y){for(w=0;wf&&(y=a.slice(f,y),E[b]?E[b]+=y:E[++b]=y),(p=p[0])===(w=w[0])?E[b]?E[b]+=w:E[++b]=w:(E[++b]=null,S.push({i:b,x:Hw(p,w)})),f=c1e.lastIndex;return f180?B+=360:B-N>180&&(N+=360),j.push({i:R.push(w(R)+"rotate(",null,p)-2,x:Hw(N,B)})):B&&R.push(w(R)+"rotate("+B+p)}function E(N,B,R,j){N!==B?j.push({i:R.push(w(R)+"skewX(",null,p)-2,x:Hw(N,B)}):B&&R.push(w(R)+"skewX("+B+p)}function S(N,B,R,j,$,V){if(N!==R||B!==j){var Q=$.push(w($)+"scale(",null,",",null,")");V.push({i:Q-4,x:Hw(N,R)},{i:Q-2,x:Hw(B,j)})}else(R!==1||j!==1)&&$.push(w($)+"scale("+R+","+j+")")}return function(N,B){var R=[],j=[];return N=i(N),B=i(B),y(N.translateX,N.translateY,B.translateX,B.translateY,R,j),b(N.rotate,B.rotate,R,j),E(N.skewX,B.skewX,R,j),S(N.scaleX,N.scaleY,B.scaleX,B.scaleY,R,j),N=B=null,function($){for(var V=-1,Q=j.length,oe;++V=0&&i._call.call(void 0,a),i=i._next;--vA}function gMe(){jE=(_U=MN.now())+CU,vA=SN=0;try{nxt()}finally{vA=0,ixt(),jE=0}}function rxt(){var i=MN.now(),a=i-_U;a>hMe&&(CU-=a,_U=i)}function ixt(){for(var i,a=TU,f,p=1/0;a;)a._call?(p>a._time&&(p=a._time),i=a,a=a._next):(f=a._next,a._next=null,a=i?i._next=f:TU=f);LN=i,f1e(p)}function f1e(i){if(!vA){SN&&(SN=clearTimeout(SN));var a=i-jE;a>24?(i<1/0&&(SN=setTimeout(gMe,i-MN.now()-CU)),AN&&(AN=clearInterval(AN))):(AN||(_U=MN.now(),AN=setInterval(rxt,hMe)),vA=1,fMe(gMe))}}function pMe(i,a,f){var p=new SU;return a=a==null?0:+a,p.restart(w=>{p.stop(),i(w+a)},a,f),p}var sxt=ALe("start","end","cancel","interrupt"),axt=[],bMe=0,vMe=1,d1e=2,AU=3,wMe=4,g1e=5,LU=6;function MU(i,a,f,p,w,y){var b=i.__transition;if(!b)i.__transition={};else if(f in b)return;oxt(i,f,{name:a,index:p,group:w,on:sxt,tween:axt,time:y.time,delay:y.delay,duration:y.duration,ease:y.ease,timer:null,state:bMe})}function p1e(i,a){var f=zw(i,a);if(f.state>bMe)throw new Error("too late; already scheduled");return f}function e3(i,a){var f=zw(i,a);if(f.state>AU)throw new Error("too late; already running");return f}function zw(i,a){var f=i.__transition;if(!f||!(f=f[a]))throw new Error("transition not found");return f}function oxt(i,a,f){var p=i.__transition,w;p[a]=f,f.timer=dMe(y,0,f.time);function y(N){f.state=vMe,f.timer.restart(b,f.delay,f.time),f.delay<=N&&b(N-f.delay)}function b(N){var B,R,j,$;if(f.state!==vMe)return S();for(B in p)if($=p[B],$.name===f.name){if($.state===AU)return pMe(b);$.state===wMe?($.state=LU,$.timer.stop(),$.on.call("interrupt",i,i.__data__,$.index,$.group),delete p[B]):+Bd1e&&p.state=0&&(a=a.slice(0,f)),!a||a==="start"})}function Fxt(i,a,f){var p,w,y=Rxt(a)?p1e:e3;return function(){var b=y(this,i),E=b.on;E!==p&&(w=(p=E).copy()).on(a,f),b.on=w}}function jxt(i,a){var f=this._id;return arguments.length<2?zw(this.node(),f).on.on(i):this.each(Fxt(f,i,a))}function $xt(i){return function(){var a=this.parentNode;for(var f in this.__transition)if(+f!==i)return;a&&a.removeChild(this)}}function Hxt(){return this.on("end.remove",$xt(this._id))}function zxt(i){var a=this._name,f=this._id;typeof i!="function"&&(i=Xfe(i));for(var p=this._groups,w=p.length,y=new Array(w),b=0;b$E)if(!(Math.abs(B*E-S*N)>$E)||!w)this._+="L"+(this._x1=i)+","+(this._y1=a);else{var j=f-y,$=p-b,V=E*E+S*S,Q=j*j+$*$,oe=Math.sqrt(V),ce=Math.sqrt(R),se=w*Math.tan((v1e-Math.acos((V+R-Q)/(2*oe*ce)))/2),ge=se/ce,ye=se/oe;Math.abs(ge-1)>$E&&(this._+="L"+(i+ge*N)+","+(a+ge*B)),this._+="A"+w+","+w+",0,0,"+ +(B*j>N*$)+","+(this._x1=i+ye*E)+","+(this._y1=a+ye*S)}},arc:function(i,a,f,p,w,y){i=+i,a=+a,f=+f,y=!!y;var b=f*Math.cos(p),E=f*Math.sin(p),S=i+b,N=a+E,B=1^y,R=y?p-w:w-p;if(f<0)throw new Error("negative radius: "+f);this._x1===null?this._+="M"+S+","+N:(Math.abs(this._x1-S)>$E||Math.abs(this._y1-N)>$E)&&(this._+="L"+S+","+N),f&&(R<0&&(R=R%w1e+w1e),R>d8t?this._+="A"+f+","+f+",0,1,"+B+","+(i-b)+","+(a-E)+"A"+f+","+f+",0,1,"+B+","+(this._x1=S)+","+(this._y1=N):R>$E&&(this._+="A"+f+","+f+",0,"+ +(R>=v1e)+","+B+","+(this._x1=i+f*Math.cos(w))+","+(this._y1=a+f*Math.sin(w))))},rect:function(i,a,f,p){this._+="M"+(this._x0=this._x1=+i)+","+(this._y0=this._y1=+a)+"h"+ +f+"v"+ +p+"h"+-f+"Z"},toString:function(){return this._}};function g8t(i){if(!i.ok)throw new Error(i.status+" "+i.statusText);return i.text()}function p8t(i,a){return fetch(i,a).then(g8t)}function b8t(i){return(a,f)=>p8t(a,f).then(p=>new DOMParser().parseFromString(p,i))}var v8t=b8t("image/svg+xml");function w8t(i){return Math.abs(i=Math.round(i))>=1e21?i.toLocaleString("en").replace(/,/g,""):i.toString(10)}function DU(i,a){if((f=(i=a?i.toExponential(a-1):i.toExponential()).indexOf("e"))<0)return null;var f,p=i.slice(0,f);return[p.length>1?p[0]+p.slice(2):p,+i.slice(f+1)]}function wA(i){return i=DU(Math.abs(i)),i?i[1]:NaN}function m8t(i,a){return function(f,p){for(var w=f.length,y=[],b=0,E=i[0],S=0;w>0&&E>0&&(S+E+1>p&&(E=Math.max(1,p-S)),y.push(f.substring(w-=E,w+E)),!((S+=E+1)>p));)E=i[b=(b+1)%i.length];return y.reverse().join(a)}}function y8t(i){return function(a){return a.replace(/[0-9]/g,function(f){return i[+f]})}}var k8t=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function IU(i){if(!(a=k8t.exec(i)))throw new Error("invalid format: "+i);var a;return new k1e({fill:a[1],align:a[2],sign:a[3],symbol:a[4],zero:a[5],width:a[6],comma:a[7],precision:a[8]&&a[8].slice(1),trim:a[9],type:a[10]})}IU.prototype=k1e.prototype;function k1e(i){this.fill=i.fill===void 0?" ":i.fill+"",this.align=i.align===void 0?">":i.align+"",this.sign=i.sign===void 0?"-":i.sign+"",this.symbol=i.symbol===void 0?"":i.symbol+"",this.zero=!!i.zero,this.width=i.width===void 0?void 0:+i.width,this.comma=!!i.comma,this.precision=i.precision===void 0?void 0:+i.precision,this.trim=!!i.trim,this.type=i.type===void 0?"":i.type+""}k1e.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function x8t(i){e:for(var a=i.length,f=1,p=-1,w;f0&&(p=0);break}return p>0?i.slice(0,p)+i.slice(w+1):i}var xMe;function E8t(i,a){var f=DU(i,a);if(!f)return i+"";var p=f[0],w=f[1],y=w-(xMe=Math.max(-8,Math.min(8,Math.floor(w/3)))*3)+1,b=p.length;return y===b?p:y>b?p+new Array(y-b+1).join("0"):y>0?p.slice(0,y)+"."+p.slice(y):"0."+new Array(1-y).join("0")+DU(i,Math.max(0,a+y-1))[0]}function EMe(i,a){var f=DU(i,a);if(!f)return i+"";var p=f[0],w=f[1];return w<0?"0."+new Array(-w).join("0")+p:p.length>w+1?p.slice(0,w+1)+"."+p.slice(w+1):p+new Array(w-p.length+2).join("0")}const TMe={"%":(i,a)=>(i*100).toFixed(a),b:i=>Math.round(i).toString(2),c:i=>i+"",d:w8t,e:(i,a)=>i.toExponential(a),f:(i,a)=>i.toFixed(a),g:(i,a)=>i.toPrecision(a),o:i=>Math.round(i).toString(8),p:(i,a)=>EMe(i*100,a),r:EMe,s:E8t,X:i=>Math.round(i).toString(16).toUpperCase(),x:i=>Math.round(i).toString(16)};function _Me(i){return i}var CMe=Array.prototype.map,SMe=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function T8t(i){var a=i.grouping===void 0||i.thousands===void 0?_Me:m8t(CMe.call(i.grouping,Number),i.thousands+""),f=i.currency===void 0?"":i.currency[0]+"",p=i.currency===void 0?"":i.currency[1]+"",w=i.decimal===void 0?".":i.decimal+"",y=i.numerals===void 0?_Me:y8t(CMe.call(i.numerals,String)),b=i.percent===void 0?"%":i.percent+"",E=i.minus===void 0?"−":i.minus+"",S=i.nan===void 0?"NaN":i.nan+"";function N(R){R=IU(R);var j=R.fill,$=R.align,V=R.sign,Q=R.symbol,oe=R.zero,ce=R.width,se=R.comma,ge=R.precision,ye=R.trim,ke=R.type;ke==="n"?(se=!0,ke="g"):TMe[ke]||(ge===void 0&&(ge=12),ye=!0,ke="g"),(oe||j==="0"&&$==="=")&&(oe=!0,j="0",$="=");var Ae=Q==="$"?f:Q==="#"&&/[boxX]/.test(ke)?"0"+ke.toLowerCase():"",de=Q==="$"?p:/[%p]/.test(ke)?b:"",ve=TMe[ke],te=/[defgprs%]/.test(ke);ge=ge===void 0?6:/[gprs]/.test(ke)?Math.max(1,Math.min(21,ge)):Math.max(0,Math.min(20,ge));function xe(De){var he=Ae,Ie=de,ee,rt,me;if(ke==="c")Ie=ve(De)+Ie,De="";else{De=+De;var gt=De<0||1/De<0;if(De=isNaN(De)?S:ve(Math.abs(De),ge),ye&&(De=x8t(De)),gt&&+De==0&&V!=="+"&&(gt=!1),he=(gt?V==="("?V:E:V==="-"||V==="("?"":V)+he,Ie=(ke==="s"?SMe[8+xMe/3]:"")+Ie+(gt&&V==="("?")":""),te){for(ee=-1,rt=De.length;++eeme||me>57){Ie=(me===46?w+De.slice(ee+1):De.slice(ee))+Ie,De=De.slice(0,ee);break}}}se&&!oe&&(De=a(De,1/0));var pe=he.length+De.length+Ie.length,Et=pe>1)+he+De+Ie+Et.slice(pe);break;default:De=Et+he+De+Ie;break}return y(De)}return xe.toString=function(){return R+""},xe}function B(R,j){var $=N((R=IU(R),R.type="f",R)),V=Math.max(-8,Math.min(8,Math.floor(wA(j)/3)))*3,Q=Math.pow(10,-V),oe=SMe[8+V/3];return function(ce){return $(Q*ce)+oe}}return{format:N,formatPrefix:B}}var OU,AMe,LMe;_8t({thousands:",",grouping:[3],currency:["$",""]});function _8t(i){return OU=T8t(i),AMe=OU.format,LMe=OU.formatPrefix,OU}function C8t(i){return Math.max(0,-wA(Math.abs(i)))}function S8t(i,a){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(wA(a)/3)))*3-wA(Math.abs(i)))}function A8t(i,a){return i=Math.abs(i),a=Math.abs(a)-i,Math.max(0,wA(a)-wA(i))+1}function x1e(i,a){switch(arguments.length){case 0:break;case 1:this.range(i);break;default:this.range(a).domain(i);break}return this}const MMe=Symbol("implicit");function DMe(){var i=new ELe,a=[],f=[],p=MMe;function w(y){let b=i.get(y);if(b===void 0){if(p!==MMe)return p;i.set(y,b=a.push(y)-1)}return f[b%f.length]}return w.domain=function(y){if(!arguments.length)return a.slice();a=[],i=new ELe;for(const b of y)i.has(b)||i.set(b,a.push(b)-1);return w},w.range=function(y){return arguments.length?(f=Array.from(y),w):f.slice()},w.unknown=function(y){return arguments.length?(p=y,w):p},w.copy=function(){return DMe(a,f).unknown(p)},x1e.apply(w,arguments),w}function L8t(i){return function(){return i}}function M8t(i){return+i}var IMe=[0,1];function mA(i){return i}function E1e(i,a){return(a-=i=+i)?function(f){return(f-i)/a}:L8t(isNaN(a)?NaN:.5)}function D8t(i,a){var f;return i>a&&(f=i,i=a,a=f),function(p){return Math.max(i,Math.min(a,p))}}function I8t(i,a,f){var p=i[0],w=i[1],y=a[0],b=a[1];return w2?O8t:I8t,S=N=null,R}function R(j){return j==null||isNaN(j=+j)?y:(S||(S=E(i.map(p),a,f)))(p(b(j)))}return R.invert=function(j){return b(w((N||(N=E(a,i.map(p),Hw)))(j)))},R.domain=function(j){return arguments.length?(i=Array.from(j,M8t),B()):i.slice()},R.range=function(j){return arguments.length?(a=Array.from(j),B()):a.slice()},R.rangeRound=function(j){return a=Array.from(j),f=Kkt,B()},R.clamp=function(j){return arguments.length?(b=j?!0:mA,B()):b!==mA},R.interpolate=function(j){return arguments.length?(f=j,B()):f},R.unknown=function(j){return arguments.length?(y=j,R):y},function(j,$){return p=j,w=$,B()}}function NMe(){return N8t()(mA,mA)}function P8t(i,a,f,p){var w=Ufe(i,a,f),y;switch(p=IU(p??",f"),p.type){case"s":{var b=Math.max(Math.abs(i),Math.abs(a));return p.precision==null&&!isNaN(y=S8t(w,b))&&(p.precision=y),LMe(p,b)}case"":case"e":case"g":case"p":case"r":{p.precision==null&&!isNaN(y=A8t(w,Math.max(Math.abs(i),Math.abs(a))))&&(p.precision=y-(p.type==="e"));break}case"f":case"%":{p.precision==null&&!isNaN(y=C8t(w))&&(p.precision=y-(p.type==="%")*2);break}}return AMe(p)}function B8t(i){var a=i.domain;return i.ticks=function(f){var p=a();return D5t(p[0],p[p.length-1],f??10)},i.tickFormat=function(f,p){var w=a();return P8t(w[0],w[w.length-1],f??10,p)},i.nice=function(f){f==null&&(f=10);var p=a(),w=0,y=p.length-1,b=p[w],E=p[y],S,N,B=10;for(E0;){if(N=_Le(b,E,f),N===S)return p[w]=b,p[y]=E,a(p);if(N>0)b=Math.floor(b/N)*N,E=Math.ceil(E/N)*N;else if(N<0)b=Math.ceil(b*N)/N,E=Math.floor(E*N)/N;else break;S=N}return i},i}function PMe(){var i=NMe();return i.copy=function(){return OMe(i,PMe())},x1e.apply(i,arguments),B8t(i)}function R8t(i,a){i=i.slice();var f=0,p=i.length-1,w=i[f],y=i[p],b;return y0))return S;do S.push(N=new Date(+y)),a(y,E),i(y);while(N=b)for(;i(b),!y(b);)b.setTime(b-1)},function(b,E){if(b>=b)if(E<0)for(;++E<=0;)for(;a(b,-1),!y(b););else for(;--E>=0;)for(;a(b,1),!y(b););})},f&&(w.count=function(y,b){return T1e.setTime(+y),_1e.setTime(+b),i(T1e),i(_1e),Math.floor(f(T1e,_1e))},w.every=function(y){return y=Math.floor(y),!isFinite(y)||!(y>0)?null:y>1?w.filter(p?function(b){return p(b)%y===0}:function(b){return w.count(0,b)%y===0}):w}),w}var NU=tg(function(){},function(i,a){i.setTime(+i+a)},function(i,a){return a-i});NU.every=function(i){return i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?tg(function(a){a.setTime(Math.floor(a/i)*i)},function(a,f){a.setTime(+a+f*i)},function(a,f){return(f-a)/i}):NU};const F8t=NU;NU.range;const d5=1e3,t3=d5*60,HE=t3*60,zE=HE*24,C1e=zE*7,BMe=zE*30,S1e=zE*365;var RMe=tg(function(i){i.setTime(i-i.getMilliseconds())},function(i,a){i.setTime(+i+a*d5)},function(i,a){return(a-i)/d5},function(i){return i.getUTCSeconds()});const DN=RMe;RMe.range;var FMe=tg(function(i){i.setTime(i-i.getMilliseconds()-i.getSeconds()*d5)},function(i,a){i.setTime(+i+a*t3)},function(i,a){return(a-i)/t3},function(i){return i.getMinutes()});const PU=FMe;FMe.range;var jMe=tg(function(i){i.setTime(i-i.getMilliseconds()-i.getSeconds()*d5-i.getMinutes()*t3)},function(i,a){i.setTime(+i+a*HE)},function(i,a){return(a-i)/HE},function(i){return i.getHours()});const BU=jMe;jMe.range;var $Me=tg(i=>i.setHours(0,0,0,0),(i,a)=>i.setDate(i.getDate()+a),(i,a)=>(a-i-(a.getTimezoneOffset()-i.getTimezoneOffset())*t3)/zE,i=>i.getDate()-1);const yA=$Me;$Me.range;function GE(i){return tg(function(a){a.setDate(a.getDate()-(a.getDay()+7-i)%7),a.setHours(0,0,0,0)},function(a,f){a.setDate(a.getDate()+f*7)},function(a,f){return(f-a-(f.getTimezoneOffset()-a.getTimezoneOffset())*t3)/C1e})}var kA=GE(0),RU=GE(1),j8t=GE(2),$8t=GE(3),xA=GE(4),H8t=GE(5),z8t=GE(6);kA.range,RU.range,j8t.range,$8t.range,xA.range,H8t.range,z8t.range;var HMe=tg(function(i){i.setDate(1),i.setHours(0,0,0,0)},function(i,a){i.setMonth(i.getMonth()+a)},function(i,a){return a.getMonth()-i.getMonth()+(a.getFullYear()-i.getFullYear())*12},function(i){return i.getMonth()});const FU=HMe;HMe.range;var A1e=tg(function(i){i.setMonth(0,1),i.setHours(0,0,0,0)},function(i,a){i.setFullYear(i.getFullYear()+a)},function(i,a){return a.getFullYear()-i.getFullYear()},function(i){return i.getFullYear()});A1e.every=function(i){return!isFinite(i=Math.floor(i))||!(i>0)?null:tg(function(a){a.setFullYear(Math.floor(a.getFullYear()/i)*i),a.setMonth(0,1),a.setHours(0,0,0,0)},function(a,f){a.setFullYear(a.getFullYear()+f*i)})};const qE=A1e;A1e.range;var zMe=tg(function(i){i.setUTCHours(0,0,0,0)},function(i,a){i.setUTCDate(i.getUTCDate()+a)},function(i,a){return(a-i)/zE},function(i){return i.getUTCDate()-1});const GMe=zMe;zMe.range;function VE(i){return tg(function(a){a.setUTCDate(a.getUTCDate()-(a.getUTCDay()+7-i)%7),a.setUTCHours(0,0,0,0)},function(a,f){a.setUTCDate(a.getUTCDate()+f*7)},function(a,f){return(f-a)/C1e})}var qMe=VE(0),jU=VE(1),G8t=VE(2),q8t=VE(3),EA=VE(4),V8t=VE(5),U8t=VE(6);qMe.range,jU.range,G8t.range,q8t.range,EA.range,V8t.range,U8t.range;var L1e=tg(function(i){i.setUTCMonth(0,1),i.setUTCHours(0,0,0,0)},function(i,a){i.setUTCFullYear(i.getUTCFullYear()+a)},function(i,a){return a.getUTCFullYear()-i.getUTCFullYear()},function(i){return i.getUTCFullYear()});L1e.every=function(i){return!isFinite(i=Math.floor(i))||!(i>0)?null:tg(function(a){a.setUTCFullYear(Math.floor(a.getUTCFullYear()/i)*i),a.setUTCMonth(0,1),a.setUTCHours(0,0,0,0)},function(a,f){a.setUTCFullYear(a.getUTCFullYear()+f*i)})};const IN=L1e;L1e.range;function W8t(i,a,f,p,w,y){const b=[[DN,1,d5],[DN,5,5*d5],[DN,15,15*d5],[DN,30,30*d5],[y,1,t3],[y,5,5*t3],[y,15,15*t3],[y,30,30*t3],[w,1,HE],[w,3,3*HE],[w,6,6*HE],[w,12,12*HE],[p,1,zE],[p,2,2*zE],[f,1,C1e],[a,1,BMe],[a,3,3*BMe],[i,1,S1e]];function E(N,B,R){const j=Boe).right(b,j);if($===b.length)return i.every(Ufe(N/S1e,B/S1e,R));if($===0)return F8t.every(Math.max(Ufe(N,B,R),1));const[V,Q]=b[j/b[$-1][2]53)return null;"w"in ze||(ze.w=1),"Z"in ze?(Lt=D1e(ON(ze.y,0,1)),Ge=Lt.getUTCDay(),Lt=Ge>4||Ge===0?jU.ceil(Lt):jU(Lt),Lt=GMe.offset(Lt,(ze.V-1)*7),ze.y=Lt.getUTCFullYear(),ze.m=Lt.getUTCMonth(),ze.d=Lt.getUTCDate()+(ze.w+6)%7):(Lt=M1e(ON(ze.y,0,1)),Ge=Lt.getDay(),Lt=Ge>4||Ge===0?RU.ceil(Lt):RU(Lt),Lt=yA.offset(Lt,(ze.V-1)*7),ze.y=Lt.getFullYear(),ze.m=Lt.getMonth(),ze.d=Lt.getDate()+(ze.w+6)%7)}else("W"in ze||"U"in ze)&&("w"in ze||(ze.w="u"in ze?ze.u%7:"W"in ze?1:0),Ge="Z"in ze?D1e(ON(ze.y,0,1)).getUTCDay():M1e(ON(ze.y,0,1)).getDay(),ze.m=0,ze.d="W"in ze?(ze.w+6)%7+ze.W*7-(Ge+5)%7:ze.w+ze.U*7-(Ge+6)%7);return"Z"in ze?(ze.H+=ze.Z/100|0,ze.M+=ze.Z%100,D1e(ze)):M1e(ze)}}function ve(Dt,vt,Nt,ze){for(var Xe=0,Lt=vt.length,Ge=Nt.length,Bn,Oe;Xe=Ge)return-1;if(Bn=vt.charCodeAt(Xe++),Bn===37){if(Bn=vt.charAt(Xe++),Oe=ke[Bn in VMe?vt.charAt(Xe++):Bn],!Oe||(ze=Oe(Dt,Nt,ze))<0)return-1}else if(Bn!=Nt.charCodeAt(ze++))return-1}return ze}function te(Dt,vt,Nt){var ze=N.exec(vt.slice(Nt));return ze?(Dt.p=B.get(ze[0].toLowerCase()),Nt+ze[0].length):-1}function xe(Dt,vt,Nt){var ze=$.exec(vt.slice(Nt));return ze?(Dt.w=V.get(ze[0].toLowerCase()),Nt+ze[0].length):-1}function De(Dt,vt,Nt){var ze=R.exec(vt.slice(Nt));return ze?(Dt.w=j.get(ze[0].toLowerCase()),Nt+ze[0].length):-1}function he(Dt,vt,Nt){var ze=ce.exec(vt.slice(Nt));return ze?(Dt.m=se.get(ze[0].toLowerCase()),Nt+ze[0].length):-1}function Ie(Dt,vt,Nt){var ze=Q.exec(vt.slice(Nt));return ze?(Dt.m=oe.get(ze[0].toLowerCase()),Nt+ze[0].length):-1}function ee(Dt,vt,Nt){return ve(Dt,a,vt,Nt)}function rt(Dt,vt,Nt){return ve(Dt,f,vt,Nt)}function me(Dt,vt,Nt){return ve(Dt,p,vt,Nt)}function gt(Dt){return b[Dt.getDay()]}function pe(Dt){return y[Dt.getDay()]}function Et(Dt){return S[Dt.getMonth()]}function wt(Dt){return E[Dt.getMonth()]}function jt(Dt){return w[+(Dt.getHours()>=12)]}function At(Dt){return 1+~~(Dt.getMonth()/3)}function Bt(Dt){return b[Dt.getUTCDay()]}function cn(Dt){return y[Dt.getUTCDay()]}function Nn(Dt){return S[Dt.getUTCMonth()]}function Ot(Dt){return E[Dt.getUTCMonth()]}function oi(Dt){return w[+(Dt.getUTCHours()>=12)]}function kt(Dt){return 1+~~(Dt.getUTCMonth()/3)}return{format:function(Dt){var vt=Ae(Dt+="",ge);return vt.toString=function(){return Dt},vt},parse:function(Dt){var vt=de(Dt+="",!1);return vt.toString=function(){return Dt},vt},utcFormat:function(Dt){var vt=Ae(Dt+="",ye);return vt.toString=function(){return Dt},vt},utcParse:function(Dt){var vt=de(Dt+="",!0);return vt.toString=function(){return Dt},vt}}}var VMe={"-":"",_:" ",0:"0"},td=/^\s*\d+/,Q8t=/^%/,Z8t=/[\\^$*+?|[\]().{}]/g;function zc(i,a,f){var p=i<0?"-":"",w=(p?-i:i)+"",y=w.length;return p+(y[a.toLowerCase(),f]))}function e7t(i,a,f){var p=td.exec(a.slice(f,f+1));return p?(i.w=+p[0],f+p[0].length):-1}function t7t(i,a,f){var p=td.exec(a.slice(f,f+1));return p?(i.u=+p[0],f+p[0].length):-1}function n7t(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.U=+p[0],f+p[0].length):-1}function r7t(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.V=+p[0],f+p[0].length):-1}function i7t(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.W=+p[0],f+p[0].length):-1}function UMe(i,a,f){var p=td.exec(a.slice(f,f+4));return p?(i.y=+p[0],f+p[0].length):-1}function WMe(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.y=+p[0]+(+p[0]>68?1900:2e3),f+p[0].length):-1}function s7t(i,a,f){var p=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(a.slice(f,f+6));return p?(i.Z=p[1]?0:-(p[2]+(p[3]||"00")),f+p[0].length):-1}function a7t(i,a,f){var p=td.exec(a.slice(f,f+1));return p?(i.q=p[0]*3-3,f+p[0].length):-1}function o7t(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.m=p[0]-1,f+p[0].length):-1}function KMe(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.d=+p[0],f+p[0].length):-1}function c7t(i,a,f){var p=td.exec(a.slice(f,f+3));return p?(i.m=0,i.d=+p[0],f+p[0].length):-1}function YMe(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.H=+p[0],f+p[0].length):-1}function u7t(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.M=+p[0],f+p[0].length):-1}function l7t(i,a,f){var p=td.exec(a.slice(f,f+2));return p?(i.S=+p[0],f+p[0].length):-1}function h7t(i,a,f){var p=td.exec(a.slice(f,f+3));return p?(i.L=+p[0],f+p[0].length):-1}function f7t(i,a,f){var p=td.exec(a.slice(f,f+6));return p?(i.L=Math.floor(p[0]/1e3),f+p[0].length):-1}function d7t(i,a,f){var p=Q8t.exec(a.slice(f,f+1));return p?f+p[0].length:-1}function g7t(i,a,f){var p=td.exec(a.slice(f));return p?(i.Q=+p[0],f+p[0].length):-1}function p7t(i,a,f){var p=td.exec(a.slice(f));return p?(i.s=+p[0],f+p[0].length):-1}function XMe(i,a){return zc(i.getDate(),a,2)}function b7t(i,a){return zc(i.getHours(),a,2)}function v7t(i,a){return zc(i.getHours()%12||12,a,2)}function w7t(i,a){return zc(1+yA.count(qE(i),i),a,3)}function QMe(i,a){return zc(i.getMilliseconds(),a,3)}function m7t(i,a){return QMe(i,a)+"000"}function y7t(i,a){return zc(i.getMonth()+1,a,2)}function k7t(i,a){return zc(i.getMinutes(),a,2)}function x7t(i,a){return zc(i.getSeconds(),a,2)}function E7t(i){var a=i.getDay();return a===0?7:a}function T7t(i,a){return zc(kA.count(qE(i)-1,i),a,2)}function ZMe(i){var a=i.getDay();return a>=4||a===0?xA(i):xA.ceil(i)}function _7t(i,a){return i=ZMe(i),zc(xA.count(qE(i),i)+(qE(i).getDay()===4),a,2)}function C7t(i){return i.getDay()}function S7t(i,a){return zc(RU.count(qE(i)-1,i),a,2)}function A7t(i,a){return zc(i.getFullYear()%100,a,2)}function L7t(i,a){return i=ZMe(i),zc(i.getFullYear()%100,a,2)}function M7t(i,a){return zc(i.getFullYear()%1e4,a,4)}function D7t(i,a){var f=i.getDay();return i=f>=4||f===0?xA(i):xA.ceil(i),zc(i.getFullYear()%1e4,a,4)}function I7t(i){var a=i.getTimezoneOffset();return(a>0?"-":(a*=-1,"+"))+zc(a/60|0,"0",2)+zc(a%60,"0",2)}function JMe(i,a){return zc(i.getUTCDate(),a,2)}function O7t(i,a){return zc(i.getUTCHours(),a,2)}function N7t(i,a){return zc(i.getUTCHours()%12||12,a,2)}function P7t(i,a){return zc(1+GMe.count(IN(i),i),a,3)}function eDe(i,a){return zc(i.getUTCMilliseconds(),a,3)}function B7t(i,a){return eDe(i,a)+"000"}function R7t(i,a){return zc(i.getUTCMonth()+1,a,2)}function F7t(i,a){return zc(i.getUTCMinutes(),a,2)}function j7t(i,a){return zc(i.getUTCSeconds(),a,2)}function $7t(i){var a=i.getUTCDay();return a===0?7:a}function H7t(i,a){return zc(qMe.count(IN(i)-1,i),a,2)}function tDe(i){var a=i.getUTCDay();return a>=4||a===0?EA(i):EA.ceil(i)}function z7t(i,a){return i=tDe(i),zc(EA.count(IN(i),i)+(IN(i).getUTCDay()===4),a,2)}function G7t(i){return i.getUTCDay()}function q7t(i,a){return zc(jU.count(IN(i)-1,i),a,2)}function V7t(i,a){return zc(i.getUTCFullYear()%100,a,2)}function U7t(i,a){return i=tDe(i),zc(i.getUTCFullYear()%100,a,2)}function W7t(i,a){return zc(i.getUTCFullYear()%1e4,a,4)}function K7t(i,a){var f=i.getUTCDay();return i=f>=4||f===0?EA(i):EA.ceil(i),zc(i.getUTCFullYear()%1e4,a,4)}function Y7t(){return"+0000"}function nDe(){return"%"}function rDe(i){return+i}function iDe(i){return Math.floor(+i/1e3)}var TA,$U;X7t({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function X7t(i){return TA=X8t(i),$U=TA.format,TA.parse,TA.utcFormat,TA.utcParse,TA}function Q7t(i){return new Date(i)}function Z7t(i){return i instanceof Date?+i:+new Date(+i)}function sDe(i,a,f,p,w,y,b,E,S,N){var B=NMe(),R=B.invert,j=B.domain,$=N(".%L"),V=N(":%S"),Q=N("%I:%M"),oe=N("%I %p"),ce=N("%a %d"),se=N("%b %d"),ge=N("%B"),ye=N("%Y");function ke(Ae){return(S(Ae)1?0:i<-1?BN:Math.acos(i)}function oDe(i){return i>=1?HU:i<=-1?-HU:Math.asin(i)}function nEt(i){return i.innerRadius}function rEt(i){return i.outerRadius}function iEt(i){return i.startAngle}function sEt(i){return i.endAngle}function aEt(i){return i&&i.padAngle}function oEt(i,a,f,p,w,y,b,E){var S=f-i,N=p-a,B=b-w,R=E-y,j=R*S-B*N;if(!(j*jee*ee+rt*rt&&(ve=xe,te=De),{cx:ve,cy:te,x01:-B,y01:-R,x11:ve*(w/ke-1),y11:te*(w/ke-1)}}function CA(){var i=nEt,a=rEt,f=of(0),p=null,w=iEt,y=sEt,b=aEt,E=null;function S(){var N,B,R=+i.apply(this,arguments),j=+a.apply(this,arguments),$=w.apply(this,arguments)-HU,V=y.apply(this,arguments)-HU,Q=aDe(V-$),oe=V>$;if(E||(E=N=y1e()),jm0))E.moveTo(0,0);else if(Q>zU-m0)E.moveTo(j*UE($),j*n3($)),E.arc(0,0,j,$,V,!oe),R>m0&&(E.moveTo(R*UE(V),R*n3(V)),E.arc(0,0,R,V,$,oe));else{var ce=$,se=V,ge=$,ye=V,ke=Q,Ae=Q,de=b.apply(this,arguments)/2,ve=de>m0&&(p?+p.apply(this,arguments):_A(R*R+j*j)),te=I1e(aDe(j-R)/2,+f.apply(this,arguments)),xe=te,De=te,he,Ie;if(ve>m0){var ee=oDe(ve/R*n3(de)),rt=oDe(ve/j*n3(de));(ke-=ee*2)>m0?(ee*=oe?1:-1,ge+=ee,ye-=ee):(ke=0,ge=ye=($+V)/2),(Ae-=rt*2)>m0?(rt*=oe?1:-1,ce+=rt,se-=rt):(Ae=0,ce=se=($+V)/2)}var me=j*UE(ce),gt=j*n3(ce),pe=R*UE(ye),Et=R*n3(ye);if(te>m0){var wt=j*UE(se),jt=j*n3(se),At=R*UE(ge),Bt=R*n3(ge),cn;if(Qm0?De>m0?(he=GU(At,Bt,me,gt,j,De,oe),Ie=GU(wt,jt,pe,Et,j,De,oe),E.moveTo(he.cx+he.x01,he.cy+he.y01),Dem0)||!(ke>m0)?E.lineTo(pe,Et):xe>m0?(he=GU(pe,Et,wt,jt,R,-xe,oe),Ie=GU(me,gt,At,Bt,R,-xe,oe),E.lineTo(he.cx+he.x01,he.cy+he.y01),xei?1:a>=i?0:NaN}function hEt(i){return i}function fEt(){var i=hEt,a=lEt,f=null,p=of(0),w=of(zU),y=of(0);function b(E){var S,N=(E=cDe(E)).length,B,R,j=0,$=new Array(N),V=new Array(N),Q=+p.apply(this,arguments),oe=Math.min(zU,Math.max(-zU,w.apply(this,arguments)-Q)),ce,se=Math.min(Math.abs(oe)/N,y.apply(this,arguments)),ge=se*(oe<0?-1:1),ye;for(S=0;S0&&(j+=ye);for(a!=null?$.sort(function(ke,Ae){return a(V[ke],V[Ae])}):f!=null&&$.sort(function(ke,Ae){return f(E[ke],E[Ae])}),S=0,R=j?(oe-N*ge)/j:0;S0?ye*R:0)+ge,V[B]={data:E[B],index:S,value:ye,startAngle:Q,endAngle:ce,padAngle:se};return V}return b.value=function(E){return arguments.length?(i=typeof E=="function"?E:of(+E),b):i},b.sortValues=function(E){return arguments.length?(a=E,f=null,b):a},b.sort=function(E){return arguments.length?(f=E,a=null,b):f},b.startAngle=function(E){return arguments.length?(p=typeof E=="function"?E:of(+E),b):p},b.endAngle=function(E){return arguments.length?(w=typeof E=="function"?E:of(+E),b):w},b.padAngle=function(E){return arguments.length?(y=typeof E=="function"?E:of(+E),b):y},b}class lDe{constructor(a,f){this._context=a,this._x=f}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(a,f){switch(a=+a,f=+f,this._point){case 0:{this._point=1,this._line?this._context.lineTo(a,f):this._context.moveTo(a,f);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+a)/2,this._y0,this._x0,f,a,f):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+f)/2,a,this._y0,a,f);break}}this._x0=a,this._y0=f}}function dEt(i){return new lDe(i,!0)}function gEt(i){return new lDe(i,!1)}function Kk(){}function qU(i,a,f){i._context.bezierCurveTo((2*i._x0+i._x1)/3,(2*i._y0+i._y1)/3,(i._x0+2*i._x1)/3,(i._y0+2*i._y1)/3,(i._x0+4*i._x1+a)/6,(i._y0+4*i._y1+f)/6)}function VU(i){this._context=i}VU.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:qU(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:qU(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function SA(i){return new VU(i)}function hDe(i){this._context=i}hDe.prototype={areaStart:Kk,areaEnd:Kk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._x2=i,this._y2=a;break;case 1:this._point=2,this._x3=i,this._y3=a;break;case 2:this._point=3,this._x4=i,this._y4=a,this._context.moveTo((this._x0+4*this._x1+i)/6,(this._y0+4*this._y1+a)/6);break;default:qU(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function pEt(i){return new hDe(i)}function fDe(i){this._context=i}fDe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var f=(this._x0+4*this._x1+i)/6,p=(this._y0+4*this._y1+a)/6;this._line?this._context.lineTo(f,p):this._context.moveTo(f,p);break;case 3:this._point=4;default:qU(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function bEt(i){return new fDe(i)}function dDe(i,a){this._basis=new VU(i),this._beta=a}dDe.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var i=this._x,a=this._y,f=i.length-1;if(f>0)for(var p=i[0],w=a[0],y=i[f]-p,b=a[f]-w,E=-1,S;++E<=f;)S=E/f,this._basis.point(this._beta*i[E]+(1-this._beta)*(p+S*y),this._beta*a[E]+(1-this._beta)*(w+S*b));this._x=this._y=null,this._basis.lineEnd()},point:function(i,a){this._x.push(+i),this._y.push(+a)}};const vEt=function i(a){function f(p){return a===1?new VU(p):new dDe(p,a)}return f.beta=function(p){return i(+p)},f}(.85);function UU(i,a,f){i._context.bezierCurveTo(i._x1+i._k*(i._x2-i._x0),i._y1+i._k*(i._y2-i._y0),i._x2+i._k*(i._x1-a),i._y2+i._k*(i._y1-f),i._x2,i._y2)}function O1e(i,a){this._context=i,this._k=(1-a)/6}O1e.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:UU(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2,this._x1=i,this._y1=a;break;case 2:this._point=3;default:UU(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const wEt=function i(a){function f(p){return new O1e(p,a)}return f.tension=function(p){return i(+p)},f}(0);function N1e(i,a){this._context=i,this._k=(1-a)/6}N1e.prototype={areaStart:Kk,areaEnd:Kk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._x3=i,this._y3=a;break;case 1:this._point=2,this._context.moveTo(this._x4=i,this._y4=a);break;case 2:this._point=3,this._x5=i,this._y5=a;break;default:UU(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const mEt=function i(a){function f(p){return new N1e(p,a)}return f.tension=function(p){return i(+p)},f}(0);function P1e(i,a){this._context=i,this._k=(1-a)/6}P1e.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:UU(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const yEt=function i(a){function f(p){return new P1e(p,a)}return f.tension=function(p){return i(+p)},f}(0);function B1e(i,a,f){var p=i._x1,w=i._y1,y=i._x2,b=i._y2;if(i._l01_a>m0){var E=2*i._l01_2a+3*i._l01_a*i._l12_a+i._l12_2a,S=3*i._l01_a*(i._l01_a+i._l12_a);p=(p*E-i._x0*i._l12_2a+i._x2*i._l01_2a)/S,w=(w*E-i._y0*i._l12_2a+i._y2*i._l01_2a)/S}if(i._l23_a>m0){var N=2*i._l23_2a+3*i._l23_a*i._l12_a+i._l12_2a,B=3*i._l23_a*(i._l23_a+i._l12_a);y=(y*N+i._x1*i._l23_2a-a*i._l12_2a)/B,b=(b*N+i._y1*i._l23_2a-f*i._l12_2a)/B}i._context.bezierCurveTo(p,w,y,b,i._x2,i._y2)}function gDe(i,a){this._context=i,this._alpha=a}gDe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,p=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+p*p,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3;default:B1e(this,i,a);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const kEt=function i(a){function f(p){return a?new gDe(p,a):new O1e(p,0)}return f.alpha=function(p){return i(+p)},f}(.5);function pDe(i,a){this._context=i,this._alpha=a}pDe.prototype={areaStart:Kk,areaEnd:Kk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,p=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+p*p,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=i,this._y3=a;break;case 1:this._point=2,this._context.moveTo(this._x4=i,this._y4=a);break;case 2:this._point=3,this._x5=i,this._y5=a;break;default:B1e(this,i,a);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const xEt=function i(a){function f(p){return a?new pDe(p,a):new N1e(p,0)}return f.alpha=function(p){return i(+p)},f}(.5);function bDe(i,a){this._context=i,this._alpha=a}bDe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,p=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+p*p,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:B1e(this,i,a);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const EEt=function i(a){function f(p){return a?new bDe(p,a):new P1e(p,0)}return f.alpha=function(p){return i(+p)},f}(.5);function vDe(i){this._context=i}vDe.prototype={areaStart:Kk,areaEnd:Kk,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(i,a){i=+i,a=+a,this._point?this._context.lineTo(i,a):(this._point=1,this._context.moveTo(i,a))}};function TEt(i){return new vDe(i)}function wDe(i){return i<0?-1:1}function mDe(i,a,f){var p=i._x1-i._x0,w=a-i._x1,y=(i._y1-i._y0)/(p||w<0&&-0),b=(f-i._y1)/(w||p<0&&-0),E=(y*w+b*p)/(p+w);return(wDe(y)+wDe(b))*Math.min(Math.abs(y),Math.abs(b),.5*Math.abs(E))||0}function yDe(i,a){var f=i._x1-i._x0;return f?(3*(i._y1-i._y0)/f-a)/2:a}function R1e(i,a,f){var p=i._x0,w=i._y0,y=i._x1,b=i._y1,E=(y-p)/3;i._context.bezierCurveTo(p+E,w+E*a,y-E,b-E*f,y,b)}function WU(i){this._context=i}WU.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:R1e(this,this._t0,yDe(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){var f=NaN;if(i=+i,a=+a,!(i===this._x1&&a===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3,R1e(this,yDe(this,f=mDe(this,i,a)),f);break;default:R1e(this,this._t0,f=mDe(this,i,a));break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a,this._t0=f}}};function kDe(i){this._context=new xDe(i)}(kDe.prototype=Object.create(WU.prototype)).point=function(i,a){WU.prototype.point.call(this,a,i)};function xDe(i){this._context=i}xDe.prototype={moveTo:function(i,a){this._context.moveTo(a,i)},closePath:function(){this._context.closePath()},lineTo:function(i,a){this._context.lineTo(a,i)},bezierCurveTo:function(i,a,f,p,w,y){this._context.bezierCurveTo(a,i,p,f,y,w)}};function _Et(i){return new WU(i)}function CEt(i){return new kDe(i)}function EDe(i){this._context=i}EDe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var i=this._x,a=this._y,f=i.length;if(f)if(this._line?this._context.lineTo(i[0],a[0]):this._context.moveTo(i[0],a[0]),f===2)this._context.lineTo(i[1],a[1]);else for(var p=TDe(i),w=TDe(a),y=0,b=1;b=0;--a)w[a]=(b[a]-w[a+1])/y[a];for(y[f-1]=(i[f]+w[f-1])/2,a=0;a=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,a),this._context.lineTo(i,a);else{var f=this._x*(1-this._t)+i*this._t;this._context.lineTo(f,this._y),this._context.lineTo(f,a)}break}}this._x=i,this._y=a}};function AEt(i){return new KU(i,.5)}function LEt(i){return new KU(i,0)}function MEt(i){return new KU(i,1)}function RN(i,a,f){this.k=i,this.x=a,this.y=f}RN.prototype={constructor:RN,scale:function(i){return i===1?this:new RN(this.k*i,this.x,this.y)},translate:function(i,a){return i===0&a===0?this:new RN(this.k,this.x+this.k*i,this.y+this.k*a)},apply:function(i){return[i[0]*this.k+this.x,i[1]*this.k+this.y]},applyX:function(i){return i*this.k+this.x},applyY:function(i){return i*this.k+this.y},invert:function(i){return[(i[0]-this.x)/this.k,(i[1]-this.y)/this.k]},invertX:function(i){return(i-this.x)/this.k},invertY:function(i){return(i-this.y)/this.k},rescaleX:function(i){return i.copy().domain(i.range().map(this.invertX,this).map(i.invert,i))},rescaleY:function(i){return i.copy().domain(i.range().map(this.invertY,this).map(i.invert,i))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}},RN.prototype;/*! @license DOMPurify 3.0.2 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.2/LICENSE */const{entries:_De,setPrototypeOf:CDe,isFrozen:DEt,getPrototypeOf:IEt,getOwnPropertyDescriptor:OEt}=Object;let{freeze:rg,seal:Gw,create:NEt}=Object,{apply:F1e,construct:j1e}=typeof Reflect<"u"&&Reflect;F1e||(F1e=function(a,f,p){return a.apply(f,p)}),rg||(rg=function(a){return a}),Gw||(Gw=function(a){return a}),j1e||(j1e=function(a,f){return new a(...f)});const PEt=qb(Array.prototype.forEach),SDe=qb(Array.prototype.pop),FN=qb(Array.prototype.push),YU=qb(String.prototype.toLowerCase),$1e=qb(String.prototype.toString),BEt=qb(String.prototype.match),qw=qb(String.prototype.replace),REt=qb(String.prototype.indexOf),FEt=qb(String.prototype.trim),A2=qb(RegExp.prototype.test),H1e=jEt(TypeError);function qb(i){return function(a){for(var f=arguments.length,p=new Array(f>1?f-1:0),w=1;w/gm),qEt=Gw(/\${[\w\W]*}/gm),VEt=Gw(/^data-[\-\w.\u00B7-\uFFFF]/),UEt=Gw(/^aria-[\-\w]+$/),IDe=Gw(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),WEt=Gw(/^(?:\w+script|data):/i),KEt=Gw(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ODe=Gw(/^html$/i);var NDe=Object.freeze({__proto__:null,MUSTACHE_EXPR:zEt,ERB_EXPR:GEt,TMPLIT_EXPR:qEt,DATA_ATTR:VEt,ARIA_ATTR:UEt,IS_ALLOWED_URI:IDe,IS_SCRIPT_OR_DATA:WEt,ATTR_WHITESPACE:KEt,DOCTYPE_NAME:ODe});const YEt=()=>typeof window>"u"?null:window,XEt=function(a,f){if(typeof a!="object"||typeof a.createPolicy!="function")return null;let p=null;const w="data-tt-policy-suffix";f.currentScript&&f.currentScript.hasAttribute(w)&&(p=f.currentScript.getAttribute(w));const y="dompurify"+(p?"#"+p:"");try{return a.createPolicy(y,{createHTML(b){return b},createScriptURL(b){return b}})}catch{return console.warn("TrustedTypes policy "+y+" could not be created."),null}};function PDe(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:YEt();const a=Ai=>PDe(Ai);if(a.version="3.0.2",a.removed=[],!i||!i.document||i.document.nodeType!==9)return a.isSupported=!1,a;const f=i.document;let{document:p}=i;const{DocumentFragment:w,HTMLTemplateElement:y,Node:b,Element:E,NodeFilter:S,NamedNodeMap:N=i.NamedNodeMap||i.MozNamedAttrMap,HTMLFormElement:B,DOMParser:R,trustedTypes:j}=i,$=E.prototype,V=XU($,"cloneNode"),Q=XU($,"nextSibling"),oe=XU($,"childNodes"),ce=XU($,"parentNode");if(typeof y=="function"){const Ai=p.createElement("template");Ai.content&&Ai.content.ownerDocument&&(p=Ai.content.ownerDocument)}const se=XEt(j,f),ge=se?se.createHTML(""):"",{implementation:ye,createNodeIterator:ke,createDocumentFragment:Ae,getElementsByTagName:de}=p,{importNode:ve}=f;let te={};a.isSupported=typeof _De=="function"&&typeof ce=="function"&&ye&&typeof ye.createHTMLDocument<"u";const{MUSTACHE_EXPR:xe,ERB_EXPR:De,TMPLIT_EXPR:he,DATA_ATTR:Ie,ARIA_ATTR:ee,IS_SCRIPT_OR_DATA:rt,ATTR_WHITESPACE:me}=NDe;let{IS_ALLOWED_URI:gt}=NDe,pe=null;const Et=Lo({},[...ADe,...z1e,...G1e,...q1e,...LDe]);let wt=null;const jt=Lo({},[...MDe,...V1e,...DDe,...QU]);let At=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Bt=null,cn=null,Nn=!0,Ot=!0,oi=!1,kt=!0,Dt=!1,vt=!1,Nt=!1,ze=!1,Xe=!1,Lt=!1,Ge=!1,Bn=!0,Oe=!1;const Ri="user-content-";let tn=!0,hi=!1,Sr={},Zn=null;const Xn=Lo({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let ir=null;const Hn=Lo({},["audio","video","img","source","image","track"]);let tr=null;const ha=Lo({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Zs="http://www.w3.org/1998/Math/MathML",ns="http://www.w3.org/2000/svg",Hi="http://www.w3.org/1999/xhtml";let Js=Hi,Pc=!1,Ga=null;const ws=Lo({},[Zs,ns,Hi],$1e);let Oi;const Er=["application/xhtml+xml","text/html"],br="text/html";let Dr,Vn=null;const qi=p.createElement("form"),yn=function(nn){return nn instanceof RegExp||nn instanceof Function},Bc=function(nn){Vn&&Vn===nn||((!nn||typeof nn!="object")&&(nn={}),nn=AA(nn),Oi=Er.indexOf(nn.PARSER_MEDIA_TYPE)===-1?Oi=br:Oi=nn.PARSER_MEDIA_TYPE,Dr=Oi==="application/xhtml+xml"?$1e:YU,pe="ALLOWED_TAGS"in nn?Lo({},nn.ALLOWED_TAGS,Dr):Et,wt="ALLOWED_ATTR"in nn?Lo({},nn.ALLOWED_ATTR,Dr):jt,Ga="ALLOWED_NAMESPACES"in nn?Lo({},nn.ALLOWED_NAMESPACES,$1e):ws,tr="ADD_URI_SAFE_ATTR"in nn?Lo(AA(ha),nn.ADD_URI_SAFE_ATTR,Dr):ha,ir="ADD_DATA_URI_TAGS"in nn?Lo(AA(Hn),nn.ADD_DATA_URI_TAGS,Dr):Hn,Zn="FORBID_CONTENTS"in nn?Lo({},nn.FORBID_CONTENTS,Dr):Xn,Bt="FORBID_TAGS"in nn?Lo({},nn.FORBID_TAGS,Dr):{},cn="FORBID_ATTR"in nn?Lo({},nn.FORBID_ATTR,Dr):{},Sr="USE_PROFILES"in nn?nn.USE_PROFILES:!1,Nn=nn.ALLOW_ARIA_ATTR!==!1,Ot=nn.ALLOW_DATA_ATTR!==!1,oi=nn.ALLOW_UNKNOWN_PROTOCOLS||!1,kt=nn.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Dt=nn.SAFE_FOR_TEMPLATES||!1,vt=nn.WHOLE_DOCUMENT||!1,Xe=nn.RETURN_DOM||!1,Lt=nn.RETURN_DOM_FRAGMENT||!1,Ge=nn.RETURN_TRUSTED_TYPE||!1,ze=nn.FORCE_BODY||!1,Bn=nn.SANITIZE_DOM!==!1,Oe=nn.SANITIZE_NAMED_PROPS||!1,tn=nn.KEEP_CONTENT!==!1,hi=nn.IN_PLACE||!1,gt=nn.ALLOWED_URI_REGEXP||IDe,Js=nn.NAMESPACE||Hi,At=nn.CUSTOM_ELEMENT_HANDLING||{},nn.CUSTOM_ELEMENT_HANDLING&&yn(nn.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(At.tagNameCheck=nn.CUSTOM_ELEMENT_HANDLING.tagNameCheck),nn.CUSTOM_ELEMENT_HANDLING&&yn(nn.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(At.attributeNameCheck=nn.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),nn.CUSTOM_ELEMENT_HANDLING&&typeof nn.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(At.allowCustomizedBuiltInElements=nn.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Dt&&(Ot=!1),Lt&&(Xe=!0),Sr&&(pe=Lo({},[...LDe]),wt=[],Sr.html===!0&&(Lo(pe,ADe),Lo(wt,MDe)),Sr.svg===!0&&(Lo(pe,z1e),Lo(wt,V1e),Lo(wt,QU)),Sr.svgFilters===!0&&(Lo(pe,G1e),Lo(wt,V1e),Lo(wt,QU)),Sr.mathMl===!0&&(Lo(pe,q1e),Lo(wt,DDe),Lo(wt,QU))),nn.ADD_TAGS&&(pe===Et&&(pe=AA(pe)),Lo(pe,nn.ADD_TAGS,Dr)),nn.ADD_ATTR&&(wt===jt&&(wt=AA(wt)),Lo(wt,nn.ADD_ATTR,Dr)),nn.ADD_URI_SAFE_ATTR&&Lo(tr,nn.ADD_URI_SAFE_ATTR,Dr),nn.FORBID_CONTENTS&&(Zn===Xn&&(Zn=AA(Zn)),Lo(Zn,nn.FORBID_CONTENTS,Dr)),tn&&(pe["#text"]=!0),vt&&Lo(pe,["html","head","body"]),pe.table&&(Lo(pe,["tbody"]),delete Bt.tbody),rg&&rg(nn),Vn=nn)},jn=Lo({},["mi","mo","mn","ms","mtext"]),Ms=Lo({},["foreignobject","desc","title","annotation-xml"]),Pa=Lo({},["title","style","font","a","script"]),Ta=Lo({},z1e);Lo(Ta,G1e),Lo(Ta,$Et);const _a=Lo({},q1e);Lo(_a,HEt);const ka=function(nn){let Tr=ce(nn);(!Tr||!Tr.tagName)&&(Tr={namespaceURI:Js,tagName:"template"});const ai=YU(nn.tagName),Ns=YU(Tr.tagName);return Ga[nn.namespaceURI]?nn.namespaceURI===ns?Tr.namespaceURI===Hi?ai==="svg":Tr.namespaceURI===Zs?ai==="svg"&&(Ns==="annotation-xml"||jn[Ns]):!!Ta[ai]:nn.namespaceURI===Zs?Tr.namespaceURI===Hi?ai==="math":Tr.namespaceURI===ns?ai==="math"&&Ms[Ns]:!!_a[ai]:nn.namespaceURI===Hi?Tr.namespaceURI===ns&&!Ms[Ns]||Tr.namespaceURI===Zs&&!jn[Ns]?!1:!_a[ai]&&(Pa[ai]||!Ta[ai]):!!(Oi==="application/xhtml+xml"&&Ga[nn.namespaceURI]):!1},Qi=function(nn){FN(a.removed,{element:nn});try{nn.parentNode.removeChild(nn)}catch{nn.remove()}},ea=function(nn,Tr){try{FN(a.removed,{attribute:Tr.getAttributeNode(nn),from:Tr})}catch{FN(a.removed,{attribute:null,from:Tr})}if(Tr.removeAttribute(nn),nn==="is"&&!wt[nn])if(Xe||Lt)try{Qi(Tr)}catch{}else try{Tr.setAttribute(nn,"")}catch{}},Ca=function(nn){let Tr,ai;if(ze)nn=""+nn;else{const yu=BEt(nn,/^[\r\n\t ]+/);ai=yu&&yu[0]}Oi==="application/xhtml+xml"&&Js===Hi&&(nn=''+nn+"");const Ns=se?se.createHTML(nn):nn;if(Js===Hi)try{Tr=new R().parseFromString(Ns,Oi)}catch{}if(!Tr||!Tr.documentElement){Tr=ye.createDocument(Js,"template",null);try{Tr.documentElement.innerHTML=Pc?ge:Ns}catch{}}const mc=Tr.body||Tr.documentElement;return nn&&ai&&mc.insertBefore(p.createTextNode(ai),mc.childNodes[0]||null),Js===Hi?de.call(Tr,vt?"html":"body")[0]:vt?Tr.documentElement:mc},Sa=function(nn){return ke.call(nn.ownerDocument||nn,nn,S.SHOW_ELEMENT|S.SHOW_COMMENT|S.SHOW_TEXT,null,!1)},Ka=function(nn){return nn instanceof B&&(typeof nn.nodeName!="string"||typeof nn.textContent!="string"||typeof nn.removeChild!="function"||!(nn.attributes instanceof N)||typeof nn.removeAttribute!="function"||typeof nn.setAttribute!="function"||typeof nn.namespaceURI!="string"||typeof nn.insertBefore!="function"||typeof nn.hasChildNodes!="function")},cg=function(nn){return typeof b=="object"?nn instanceof b:nn&&typeof nn=="object"&&typeof nn.nodeType=="number"&&typeof nn.nodeName=="string"},Gc=function(nn,Tr,ai){te[nn]&&PEt(te[nn],Ns=>{Ns.call(a,Tr,ai,Vn)})},Dh=function(nn){let Tr;if(Gc("beforeSanitizeElements",nn,null),Ka(nn))return Qi(nn),!0;const ai=Dr(nn.nodeName);if(Gc("uponSanitizeElement",nn,{tagName:ai,allowedTags:pe}),nn.hasChildNodes()&&!cg(nn.firstElementChild)&&(!cg(nn.content)||!cg(nn.content.firstElementChild))&&A2(/<[/\w]/g,nn.innerHTML)&&A2(/<[/\w]/g,nn.textContent))return Qi(nn),!0;if(!pe[ai]||Bt[ai]){if(!Bt[ai]&&lp(ai)&&(At.tagNameCheck instanceof RegExp&&A2(At.tagNameCheck,ai)||At.tagNameCheck instanceof Function&&At.tagNameCheck(ai)))return!1;if(tn&&!Zn[ai]){const Ns=ce(nn)||nn.parentNode,mc=oe(nn)||nn.childNodes;if(mc&&Ns){const yu=mc.length;for(let Mo=yu-1;Mo>=0;--Mo)Ns.insertBefore(V(mc[Mo],!0),Q(nn))}}return Qi(nn),!0}return nn instanceof E&&!ka(nn)||(ai==="noscript"||ai==="noembed")&&A2(/<\/no(script|embed)/i,nn.innerHTML)?(Qi(nn),!0):(Dt&&nn.nodeType===3&&(Tr=nn.textContent,Tr=qw(Tr,xe," "),Tr=qw(Tr,De," "),Tr=qw(Tr,he," "),nn.textContent!==Tr&&(FN(a.removed,{element:nn.cloneNode()}),nn.textContent=Tr)),Gc("afterSanitizeElements",nn,null),!1)},Es=function(nn,Tr,ai){if(Bn&&(Tr==="id"||Tr==="name")&&(ai in p||ai in qi))return!1;if(!(Ot&&!cn[Tr]&&A2(Ie,Tr))){if(!(Nn&&A2(ee,Tr))){if(!wt[Tr]||cn[Tr]){if(!(lp(nn)&&(At.tagNameCheck instanceof RegExp&&A2(At.tagNameCheck,nn)||At.tagNameCheck instanceof Function&&At.tagNameCheck(nn))&&(At.attributeNameCheck instanceof RegExp&&A2(At.attributeNameCheck,Tr)||At.attributeNameCheck instanceof Function&&At.attributeNameCheck(Tr))||Tr==="is"&&At.allowCustomizedBuiltInElements&&(At.tagNameCheck instanceof RegExp&&A2(At.tagNameCheck,ai)||At.tagNameCheck instanceof Function&&At.tagNameCheck(ai))))return!1}else if(!tr[Tr]){if(!A2(gt,qw(ai,me,""))){if(!((Tr==="src"||Tr==="xlink:href"||Tr==="href")&&nn!=="script"&&REt(ai,"data:")===0&&ir[nn])){if(!(oi&&!A2(rt,qw(ai,me,"")))){if(ai)return!1}}}}}}return!0},lp=function(nn){return nn.indexOf("-")>0},sd=function(nn){let Tr,ai,Ns,mc;Gc("beforeSanitizeAttributes",nn,null);const{attributes:yu}=nn;if(!yu)return;const Mo={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:wt};for(mc=yu.length;mc--;){Tr=yu[mc];const{name:ku,namespaceURI:Ih}=Tr;if(ai=ku==="value"?Tr.value:FEt(Tr.value),Ns=Dr(ku),Mo.attrName=Ns,Mo.attrValue=ai,Mo.keepAttr=!0,Mo.forceKeepAttr=void 0,Gc("uponSanitizeAttribute",nn,Mo),ai=Mo.attrValue,Mo.forceKeepAttr||(ea(ku,nn),!Mo.keepAttr))continue;if(!kt&&A2(/\/>/i,ai)){ea(ku,nn);continue}Dt&&(ai=qw(ai,xe," "),ai=qw(ai,De," "),ai=qw(ai,he," "));const qf=Dr(nn.nodeName);if(Es(qf,Ns,ai)){if(Oe&&(Ns==="id"||Ns==="name")&&(ea(ku,nn),ai=Ri+ai),se&&typeof j=="object"&&typeof j.getAttributeType=="function"&&!Ih)switch(j.getAttributeType(qf,Ns)){case"TrustedHTML":ai=se.createHTML(ai);break;case"TrustedScriptURL":ai=se.createScriptURL(ai);break}try{Ih?nn.setAttributeNS(Ih,ku,ai):nn.setAttribute(ku,ai),SDe(a.removed)}catch{}}}Gc("afterSanitizeAttributes",nn,null)},sh=function Ai(nn){let Tr;const ai=Sa(nn);for(Gc("beforeSanitizeShadowDOM",nn,null);Tr=ai.nextNode();)Gc("uponSanitizeShadowNode",Tr,null),!Dh(Tr)&&(Tr.content instanceof w&&Ai(Tr.content),sd(Tr));Gc("afterSanitizeShadowDOM",nn,null)};return a.sanitize=function(Ai){let nn=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Tr,ai,Ns,mc;if(Pc=!Ai,Pc&&(Ai=""),typeof Ai!="string"&&!cg(Ai)){if(typeof Ai.toString!="function")throw H1e("toString is not a function");if(Ai=Ai.toString(),typeof Ai!="string")throw H1e("dirty is not a string, aborting")}if(!a.isSupported)return Ai;if(Nt||Bc(nn),a.removed=[],typeof Ai=="string"&&(hi=!1),hi){if(Ai.nodeName){const ku=Dr(Ai.nodeName);if(!pe[ku]||Bt[ku])throw H1e("root node is forbidden and cannot be sanitized in-place")}}else if(Ai instanceof b)Tr=Ca(""),ai=Tr.ownerDocument.importNode(Ai,!0),ai.nodeType===1&&ai.nodeName==="BODY"||ai.nodeName==="HTML"?Tr=ai:Tr.appendChild(ai);else{if(!Xe&&!Dt&&!vt&&Ai.indexOf("<")===-1)return se&&Ge?se.createHTML(Ai):Ai;if(Tr=Ca(Ai),!Tr)return Xe?null:Ge?ge:""}Tr&&ze&&Qi(Tr.firstChild);const yu=Sa(hi?Ai:Tr);for(;Ns=yu.nextNode();)Dh(Ns)||(Ns.content instanceof w&&sh(Ns.content),sd(Ns));if(hi)return Ai;if(Xe){if(Lt)for(mc=Ae.call(Tr.ownerDocument);Tr.firstChild;)mc.appendChild(Tr.firstChild);else mc=Tr;return(wt.shadowroot||wt.shadowrootmod)&&(mc=ve.call(f,mc,!0)),mc}let Mo=vt?Tr.outerHTML:Tr.innerHTML;return vt&&pe["!doctype"]&&Tr.ownerDocument&&Tr.ownerDocument.doctype&&Tr.ownerDocument.doctype.name&&A2(ODe,Tr.ownerDocument.doctype.name)&&(Mo=" +`+Mo),Dt&&(Mo=qw(Mo,xe," "),Mo=qw(Mo,De," "),Mo=qw(Mo,he," ")),se&&Ge?se.createHTML(Mo):Mo},a.setConfig=function(Ai){Bc(Ai),Nt=!0},a.clearConfig=function(){Vn=null,Nt=!1},a.isValidAttribute=function(Ai,nn,Tr){Vn||Bc({});const ai=Dr(Ai),Ns=Dr(nn);return Es(ai,Ns,Tr)},a.addHook=function(Ai,nn){typeof nn=="function"&&(te[Ai]=te[Ai]||[],FN(te[Ai],nn))},a.removeHook=function(Ai){if(te[Ai])return SDe(te[Ai])},a.removeHooks=function(Ai){te[Ai]&&(te[Ai]=[])},a.removeAllHooks=function(){te={}},a}var ZU=PDe();const JU=//gi,QEt=i=>i?FDe(i).replace(/\\n/g,"#br#").split("#br#"):[""],BDe=i=>ZU.sanitize(i),RDe=(i,a)=>{var f;if(((f=a.flowchart)==null?void 0:f.htmlLabels)!==!1){const p=a.securityLevel;p==="antiscript"||p==="strict"?i=BDe(i):p!=="loose"&&(i=FDe(i),i=i.replace(//g,">"),i=i.replace(/=/g,"="),i=t9t(i))}return i},ep=(i,a)=>i&&(a.dompurifyConfig?i=ZU.sanitize(RDe(i,a),a.dompurifyConfig).toString():i=ZU.sanitize(RDe(i,a),{FORBID_TAGS:["style"]}).toString(),i),ZEt=(i,a)=>typeof i=="string"?ep(i,a):i.flat().map(f=>ep(f,a)),JEt=i=>JU.test(i),e9t=i=>i.split(JU),t9t=i=>i.replace(/#br#/g,"
"),FDe=i=>i.replace(JU,"#br#"),n9t=i=>{let a="";return i&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,a=a.replaceAll(/\(/g,"\\("),a=a.replaceAll(/\)/g,"\\)")),a},d1=i=>!(i===!1||["false","null","0"].includes(String(i).trim().toLowerCase())),Yk=function(i){let a=i;if(i.split("~").length-1>=2){let f=a;do a=f,f=a.replace(/~([^\s,:;]+)~/,"<$1>");while(f!=a);return Yk(f)}else return a},Wa={getRows:QEt,sanitizeText:ep,sanitizeTextOrArray:ZEt,hasBreaks:JEt,splitBreaks:e9t,lineBreakRegex:JU,removeScript:BDe,getUrl:n9t,evaluate:d1},eW={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:i=>i>=255?255:i<0?0:i,g:i=>i>=255?255:i<0?0:i,b:i=>i>=255?255:i<0?0:i,h:i=>i%360,s:i=>i>=100?100:i<0?0:i,l:i=>i>=100?100:i<0?0:i,a:i=>i>=1?1:i<0?0:i},toLinear:i=>{const a=i/255;return i>.03928?Math.pow((a+.055)/1.055,2.4):a/12.92},hue2rgb:(i,a,f)=>(f<0&&(f+=1),f>1&&(f-=1),f<1/6?i+(a-i)*6*f:f<1/2?a:f<2/3?i+(a-i)*(2/3-f)*6:i),hsl2rgb:({h:i,s:a,l:f},p)=>{if(!a)return f*2.55;i/=360,a/=100,f/=100;const w=f<.5?f*(1+a):f+a-f*a,y=2*f-w;switch(p){case"r":return eW.hue2rgb(y,w,i+1/3)*255;case"g":return eW.hue2rgb(y,w,i)*255;case"b":return eW.hue2rgb(y,w,i-1/3)*255}},rgb2hsl:({r:i,g:a,b:f},p)=>{i/=255,a/=255,f/=255;const w=Math.max(i,a,f),y=Math.min(i,a,f),b=(w+y)/2;if(p==="l")return b*100;if(w===y)return 0;const E=w-y,S=b>.5?E/(2-w-y):E/(w+y);if(p==="s")return S*100;switch(w){case i:return((a-f)/E+(aa>f?Math.min(a,Math.max(f,i)):Math.min(f,Math.max(a,i)),round:i=>Math.round(i*1e10)/1e10},unit:{dec2hex:i=>{const a=Math.round(i).toString(16);return a.length>1?a:`0${a}`}}},Xk={};for(let i=0;i<=255;i++)Xk[i]=Na.unit.dec2hex(i);const y0={ALL:0,RGB:1,HSL:2};class r9t{constructor(){this.type=y0.ALL}get(){return this.type}set(a){if(this.type&&this.type!==a)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=a}reset(){this.type=y0.ALL}is(a){return this.type===a}}const i9t=r9t;class s9t{constructor(a,f){this.color=f,this.changed=!1,this.data=a,this.type=new i9t}set(a,f){return this.color=f,this.changed=!1,this.data=a,this.type.type=y0.ALL,this}_ensureHSL(){const a=this.data,{h:f,s:p,l:w}=a;f===void 0&&(a.h=Na.channel.rgb2hsl(a,"h")),p===void 0&&(a.s=Na.channel.rgb2hsl(a,"s")),w===void 0&&(a.l=Na.channel.rgb2hsl(a,"l"))}_ensureRGB(){const a=this.data,{r:f,g:p,b:w}=a;f===void 0&&(a.r=Na.channel.hsl2rgb(a,"r")),p===void 0&&(a.g=Na.channel.hsl2rgb(a,"g")),w===void 0&&(a.b=Na.channel.hsl2rgb(a,"b"))}get r(){const a=this.data,f=a.r;return!this.type.is(y0.HSL)&&f!==void 0?f:(this._ensureHSL(),Na.channel.hsl2rgb(a,"r"))}get g(){const a=this.data,f=a.g;return!this.type.is(y0.HSL)&&f!==void 0?f:(this._ensureHSL(),Na.channel.hsl2rgb(a,"g"))}get b(){const a=this.data,f=a.b;return!this.type.is(y0.HSL)&&f!==void 0?f:(this._ensureHSL(),Na.channel.hsl2rgb(a,"b"))}get h(){const a=this.data,f=a.h;return!this.type.is(y0.RGB)&&f!==void 0?f:(this._ensureRGB(),Na.channel.rgb2hsl(a,"h"))}get s(){const a=this.data,f=a.s;return!this.type.is(y0.RGB)&&f!==void 0?f:(this._ensureRGB(),Na.channel.rgb2hsl(a,"s"))}get l(){const a=this.data,f=a.l;return!this.type.is(y0.RGB)&&f!==void 0?f:(this._ensureRGB(),Na.channel.rgb2hsl(a,"l"))}get a(){return this.data.a}set r(a){this.type.set(y0.RGB),this.changed=!0,this.data.r=a}set g(a){this.type.set(y0.RGB),this.changed=!0,this.data.g=a}set b(a){this.type.set(y0.RGB),this.changed=!0,this.data.b=a}set h(a){this.type.set(y0.HSL),this.changed=!0,this.data.h=a}set s(a){this.type.set(y0.HSL),this.changed=!0,this.data.s=a}set l(a){this.type.set(y0.HSL),this.changed=!0,this.data.l=a}set a(a){this.changed=!0,this.data.a=a}}const a9t=s9t,tW=new a9t({r:0,g:0,b:0,a:0},"transparent"),jDe={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:i=>{if(i.charCodeAt(0)!==35)return;const a=i.match(jDe.re);if(!a)return;const f=a[1],p=parseInt(f,16),w=f.length,y=w%4===0,b=w>4,E=b?1:17,S=b?8:4,N=y?0:-1,B=b?255:15;return tW.set({r:(p>>S*(N+3)&B)*E,g:(p>>S*(N+2)&B)*E,b:(p>>S*(N+1)&B)*E,a:y?(p&B)*E/255:1},i)},stringify:i=>{const{r:a,g:f,b:p,a:w}=i;return w<1?`#${Xk[Math.round(a)]}${Xk[Math.round(f)]}${Xk[Math.round(p)]}${Xk[Math.round(w*255)]}`:`#${Xk[Math.round(a)]}${Xk[Math.round(f)]}${Xk[Math.round(p)]}`}},jN=jDe,nW={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:i=>{const a=i.match(nW.hueRe);if(a){const[,f,p]=a;switch(p){case"grad":return Na.channel.clamp.h(parseFloat(f)*.9);case"rad":return Na.channel.clamp.h(parseFloat(f)*180/Math.PI);case"turn":return Na.channel.clamp.h(parseFloat(f)*360)}}return Na.channel.clamp.h(parseFloat(i))},parse:i=>{const a=i.charCodeAt(0);if(a!==104&&a!==72)return;const f=i.match(nW.re);if(!f)return;const[,p,w,y,b,E]=f;return tW.set({h:nW._hue2deg(p),s:Na.channel.clamp.s(parseFloat(w)),l:Na.channel.clamp.l(parseFloat(y)),a:b?Na.channel.clamp.a(E?parseFloat(b)/100:parseFloat(b)):1},i)},stringify:i=>{const{h:a,s:f,l:p,a:w}=i;return w<1?`hsla(${Na.lang.round(a)}, ${Na.lang.round(f)}%, ${Na.lang.round(p)}%, ${w})`:`hsl(${Na.lang.round(a)}, ${Na.lang.round(f)}%, ${Na.lang.round(p)}%)`}},rW=nW,iW={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:i=>{i=i.toLowerCase();const a=iW.colors[i];if(a)return jN.parse(a)},stringify:i=>{const a=jN.stringify(i);for(const f in iW.colors)if(iW.colors[f]===a)return f}},$De=iW,HDe={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:i=>{const a=i.charCodeAt(0);if(a!==114&&a!==82)return;const f=i.match(HDe.re);if(!f)return;const[,p,w,y,b,E,S,N,B]=f;return tW.set({r:Na.channel.clamp.r(w?parseFloat(p)*2.55:parseFloat(p)),g:Na.channel.clamp.g(b?parseFloat(y)*2.55:parseFloat(y)),b:Na.channel.clamp.b(S?parseFloat(E)*2.55:parseFloat(E)),a:N?Na.channel.clamp.a(B?parseFloat(N)/100:parseFloat(N)):1},i)},stringify:i=>{const{r:a,g:f,b:p,a:w}=i;return w<1?`rgba(${Na.lang.round(a)}, ${Na.lang.round(f)}, ${Na.lang.round(p)}, ${Na.lang.round(w)})`:`rgb(${Na.lang.round(a)}, ${Na.lang.round(f)}, ${Na.lang.round(p)})`}},sW=HDe,r3={format:{keyword:$De,hex:jN,rgb:sW,rgba:sW,hsl:rW,hsla:rW},parse:i=>{if(typeof i!="string")return i;const a=jN.parse(i)||sW.parse(i)||rW.parse(i)||$De.parse(i);if(a)return a;throw new Error(`Unsupported color format: "${i}"`)},stringify:i=>!i.changed&&i.color?i.color:i.type.is(y0.HSL)||i.data.r===void 0?rW.stringify(i):i.a<1||!Number.isInteger(i.r)||!Number.isInteger(i.g)||!Number.isInteger(i.b)?sW.stringify(i):jN.stringify(i)},zDe=(i,a)=>{const f=r3.parse(i);for(const p in a)f[p]=Na.channel.clamp[p](a[p]);return r3.stringify(f)},$N=(i,a,f=0,p=1)=>{if(typeof i!="number")return zDe(i,{a});const w=tW.set({r:Na.channel.clamp.r(i),g:Na.channel.clamp.g(a),b:Na.channel.clamp.b(f),a:Na.channel.clamp.a(p)});return r3.stringify(w)},o9t=i=>{const{r:a,g:f,b:p}=r3.parse(i),w=.2126*Na.channel.toLinear(a)+.7152*Na.channel.toLinear(f)+.0722*Na.channel.toLinear(p);return Na.lang.round(w)},c9t=i=>o9t(i)>=.5,GDe=i=>!c9t(i),qDe=(i,a,f)=>{const p=r3.parse(i),w=p[a],y=Na.channel.clamp[a](w+f);return w!==y&&(p[a]=y),r3.stringify(p)},Qs=(i,a)=>qDe(i,"l",a),ya=(i,a)=>qDe(i,"l",-a),Gn=(i,a)=>{const f=r3.parse(i),p={};for(const w in a)a[w]&&(p[w]=f[w]+a[w]);return zDe(i,p)},u9t=(i,a,f=50)=>{const{r:p,g:w,b:y,a:b}=r3.parse(i),{r:E,g:S,b:N,a:B}=r3.parse(a),R=f/100,j=R*2-1,$=b-B,Q=((j*$===-1?j:(j+$)/(1+j*$))+1)/2,oe=1-Q,ce=p*Q+E*oe,se=w*Q+S*oe,ge=y*Q+N*oe,ye=b*R+B*(1-R);return $N(ce,se,ge,ye)},Bi=(i,a=100)=>{const f=r3.parse(i);return f.r=255-f.r,f.g=255-f.g,f.b=255-f.b,u9t(f,i,a)},ig=(i,a)=>a?Gn(i,{s:-40,l:10}):Gn(i,{s:-40,l:-10}),aW="#ffffff",oW="#f2f2f2";let l9t=class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||Gn(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Gn(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ig(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ig(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ig(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ig(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Bi(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Bi(this.tertiaryColor),this.lineColor=this.lineColor||Bi(this.background),this.arrowheadColor=this.arrowheadColor||Bi(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?ya(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||ya(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Bi(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qs(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Gn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Gn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Gn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Gn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Gn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Gn(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||Gn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Gn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Gn(this.primaryColor,{h:330}),this.darkMode)for(let f=0;f{this[p]=a[p]}),this.updateColors(),f.forEach(p=>{this[p]=a[p]})}};const h9t=i=>{const a=new l9t;return a.calculate(i),a};let f9t=class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qs(this.primaryColor,16),this.tertiaryColor=Gn(this.primaryColor,{h:-160}),this.primaryBorderColor=Bi(this.background),this.secondaryBorderColor=ig(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ig(this.tertiaryColor,this.darkMode),this.primaryTextColor=Bi(this.primaryColor),this.secondaryTextColor=Bi(this.secondaryColor),this.tertiaryTextColor=Bi(this.tertiaryColor),this.lineColor=Bi(this.background),this.textColor=Bi(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qs(Bi("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=$N(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=ya("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=ya(this.sectionBkgColor,10),this.taskBorderColor=$N(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=$N(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=Qs(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=Qs(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=Qs(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=Gn(this.primaryColor,{h:64}),this.fillType3=Gn(this.secondaryColor,{h:64}),this.fillType4=Gn(this.primaryColor,{h:-64}),this.fillType5=Gn(this.secondaryColor,{h:-64}),this.fillType6=Gn(this.primaryColor,{h:128}),this.fillType7=Gn(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Gn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Gn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Gn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Gn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Gn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Gn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Gn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Gn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Gn(this.primaryColor,{h:330});for(let a=0;a{this[p]=a[p]}),this.updateColors(),f.forEach(p=>{this[p]=a[p]})}};const d9t=i=>{const a=new f9t;return a.calculate(i),a};let g9t=class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Gn(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Gn(this.primaryColor,{h:-160}),this.primaryBorderColor=ig(this.primaryColor,this.darkMode),this.secondaryBorderColor=ig(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ig(this.tertiaryColor,this.darkMode),this.primaryTextColor=Bi(this.primaryColor),this.secondaryTextColor=Bi(this.secondaryColor),this.tertiaryTextColor=Bi(this.tertiaryColor),this.lineColor=Bi(this.background),this.textColor=Bi(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=$N(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Gn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Gn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Gn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Gn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Gn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Gn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Gn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Gn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Gn(this.primaryColor,{h:330}),this["cScalePeer1"]=this["cScalePeer1"]||ya(this.secondaryColor,45),this["cScalePeer2"]=this["cScalePeer2"]||ya(this.tertiaryColor,40);for(let a=0;a{this[p]=a[p]}),this.updateColors(),f.forEach(p=>{this[p]=a[p]})}};const p9t=i=>{const a=new g9t;return a.calculate(i),a};let b9t=class{constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=Qs("#cde498",10),this.primaryBorderColor=ig(this.primaryColor,this.darkMode),this.secondaryBorderColor=ig(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ig(this.tertiaryColor,this.darkMode),this.primaryTextColor=Bi(this.primaryColor),this.secondaryTextColor=Bi(this.secondaryColor),this.tertiaryTextColor=Bi(this.primaryColor),this.lineColor=Bi(this.background),this.textColor=Bi(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=ya(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Gn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Gn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Gn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Gn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Gn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Gn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Gn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Gn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Gn(this.primaryColor,{h:330}),this["cScalePeer1"]=this["cScalePeer1"]||ya(this.secondaryColor,45),this["cScalePeer2"]=this["cScalePeer2"]||ya(this.tertiaryColor,40);for(let a=0;a{this[p]=a[p]}),this.updateColors(),f.forEach(p=>{this[p]=a[p]})}};const v9t=i=>{const a=new b9t;return a.calculate(i),a};class w9t{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Qs(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Gn(this.primaryColor,{h:-160}),this.primaryBorderColor=ig(this.primaryColor,this.darkMode),this.secondaryBorderColor=ig(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ig(this.tertiaryColor,this.darkMode),this.primaryTextColor=Bi(this.primaryColor),this.secondaryTextColor=Bi(this.secondaryColor),this.tertiaryTextColor=Bi(this.tertiaryColor),this.lineColor=Bi(this.background),this.textColor=Bi(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=Qs(this.contrast,55),this.border2=this.contrast,this.actorBorder=Qs(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let a=0;a{this[p]=a[p]}),this.updateColors(),f.forEach(p=>{this[p]=a[p]})}}const g5={base:{getThemeVariables:h9t},dark:{getThemeVariables:d9t},default:{getThemeVariables:p9t},forest:{getThemeVariables:v9t},neutral:{getThemeVariables:i=>{const a=new w9t;return a.calculate(i),a}}},Qk={theme:"default",themeVariables:g5.default.getThemeVariables(),themeCSS:void 0,maxTextSize:5e4,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize"],deterministicIds:!1,deterministicIDSeed:void 0,flowchart:{titleTopMargin:25,diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,useMaxWidth:!0,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,displayMode:"",axisFormat:"%Y-%m-%d",tickInterval:void 0,useMaxWidth:!0,topAxis:!1,useWidth:void 0},journey:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},timeline:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},class:{titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},state:{titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},er:{titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12,useMaxWidth:!0},pie:{useWidth:void 0,useMaxWidth:!0,textPosition:.75},requirement:{useWidth:void 0,useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},gitGraph:{titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0},c4:{useWidth:void 0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,useMaxWidth:!0,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},fontSize:16};Qk.class&&(Qk.class.arrowMarkerAbsolute=Qk.arrowMarkerAbsolute),Qk.gitGraph&&(Qk.gitGraph.arrowMarkerAbsolute=Qk.arrowMarkerAbsolute);const VDe=(i,a="")=>Object.keys(i).reduce((f,p)=>Array.isArray(i[p])?f:typeof i[p]=="object"&&i[p]!==null?[...f,a+p,...VDe(i[p],"")]:[...f,a+p],[]),m9t=VDe(Qk,""),y9t=Qk;/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function UDe(i){return typeof i>"u"||i===null}function k9t(i){return typeof i=="object"&&i!==null}function x9t(i){return Array.isArray(i)?i:UDe(i)?[]:[i]}function E9t(i,a){var f,p,w,y;if(a)for(y=Object.keys(a),f=0,p=y.length;fE&&(y=" ... ",a=p-E+y.length),f-p>E&&(b=" ...",f=p+E-b.length),{str:y+i.slice(a,f).replace(/\t/g,"→")+b,pos:p-a+y.length}}function W1e(i,a){return sg.repeat(" ",a-i.length)+i}function I9t(i,a){if(a=Object.create(a||null),!i.buffer)return null;a.maxLength||(a.maxLength=79),typeof a.indent!="number"&&(a.indent=1),typeof a.linesBefore!="number"&&(a.linesBefore=3),typeof a.linesAfter!="number"&&(a.linesAfter=2);for(var f=/\r?\n|\r|\0/g,p=[0],w=[],y,b=-1;y=f.exec(i.buffer);)w.push(y.index),p.push(y.index+y[0].length),i.position<=y.index&&b<0&&(b=p.length-2);b<0&&(b=p.length-1);var E="",S,N,B=Math.min(i.line+a.linesAfter,w.length).toString().length,R=a.maxLength-(a.indent+B+3);for(S=1;S<=a.linesBefore&&!(b-S<0);S++)N=U1e(i.buffer,p[b-S],w[b-S],i.position-(p[b]-p[b-S]),R),E=sg.repeat(" ",a.indent)+W1e((i.line-S+1).toString(),B)+" | "+N.str+` +`+E;for(N=U1e(i.buffer,p[b],w[b],i.position,R),E+=sg.repeat(" ",a.indent)+W1e((i.line+1).toString(),B)+" | "+N.str+` +`,E+=sg.repeat("-",a.indent+B+3+N.pos)+`^ +`,S=1;S<=a.linesAfter&&!(b+S>=w.length);S++)N=U1e(i.buffer,p[b+S],w[b+S],i.position-(p[b]-p[b+S]),R),E+=sg.repeat(" ",a.indent)+W1e((i.line+S+1).toString(),B)+" | "+N.str+` +`;return E.replace(/\n$/,"")}var O9t=I9t,N9t=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],P9t=["scalar","sequence","mapping"];function B9t(i){var a={};return i!==null&&Object.keys(i).forEach(function(f){i[f].forEach(function(p){a[String(p)]=f})}),a}function R9t(i,a){if(a=a||{},Object.keys(a).forEach(function(f){if(N9t.indexOf(f)===-1)throw new p5('Unknown option "'+f+'" is met in definition of "'+i+'" YAML type.')}),this.options=a,this.tag=i,this.kind=a.kind||null,this.resolve=a.resolve||function(){return!0},this.construct=a.construct||function(f){return f},this.instanceOf=a.instanceOf||null,this.predicate=a.predicate||null,this.represent=a.represent||null,this.representName=a.representName||null,this.defaultStyle=a.defaultStyle||null,this.multi=a.multi||!1,this.styleAliases=B9t(a.styleAliases||null),P9t.indexOf(this.kind)===-1)throw new p5('Unknown kind "'+this.kind+'" is specified for "'+i+'" YAML type.')}var k0=R9t;function KDe(i,a){var f=[];return i[a].forEach(function(p){var w=f.length;f.forEach(function(y,b){y.tag===p.tag&&y.kind===p.kind&&y.multi===p.multi&&(w=b)}),f[w]=p}),f}function F9t(){var i={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},a,f;function p(w){w.multi?(i.multi[w.kind].push(w),i.multi.fallback.push(w)):i[w.kind][w.tag]=i.fallback[w.tag]=w}for(a=0,f=arguments.length;a=0?"0b"+i.toString(2):"-0b"+i.toString(2).slice(1)},octal:function(i){return i>=0?"0o"+i.toString(8):"-0o"+i.toString(8).slice(1)},decimal:function(i){return i.toString(10)},hexadecimal:function(i){return i>=0?"0x"+i.toString(16).toUpperCase():"-0x"+i.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),iTt=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function sTt(i){return!(i===null||!iTt.test(i)||i[i.length-1]==="_")}function aTt(i){var a,f;return a=i.replace(/_/g,"").toLowerCase(),f=a[0]==="-"?-1:1,"+-".indexOf(a[0])>=0&&(a=a.slice(1)),a===".inf"?f===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:a===".nan"?NaN:f*parseFloat(a,10)}var oTt=/^[-+]?[0-9]+e/;function cTt(i,a){var f;if(isNaN(i))switch(a){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===i)switch(a){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===i)switch(a){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(sg.isNegativeZero(i))return"-0.0";return f=i.toString(10),oTt.test(f)?f.replace("e",".e"):f}function uTt(i){return Object.prototype.toString.call(i)==="[object Number]"&&(i%1!==0||sg.isNegativeZero(i))}var lTt=new k0("tag:yaml.org,2002:float",{kind:"scalar",resolve:sTt,construct:aTt,predicate:uTt,represent:cTt,defaultStyle:"lowercase"}),hTt=YDe.extend({implicit:[U9t,X9t,rTt,lTt]}),fTt=hTt,XDe=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),QDe=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function dTt(i){return i===null?!1:XDe.exec(i)!==null||QDe.exec(i)!==null}function gTt(i){var a,f,p,w,y,b,E,S=0,N=null,B,R,j;if(a=XDe.exec(i),a===null&&(a=QDe.exec(i)),a===null)throw new Error("Date resolve error");if(f=+a[1],p=+a[2]-1,w=+a[3],!a[4])return new Date(Date.UTC(f,p,w));if(y=+a[4],b=+a[5],E=+a[6],a[7]){for(S=a[7].slice(0,3);S.length<3;)S+="0";S=+S}return a[9]&&(B=+a[10],R=+(a[11]||0),N=(B*60+R)*6e4,a[9]==="-"&&(N=-N)),j=new Date(Date.UTC(f,p,w,y,b,E,S)),N&&j.setTime(j.getTime()-N),j}function pTt(i){return i.toISOString()}var bTt=new k0("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:dTt,construct:gTt,instanceOf:Date,represent:pTt});function vTt(i){return i==="<<"||i===null}var wTt=new k0("tag:yaml.org,2002:merge",{kind:"scalar",resolve:vTt}),Y1e=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function mTt(i){if(i===null)return!1;var a,f,p=0,w=i.length,y=Y1e;for(f=0;f64)){if(a<0)return!1;p+=6}return p%8===0}function yTt(i){var a,f,p=i.replace(/[\r\n=]/g,""),w=p.length,y=Y1e,b=0,E=[];for(a=0;a>16&255),E.push(b>>8&255),E.push(b&255)),b=b<<6|y.indexOf(p.charAt(a));return f=w%4*6,f===0?(E.push(b>>16&255),E.push(b>>8&255),E.push(b&255)):f===18?(E.push(b>>10&255),E.push(b>>2&255)):f===12&&E.push(b>>4&255),new Uint8Array(E)}function kTt(i){var a="",f=0,p,w,y=i.length,b=Y1e;for(p=0;p>18&63],a+=b[f>>12&63],a+=b[f>>6&63],a+=b[f&63]),f=(f<<8)+i[p];return w=y%3,w===0?(a+=b[f>>18&63],a+=b[f>>12&63],a+=b[f>>6&63],a+=b[f&63]):w===2?(a+=b[f>>10&63],a+=b[f>>4&63],a+=b[f<<2&63],a+=b[64]):w===1&&(a+=b[f>>2&63],a+=b[f<<4&63],a+=b[64],a+=b[64]),a}function xTt(i){return Object.prototype.toString.call(i)==="[object Uint8Array]"}var ETt=new k0("tag:yaml.org,2002:binary",{kind:"scalar",resolve:mTt,construct:yTt,predicate:xTt,represent:kTt}),TTt=Object.prototype.hasOwnProperty,_Tt=Object.prototype.toString;function CTt(i){if(i===null)return!0;var a=[],f,p,w,y,b,E=i;for(f=0,p=E.length;f>10)+55296,(i-65536&1023)+56320)}for(var sIe=new Array(256),aIe=new Array(256),MA=0;MA<256;MA++)sIe[MA]=iIe(MA)?1:0,aIe[MA]=iIe(MA);function UTt(i,a){this.input=i,this.filename=a.filename||null,this.schema=a.schema||RTt,this.onWarning=a.onWarning||null,this.legacy=a.legacy||!1,this.json=a.json||!1,this.listener=a.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=i.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function oIe(i,a){var f={name:i.filename,buffer:i.input.slice(0,-1),position:i.position,line:i.line,column:i.position-i.lineStart};return f.snippet=O9t(f),new p5(a,f)}function Os(i,a){throw oIe(i,a)}function lW(i,a){i.onWarning&&i.onWarning.call(null,oIe(i,a))}var cIe={YAML:function(a,f,p){var w,y,b;a.version!==null&&Os(a,"duplication of %YAML directive"),p.length!==1&&Os(a,"YAML directive accepts exactly one argument"),w=/^([0-9]+)\.([0-9]+)$/.exec(p[0]),w===null&&Os(a,"ill-formed argument of the YAML directive"),y=parseInt(w[1],10),b=parseInt(w[2],10),y!==1&&Os(a,"unacceptable YAML version of the document"),a.version=p[0],a.checkLineBreaks=b<2,b!==1&&b!==2&&lW(a,"unsupported YAML version of the document")},TAG:function(a,f,p){var w,y;p.length!==2&&Os(a,"TAG directive accepts exactly two arguments"),w=p[0],y=p[1],tIe.test(w)||Os(a,"ill-formed tag handle (first argument) of the TAG directive"),Zk.call(a.tagMap,w)&&Os(a,'there is a previously declared suffix for "'+w+'" tag handle'),nIe.test(y)||Os(a,"ill-formed tag prefix (second argument) of the TAG directive");try{y=decodeURIComponent(y)}catch{Os(a,"tag prefix is malformed: "+y)}a.tagMap[w]=y}};function Jk(i,a,f,p){var w,y,b,E;if(a1&&(i.result+=sg.repeat(` +`,a-1))}function WTt(i,a,f){var p,w,y,b,E,S,N,B,R=i.kind,j=i.result,$;if($=i.input.charCodeAt(i.position),tp($)||LA($)||$===35||$===38||$===42||$===33||$===124||$===62||$===39||$===34||$===37||$===64||$===96||($===63||$===45)&&(w=i.input.charCodeAt(i.position+1),tp(w)||f&&LA(w)))return!1;for(i.kind="scalar",i.result="",y=b=i.position,E=!1;$!==0;){if($===58){if(w=i.input.charCodeAt(i.position+1),tp(w)||f&&LA(w))break}else if($===35){if(p=i.input.charCodeAt(i.position-1),tp(p))break}else{if(i.position===i.lineStart&&hW(i)||f&&LA($))break;if(i3($))if(S=i.line,N=i.lineStart,B=i.lineIndent,Ff(i,!1,-1),i.lineIndent>=a){E=!0,$=i.input.charCodeAt(i.position);continue}else{i.position=b,i.line=S,i.lineStart=N,i.lineIndent=B;break}}E&&(Jk(i,y,b,!1),Z1e(i,i.line-S),y=b=i.position,E=!1),KE($)||(b=i.position+1),$=i.input.charCodeAt(++i.position)}return Jk(i,y,b,!1),i.result?!0:(i.kind=R,i.result=j,!1)}function KTt(i,a){var f,p,w;if(f=i.input.charCodeAt(i.position),f!==39)return!1;for(i.kind="scalar",i.result="",i.position++,p=w=i.position;(f=i.input.charCodeAt(i.position))!==0;)if(f===39)if(Jk(i,p,i.position,!0),f=i.input.charCodeAt(++i.position),f===39)p=i.position,i.position++,w=i.position;else return!0;else i3(f)?(Jk(i,p,w,!0),Z1e(i,Ff(i,!1,a)),p=w=i.position):i.position===i.lineStart&&hW(i)?Os(i,"unexpected end of the document within a single quoted scalar"):(i.position++,w=i.position);Os(i,"unexpected end of the stream within a single quoted scalar")}function YTt(i,a){var f,p,w,y,b,E;if(E=i.input.charCodeAt(i.position),E!==34)return!1;for(i.kind="scalar",i.result="",i.position++,f=p=i.position;(E=i.input.charCodeAt(i.position))!==0;){if(E===34)return Jk(i,f,i.position,!0),i.position++,!0;if(E===92){if(Jk(i,f,i.position,!0),E=i.input.charCodeAt(++i.position),i3(E))Ff(i,!1,a);else if(E<256&&sIe[E])i.result+=aIe[E],i.position++;else if((b=GTt(E))>0){for(w=b,y=0;w>0;w--)E=i.input.charCodeAt(++i.position),(b=zTt(E))>=0?y=(y<<4)+b:Os(i,"expected hexadecimal character");i.result+=VTt(y),i.position++}else Os(i,"unknown escape sequence");f=p=i.position}else i3(E)?(Jk(i,f,p,!0),Z1e(i,Ff(i,!1,a)),f=p=i.position):i.position===i.lineStart&&hW(i)?Os(i,"unexpected end of the document within a double quoted scalar"):(i.position++,p=i.position)}Os(i,"unexpected end of the stream within a double quoted scalar")}function XTt(i,a){var f=!0,p,w,y,b=i.tag,E,S=i.anchor,N,B,R,j,$,V=Object.create(null),Q,oe,ce,se;if(se=i.input.charCodeAt(i.position),se===91)B=93,$=!1,E=[];else if(se===123)B=125,$=!0,E={};else return!1;for(i.anchor!==null&&(i.anchorMap[i.anchor]=E),se=i.input.charCodeAt(++i.position);se!==0;){if(Ff(i,!0,a),se=i.input.charCodeAt(i.position),se===B)return i.position++,i.tag=b,i.anchor=S,i.kind=$?"mapping":"sequence",i.result=E,!0;f?se===44&&Os(i,"expected the node content, but found ','"):Os(i,"missed comma between flow collection entries"),oe=Q=ce=null,R=j=!1,se===63&&(N=i.input.charCodeAt(i.position+1),tp(N)&&(R=j=!0,i.position++,Ff(i,!0,a))),p=i.line,w=i.lineStart,y=i.position,IA(i,a,cW,!1,!0),oe=i.tag,Q=i.result,Ff(i,!0,a),se=i.input.charCodeAt(i.position),(j||i.line===p)&&se===58&&(R=!0,se=i.input.charCodeAt(++i.position),Ff(i,!0,a),IA(i,a,cW,!1,!0),ce=i.result),$?DA(i,E,V,oe,Q,ce,p,w,y):R?E.push(DA(i,null,V,oe,Q,ce,p,w,y)):E.push(Q),Ff(i,!0,a),se=i.input.charCodeAt(i.position),se===44?(f=!0,se=i.input.charCodeAt(++i.position)):f=!1}Os(i,"unexpected end of the stream within a flow collection")}function QTt(i,a){var f,p,w=X1e,y=!1,b=!1,E=a,S=0,N=!1,B,R;if(R=i.input.charCodeAt(i.position),R===124)p=!1;else if(R===62)p=!0;else return!1;for(i.kind="scalar",i.result="";R!==0;)if(R=i.input.charCodeAt(++i.position),R===43||R===45)X1e===w?w=R===43?eIe:FTt:Os(i,"repeat of a chomping mode identifier");else if((B=qTt(R))>=0)B===0?Os(i,"bad explicit indentation width of a block scalar; it cannot be less than one"):b?Os(i,"repeat of an indentation width identifier"):(E=a+B-1,b=!0);else break;if(KE(R)){do R=i.input.charCodeAt(++i.position);while(KE(R));if(R===35)do R=i.input.charCodeAt(++i.position);while(!i3(R)&&R!==0)}for(;R!==0;){for(Q1e(i),i.lineIndent=0,R=i.input.charCodeAt(i.position);(!b||i.lineIndentE&&(E=i.lineIndent),i3(R)){S++;continue}if(i.lineIndenta)&&S!==0)Os(i,"bad indentation of a sequence entry");else if(i.lineIndenta)&&(oe&&(b=i.line,E=i.lineStart,S=i.position),IA(i,a,uW,!0,w)&&(oe?V=i.result:Q=i.result),oe||(DA(i,R,j,$,V,Q,b,E,S),$=V=Q=null),Ff(i,!0,-1),se=i.input.charCodeAt(i.position)),(i.line===y||i.lineIndent>a)&&se!==0)Os(i,"bad indentation of a mapping entry");else if(i.lineIndenta?S=1:i.lineIndent===a?S=0:i.lineIndenta?S=1:i.lineIndent===a?S=0:i.lineIndent tag; it should be "scalar", not "'+i.kind+'"'),R=0,j=i.implicitTypes.length;R"),i.result!==null&&V.kind!==i.kind&&Os(i,"unacceptable node kind for !<"+i.tag+'> tag; it should be "'+V.kind+'", not "'+i.kind+'"'),V.resolve(i.result,i.tag)?(i.result=V.construct(i.result,i.tag),i.anchor!==null&&(i.anchorMap[i.anchor]=i.result)):Os(i,"cannot resolve a node with !<"+i.tag+"> explicit tag")}return i.listener!==null&&i.listener("close",i),i.tag!==null||i.anchor!==null||B}function n_t(i){var a=i.position,f,p,w,y=!1,b;for(i.version=null,i.checkLineBreaks=i.legacy,i.tagMap=Object.create(null),i.anchorMap=Object.create(null);(b=i.input.charCodeAt(i.position))!==0&&(Ff(i,!0,-1),b=i.input.charCodeAt(i.position),!(i.lineIndent>0||b!==37));){for(y=!0,b=i.input.charCodeAt(++i.position),f=i.position;b!==0&&!tp(b);)b=i.input.charCodeAt(++i.position);for(p=i.input.slice(f,i.position),w=[],p.length<1&&Os(i,"directive name must not be less than one character in length");b!==0;){for(;KE(b);)b=i.input.charCodeAt(++i.position);if(b===35){do b=i.input.charCodeAt(++i.position);while(b!==0&&!i3(b));break}if(i3(b))break;for(f=i.position;b!==0&&!tp(b);)b=i.input.charCodeAt(++i.position);w.push(i.input.slice(f,i.position))}b!==0&&Q1e(i),Zk.call(cIe,p)?cIe[p](i,p,w):lW(i,'unknown document directive "'+p+'"')}if(Ff(i,!0,-1),i.lineIndent===0&&i.input.charCodeAt(i.position)===45&&i.input.charCodeAt(i.position+1)===45&&i.input.charCodeAt(i.position+2)===45?(i.position+=3,Ff(i,!0,-1)):y&&Os(i,"directives end mark is expected"),IA(i,i.lineIndent-1,uW,!1,!0),Ff(i,!0,-1),i.checkLineBreaks&&$Tt.test(i.input.slice(a,i.position))&&lW(i,"non-ASCII line breaks are interpreted as content"),i.documents.push(i.result),i.position===i.lineStart&&hW(i)){i.input.charCodeAt(i.position)===46&&(i.position+=3,Ff(i,!0,-1));return}if(i.position"u"&&(f=a,a=null);var p=hIe(i,f);if(typeof a!="function")return p;for(var w=0,y=p.length;wJ1e(i,y,f)),i):Array.isArray(a)&&Array.isArray(i)?(a.forEach(y=>{i.includes(y)||i.push(y)}),i):i===void 0||p<=0?i!=null&&typeof i=="object"&&typeof a=="object"?Object.assign(i,a):a:(a!==void 0&&typeof i=="object"&&typeof a=="object"&&Object.keys(a).forEach(y=>{typeof a[y]=="object"&&(i[y]===void 0||typeof i[y]=="object")?(i[y]===void 0&&(i[y]=Array.isArray(a[y])?[]:{}),i[y]=J1e(i[y],a[y],{depth:p-1,clobber:w})):(w||typeof i[y]!="object"&&typeof a[y]!="object")&&(i[y]=a[y])}),i)},nd=J1e,OA=Object.freeze(y9t);let np=nd({},OA),dIe,NA=[],zN=nd({},OA);const fW=(i,a)=>{let f=nd({},i),p={};for(const w of a)bIe(w),p=nd(p,w);if(f=nd(f,p),p.theme&&p.theme in g5){const w=nd({},dIe),y=nd(w.themeVariables||{},p.themeVariables);f.theme&&f.theme in g5&&(f.themeVariables=g5[f.theme].getThemeVariables(y))}return zN=f,yIe(zN),zN},h_t=i=>(np=nd({},OA),np=nd(np,i),i.theme&&g5[i.theme]&&(np.themeVariables=g5[i.theme].getThemeVariables(i.themeVariables)),fW(np,NA),np),f_t=i=>{dIe=nd({},i)},d_t=i=>(np=nd(np,i),fW(np,NA),np),gIe=()=>nd({},np),pIe=i=>(yIe(i),nd(zN,i),Tt()),Tt=()=>nd({},zN),bIe=i=>{["secure",...np.secure??[]].forEach(a=>{i[a]!==void 0&&(Fe.debug(`Denied attempt to modify a secure key ${a}`,i[a]),delete i[a])}),Object.keys(i).forEach(a=>{a.indexOf("__")===0&&delete i[a]}),Object.keys(i).forEach(a=>{typeof i[a]=="string"&&(i[a].includes("<")||i[a].includes(">")||i[a].includes("url(data:"))&&delete i[a],typeof i[a]=="object"&&bIe(i[a])})},vIe=i=>{i.fontFamily&&(i.themeVariables?i.themeVariables.fontFamily||(i.themeVariables={fontFamily:i.fontFamily}):i.themeVariables={fontFamily:i.fontFamily}),NA.push(i),fW(np,NA)},dW=(i=np)=>{NA=[],fW(i,NA)};var wIe=(i=>(i.LAZY_LOAD_DEPRECATED="The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",i))(wIe||{});const mIe={},g_t=i=>{mIe[i]||(Fe.warn(wIe[i]),mIe[i]=!0)},yIe=i=>{i&&(i.lazyLoadedDiagrams||i.loadExternalDiagramsAtStartup)&&g_t("LAZY_LOAD_DEPRECATED")},p_t=function(i,a){for(let f of a)i.attr(f[0],f[1])},b_t=function(i,a,f){let p=new Map;return f?(p.set("width","100%"),p.set("style",`max-width: ${a}px;`)):(p.set("height",i),p.set("width",a)),p},Vw=function(i,a,f,p){const w=b_t(a,f,p);p_t(i,w)},YE=function(i,a,f,p){const w=a.node().getBBox(),y=w.width,b=w.height;Fe.info(`SVG bounds: ${y}x${b}`,w);let E=0,S=0;Fe.info(`Graph bounds: ${E}x${S}`,i),E=y+f*2,S=b+f*2,Fe.info(`Calculated bounds: ${E}x${S}`),Vw(a,S,E,p);const N=`${w.x-f} ${w.y-f} ${w.width+2*f} ${w.height+2*f}`;a.attr("viewBox",N)},gW={},v_t=(i,a,f)=>{let p="";return i in gW&&gW[i]?p=gW[i](f):Fe.warn(`No theme found for ${i}`),` & { + font-family: ${f.fontFamily}; + font-size: ${f.fontSize}; + fill: ${f.textColor} + } + + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${f.errorBkgColor}; + } + & .error-text { + fill: ${f.errorTextColor}; + stroke: ${f.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: 2px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${f.lineColor}; + stroke: ${f.lineColor}; + } + & .marker.cross { + stroke: ${f.lineColor}; + } + + & svg { + font-family: ${f.fontFamily}; + font-size: ${f.fontSize}; + } + + ${p} + + ${a} +`},w_t=(i,a)=>{gW[i]=a},m_t=v_t;let ede="",pW="",tde="";const nde=i=>ep(i,Tt()),rp=function(){ede="",tde="",pW=""},ip=function(i){ede=nde(i).replace(/^\s+/g,"")},L2=function(){return ede||pW},M2=function(i){tde=nde(i).replace(/\n\s+/g,` +`)},D2=function(){return tde},Uw=function(i){pW=nde(i)},Ww=function(){return pW},kIe=Object.freeze(Object.defineProperty({__proto__:null,clear:rp,default:{getAccTitle:L2,setAccTitle:ip,getDiagramTitle:Ww,setDiagramTitle:Uw,getAccDescription:D2,setAccDescription:M2,clear:rp},getAccDescription:D2,getAccTitle:L2,getDiagramTitle:Ww,setAccDescription:M2,setAccTitle:ip,setDiagramTitle:Uw},Symbol.toStringTag,{value:"Module"}));let XE={};const rde=function(i,a,f,p){Fe.debug("parseDirective is being called",a,f,p);try{if(a!==void 0)switch(a=a.trim(),f){case"open_directive":XE={};break;case"type_directive":if(!XE)throw new Error("currentDirective is undefined");XE.type=a.toLowerCase();break;case"arg_directive":if(!XE)throw new Error("currentDirective is undefined");XE.args=JSON.parse(a);break;case"close_directive":y_t(i,XE,p),XE=void 0;break}}catch(w){Fe.error(`Error while rendering sequenceDiagram directive: ${a} jison context: ${f}`),Fe.error(w.message)}},y_t=function(i,a,f){switch(Fe.info(`Directive type=${a.type} with args:`,a.args),a.type){case"init":case"initialize":{["config"].forEach(p=>{a.args[p]!==void 0&&(f==="flowchart-v2"&&(f="flowchart"),a.args[f]=a.args[p],delete a.args[p])}),Fe.info("sanitize in handleDirective",a.args),jA(a.args),Fe.info("sanitize in handleDirective (done)",a.args),vIe(a.args);break}case"wrap":case"nowrap":i&&i.setWrap&&i.setWrap(a.type==="wrap");break;case"themeCss":Fe.warn("themeCss encountered");break;default:Fe.warn(`Unhandled directive: source: '%%{${a.type}: ${JSON.stringify(a.args?a.args:{})}}%%`,a);break}},k_t=Fe,x_t=$fe,GN=Tt,E_t=i=>ep(i,GN()),xIe=YE,T_t=()=>kIe,__t=(i,a,f,p)=>rde(i,a,f,p),bW={},vW=(i,a,f)=>{if(bW[i])throw new Error(`Diagram ${i} already registered.`);bW[i]=a,f&&_Ie(i,f),w_t(i,a.styles),a.injectUtils&&a.injectUtils(k_t,x_t,GN,E_t,xIe,T_t(),__t)},ide=i=>{if(i in bW)return bW[i];throw new Error(`Diagram ${i} not found.`)};class EIe extends Error{constructor(a){super(a),this.name="UnknownDiagramError"}}const C_t=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,S_t=/\s*%%.*\n/gm,PA={},wW=function(i,a){i=i.replace(fIe,"").replace(C_t,"").replace(S_t,` +`);for(const[f,{detector:p}]of Object.entries(PA))if(p(i,a))return f;throw new EIe(`No diagram type detected matching given configuration for text: ${i}`)},TIe=(...i)=>{for(const{id:a,detector:f,loader:p}of i)_Ie(a,f,p)},A_t=async()=>{Fe.debug("Loading registered diagrams");const a=(await Promise.allSettled(Object.entries(PA).map(async([f,{detector:p,loader:w}])=>{if(w)try{ide(f)}catch{try{const{diagram:b,id:E}=await w();vW(E,b,p)}catch(b){throw Fe.error(`Failed to load external diagram with key ${f}. Removing from detectors.`),delete PA[f],b}}}))).filter(f=>f.status==="rejected");if(a.length>0){Fe.error(`Failed to load ${a.length} external diagrams`);for(const f of a)Fe.error(f);throw new Error(`Failed to load ${a.length} external diagrams`)}},_Ie=(i,a,f)=>{PA[i]?Fe.error(`Detector with key ${i} already exists`):PA[i]={detector:a,loader:f},Fe.debug(`Detector with key ${i} added${f?" with loader":""}`)},L_t=i=>PA[i].loader;var M_t=typeof global=="object"&&global&&global.Object===Object&&global;const CIe=M_t;var D_t=typeof self=="object"&&self&&self.Object===Object&&self,I_t=CIe||D_t||Function("return this")();const Kw=I_t;var O_t=Kw.Symbol;const Vb=O_t;var SIe=Object.prototype,N_t=SIe.hasOwnProperty,P_t=SIe.toString,qN=Vb?Vb.toStringTag:void 0;function B_t(i){var a=N_t.call(i,qN),f=i[qN];try{i[qN]=void 0;var p=!0}catch{}var w=P_t.call(i);return p&&(a?i[qN]=f:delete i[qN]),w}var R_t=Object.prototype,F_t=R_t.toString;function j_t(i){return F_t.call(i)}var $_t="[object Null]",H_t="[object Undefined]",AIe=Vb?Vb.toStringTag:void 0;function QE(i){return i==null?i===void 0?H_t:$_t:AIe&&AIe in Object(i)?B_t(i):j_t(i)}function I2(i){var a=typeof i;return i!=null&&(a=="object"||a=="function")}var z_t="[object AsyncFunction]",G_t="[object Function]",q_t="[object GeneratorFunction]",V_t="[object Proxy]";function BA(i){if(!I2(i))return!1;var a=QE(i);return a==G_t||a==q_t||a==z_t||a==V_t}var U_t=Kw["__core-js_shared__"];const sde=U_t;var LIe=function(){var i=/[^.]+$/.exec(sde&&sde.keys&&sde.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function W_t(i){return!!LIe&&LIe in i}var K_t=Function.prototype,Y_t=K_t.toString;function ZE(i){if(i!=null){try{return Y_t.call(i)}catch{}try{return i+""}catch{}}return""}var X_t=/[\\^$.*+?()[\]{}|]/g,Q_t=/^\[object .+?Constructor\]$/,Z_t=Function.prototype,J_t=Object.prototype,eCt=Z_t.toString,tCt=J_t.hasOwnProperty,nCt=RegExp("^"+eCt.call(tCt).replace(X_t,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function rCt(i){if(!I2(i)||W_t(i))return!1;var a=BA(i)?nCt:Q_t;return a.test(ZE(i))}function iCt(i,a){return i==null?void 0:i[a]}function JE(i,a){var f=iCt(i,a);return rCt(f)?f:void 0}var sCt=JE(Object,"create");const VN=sCt;function aCt(){this.__data__=VN?VN(null):{},this.size=0}function oCt(i){var a=this.has(i)&&delete this.__data__[i];return this.size-=a?1:0,a}var cCt="__lodash_hash_undefined__",uCt=Object.prototype,lCt=uCt.hasOwnProperty;function hCt(i){var a=this.__data__;if(VN){var f=a[i];return f===cCt?void 0:f}return lCt.call(a,i)?a[i]:void 0}var fCt=Object.prototype,dCt=fCt.hasOwnProperty;function gCt(i){var a=this.__data__;return VN?a[i]!==void 0:dCt.call(a,i)}var pCt="__lodash_hash_undefined__";function bCt(i,a){var f=this.__data__;return this.size+=this.has(i)?0:1,f[i]=VN&&a===void 0?pCt:a,this}function e9(i){var a=-1,f=i==null?0:i.length;for(this.clear();++a-1}function ECt(i,a){var f=this.__data__,p=mW(f,i);return p<0?(++this.size,f.push([i,a])):f[p][1]=a,this}function b5(i){var a=-1,f=i==null?0:i.length;for(this.clear();++ay.args);jA(w),p=nd(p,[...w])}else p=f.args;if(p){let w=wW(i,a);["config"].forEach(y=>{p[y]!==void 0&&(w==="flowchart-v2"&&(w="flowchart"),p[w]=p[y],delete p[y])})}return p},MIe=function(i,a=null){try{const f=new RegExp(`[%]{2}(?![{]${OCt.source})(?=[}][%]{2}).* +`,"ig");i=i.trim().replace(f,"").replace(/'/gm,'"'),Fe.debug(`Detecting diagram directive${a!==null?" type:"+a:""} based on the text:${i}`);let p;const w=[];for(;(p=ade.exec(i))!==null;)if(p.index===ade.lastIndex&&ade.lastIndex++,p&&!a||a&&p[1]&&p[1].match(a)||a&&p[2]&&p[2].match(a)){const y=p[1]?p[1]:p[2],b=p[3]?p[3].trim():p[4]?JSON.parse(p[4].trim()):null;w.push({type:y,args:b})}return w.length===0&&w.push({type:i,args:null}),w.length===1?w[0]:w}catch(f){return Fe.error(`ERROR: ${f.message} - Unable to parse directive + ${a!==null?" type:"+a:""} based on the text:${i}`),{type:null,args:null}}},PCt=function(i,a){for(const[f,p]of a.entries())if(p.match(i))return f;return-1};function Ub(i,a){if(!i)return a;const f=`curve${i.charAt(0).toUpperCase()+i.slice(1)}`;return ICt[f]||a}function BCt(i,a){const f=i.trim();if(f)return a.securityLevel!=="loose"?u5(f):f}const RCt=(i,...a)=>{const f=i.split("."),p=f.length-1,w=f[p];let y=window;for(let b=0;b{f+=kW(y,a),a=y});let p=f/2,w;return a=void 0,i.forEach(y=>{if(a&&!w){const b=kW(y,a);if(b=1&&(w={x:y.x,y:y.y}),E>0&&E<1&&(w={x:(1-E)*a.x+E*y.x,y:(1-E)*a.y+E*y.y})}}a=y}),w}function jCt(i){return i.length===1?i[0]:FCt(i)}const $Ct=(i,a,f)=>{let p;Fe.info(`our points ${JSON.stringify(a)}`),a[0]!==f&&(a=a.reverse());let y=25,b;p=void 0,a.forEach(B=>{if(p&&!b){const R=kW(B,p);if(R=1&&(b={x:B.x,y:B.y}),j>0&&j<1&&(b={x:(1-j)*p.x+j*B.x,y:(1-j)*p.y+j*B.y})}}p=B});const E=i?10:5,S=Math.atan2(a[0].y-b.y,a[0].x-b.x),N={x:0,y:0};return N.x=Math.sin(S)*E+(a[0].x+b.x)/2,N.y=-Math.cos(S)*E+(a[0].y+b.y)/2,N};function HCt(i,a,f){let p=JSON.parse(JSON.stringify(f)),w;Fe.info("our points",p),a!=="start_left"&&a!=="start_right"&&(p=p.reverse()),p.forEach(R=>{w=R});let b=25+i,E;w=void 0,p.forEach(R=>{if(w&&!E){const j=kW(R,w);if(j=1&&(E={x:R.x,y:R.y}),$>0&&$<1&&(E={x:(1-$)*w.x+$*R.x,y:(1-$)*w.y+$*R.y})}}w=R});const S=10+i*.5,N=Math.atan2(p[0].y-E.y,p[0].x-E.x),B={x:0,y:0};return B.x=Math.sin(N)*S+(p[0].x+E.x)/2,B.y=-Math.cos(N)*S+(p[0].y+E.y)/2,a==="start_left"&&(B.x=Math.sin(N+Math.PI)*S+(p[0].x+E.x)/2,B.y=-Math.cos(N+Math.PI)*S+(p[0].y+E.y)/2),a==="end_right"&&(B.x=Math.sin(N-Math.PI)*S+(p[0].x+E.x)/2-5,B.y=-Math.cos(N-Math.PI)*S+(p[0].y+E.y)/2-5),a==="end_left"&&(B.x=Math.sin(N)*S+(p[0].x+E.x)/2-5,B.y=-Math.cos(N)*S+(p[0].y+E.y)/2-5),B}function Yw(i){let a="",f="";for(const p of i)p!==void 0&&(p.startsWith("color:")||p.startsWith("text-align:")?f=f+p+";":a=a+p+";");return{style:a,labelStyle:f}}let DIe=0;const IIe=()=>(DIe++,"id-"+Math.random().toString(36).substr(2,12)+"-"+DIe);function zCt(i){let a="";const f="0123456789abcdef",p=f.length;for(let w=0;wzCt(i.length),GCt=function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0}},qCt=function(i,a){const f=a.text.replace(Wa.lineBreakRegex," "),[,p]=$A(a.fontSize),w=i.append("text");w.attr("x",a.x),w.attr("y",a.y),w.style("text-anchor",a.anchor),w.style("font-family",a.fontFamily),w.style("font-size",p),w.style("font-weight",a.fontWeight),w.attr("fill",a.fill),a.class!==void 0&&w.attr("class",a.class);const y=w.append("tspan");return y.attr("x",a.x+a.textMargin*2),y.attr("fill",a.fill),y.text(f),w},NIe=FA((i,a,f)=>{if(!i||(f=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},f),Wa.lineBreakRegex.test(i)))return i;const p=i.split(" "),w=[];let y="";return p.forEach((b,E)=>{const S=s3(`${b} `,f),N=s3(y,f);if(S>a){const{hyphenatedStrings:j,remainingWord:$}=VCt(b,a,"-",f);w.push(y,...j),y=$}else N+S>=a?(w.push(y),y=b):y=[y,b].filter(Boolean).join(" ");E+1===p.length&&w.push(y)}),w.filter(b=>b!=="").join(f.joinWith)},(i,a,f)=>`${i}${a}${f.fontSize}${f.fontWeight}${f.fontFamily}${f.joinWith}`),VCt=FA((i,a,f="-",p)=>{p=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},p);const w=[...i],y=[];let b="";return w.forEach((E,S)=>{const N=`${b}${E}`;if(s3(N,p)>=a){const R=S+1,j=w.length===R,$=`${N}${f}`;y.push(j?N:$),b=""}else b=N}),{hyphenatedStrings:y,remainingWord:b}},(i,a,f="-",p)=>`${i}${a}${f}${p.fontSize}${p.fontWeight}${p.fontFamily}`);function ode(i,a){return a=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:15},a),cde(i,a).height}function s3(i,a){return a=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},a),cde(i,a).width}const cde=FA((i,a)=>{a=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},a);const{fontSize:f,fontFamily:p,fontWeight:w}=a;if(!i)return{width:0,height:0};const[,y]=$A(f),b=["sans-serif",p],E=i.split(Wa.lineBreakRegex),S=[],N=Cr("body");if(!N.remove)return{width:0,height:0,lineHeight:0};const B=N.append("svg");for(const j of b){let $=0;const V={width:0,height:0,lineHeight:0};for(const Q of E){const oe=GCt();oe.text=Q;const ce=qCt(B,oe).style("font-size",y).style("font-weight",w).style("font-family",j),se=(ce._groups||ce)[0][0].getBBox();if(se.width===0&&se.height===0)throw new Error("svg element not in render tree");V.width=Math.round(Math.max(V.width,se.width)),$=Math.round(se.height),V.height+=$,V.lineHeight=Math.round(Math.max(V.lineHeight,$))}S.push(V)}B.remove();const R=isNaN(S[1].height)||isNaN(S[1].width)||isNaN(S[1].lineHeight)||S[0].height>S[1].height&&S[0].width>S[1].width&&S[0].lineHeight>S[1].lineHeight?0:1;return S[R]},(i,a)=>`${i}${a.fontSize}${a.fontWeight}${a.fontFamily}`),UCt=class{constructor(a,f){this.deterministic=a,this.seed=f,this.count=f?f.length:0}next(){return this.deterministic?this.count++:Date.now()}};let xW;const WCt=function(i){return xW=xW||document.createElement("div"),i=escape(i).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),xW.innerHTML=i,unescape(xW.textContent)},jA=i=>{if(Fe.debug("directiveSanitizer called with",i),typeof i=="object"&&(i.length?i.forEach(a=>jA(a)):Object.keys(i).forEach(a=>{Fe.debug("Checking key",a),a.startsWith("__")&&(Fe.debug("sanitize deleting __ option",a),delete i[a]),a.includes("proto")&&(Fe.debug("sanitize deleting proto option",a),delete i[a]),a.includes("constr")&&(Fe.debug("sanitize deleting constr option",a),delete i[a]),a.includes("themeCSS")&&(Fe.debug("sanitizing themeCss option"),i[a]=EW(i[a])),a.includes("fontFamily")&&(Fe.debug("sanitizing fontFamily option"),i[a]=EW(i[a])),a.includes("altFontFamily")&&(Fe.debug("sanitizing altFontFamily option"),i[a]=EW(i[a])),m9t.includes(a)?typeof i[a]=="object"&&(Fe.debug("sanitize deleting object",a),jA(i[a])):(Fe.debug("sanitize deleting option",a),delete i[a])})),i.themeVariables){const a=Object.keys(i.themeVariables);for(const f of a){const p=i.themeVariables[f];p&&p.match&&!p.match(/^[\d "#%(),.;A-Za-z]+$/)&&(i.themeVariables[f]="")}}Fe.debug("After sanitization",i)},EW=i=>{let a=0,f=0;for(const p of i){if(a{if(!p)return;const w=i.node().getBBox();i.append("text").text(p).attr("x",w.x+w.width/2).attr("y",-f).attr("class",a)},$A=i=>{if(typeof i=="number")return[i,i+"px"];const a=parseInt(i,10);return Number.isNaN(a)?[void 0,void 0]:i===String(a)?[a,i+"px"]:[a,i]},co={assignWithDepth:nd,wrapLabel:NIe,calculateTextHeight:ode,calculateTextWidth:s3,calculateTextDimensions:cde,detectInit:NCt,detectDirective:MIe,isSubstringInArray:PCt,interpolateToCurve:Ub,calcLabelPosition:jCt,calcCardinalityPosition:$Ct,calcTerminalLabelPosition:HCt,formatUrl:BCt,getStylesFromArray:Yw,generateId:IIe,random:OIe,runFunc:RCt,entityDecode:WCt,initIdGenerator:UCt,directiveSanitizer:jA,sanitizeCss:EW,insertTitle:YCt,parseFontSize:$A};var BIe="comm",RIe="rule",FIe="decl",XCt="@import",QCt="@keyframes",ZCt=Math.abs,ude=String.fromCharCode;function jIe(i){return i.trim()}function lde(i,a,f){return i.replace(a,f)}function JCt(i,a){return i.indexOf(a)}function WN(i,a){return i.charCodeAt(a)|0}function KN(i,a,f){return i.slice(a,f)}function ex(i){return i.length}function $Ie(i){return i.length}function TW(i,a){return a.push(i),i}var _W=1,HA=1,HIe=0,Wb=0,jf=0,zA="";function hde(i,a,f,p,w,y,b){return{value:i,root:a,parent:f,type:p,props:w,children:y,line:_W,column:HA,length:b,return:""}}function eSt(){return jf}function tSt(){return jf=Wb>0?WN(zA,--Wb):0,HA--,jf===10&&(HA=1,_W--),jf}function Xw(){return jf=Wb2||fde(jf)>3?"":" "}function sSt(i,a){for(;--a&&Xw()&&!(jf<48||jf>102||jf>57&&jf<65||jf>70&&jf<97););return SW(i,CW()+(a<6&&t9()==32&&Xw()==32))}function gde(i){for(;Xw();)switch(jf){case i:return Wb;case 34:case 39:i!==34&&i!==39&&gde(jf);break;case 40:i===41&&gde(i);break;case 92:Xw();break}return Wb}function aSt(i,a){for(;Xw()&&i+jf!==47+10;)if(i+jf===42+42&&t9()===47)break;return"/*"+SW(a,Wb-1)+"*"+ude(i===47?i:Xw())}function oSt(i){for(;!fde(t9());)Xw();return SW(i,Wb)}function cSt(i){return rSt(AW("",null,null,null,[""],i=nSt(i),0,[0],i))}function AW(i,a,f,p,w,y,b,E,S){for(var N=0,B=0,R=b,j=0,$=0,V=0,Q=1,oe=1,ce=1,se=0,ge="",ye=w,ke=y,Ae=p,de=ge;oe;)switch(V=se,se=Xw()){case 40:if(V!=108&&WN(de,R-1)==58){JCt(de+=lde(dde(se),"&","&\f"),"&\f")!=-1&&(ce=-1);break}case 34:case 39:case 91:de+=dde(se);break;case 9:case 10:case 13:case 32:de+=iSt(V);break;case 92:de+=sSt(CW()-1,7);continue;case 47:switch(t9()){case 42:case 47:TW(uSt(aSt(Xw(),CW()),a,f),S);break;default:de+="/"}break;case 123*Q:E[N++]=ex(de)*ce;case 125*Q:case 59:case 0:switch(se){case 0:case 125:oe=0;case 59+B:$>0&&ex(de)-R&&TW($>32?GIe(de+";",p,f,R-1):GIe(lde(de," ","")+";",p,f,R-2),S);break;case 59:de+=";";default:if(TW(Ae=zIe(de,a,f,N,B,w,E,ge,ye=[],ke=[],R),y),se===123)if(B===0)AW(de,a,Ae,Ae,ye,y,R,E,ke);else switch(j===99&&WN(de,3)===110?100:j){case 100:case 109:case 115:AW(i,Ae,Ae,p&&TW(zIe(i,Ae,Ae,0,0,w,E,ge,w,ye=[],R),ke),w,ke,R,E,p?ye:ke);break;default:AW(de,Ae,Ae,Ae,[""],ke,0,E,ke)}}N=B=$=0,Q=ce=1,ge=de="",R=b;break;case 58:R=1+ex(de),$=V;default:if(Q<1){if(se==123)--Q;else if(se==125&&Q++==0&&tSt()==125)continue}switch(de+=ude(se),se*Q){case 38:ce=B>0?1:(de+="\f",-1);break;case 44:E[N++]=(ex(de)-1)*ce,ce=1;break;case 64:t9()===45&&(de+=dde(Xw())),j=t9(),B=R=ex(ge=de+=oSt(CW())),se++;break;case 45:V===45&&ex(de)==2&&(Q=0)}}return y}function zIe(i,a,f,p,w,y,b,E,S,N,B){for(var R=w-1,j=w===0?y:[""],$=$Ie(j),V=0,Q=0,oe=0;V0?j[ce]+" "+se:lde(se,/&\f/g,j[ce])))&&(S[oe++]=ge);return hde(i,a,f,w===0?RIe:E,S,N,B)}function uSt(i,a,f){return hde(i,a,f,BIe,ude(eSt()),KN(i,2,-2),0)}function GIe(i,a,f,p){return hde(i,a,f,FIe,KN(i,0,p),KN(i,p+1,-1),p)}function pde(i,a){for(var f="",p=$Ie(i),w=0;wi.match(/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>rMt);return{id:VIe,diagram:i}}},UIe="flowchart",fSt={id:UIe,detector:(i,a)=>{var f,p;return((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="dagre-wrapper"||((p=a==null?void 0:a.flowchart)==null?void 0:p.defaultRenderer)==="elk"?!1:i.match(/^\s*graph/)!==null},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>kFt);return{id:UIe,diagram:i}}},WIe="flowchart-v2",dSt={id:WIe,detector:(i,a)=>{var f,p,w;return((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="dagre-d3"||((p=a==null?void 0:a.flowchart)==null?void 0:p.defaultRenderer)==="elk"?!1:i.match(/^\s*graph/)!==null&&((w=a==null?void 0:a.flowchart)==null?void 0:w.defaultRenderer)==="dagre-wrapper"?!0:i.match(/^\s*flowchart/)!==null},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>xFt);return{id:WIe,diagram:i}}},KIe="er",gSt={id:KIe,detector:i=>i.match(/^\s*erDiagram/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>YFt);return{id:KIe,diagram:i}}},YIe="gitGraph",pSt={id:YIe,detector:i=>i.match(/^\s*gitGraph/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>xjt);return{id:YIe,diagram:i}}},XIe="gantt",bSt={id:XIe,detector:i=>i.match(/^\s*gantt/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>x$t);return{id:XIe,diagram:i}}},QIe="info",vSt={id:QIe,detector:i=>i.match(/^\s*info/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>T$t);return{id:QIe,diagram:i}}},ZIe="pie",wSt={id:ZIe,detector:i=>i.match(/^\s*pie/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>A$t);return{id:ZIe,diagram:i}}},JIe="requirement",mSt={id:JIe,detector:i=>i.match(/^\s*requirement(Diagram)?/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>F$t);return{id:JIe,diagram:i}}},eOe="sequence",ySt={id:eOe,detector:i=>i.match(/^\s*sequenceDiagram/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>$Ht);return{id:eOe,diagram:i}}},tOe="class",kSt={id:tOe,detector:(i,a)=>{var f;return((f=a==null?void 0:a.class)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!1:i.match(/^\s*classDiagram/)!==null},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>czt);return{id:tOe,diagram:i}}},nOe="classDiagram",xSt={id:nOe,detector:(i,a)=>{var f;return i.match(/^\s*classDiagram/)!==null&&((f=a==null?void 0:a.class)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!0:i.match(/^\s*classDiagram-v2/)!==null},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>gzt);return{id:nOe,diagram:i}}},rOe="state",ESt={id:rOe,detector:(i,a)=>{var f;return((f=a==null?void 0:a.state)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!1:i.match(/^\s*stateDiagram/)!==null},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>nGt);return{id:rOe,diagram:i}}},iOe="stateDiagram",TSt={id:iOe,detector:(i,a)=>{var f,p;return!!(i.match(/^\s*stateDiagram-v2/)!==null||i.match(/^\s*stateDiagram/)&&((f=a==null?void 0:a.state)==null?void 0:f.defaultRenderer)==="dagre-wrapper"||i.match(/^\s*stateDiagram/)&&((p=a==null?void 0:a.state)==null?void 0:p.defaultRenderer)==="dagre-wrapper")},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>kGt);return{id:iOe,diagram:i}}},sOe="journey",_St={id:sOe,detector:i=>i.match(/^\s*journey/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>zGt);return{id:sOe,diagram:i}}},CSt=()=>"",aOe={setConf:function(){},draw:(i,a,f)=>{try{Fe.debug(`Renering svg for syntax error +`);const p=Cr("#"+a),w=p.append("g");w.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),w.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),w.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),w.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),w.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),w.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),w.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),w.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text("mermaid version "+f),p.attr("height",100),p.attr("width",500),p.attr("viewBox","768 0 912 512")}catch(p){Fe.error("Error while rendering info diagram"),Fe.error(KCt(p))}}},SSt={db:{clear:()=>{}},styles:CSt,renderer:aOe,parser:{parser:{yy:{}},parse:()=>{}},init:()=>{}},oOe="flowchart-elk",ASt={id:oOe,detector:(i,a)=>{var f;return!!(i.match(/^\s*flowchart-elk/)||i.match(/^\s*flowchart|graph/)&&((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="elk")},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>iqt);return{id:oOe,diagram:i}}},cOe="timeline",LSt={id:cOe,detector:i=>i.match(/^\s*timeline/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>Eqt);return{id:cOe,diagram:i}}},uOe="mindmap",MSt={id:uOe,detector:i=>i.match(/^\s*mindmap/)!==null,loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>tVt);return{id:uOe,diagram:i}}};let lOe=!1;const bde=()=>{lOe||(lOe=!0,vW("error",SSt,i=>i.toLowerCase().trim()==="error"),vW("---",{db:{clear:()=>{}},styles:{},renderer:{},parser:{parser:{yy:{}},parse:()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")}},init:()=>null},i=>i.toLowerCase().trimStart().startsWith("---")),TIe(hSt,xSt,kSt,gSt,bSt,vSt,wSt,mSt,ySt,ASt,dSt,fSt,MSt,LSt,pSt,TSt,ESt,_St))},DSt=i=>i.trimStart().replace(/^\s*%%(?!{)[^\n]+\n?/gm,"");class hOe{constructor(a){var y,b;this.text=a,this.type="graph",this.text+=` +`;const f=Tt();try{this.type=wW(a,f)}catch(E){this.type="error",this.detectError=E}const p=ide(this.type);Fe.debug("Type "+this.type),this.db=p.db,(b=(y=this.db).clear)==null||b.call(y),this.renderer=p.renderer,this.parser=p.parser;const w=this.parser.parse.bind(this.parser);this.parser.parse=E=>w(DSt(l_t(E,this.db))),this.parser.parser.yy=this.db,p.init&&(p.init(f),Fe.info("Initialized diagram "+this.type,f)),this.parse()}parse(){var a,f;if(this.detectError)throw this.detectError;(f=(a=this.db).clear)==null||f.call(a),this.parser.parse(this.text)}async render(a,f){await this.renderer.draw(this.text,a,f,this)}getParser(){return this.parser}getType(){return this.type}}const vde=async i=>{const a=wW(i,Tt());try{ide(a)}catch{const p=L_t(a);if(!p)throw new EIe(`Diagram ${a} not found.`);const{id:w,diagram:y}=await p();vW(w,y)}return new hOe(i)};let wde=[];const ISt=i=>{wde.push(i)},OSt=()=>{wde.forEach(i=>{i()}),wde=[]};var NSt=Object.prototype;function LW(i){var a=i&&i.constructor,f=typeof a=="function"&&a.prototype||NSt;return i===f}function fOe(i,a){return function(f){return i(a(f))}}var PSt=fOe(Object.keys,Object);const BSt=PSt;var RSt=Object.prototype,FSt=RSt.hasOwnProperty;function dOe(i){if(!LW(i))return BSt(i);var a=[];for(var f in Object(i))FSt.call(i,f)&&f!="constructor"&&a.push(f);return a}var jSt=JE(Kw,"DataView");const mde=jSt;var $St=JE(Kw,"Promise");const yde=$St;var HSt=JE(Kw,"Set");const GA=HSt;var zSt=JE(Kw,"WeakMap");const kde=zSt;var gOe="[object Map]",GSt="[object Object]",pOe="[object Promise]",bOe="[object Set]",vOe="[object WeakMap]",wOe="[object DataView]",qSt=ZE(mde),VSt=ZE(UN),USt=ZE(yde),WSt=ZE(GA),KSt=ZE(kde),n9=QE;(mde&&n9(new mde(new ArrayBuffer(1)))!=wOe||UN&&n9(new UN)!=gOe||yde&&n9(yde.resolve())!=pOe||GA&&n9(new GA)!=bOe||kde&&n9(new kde)!=vOe)&&(n9=function(i){var a=QE(i),f=a==GSt?i.constructor:void 0,p=f?ZE(f):"";if(p)switch(p){case qSt:return wOe;case VSt:return gOe;case USt:return pOe;case WSt:return bOe;case KSt:return vOe}return a});const qA=n9;function a3(i){return i!=null&&typeof i=="object"}var YSt="[object Arguments]";function mOe(i){return a3(i)&&QE(i)==YSt}var yOe=Object.prototype,XSt=yOe.hasOwnProperty,QSt=yOe.propertyIsEnumerable,ZSt=mOe(function(){return arguments}())?mOe:function(i){return a3(i)&&XSt.call(i,"callee")&&!QSt.call(i,"callee")};const VA=ZSt;var JSt=Array.isArray;const $f=JSt;var eAt=9007199254740991;function xde(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=eAt}function tx(i){return i!=null&&xde(i.length)&&!BA(i)}function tAt(){return!1}var kOe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,xOe=kOe&&typeof module=="object"&&module&&!module.nodeType&&module,nAt=xOe&&xOe.exports===kOe,EOe=nAt?Kw.Buffer:void 0,rAt=EOe?EOe.isBuffer:void 0,iAt=rAt||tAt;const UA=iAt;var sAt="[object Arguments]",aAt="[object Array]",oAt="[object Boolean]",cAt="[object Date]",uAt="[object Error]",lAt="[object Function]",hAt="[object Map]",fAt="[object Number]",dAt="[object Object]",gAt="[object RegExp]",pAt="[object Set]",bAt="[object String]",vAt="[object WeakMap]",wAt="[object ArrayBuffer]",mAt="[object DataView]",yAt="[object Float32Array]",kAt="[object Float64Array]",xAt="[object Int8Array]",EAt="[object Int16Array]",TAt="[object Int32Array]",_At="[object Uint8Array]",CAt="[object Uint8ClampedArray]",SAt="[object Uint16Array]",AAt="[object Uint32Array]",Tl={};Tl[yAt]=Tl[kAt]=Tl[xAt]=Tl[EAt]=Tl[TAt]=Tl[_At]=Tl[CAt]=Tl[SAt]=Tl[AAt]=!0,Tl[sAt]=Tl[aAt]=Tl[wAt]=Tl[oAt]=Tl[mAt]=Tl[cAt]=Tl[uAt]=Tl[lAt]=Tl[hAt]=Tl[fAt]=Tl[dAt]=Tl[gAt]=Tl[pAt]=Tl[bAt]=Tl[vAt]=!1;function LAt(i){return a3(i)&&xde(i.length)&&!!Tl[QE(i)]}function MW(i){return function(a){return i(a)}}var TOe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,YN=TOe&&typeof module=="object"&&module&&!module.nodeType&&module,MAt=YN&&YN.exports===TOe,Ede=MAt&&CIe.process,DAt=function(){try{var i=YN&&YN.require&&YN.require("util").types;return i||Ede&&Ede.binding&&Ede.binding("util")}catch{}}();const WA=DAt;var _Oe=WA&&WA.isTypedArray,IAt=_Oe?MW(_Oe):LAt;const DW=IAt;var OAt="[object Map]",NAt="[object Set]",PAt=Object.prototype,BAt=PAt.hasOwnProperty;function KA(i){if(i==null)return!0;if(tx(i)&&($f(i)||typeof i=="string"||typeof i.splice=="function"||UA(i)||DW(i)||VA(i)))return!i.length;var a=qA(i);if(a==OAt||a==NAt)return!i.size;if(LW(i))return!dOe(i).length;for(var f in i)if(BAt.call(i,f))return!1;return!0}const RAt="graphics-document document";function FAt(i,a){i.attr("role",RAt),KA(a)||i.attr("aria-roledescription",a)}function jAt(i,a,f,p){if(i.insert!==void 0)if(a||f){if(f){const w="chart-desc-"+p;i.attr("aria-describedby",w),i.insert("desc",":first-child").attr("id",w).text(f)}if(a){const w="chart-title-"+p;i.attr("aria-labelledby",w),i.insert("title",":first-child").attr("id",w).text(a)}}else return}const COe=["graph","flowchart","flowchart-v2","flowchart-elk","stateDiagram","stateDiagram-v2"],$At=5e4,HAt="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",zAt="sandbox",GAt="loose",qAt="http://www.w3.org/2000/svg",VAt="http://www.w3.org/1999/xlink",UAt="http://www.w3.org/1999/xhtml",WAt="100%",KAt="100%",YAt="border:0;margin:0;",XAt="margin:0",QAt="allow-top-navigation-by-user-activation allow-popups",ZAt='The "iframe" tag is not supported by your browser.',JAt=["foreignobject"],eLt=["dominant-baseline"];async function tLt(i,a){bde();try{(await vde(i)).parse()}catch(f){if(a!=null&&a.suppressErrors)return!1;throw f}return!0}const nLt=function(i){let a=i;return a=a.replace(/style.*:\S*#.*;/g,function(f){return f.substring(0,f.length-1)}),a=a.replace(/classDef.*:\S*#.*;/g,function(f){return f.substring(0,f.length-1)}),a=a.replace(/#\w+;/g,function(f){const p=f.substring(1,f.length-1);return/^\+?\d+$/.test(p)?"fl°°"+p+"¶ß":"fl°"+p+"¶ß"}),a},XN=function(i){let a=i;return a=a.replace(/fl°°/g,"&#"),a=a.replace(/fl°/g,"&"),a=a.replace(/¶ß/g,";"),a},SOe=(i,a,f=[])=>` +.${i} ${a} { ${f.join(" !important; ")} !important; }`,rLt=(i,a,f={})=>{var w;let p="";if(i.themeCSS!==void 0&&(p+=` +${i.themeCSS}`),i.fontFamily!==void 0&&(p+=` +:root { --mermaid-font-family: ${i.fontFamily}}`),i.altFontFamily!==void 0&&(p+=` +:root { --mermaid-alt-font-family: ${i.altFontFamily}}`),!KA(f)&&COe.includes(a)){const S=i.htmlLabels||((w=i.flowchart)==null?void 0:w.htmlLabels)?["> *","span"]:["rect","polygon","ellipse","circle","path"];for(const N in f){const B=f[N];KA(B.styles)||S.forEach(R=>{p+=SOe(B.id,R,B.styles)}),KA(B.textStyles)||(p+=SOe(B.id,"tspan",B.textStyles))}}return p},iLt=(i,a,f,p)=>{const w=rLt(i,a,f),y=m_t(a,w,i.themeVariables);return pde(cSt(`${p}{${y}}`),lSt)},sLt=(i="",a,f)=>{let p=i;return!f&&!a&&(p=p.replace(/marker-end="url\(.*?#/g,'marker-end="url(#')),p=XN(p),p=p.replace(/
/g,"
"),p},aLt=(i="",a)=>{const f=a?a.viewBox.baseVal.height+"px":KAt,p=btoa(''+i+"");return``},AOe=(i,a,f,p,w)=>{const y=i.append("div");y.attr("id",f),p&&y.attr("style",p);const b=y.append("svg").attr("id",a).attr("width","100%").attr("xmlns",qAt);return w&&b.attr("xmlns:xlink",w),b.append("g"),i};function LOe(i,a){return i.append("iframe").attr("id",a).attr("style","width: 100%; height: 100%;").attr("sandbox","")}const oLt=(i,a,f,p)=>{var w,y,b;(w=i.getElementById(a))==null||w.remove(),(y=i.getElementById(f))==null||y.remove(),(b=i.getElementById(p))==null||b.remove()},cLt=async function(i,a,f){var Ie,ee,rt,me;bde(),dW();const p=co.detectInit(a);p&&(jA(p),vIe(p));const w=Tt();Fe.debug(w),a.length>((w==null?void 0:w.maxTextSize)??$At)&&(a=HAt),a=a.replace(/\r\n?/g,` +`),a=a.replace(/<(\w+)([^>]*)>/g,(gt,pe,Et)=>"<"+pe+Et.replace(/="([^"]*)"/g,"='$1'")+">");const y="#"+i,b="i"+i,E="#"+b,S="d"+i,N="#"+S;let B=Cr("body");const R=w.securityLevel===zAt,j=w.securityLevel===GAt,$=w.fontFamily;if(f!==void 0){if(f&&(f.innerHTML=""),R){const gt=LOe(Cr(f),b);B=Cr(gt.nodes()[0].contentDocument.body),B.node().style.margin=0}else B=Cr(f);AOe(B,i,S,`font-family: ${$}`,VAt)}else{if(oLt(document,i,S,b),R){const gt=LOe(Cr("body"),b);B=Cr(gt.nodes()[0].contentDocument.body),B.node().style.margin=0}else B=Cr("body");AOe(B,i,S)}a=nLt(a);let V,Q;try{V=await vde(a)}catch(gt){V=new hOe("error"),Q=gt}const oe=B.select(N).node(),ce=V.type,se=oe.firstChild,ge=se.firstChild,ye=COe.includes(ce)?V.renderer.getClasses(a,V):{},ke=iLt(w,ce,ye,y),Ae=document.createElement("style");Ae.innerHTML=ke,se.insertBefore(Ae,ge);try{await V.renderer.draw(a,i,qIe,V)}catch(gt){throw aOe.draw(a,i,qIe),gt}const de=B.select(`${N} svg`),ve=(ee=(Ie=V.db).getAccTitle)==null?void 0:ee.call(Ie),te=(me=(rt=V.db).getAccDescription)==null?void 0:me.call(rt);lLt(ce,de,ve,te),B.select(`[id="${i}"]`).selectAll("foreignobject > *").attr("xmlns",UAt);let xe=B.select(N).node().innerHTML;if(Fe.debug("config.arrowMarkerAbsolute",w.arrowMarkerAbsolute),xe=sLt(xe,R,d1(w.arrowMarkerAbsolute)),R){const gt=B.select(N+" svg").node();xe=aLt(xe,gt)}else j||(xe=ZU.sanitize(xe,{ADD_TAGS:JAt,ADD_ATTR:eLt}));if(OSt(),Q)throw Q;const he=Cr(R?E:N).node();return he&&"remove"in he&&he.remove(),{svg:xe,bindFunctions:V.db.bindFunctions}};function uLt(i={}){var f;i!=null&&i.fontFamily&&!((f=i.themeVariables)!=null&&f.fontFamily)&&(i.themeVariables||(i.themeVariables={}),i.themeVariables.fontFamily=i.fontFamily),f_t(i),i!=null&&i.theme&&i.theme in g5?i.themeVariables=g5[i.theme].getThemeVariables(i.themeVariables):i&&(i.themeVariables=g5.default.getThemeVariables(i.themeVariables));const a=typeof i=="object"?h_t(i):gIe();$fe(a.logLevel),bde()}function lLt(i,a,f,p){FAt(a,i),jAt(a,f,p,a.attr("id"))}const rd=Object.freeze({render:cLt,parse:tLt,parseDirective:rde,getDiagramFromText:vde,initialize:uLt,getConfig:Tt,setConfig:pIe,getSiteConfig:gIe,updateSiteConfig:d_t,reset:()=>{dW()},globalReset:()=>{dW(OA)},defaultConfig:OA});$fe(Tt().logLevel),dW(Tt());const hLt=(i,a,f)=>{Fe.warn(i),PIe(i)?(f&&f(i.str,i.hash),a.push({...i,message:i.str,error:i})):(f&&f(i),i instanceof Error&&a.push({str:i.message,message:i.message,hash:i.name,error:i}))},MOe=async function(i={querySelector:".mermaid"}){try{await fLt(i)}catch(a){if(PIe(a)&&Fe.error(a.str),O2.parseError&&O2.parseError(a),!i.suppressErrors)throw Fe.error("Use the suppressErrors option to suppress these errors"),a}},fLt=async function({postRenderCallback:i,querySelector:a,nodes:f}={querySelector:".mermaid"}){const p=rd.getConfig();Fe.debug(`${i?"":"No "}Callback function found`);let w;if(f)w=f;else if(a)w=document.querySelectorAll(a);else throw new Error("Nodes and querySelector are both undefined");Fe.debug(`Found ${w.length} diagrams`),(p==null?void 0:p.startOnLoad)!==void 0&&(Fe.debug("Start On Load: "+(p==null?void 0:p.startOnLoad)),rd.updateSiteConfig({startOnLoad:p==null?void 0:p.startOnLoad}));const y=new co.initIdGenerator(p.deterministicIds,p.deterministicIDSeed);let b;const E=[];for(const S of Array.from(w)){Fe.info("Rendering diagram: "+S.id);/*! Check if previously processed */if(S.getAttribute("data-processed"))continue;S.setAttribute("data-processed","true");const N=`mermaid-${y.next()}`;b=S.innerHTML,b=mN(co.entityDecode(b)).trim().replace(//gi,"
");const B=co.detectInit(b);B&&Fe.debug("Detected early reinit: ",B);try{const{svg:R,bindFunctions:j}=await NOe(N,b,S);S.innerHTML=R,i&&await i(N),j&&j(S)}catch(R){hLt(R,E,O2.parseError)}}if(E.length>0)throw E[0]},DOe=function(i){rd.initialize(i)},dLt=async function(i,a,f){Fe.warn("mermaid.init is deprecated. Please use run instead."),i&&DOe(i);const p={postRenderCallback:f,querySelector:".mermaid"};typeof a=="string"?p.querySelector=a:a&&(a instanceof HTMLElement?p.nodes=[a]:p.nodes=a),await MOe(p)},gLt=async(i,{lazyLoad:a=!0}={})=>{TIe(...i),a===!1&&await A_t()},IOe=function(){if(O2.startOnLoad){const{startOnLoad:i}=rd.getConfig();i&&O2.run().catch(a=>Fe.error("Mermaid failed to initialize",a))}};if(typeof document<"u"){/*! + * Wait for document loaded before starting the execution + */window.addEventListener("load",IOe,!1)}const pLt=function(i){O2.parseError=i},IW=[];let Tde=!1;const OOe=async()=>{if(!Tde){for(Tde=!0;IW.length>0;){const i=IW.shift();if(i)try{await i()}catch(a){Fe.error("Error executing queue",a)}}Tde=!1}},bLt=async(i,a)=>new Promise((f,p)=>{const w=()=>new Promise((y,b)=>{rd.parse(i,a).then(E=>{y(E),f(E)},E=>{var S;Fe.error("Error parsing",E),(S=O2.parseError)==null||S.call(O2,E),b(E),p(E)})});IW.push(w),OOe().catch(p)}),NOe=(i,a,f)=>new Promise((p,w)=>{const y=()=>new Promise((b,E)=>{rd.render(i,a,f).then(S=>{b(S),p(S)},S=>{var N;Fe.error("Error parsing",S),(N=O2.parseError)==null||N.call(O2,S),E(S),w(S)})});IW.push(y),OOe().catch(w)}),O2={startOnLoad:!0,mermaidAPI:rd,parse:bLt,render:NOe,init:dLt,run:MOe,registerExternalDiagrams:gLt,initialize:DOe,parseError:void 0,contentLoaded:IOe,setParseErrorHandler:pLt,detectType:wW};var OW=function(){var i=function(Oi,Er,br,Dr){for(br=br||{},Dr=Oi.length;Dr--;br[Oi[Dr]]=Er);return br},a=[1,6],f=[1,7],p=[1,8],w=[1,9],y=[1,16],b=[1,11],E=[1,12],S=[1,13],N=[1,14],B=[1,15],R=[1,27],j=[1,33],$=[1,34],V=[1,35],Q=[1,36],oe=[1,37],ce=[1,72],se=[1,73],ge=[1,74],ye=[1,75],ke=[1,76],Ae=[1,77],de=[1,78],ve=[1,38],te=[1,39],xe=[1,40],De=[1,41],he=[1,42],Ie=[1,43],ee=[1,44],rt=[1,45],me=[1,46],gt=[1,47],pe=[1,48],Et=[1,49],wt=[1,50],jt=[1,51],At=[1,52],Bt=[1,53],cn=[1,54],Nn=[1,55],Ot=[1,56],oi=[1,57],kt=[1,59],Dt=[1,60],vt=[1,61],Nt=[1,62],ze=[1,63],Xe=[1,64],Lt=[1,65],Ge=[1,66],Bn=[1,67],Oe=[1,68],Ri=[1,69],tn=[24,52],hi=[24,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],Sr=[15,24,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],Zn=[1,94],Xn=[1,95],ir=[1,96],Hn=[1,97],tr=[15,24,52],ha=[7,8,9,10,18,22,25,26,27,28],Zs=[15,24,43,52],ns=[15,24,43,52,86,87,89,90],Hi=[15,43],Js=[44,46,47,48,49,50,51,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],Pc={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,directive:6,direction_tb:7,direction_bt:8,direction_rl:9,direction_lr:10,graphConfig:11,openDirective:12,typeDirective:13,closeDirective:14,NEWLINE:15,":":16,argDirective:17,open_directive:18,type_directive:19,arg_directive:20,close_directive:21,C4_CONTEXT:22,statements:23,EOF:24,C4_CONTAINER:25,C4_COMPONENT:26,C4_DYNAMIC:27,C4_DEPLOYMENT:28,otherStatements:29,diagramStatements:30,otherStatement:31,title:32,accDescription:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,boundaryStatement:39,boundaryStartStatement:40,boundaryStopStatement:41,boundaryStart:42,LBRACE:43,ENTERPRISE_BOUNDARY:44,attributes:45,SYSTEM_BOUNDARY:46,BOUNDARY:47,CONTAINER_BOUNDARY:48,NODE:49,NODE_L:50,NODE_R:51,RBRACE:52,diagramStatement:53,PERSON:54,PERSON_EXT:55,SYSTEM:56,SYSTEM_DB:57,SYSTEM_QUEUE:58,SYSTEM_EXT:59,SYSTEM_EXT_DB:60,SYSTEM_EXT_QUEUE:61,CONTAINER:62,CONTAINER_DB:63,CONTAINER_QUEUE:64,CONTAINER_EXT:65,CONTAINER_EXT_DB:66,CONTAINER_EXT_QUEUE:67,COMPONENT:68,COMPONENT_DB:69,COMPONENT_QUEUE:70,COMPONENT_EXT:71,COMPONENT_EXT_DB:72,COMPONENT_EXT_QUEUE:73,REL:74,BIREL:75,REL_U:76,REL_D:77,REL_L:78,REL_R:79,REL_B:80,REL_INDEX:81,UPDATE_EL_STYLE:82,UPDATE_REL_STYLE:83,UPDATE_LAYOUT_CONFIG:84,attribute:85,STR:86,STR_KEY:87,STR_VALUE:88,ATTRIBUTE:89,ATTRIBUTE_EMPTY:90,$accept:0,$end:1},terminals_:{2:"error",7:"direction_tb",8:"direction_bt",9:"direction_rl",10:"direction_lr",15:"NEWLINE",16:":",18:"open_directive",19:"type_directive",20:"arg_directive",21:"close_directive",22:"C4_CONTEXT",24:"EOF",25:"C4_CONTAINER",26:"C4_COMPONENT",27:"C4_DYNAMIC",28:"C4_DEPLOYMENT",32:"title",33:"accDescription",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",43:"LBRACE",44:"ENTERPRISE_BOUNDARY",46:"SYSTEM_BOUNDARY",47:"BOUNDARY",48:"CONTAINER_BOUNDARY",49:"NODE",50:"NODE_L",51:"NODE_R",52:"RBRACE",54:"PERSON",55:"PERSON_EXT",56:"SYSTEM",57:"SYSTEM_DB",58:"SYSTEM_QUEUE",59:"SYSTEM_EXT",60:"SYSTEM_EXT_DB",61:"SYSTEM_EXT_QUEUE",62:"CONTAINER",63:"CONTAINER_DB",64:"CONTAINER_QUEUE",65:"CONTAINER_EXT",66:"CONTAINER_EXT_DB",67:"CONTAINER_EXT_QUEUE",68:"COMPONENT",69:"COMPONENT_DB",70:"COMPONENT_QUEUE",71:"COMPONENT_EXT",72:"COMPONENT_EXT_DB",73:"COMPONENT_EXT_QUEUE",74:"REL",75:"BIREL",76:"REL_U",77:"REL_D",78:"REL_L",79:"REL_R",80:"REL_B",81:"REL_INDEX",82:"UPDATE_EL_STYLE",83:"UPDATE_REL_STYLE",84:"UPDATE_LAYOUT_CONFIG",86:"STR",87:"STR_KEY",88:"STR_VALUE",89:"ATTRIBUTE",90:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[11,4],[11,4],[11,4],[11,4],[23,1],[23,1],[23,2],[29,1],[29,2],[29,3],[31,1],[31,1],[31,2],[31,2],[31,1],[39,3],[40,3],[40,3],[40,4],[42,2],[42,2],[42,2],[42,2],[42,2],[42,2],[42,2],[41,1],[30,1],[30,2],[30,3],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,1],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[45,1],[45,2],[85,1],[85,2],[85,1],[85,1]],performAction:function(Er,br,Dr,Vn,qi,yn,Bc){var jn=yn.length-1;switch(qi){case 4:Vn.setDirection("TB");break;case 5:Vn.setDirection("BT");break;case 6:Vn.setDirection("RL");break;case 7:Vn.setDirection("LR");break;case 11:Vn.parseDirective("%%{","open_directive");break;case 12:break;case 13:yn[jn]=yn[jn].trim().replace(/'/g,'"'),Vn.parseDirective(yn[jn],"arg_directive");break;case 14:Vn.parseDirective("}%%","close_directive","c4Context");break;case 15:case 16:case 17:case 18:case 19:Vn.setC4Type(yn[jn-3]);break;case 26:Vn.setTitle(yn[jn].substring(6)),this.$=yn[jn].substring(6);break;case 27:Vn.setAccDescription(yn[jn].substring(15)),this.$=yn[jn].substring(15);break;case 28:this.$=yn[jn].trim(),Vn.setTitle(this.$);break;case 29:case 30:this.$=yn[jn].trim(),Vn.setAccDescription(this.$);break;case 35:case 36:yn[jn].splice(2,0,"ENTERPRISE"),Vn.addPersonOrSystemBoundary(...yn[jn]),this.$=yn[jn];break;case 37:Vn.addPersonOrSystemBoundary(...yn[jn]),this.$=yn[jn];break;case 38:yn[jn].splice(2,0,"CONTAINER"),Vn.addContainerBoundary(...yn[jn]),this.$=yn[jn];break;case 39:Vn.addDeploymentNode("node",...yn[jn]),this.$=yn[jn];break;case 40:Vn.addDeploymentNode("nodeL",...yn[jn]),this.$=yn[jn];break;case 41:Vn.addDeploymentNode("nodeR",...yn[jn]),this.$=yn[jn];break;case 42:Vn.popBoundaryParseStack();break;case 46:Vn.addPersonOrSystem("person",...yn[jn]),this.$=yn[jn];break;case 47:Vn.addPersonOrSystem("external_person",...yn[jn]),this.$=yn[jn];break;case 48:Vn.addPersonOrSystem("system",...yn[jn]),this.$=yn[jn];break;case 49:Vn.addPersonOrSystem("system_db",...yn[jn]),this.$=yn[jn];break;case 50:Vn.addPersonOrSystem("system_queue",...yn[jn]),this.$=yn[jn];break;case 51:Vn.addPersonOrSystem("external_system",...yn[jn]),this.$=yn[jn];break;case 52:Vn.addPersonOrSystem("external_system_db",...yn[jn]),this.$=yn[jn];break;case 53:Vn.addPersonOrSystem("external_system_queue",...yn[jn]),this.$=yn[jn];break;case 54:Vn.addContainer("container",...yn[jn]),this.$=yn[jn];break;case 55:Vn.addContainer("container_db",...yn[jn]),this.$=yn[jn];break;case 56:Vn.addContainer("container_queue",...yn[jn]),this.$=yn[jn];break;case 57:Vn.addContainer("external_container",...yn[jn]),this.$=yn[jn];break;case 58:Vn.addContainer("external_container_db",...yn[jn]),this.$=yn[jn];break;case 59:Vn.addContainer("external_container_queue",...yn[jn]),this.$=yn[jn];break;case 60:Vn.addComponent("component",...yn[jn]),this.$=yn[jn];break;case 61:Vn.addComponent("component_db",...yn[jn]),this.$=yn[jn];break;case 62:Vn.addComponent("component_queue",...yn[jn]),this.$=yn[jn];break;case 63:Vn.addComponent("external_component",...yn[jn]),this.$=yn[jn];break;case 64:Vn.addComponent("external_component_db",...yn[jn]),this.$=yn[jn];break;case 65:Vn.addComponent("external_component_queue",...yn[jn]),this.$=yn[jn];break;case 67:Vn.addRel("rel",...yn[jn]),this.$=yn[jn];break;case 68:Vn.addRel("birel",...yn[jn]),this.$=yn[jn];break;case 69:Vn.addRel("rel_u",...yn[jn]),this.$=yn[jn];break;case 70:Vn.addRel("rel_d",...yn[jn]),this.$=yn[jn];break;case 71:Vn.addRel("rel_l",...yn[jn]),this.$=yn[jn];break;case 72:Vn.addRel("rel_r",...yn[jn]),this.$=yn[jn];break;case 73:Vn.addRel("rel_b",...yn[jn]),this.$=yn[jn];break;case 74:yn[jn].splice(0,1),Vn.addRel("rel",...yn[jn]),this.$=yn[jn];break;case 75:Vn.updateElStyle("update_el_style",...yn[jn]),this.$=yn[jn];break;case 76:Vn.updateRelStyle("update_rel_style",...yn[jn]),this.$=yn[jn];break;case 77:Vn.updateLayoutConfig("update_layout_config",...yn[jn]),this.$=yn[jn];break;case 78:this.$=[yn[jn]];break;case 79:yn[jn].unshift(yn[jn-1]),this.$=yn[jn];break;case 80:case 82:this.$=yn[jn].trim();break;case 81:let Ms={};Ms[yn[jn-1].trim()]=yn[jn].trim(),this.$=Ms;break;case 83:this.$="";break}},table:[{3:1,4:2,5:3,6:4,7:a,8:f,9:p,10:w,11:5,12:10,18:y,22:b,25:E,26:S,27:N,28:B},{1:[3]},{1:[2,1]},{1:[2,2]},{3:17,4:2,5:3,6:4,7:a,8:f,9:p,10:w,11:5,12:10,18:y,22:b,25:E,26:S,27:N,28:B},{1:[2,8]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{1:[2,7]},{13:18,19:[1,19]},{15:[1,20]},{15:[1,21]},{15:[1,22]},{15:[1,23]},{15:[1,24]},{19:[2,11]},{1:[2,3]},{14:25,16:[1,26],21:R},i([16,21],[2,12]),{23:28,29:29,30:30,31:31,32:j,33:$,34:V,36:Q,38:oe,39:58,40:70,42:71,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,53:32,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri},{23:79,29:29,30:30,31:31,32:j,33:$,34:V,36:Q,38:oe,39:58,40:70,42:71,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,53:32,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri},{23:80,29:29,30:30,31:31,32:j,33:$,34:V,36:Q,38:oe,39:58,40:70,42:71,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,53:32,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri},{23:81,29:29,30:30,31:31,32:j,33:$,34:V,36:Q,38:oe,39:58,40:70,42:71,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,53:32,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri},{23:82,29:29,30:30,31:31,32:j,33:$,34:V,36:Q,38:oe,39:58,40:70,42:71,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,53:32,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri},{15:[1,83]},{17:84,20:[1,85]},{15:[2,14]},{24:[1,86]},i(tn,[2,20],{53:32,39:58,40:70,42:71,30:87,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri}),i(tn,[2,21]),i(hi,[2,23],{15:[1,88]}),i(tn,[2,43],{15:[1,89]}),i(Sr,[2,26]),i(Sr,[2,27]),{35:[1,90]},{37:[1,91]},i(Sr,[2,30]),{45:92,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:98,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:99,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:100,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:101,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:102,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:103,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:104,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:105,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:106,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:107,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:108,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:109,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:110,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:111,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:112,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:113,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:114,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:115,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:116,85:93,86:Zn,87:Xn,89:ir,90:Hn},i(tr,[2,66]),{45:117,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:118,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:119,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:120,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:121,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:122,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:123,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:124,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:125,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:126,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:127,85:93,86:Zn,87:Xn,89:ir,90:Hn},{30:128,39:58,40:70,42:71,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,53:32,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri},{15:[1,130],43:[1,129]},{45:131,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:132,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:133,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:134,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:135,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:136,85:93,86:Zn,87:Xn,89:ir,90:Hn},{45:137,85:93,86:Zn,87:Xn,89:ir,90:Hn},{24:[1,138]},{24:[1,139]},{24:[1,140]},{24:[1,141]},i(ha,[2,9]),{14:142,21:R},{21:[2,13]},{1:[2,15]},i(tn,[2,22]),i(hi,[2,24],{31:31,29:143,32:j,33:$,34:V,36:Q,38:oe}),i(tn,[2,44],{29:29,30:30,31:31,53:32,39:58,40:70,42:71,23:144,32:j,33:$,34:V,36:Q,38:oe,44:ce,46:se,47:ge,48:ye,49:ke,50:Ae,51:de,54:ve,55:te,56:xe,57:De,58:he,59:Ie,60:ee,61:rt,62:me,63:gt,64:pe,65:Et,66:wt,67:jt,68:At,69:Bt,70:cn,71:Nn,72:Ot,73:oi,74:kt,75:Dt,76:vt,77:Nt,78:ze,79:Xe,80:Lt,81:Ge,82:Bn,83:Oe,84:Ri}),i(Sr,[2,28]),i(Sr,[2,29]),i(tr,[2,46]),i(Zs,[2,78],{85:93,45:145,86:Zn,87:Xn,89:ir,90:Hn}),i(ns,[2,80]),{88:[1,146]},i(ns,[2,82]),i(ns,[2,83]),i(tr,[2,47]),i(tr,[2,48]),i(tr,[2,49]),i(tr,[2,50]),i(tr,[2,51]),i(tr,[2,52]),i(tr,[2,53]),i(tr,[2,54]),i(tr,[2,55]),i(tr,[2,56]),i(tr,[2,57]),i(tr,[2,58]),i(tr,[2,59]),i(tr,[2,60]),i(tr,[2,61]),i(tr,[2,62]),i(tr,[2,63]),i(tr,[2,64]),i(tr,[2,65]),i(tr,[2,67]),i(tr,[2,68]),i(tr,[2,69]),i(tr,[2,70]),i(tr,[2,71]),i(tr,[2,72]),i(tr,[2,73]),i(tr,[2,74]),i(tr,[2,75]),i(tr,[2,76]),i(tr,[2,77]),{41:147,52:[1,148]},{15:[1,149]},{43:[1,150]},i(Hi,[2,35]),i(Hi,[2,36]),i(Hi,[2,37]),i(Hi,[2,38]),i(Hi,[2,39]),i(Hi,[2,40]),i(Hi,[2,41]),{1:[2,16]},{1:[2,17]},{1:[2,18]},{1:[2,19]},{15:[1,151]},i(hi,[2,25]),i(tn,[2,45]),i(Zs,[2,79]),i(ns,[2,81]),i(tr,[2,31]),i(tr,[2,42]),i(Js,[2,32]),i(Js,[2,33],{15:[1,152]}),i(ha,[2,10]),i(Js,[2,34])],defaultActions:{2:[2,1],3:[2,2],5:[2,8],6:[2,4],7:[2,5],8:[2,6],9:[2,7],16:[2,11],17:[2,3],27:[2,14],85:[2,13],86:[2,15],138:[2,16],139:[2,17],140:[2,18],141:[2,19]},parseError:function(Er,br){if(br.recoverable)this.trace(Er);else{var Dr=new Error(Er);throw Dr.hash=br,Dr}},parse:function(Er){var br=this,Dr=[0],Vn=[],qi=[null],yn=[],Bc=this.table,jn="",Ms=0,Pa=0,Ta=2,_a=1,ka=yn.slice.call(arguments,1),Qi=Object.create(this.lexer),ea={yy:{}};for(var Ca in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ca)&&(ea.yy[Ca]=this.yy[Ca]);Qi.setInput(Er,ea.yy),ea.yy.lexer=Qi,ea.yy.parser=this,typeof Qi.yylloc>"u"&&(Qi.yylloc={});var Sa=Qi.yylloc;yn.push(Sa);var Ka=Qi.options&&Qi.options.ranges;typeof ea.yy.parseError=="function"?this.parseError=ea.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function cg(){var Ns;return Ns=Vn.pop()||Qi.lex()||_a,typeof Ns!="number"&&(Ns instanceof Array&&(Vn=Ns,Ns=Vn.pop()),Ns=br.symbols_[Ns]||Ns),Ns}for(var Gc,Dh,Es,lp,sd={},sh,Ai,nn,Tr;;){if(Dh=Dr[Dr.length-1],this.defaultActions[Dh]?Es=this.defaultActions[Dh]:((Gc===null||typeof Gc>"u")&&(Gc=cg()),Es=Bc[Dh]&&Bc[Dh][Gc]),typeof Es>"u"||!Es.length||!Es[0]){var ai="";Tr=[];for(sh in Bc[Dh])this.terminals_[sh]&&sh>Ta&&Tr.push("'"+this.terminals_[sh]+"'");Qi.showPosition?ai="Parse error on line "+(Ms+1)+`: +`+Qi.showPosition()+` +Expecting `+Tr.join(", ")+", got '"+(this.terminals_[Gc]||Gc)+"'":ai="Parse error on line "+(Ms+1)+": Unexpected "+(Gc==_a?"end of input":"'"+(this.terminals_[Gc]||Gc)+"'"),this.parseError(ai,{text:Qi.match,token:this.terminals_[Gc]||Gc,line:Qi.yylineno,loc:Sa,expected:Tr})}if(Es[0]instanceof Array&&Es.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Dh+", token: "+Gc);switch(Es[0]){case 1:Dr.push(Gc),qi.push(Qi.yytext),yn.push(Qi.yylloc),Dr.push(Es[1]),Gc=null,Pa=Qi.yyleng,jn=Qi.yytext,Ms=Qi.yylineno,Sa=Qi.yylloc;break;case 2:if(Ai=this.productions_[Es[1]][1],sd.$=qi[qi.length-Ai],sd._$={first_line:yn[yn.length-(Ai||1)].first_line,last_line:yn[yn.length-1].last_line,first_column:yn[yn.length-(Ai||1)].first_column,last_column:yn[yn.length-1].last_column},Ka&&(sd._$.range=[yn[yn.length-(Ai||1)].range[0],yn[yn.length-1].range[1]]),lp=this.performAction.apply(sd,[jn,Pa,Ms,ea.yy,Es[1],qi,yn].concat(ka)),typeof lp<"u")return lp;Ai&&(Dr=Dr.slice(0,-1*Ai*2),qi=qi.slice(0,-1*Ai),yn=yn.slice(0,-1*Ai)),Dr.push(this.productions_[Es[1]][0]),qi.push(sd.$),yn.push(sd._$),nn=Bc[Dr[Dr.length-2]][Dr[Dr.length-1]],Dr.push(nn);break;case 3:return!0}}return!0}},Ga=function(){var Oi={EOF:1,parseError:function(br,Dr){if(this.yy.parser)this.yy.parser.parseError(br,Dr);else throw new Error(br)},setInput:function(Er,br){return this.yy=br||this.yy||{},this._input=Er,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var Er=this._input[0];this.yytext+=Er,this.yyleng++,this.offset++,this.match+=Er,this.matched+=Er;var br=Er.match(/(?:\r\n?|\n).*/g);return br?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Er},unput:function(Er){var br=Er.length,Dr=Er.split(/(?:\r\n?|\n)/g);this._input=Er+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-br),this.offset-=br;var Vn=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Dr.length-1&&(this.yylineno-=Dr.length-1);var qi=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Dr?(Dr.length===Vn.length?this.yylloc.first_column:0)+Vn[Vn.length-Dr.length].length-Dr[0].length:this.yylloc.first_column-br},this.options.ranges&&(this.yylloc.range=[qi[0],qi[0]+this.yyleng-br]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(Er){this.unput(this.match.slice(Er))},pastInput:function(){var Er=this.matched.substr(0,this.matched.length-this.match.length);return(Er.length>20?"...":"")+Er.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Er=this.match;return Er.length<20&&(Er+=this._input.substr(0,20-Er.length)),(Er.substr(0,20)+(Er.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Er=this.pastInput(),br=new Array(Er.length+1).join("-");return Er+this.upcomingInput()+` +`+br+"^"},test_match:function(Er,br){var Dr,Vn,qi;if(this.options.backtrack_lexer&&(qi={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(qi.yylloc.range=this.yylloc.range.slice(0))),Vn=Er[0].match(/(?:\r\n?|\n).*/g),Vn&&(this.yylineno+=Vn.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Vn?Vn[Vn.length-1].length-Vn[Vn.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Er[0].length},this.yytext+=Er[0],this.match+=Er[0],this.matches=Er,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Er[0].length),this.matched+=Er[0],Dr=this.performAction.call(this,this.yy,this,br,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Dr)return Dr;if(this._backtrack){for(var yn in qi)this[yn]=qi[yn];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Er,br,Dr,Vn;this._more||(this.yytext="",this.match="");for(var qi=this._currentRules(),yn=0;ynbr[0].length)){if(br=Dr,Vn=yn,this.options.backtrack_lexer){if(Er=this.test_match(Dr,qi[yn]),Er!==!1)return Er;if(this._backtrack){br=!1;continue}else return!1}else if(!this.options.flex)break}return br?(Er=this.test_match(br,qi[Vn]),Er!==!1?Er:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var br=this.next();return br||this.lex()},begin:function(br){this.conditionStack.push(br)},popState:function(){var br=this.conditionStack.length-1;return br>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(br){return br=this.conditionStack.length-1-Math.abs(br||0),br>=0?this.conditionStack[br]:"INITIAL"},pushState:function(br){this.begin(br)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(br,Dr,Vn,qi){switch(Vn){case 0:return this.begin("open_directive"),18;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 10;case 5:return this.begin("type_directive"),19;case 6:return this.popState(),this.begin("arg_directive"),16;case 7:return this.popState(),this.popState(),21;case 8:return 20;case 9:return 32;case 10:return 33;case 11:return this.begin("acc_title"),34;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),36;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:break;case 19:c;break;case 20:return 15;case 21:break;case 22:return 22;case 23:return 25;case 24:return 26;case 25:return 27;case 26:return 28;case 27:return this.begin("person_ext"),55;case 28:return this.begin("person"),54;case 29:return this.begin("system_ext_queue"),61;case 30:return this.begin("system_ext_db"),60;case 31:return this.begin("system_ext"),59;case 32:return this.begin("system_queue"),58;case 33:return this.begin("system_db"),57;case 34:return this.begin("system"),56;case 35:return this.begin("boundary"),47;case 36:return this.begin("enterprise_boundary"),44;case 37:return this.begin("system_boundary"),46;case 38:return this.begin("container_ext_queue"),67;case 39:return this.begin("container_ext_db"),66;case 40:return this.begin("container_ext"),65;case 41:return this.begin("container_queue"),64;case 42:return this.begin("container_db"),63;case 43:return this.begin("container"),62;case 44:return this.begin("container_boundary"),48;case 45:return this.begin("component_ext_queue"),73;case 46:return this.begin("component_ext_db"),72;case 47:return this.begin("component_ext"),71;case 48:return this.begin("component_queue"),70;case 49:return this.begin("component_db"),69;case 50:return this.begin("component"),68;case 51:return this.begin("node"),49;case 52:return this.begin("node"),49;case 53:return this.begin("node_l"),50;case 54:return this.begin("node_r"),51;case 55:return this.begin("rel"),74;case 56:return this.begin("birel"),75;case 57:return this.begin("rel_u"),76;case 58:return this.begin("rel_u"),76;case 59:return this.begin("rel_d"),77;case 60:return this.begin("rel_d"),77;case 61:return this.begin("rel_l"),78;case 62:return this.begin("rel_l"),78;case 63:return this.begin("rel_r"),79;case 64:return this.begin("rel_r"),79;case 65:return this.begin("rel_b"),80;case 66:return this.begin("rel_index"),81;case 67:return this.begin("update_el_style"),82;case 68:return this.begin("update_rel_style"),83;case 69:return this.begin("update_layout_config"),84;case 70:return"EOF_IN_STRUCT";case 71:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 72:this.begin("attribute");break;case 73:this.popState(),this.popState();break;case 74:return 90;case 75:break;case 76:return 90;case 77:this.begin("string");break;case 78:this.popState();break;case 79:return"STR";case 80:this.begin("string_kv");break;case 81:return this.begin("string_kv_key"),"STR_KEY";case 82:this.popState(),this.begin("string_kv_value");break;case 83:return"STR_VALUE";case 84:this.popState(),this.popState();break;case 85:return"STR";case 86:return"LBRACE";case 87:return"RBRACE";case 88:return"SPACE";case 89:return"EOL";case 90:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},string_kv_value:{rules:[83,84],inclusive:!1},string_kv_key:{rules:[82],inclusive:!1},string_kv:{rules:[81],inclusive:!1},string:{rules:[78,79],inclusive:!1},attribute:{rules:[73,74,75,76,77,80,85],inclusive:!1},update_layout_config:{rules:[70,71,72,73],inclusive:!1},update_rel_style:{rules:[70,71,72,73],inclusive:!1},update_el_style:{rules:[70,71,72,73],inclusive:!1},rel_b:{rules:[70,71,72,73],inclusive:!1},rel_r:{rules:[70,71,72,73],inclusive:!1},rel_l:{rules:[70,71,72,73],inclusive:!1},rel_d:{rules:[70,71,72,73],inclusive:!1},rel_u:{rules:[70,71,72,73],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[70,71,72,73],inclusive:!1},node_r:{rules:[70,71,72,73],inclusive:!1},node_l:{rules:[70,71,72,73],inclusive:!1},node:{rules:[70,71,72,73],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[70,71,72,73],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[70,71,72,73],inclusive:!1},component_ext:{rules:[70,71,72,73],inclusive:!1},component_queue:{rules:[70,71,72,73],inclusive:!1},component_db:{rules:[70,71,72,73],inclusive:!1},component:{rules:[70,71,72,73],inclusive:!1},container_boundary:{rules:[70,71,72,73],inclusive:!1},container_ext_queue:{rules:[],inclusive:!1},container_ext_db:{rules:[70,71,72,73],inclusive:!1},container_ext:{rules:[70,71,72,73],inclusive:!1},container_queue:{rules:[70,71,72,73],inclusive:!1},container_db:{rules:[70,71,72,73],inclusive:!1},container:{rules:[70,71,72,73],inclusive:!1},birel:{rules:[70,71,72,73],inclusive:!1},system_boundary:{rules:[70,71,72,73],inclusive:!1},enterprise_boundary:{rules:[70,71,72,73],inclusive:!1},boundary:{rules:[70,71,72,73],inclusive:!1},system_ext_queue:{rules:[70,71,72,73],inclusive:!1},system_ext_db:{rules:[70,71,72,73],inclusive:!1},system_ext:{rules:[70,71,72,73],inclusive:!1},system_queue:{rules:[70,71,72,73],inclusive:!1},system_db:{rules:[70,71,72,73],inclusive:!1},system:{rules:[70,71,72,73],inclusive:!1},person_ext:{rules:[70,71,72,73],inclusive:!1},person:{rules:[70,71,72,73],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,86,87,88,89,90],inclusive:!0}}};return Oi}();Pc.lexer=Ga;function ws(){this.yy={}}return ws.prototype=Pc,Pc.Parser=ws,new ws}();OW.parser=OW;const vLt=OW;let Qw=[],nx=[""],ag="global",Zw="",o3=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],QN=[],_de="",Cde=!1,NW=4,PW=2;var POe;const wLt=function(){return POe},mLt=function(i){POe=ep(i,Tt())},yLt=function(i,a,f){rd.parseDirective(this,i,a,f)},kLt=function(i,a,f,p,w,y,b,E,S){if(i==null||a===void 0||a===null||f===void 0||f===null||p===void 0||p===null)return;let N={};const B=QN.find(R=>R.from===a&&R.to===f);if(B?N=B:QN.push(N),N.type=i,N.from=a,N.to=f,N.label={text:p},w==null)N.techn={text:""};else if(typeof w=="object"){let[R,j]=Object.entries(w)[0];N[R]={text:j}}else N.techn={text:w};if(y==null)N.descr={text:""};else if(typeof y=="object"){let[R,j]=Object.entries(y)[0];N[R]={text:j}}else N.descr={text:y};if(typeof b=="object"){let[R,j]=Object.entries(b)[0];N[R]=j}else N.sprite=b;if(typeof E=="object"){let[R,j]=Object.entries(E)[0];N[R]=j}else N.tags=E;if(typeof S=="object"){let[R,j]=Object.entries(S)[0];N[R]=j}else N.link=S;N.wrap=rx()},xLt=function(i,a,f,p,w,y,b){if(a===null||f===null)return;let E={};const S=Qw.find(N=>N.alias===a);if(S&&a===S.alias?E=S:(E.alias=a,Qw.push(E)),f==null?E.label={text:""}:E.label={text:f},p==null)E.descr={text:""};else if(typeof p=="object"){let[N,B]=Object.entries(p)[0];E[N]={text:B}}else E.descr={text:p};if(typeof w=="object"){let[N,B]=Object.entries(w)[0];E[N]=B}else E.sprite=w;if(typeof y=="object"){let[N,B]=Object.entries(y)[0];E[N]=B}else E.tags=y;if(typeof b=="object"){let[N,B]=Object.entries(b)[0];E[N]=B}else E.link=b;E.typeC4Shape={text:i},E.parentBoundary=ag,E.wrap=rx()},ELt=function(i,a,f,p,w,y,b,E){if(a===null||f===null)return;let S={};const N=Qw.find(B=>B.alias===a);if(N&&a===N.alias?S=N:(S.alias=a,Qw.push(S)),f==null?S.label={text:""}:S.label={text:f},p==null)S.techn={text:""};else if(typeof p=="object"){let[B,R]=Object.entries(p)[0];S[B]={text:R}}else S.techn={text:p};if(w==null)S.descr={text:""};else if(typeof w=="object"){let[B,R]=Object.entries(w)[0];S[B]={text:R}}else S.descr={text:w};if(typeof y=="object"){let[B,R]=Object.entries(y)[0];S[B]=R}else S.sprite=y;if(typeof b=="object"){let[B,R]=Object.entries(b)[0];S[B]=R}else S.tags=b;if(typeof E=="object"){let[B,R]=Object.entries(E)[0];S[B]=R}else S.link=E;S.wrap=rx(),S.typeC4Shape={text:i},S.parentBoundary=ag},TLt=function(i,a,f,p,w,y,b,E){if(a===null||f===null)return;let S={};const N=Qw.find(B=>B.alias===a);if(N&&a===N.alias?S=N:(S.alias=a,Qw.push(S)),f==null?S.label={text:""}:S.label={text:f},p==null)S.techn={text:""};else if(typeof p=="object"){let[B,R]=Object.entries(p)[0];S[B]={text:R}}else S.techn={text:p};if(w==null)S.descr={text:""};else if(typeof w=="object"){let[B,R]=Object.entries(w)[0];S[B]={text:R}}else S.descr={text:w};if(typeof y=="object"){let[B,R]=Object.entries(y)[0];S[B]=R}else S.sprite=y;if(typeof b=="object"){let[B,R]=Object.entries(b)[0];S[B]=R}else S.tags=b;if(typeof E=="object"){let[B,R]=Object.entries(E)[0];S[B]=R}else S.link=E;S.wrap=rx(),S.typeC4Shape={text:i},S.parentBoundary=ag},_Lt=function(i,a,f,p,w){if(i===null||a===null)return;let y={};const b=o3.find(E=>E.alias===i);if(b&&i===b.alias?y=b:(y.alias=i,o3.push(y)),a==null?y.label={text:""}:y.label={text:a},f==null)y.type={text:"system"};else if(typeof f=="object"){let[E,S]=Object.entries(f)[0];y[E]={text:S}}else y.type={text:f};if(typeof p=="object"){let[E,S]=Object.entries(p)[0];y[E]=S}else y.tags=p;if(typeof w=="object"){let[E,S]=Object.entries(w)[0];y[E]=S}else y.link=w;y.parentBoundary=ag,y.wrap=rx(),Zw=ag,ag=i,nx.push(Zw)},CLt=function(i,a,f,p,w){if(i===null||a===null)return;let y={};const b=o3.find(E=>E.alias===i);if(b&&i===b.alias?y=b:(y.alias=i,o3.push(y)),a==null?y.label={text:""}:y.label={text:a},f==null)y.type={text:"container"};else if(typeof f=="object"){let[E,S]=Object.entries(f)[0];y[E]={text:S}}else y.type={text:f};if(typeof p=="object"){let[E,S]=Object.entries(p)[0];y[E]=S}else y.tags=p;if(typeof w=="object"){let[E,S]=Object.entries(w)[0];y[E]=S}else y.link=w;y.parentBoundary=ag,y.wrap=rx(),Zw=ag,ag=i,nx.push(Zw)},SLt=function(i,a,f,p,w,y,b,E){if(a===null||f===null)return;let S={};const N=o3.find(B=>B.alias===a);if(N&&a===N.alias?S=N:(S.alias=a,o3.push(S)),f==null?S.label={text:""}:S.label={text:f},p==null)S.type={text:"node"};else if(typeof p=="object"){let[B,R]=Object.entries(p)[0];S[B]={text:R}}else S.type={text:p};if(w==null)S.descr={text:""};else if(typeof w=="object"){let[B,R]=Object.entries(w)[0];S[B]={text:R}}else S.descr={text:w};if(typeof b=="object"){let[B,R]=Object.entries(b)[0];S[B]=R}else S.tags=b;if(typeof E=="object"){let[B,R]=Object.entries(E)[0];S[B]=R}else S.link=E;S.nodeType=i,S.parentBoundary=ag,S.wrap=rx(),Zw=ag,ag=a,nx.push(Zw)},ALt=function(){ag=Zw,nx.pop(),Zw=nx.pop(),nx.push(Zw)},LLt=function(i,a,f,p,w,y,b,E,S,N,B){let R=Qw.find(j=>j.alias===a);if(!(R===void 0&&(R=o3.find(j=>j.alias===a),R===void 0))){if(f!=null)if(typeof f=="object"){let[j,$]=Object.entries(f)[0];R[j]=$}else R.bgColor=f;if(p!=null)if(typeof p=="object"){let[j,$]=Object.entries(p)[0];R[j]=$}else R.fontColor=p;if(w!=null)if(typeof w=="object"){let[j,$]=Object.entries(w)[0];R[j]=$}else R.borderColor=w;if(y!=null)if(typeof y=="object"){let[j,$]=Object.entries(y)[0];R[j]=$}else R.shadowing=y;if(b!=null)if(typeof b=="object"){let[j,$]=Object.entries(b)[0];R[j]=$}else R.shape=b;if(E!=null)if(typeof E=="object"){let[j,$]=Object.entries(E)[0];R[j]=$}else R.sprite=E;if(S!=null)if(typeof S=="object"){let[j,$]=Object.entries(S)[0];R[j]=$}else R.techn=S;if(N!=null)if(typeof N=="object"){let[j,$]=Object.entries(N)[0];R[j]=$}else R.legendText=N;if(B!=null)if(typeof B=="object"){let[j,$]=Object.entries(B)[0];R[j]=$}else R.legendSprite=B}},MLt=function(i,a,f,p,w,y,b){const E=QN.find(S=>S.from===a&&S.to===f);if(E!==void 0){if(p!=null)if(typeof p=="object"){let[S,N]=Object.entries(p)[0];E[S]=N}else E.textColor=p;if(w!=null)if(typeof w=="object"){let[S,N]=Object.entries(w)[0];E[S]=N}else E.lineColor=w;if(y!=null)if(typeof y=="object"){let[S,N]=Object.entries(y)[0];E[S]=parseInt(N)}else E.offsetX=parseInt(y);if(b!=null)if(typeof b=="object"){let[S,N]=Object.entries(b)[0];E[S]=parseInt(N)}else E.offsetY=parseInt(b)}},DLt=function(i,a,f){let p=NW,w=PW;if(typeof a=="object"){const y=Object.values(a)[0];p=parseInt(y)}else p=parseInt(a);if(typeof f=="object"){const y=Object.values(f)[0];w=parseInt(y)}else w=parseInt(f);p>=1&&(NW=p),w>=1&&(PW=w)},ILt=function(){return NW},OLt=function(){return PW},NLt=function(){return ag},PLt=function(){return Zw},BOe=function(i){return i==null?Qw:Qw.filter(a=>a.parentBoundary===i)},BLt=function(i){return Qw.find(a=>a.alias===i)},RLt=function(i){return Object.keys(BOe(i))},FLt=function(i){return i==null?o3:o3.filter(a=>a.parentBoundary===i)},jLt=function(){return QN},$Lt=function(){return _de},HLt=function(i){Cde=i},rx=function(){return Cde},ROe={addPersonOrSystem:xLt,addPersonOrSystemBoundary:_Lt,addContainer:ELt,addContainerBoundary:CLt,addComponent:TLt,addDeploymentNode:SLt,popBoundaryParseStack:ALt,addRel:kLt,updateElStyle:LLt,updateRelStyle:MLt,updateLayoutConfig:DLt,autoWrap:rx,setWrap:HLt,getC4ShapeArray:BOe,getC4Shape:BLt,getC4ShapeKeys:RLt,getBoundarys:FLt,getCurrentBoundaryParse:NLt,getParentBoundaryParse:PLt,getRels:jLt,getTitle:$Lt,getC4Type:wLt,getC4ShapeInRow:ILt,getC4BoundaryInRow:OLt,setAccTitle:ip,getAccTitle:L2,getAccDescription:D2,setAccDescription:M2,parseDirective:yLt,getConfig:()=>Tt().c4,clear:function(){Qw=[],o3=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Zw="",ag="global",nx=[""],QN=[],nx=[""],_de="",Cde=!1,NW=4,PW=2},LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:function(i){_de=ep(i,Tt())},setC4Type:mLt},Sde=function(i,a){const f=i.append("rect");if(f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),f.attr("rx",a.rx),f.attr("ry",a.ry),a.attrs!=="undefined"&&a.attrs!==null)for(let p in a.attrs)f.attr(p,a.attrs[p]);return a.class!=="undefined"&&f.attr("class",a.class),f},FOe=function(i,a,f,p,w,y){const b=i.append("image");b.attr("width",a),b.attr("height",f),b.attr("x",p),b.attr("y",w);let E=y.startsWith("data:image/png;base64")?y:u5(y);b.attr("xlink:href",E)},zLt=(i,a,f)=>{const p=i.append("g");let w=0;for(let y of a){let b=y.textColor?y.textColor:"#444444",E=y.lineColor?y.lineColor:"#444444",S=y.offsetX?parseInt(y.offsetX):0,N=y.offsetY?parseInt(y.offsetY):0,B="";if(w===0){let j=p.append("line");j.attr("x1",y.startPoint.x),j.attr("y1",y.startPoint.y),j.attr("x2",y.endPoint.x),j.attr("y2",y.endPoint.y),j.attr("stroke-width","1"),j.attr("stroke",E),j.style("fill","none"),y.type!=="rel_b"&&j.attr("marker-end","url("+B+"#arrowhead)"),(y.type==="birel"||y.type==="rel_b")&&j.attr("marker-start","url("+B+"#arrowend)"),w=-1}else{let j=p.append("path");j.attr("fill","none").attr("stroke-width","1").attr("stroke",E).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",y.startPoint.x).replaceAll("starty",y.startPoint.y).replaceAll("controlx",y.startPoint.x+(y.endPoint.x-y.startPoint.x)/2-(y.endPoint.x-y.startPoint.x)/4).replaceAll("controly",y.startPoint.y+(y.endPoint.y-y.startPoint.y)/2).replaceAll("stopx",y.endPoint.x).replaceAll("stopy",y.endPoint.y)),y.type!=="rel_b"&&j.attr("marker-end","url("+B+"#arrowhead)"),(y.type==="birel"||y.type==="rel_b")&&j.attr("marker-start","url("+B+"#arrowend)")}let R=f.messageFont();w5(f)(y.label.text,p,Math.min(y.startPoint.x,y.endPoint.x)+Math.abs(y.endPoint.x-y.startPoint.x)/2+S,Math.min(y.startPoint.y,y.endPoint.y)+Math.abs(y.endPoint.y-y.startPoint.y)/2+N,y.label.width,y.label.height,{fill:b},R),y.techn&&y.techn.text!==""&&(R=f.messageFont(),w5(f)("["+y.techn.text+"]",p,Math.min(y.startPoint.x,y.endPoint.x)+Math.abs(y.endPoint.x-y.startPoint.x)/2+S,Math.min(y.startPoint.y,y.endPoint.y)+Math.abs(y.endPoint.y-y.startPoint.y)/2+f.messageFontSize+5+N,Math.max(y.label.width,y.techn.width),y.techn.height,{fill:b,"font-style":"italic"},R))}},GLt=function(i,a,f){const p=i.append("g");let w=a.bgColor?a.bgColor:"none",y=a.borderColor?a.borderColor:"#444444",b=a.fontColor?a.fontColor:"black",E={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};a.nodeType&&(E={"stroke-width":1});let S={x:a.x,y:a.y,fill:w,stroke:y,width:a.width,height:a.height,rx:2.5,ry:2.5,attrs:E};Sde(p,S);let N=f.boundaryFont();N.fontWeight="bold",N.fontSize=N.fontSize+2,N.fontColor=b,w5(f)(a.label.text,p,a.x,a.y+a.label.Y,a.width,a.height,{fill:"#444444"},N),a.type&&a.type.text!==""&&(N=f.boundaryFont(),N.fontColor=b,w5(f)(a.type.text,p,a.x,a.y+a.type.Y,a.width,a.height,{fill:"#444444"},N)),a.descr&&a.descr.text!==""&&(N=f.boundaryFont(),N.fontSize=N.fontSize-2,N.fontColor=b,w5(f)(a.descr.text,p,a.x,a.y+a.descr.Y,a.width,a.height,{fill:"#444444"},N))},qLt=function(i,a,f){var R;let p=a.bgColor?a.bgColor:f[a.typeC4Shape.text+"_bg_color"],w=a.borderColor?a.borderColor:f[a.typeC4Shape.text+"_border_color"],y=a.fontColor?a.fontColor:"#FFFFFF",b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(a.typeC4Shape.text){case"person":b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}const E=i.append("g");E.attr("class","person-man");const S=jOe();switch(a.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":S.x=a.x,S.y=a.y,S.fill=p,S.width=a.width,S.height=a.height,S.stroke=w,S.rx=2.5,S.ry=2.5,S.attrs={"stroke-width":.5},Sde(E,S);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":E.append("path").attr("fill",p).attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",a.x).replaceAll("starty",a.y).replaceAll("half",a.width/2).replaceAll("height",a.height)),E.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",a.x).replaceAll("starty",a.y).replaceAll("half",a.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":E.append("path").attr("fill",p).attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",a.x).replaceAll("starty",a.y).replaceAll("width",a.width).replaceAll("half",a.height/2)),E.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",a.x+a.width).replaceAll("starty",a.y).replaceAll("half",a.height/2));break}let N=JLt(f,a.typeC4Shape.text);switch(E.append("text").attr("fill",y).attr("font-family",N.fontFamily).attr("font-size",N.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",a.typeC4Shape.width).attr("x",a.x+a.width/2-a.typeC4Shape.width/2).attr("y",a.y+a.typeC4Shape.Y).text("<<"+a.typeC4Shape.text+">>"),a.typeC4Shape.text){case"person":case"external_person":FOe(E,48,48,a.x+a.width/2-24,a.y+a.image.Y,b);break}let B=f[a.typeC4Shape.text+"Font"]();return B.fontWeight="bold",B.fontSize=B.fontSize+2,B.fontColor=y,w5(f)(a.label.text,E,a.x,a.y+a.label.Y,a.width,a.height,{fill:y},B),B=f[a.typeC4Shape.text+"Font"](),B.fontColor=y,a.techn&&((R=a.techn)==null?void 0:R.text)!==""?w5(f)(a.techn.text,E,a.x,a.y+a.techn.Y,a.width,a.height,{fill:y,"font-style":"italic"},B):a.type&&a.type.text!==""&&w5(f)(a.type.text,E,a.x,a.y+a.type.Y,a.width,a.height,{fill:y,"font-style":"italic"},B),a.descr&&a.descr.text!==""&&(B=f.personFont(),B.fontColor=y,w5(f)(a.descr.text,E,a.x,a.y+a.descr.Y,a.width,a.height,{fill:y},B)),a.height},VLt=function(i){i.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},ULt=function(i){i.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},WLt=function(i){i.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},KLt=function(i){i.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},YLt=function(i){i.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},XLt=function(i){i.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},QLt=function(i){i.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},ZLt=function(i){const f=i.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);f.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),f.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},jOe=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},JLt=(i,a)=>({fontFamily:i[a+"FontFamily"],fontSize:i[a+"FontSize"],fontWeight:i[a+"FontWeight"]}),w5=function(){function i(w,y,b,E,S,N,B){const R=y.append("text").attr("x",b+S/2).attr("y",E+N/2+5).style("text-anchor","middle").text(w);p(R,B)}function a(w,y,b,E,S,N,B,R){const{fontSize:j,fontFamily:$,fontWeight:V}=R,Q=w.split(Wa.lineBreakRegex);for(let oe=0;oe=this.data.widthLimit||p>=this.data.widthLimit||this.nextData.cnt>$Oe)&&(f=this.nextData.startx+a.margin+xs.nextLinePaddingX,w=this.nextData.stopy+a.margin*2,this.nextData.stopx=p=f+a.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=y=w+a.height,this.nextData.cnt=1),a.x=f,a.y=w,this.updateVal(this.data,"startx",f,Math.min),this.updateVal(this.data,"starty",w,Math.min),this.updateVal(this.data,"stopx",p,Math.max),this.updateVal(this.data,"stopy",y,Math.max),this.updateVal(this.nextData,"startx",f,Math.min),this.updateVal(this.nextData,"starty",w,Math.min),this.updateVal(this.nextData,"stopx",p,Math.max),this.updateVal(this.nextData,"stopy",y,Math.max)}init(a){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},Lde(a.db.getConfig())}bumpLastMargin(a){this.data.stopx+=a,this.data.stopy+=a}}const Lde=function(i){nd(xs,i),i.fontFamily&&(xs.personFontFamily=xs.systemFontFamily=xs.messageFontFamily=i.fontFamily),i.fontSize&&(xs.personFontSize=xs.systemFontSize=xs.messageFontSize=i.fontSize),i.fontWeight&&(xs.personFontWeight=xs.systemFontWeight=xs.messageFontWeight=i.fontWeight)},ZN=(i,a)=>({fontFamily:i[a+"FontFamily"],fontSize:i[a+"FontSize"],fontWeight:i[a+"FontWeight"]}),FW=i=>({fontFamily:i.boundaryFontFamily,fontSize:i.boundaryFontSize,fontWeight:i.boundaryFontWeight}),eMt=i=>({fontFamily:i.messageFontFamily,fontSize:i.messageFontSize,fontWeight:i.messageFontWeight});function Jw(i,a,f,p,w){if(!a[i].width)if(f)a[i].text=NIe(a[i].text,w,p),a[i].textLines=a[i].text.split(Wa.lineBreakRegex).length,a[i].width=w,a[i].height=ode(a[i].text,p);else{let y=a[i].text.split(Wa.lineBreakRegex);a[i].textLines=y.length;let b=0;a[i].height=0,a[i].width=0;for(const E of y)a[i].width=Math.max(s3(E,p),a[i].width),b=ode(E,p),a[i].height=a[i].height+b}}const zOe=function(i,a,f){a.x=f.data.startx,a.y=f.data.starty,a.width=f.data.stopx-f.data.startx,a.height=f.data.stopy-f.data.starty,a.label.y=xs.c4ShapeMargin-35;let p=a.wrap&&xs.wrap,w=FW(xs);w.fontSize=w.fontSize+2,w.fontWeight="bold";let y=s3(a.label.text,w);Jw("label",a,p,w,y),c3.drawBoundary(i,a,xs)},GOe=function(i,a,f,p){let w=0;for(const y of p){w=0;const b=f[y];let E=ZN(xs,b.typeC4Shape.text);switch(E.fontSize=E.fontSize-2,b.typeC4Shape.width=s3("<<"+b.typeC4Shape.text+">>",E),b.typeC4Shape.height=E.fontSize+2,b.typeC4Shape.Y=xs.c4ShapePadding,w=b.typeC4Shape.Y+b.typeC4Shape.height-4,b.image={width:0,height:0,Y:0},b.typeC4Shape.text){case"person":case"external_person":b.image.width=48,b.image.height=48,b.image.Y=w,w=b.image.Y+b.image.height;break}b.sprite&&(b.image.width=48,b.image.height=48,b.image.Y=w,w=b.image.Y+b.image.height);let S=b.wrap&&xs.wrap,N=xs.width-xs.c4ShapePadding*2,B=ZN(xs,b.typeC4Shape.text);if(B.fontSize=B.fontSize+2,B.fontWeight="bold",Jw("label",b,S,B,N),b.label.Y=w+8,w=b.label.Y+b.label.height,b.type&&b.type.text!==""){b.type.text="["+b.type.text+"]";let $=ZN(xs,b.typeC4Shape.text);Jw("type",b,S,$,N),b.type.Y=w+5,w=b.type.Y+b.type.height}else if(b.techn&&b.techn.text!==""){b.techn.text="["+b.techn.text+"]";let $=ZN(xs,b.techn.text);Jw("techn",b,S,$,N),b.techn.Y=w+5,w=b.techn.Y+b.techn.height}let R=w,j=b.label.width;if(b.descr&&b.descr.text!==""){let $=ZN(xs,b.typeC4Shape.text);Jw("descr",b,S,$,N),b.descr.Y=w+20,w=b.descr.Y+b.descr.height,j=Math.max(b.label.width,b.descr.width),R=w-b.descr.textLines*5}j=j+xs.c4ShapePadding,b.width=Math.max(b.width||xs.width,j,xs.width),b.height=Math.max(b.height||xs.height,R,xs.height),b.margin=b.margin||xs.c4ShapeMargin,i.insert(b),c3.drawC4Shape(a,b,xs)}i.bumpLastMargin(xs.c4ShapeMargin)};let Kb=class{constructor(a,f){this.x=a,this.y=f}},qOe=function(i,a){let f=i.x,p=i.y,w=a.x,y=a.y,b=f+i.width/2,E=p+i.height/2,S=Math.abs(f-w),N=Math.abs(p-y),B=N/S,R=i.height/i.width,j=null;return p==y&&fw?j=new Kb(f,E):f==w&&py&&(j=new Kb(b,p)),f>w&&p=B?j=new Kb(f,E+B*i.width/2):j=new Kb(b-S/N*i.height/2,p+i.height):f=B?j=new Kb(f+i.width,E+B*i.width/2):j=new Kb(b+S/N*i.height/2,p+i.height):fy?R>=B?j=new Kb(f+i.width,E-B*i.width/2):j=new Kb(b+i.height/2*S/N,p):f>w&&p>y&&(R>=B?j=new Kb(f,E-i.width/2*B):j=new Kb(b-i.height/2*S/N,p)),j},tMt=function(i,a){let f={x:0,y:0};f.x=a.x+a.width/2,f.y=a.y+a.height/2;let p=qOe(i,f);f.x=i.x+i.width/2,f.y=i.y+i.height/2;let w=qOe(a,f);return{startPoint:p,endPoint:w}};const nMt=function(i,a,f,p){let w=0;for(let y of a){w=w+1;let b=y.wrap&&xs.wrap,E=eMt(xs);p.db.getC4Type()==="C4Dynamic"&&(y.label.text=w+": "+y.label.text);let N=s3(y.label.text,E);Jw("label",y,b,E,N),y.techn&&y.techn.text!==""&&(N=s3(y.techn.text,E),Jw("techn",y,b,E,N)),y.descr&&y.descr.text!==""&&(N=s3(y.descr.text,E),Jw("descr",y,b,E,N));let B=f(y.from),R=f(y.to),j=tMt(B,R);y.startPoint=j.startPoint,y.endPoint=j.endPoint}c3.drawRels(i,a,xs)};function VOe(i,a,f,p,w){let y=new HOe(w);y.data.widthLimit=f.data.widthLimit/Math.min(Ade,p.length);for(let[b,E]of p.entries()){let S=0;E.image={width:0,height:0,Y:0},E.sprite&&(E.image.width=48,E.image.height=48,E.image.Y=S,S=E.image.Y+E.image.height);let N=E.wrap&&xs.wrap,B=FW(xs);if(B.fontSize=B.fontSize+2,B.fontWeight="bold",Jw("label",E,N,B,y.data.widthLimit),E.label.Y=S+8,S=E.label.Y+E.label.height,E.type&&E.type.text!==""){E.type.text="["+E.type.text+"]";let V=FW(xs);Jw("type",E,N,V,y.data.widthLimit),E.type.Y=S+5,S=E.type.Y+E.type.height}if(E.descr&&E.descr.text!==""){let V=FW(xs);V.fontSize=V.fontSize-2,Jw("descr",E,N,V,y.data.widthLimit),E.descr.Y=S+20,S=E.descr.Y+E.descr.height}if(b==0||b%Ade===0){let V=f.data.startx+xs.diagramMarginX,Q=f.data.stopy+xs.diagramMarginY+S;y.setData(V,V,Q,Q)}else{let V=y.data.stopx!==y.data.startx?y.data.stopx+xs.diagramMarginX:y.data.startx,Q=y.data.starty;y.setData(V,V,Q,Q)}y.name=E.alias;let R=w.db.getC4ShapeArray(E.alias),j=w.db.getC4ShapeKeys(E.alias);j.length>0&&GOe(y,i,R,j),a=E.alias;let $=w.db.getBoundarys(a);$.length>0&&VOe(i,a,y,$,w),E.alias!=="global"&&zOe(i,E,y),f.data.stopy=Math.max(y.data.stopy+xs.c4ShapeMargin,f.data.stopy),f.data.stopx=Math.max(y.data.stopx+xs.c4ShapeMargin,f.data.stopx),BW=Math.max(BW,f.data.stopx),RW=Math.max(RW,f.data.stopy)}}const UOe={drawPersonOrSystemArray:GOe,drawBoundary:zOe,setConf:Lde,draw:function(i,a,f,p){xs=Tt().c4;const w=Tt().securityLevel;let y;w==="sandbox"&&(y=Cr("#i"+a));const b=Cr(w==="sandbox"?y.nodes()[0].contentDocument.body:"body");let E=p.db;p.db.setWrap(xs.wrap),$Oe=E.getC4ShapeInRow(),Ade=E.getC4BoundaryInRow(),Fe.debug(`C:${JSON.stringify(xs,null,2)}`);const S=w==="sandbox"?b.select(`[id="${a}"]`):Cr(`[id="${a}"]`);c3.insertComputerIcon(S),c3.insertDatabaseIcon(S),c3.insertClockIcon(S);let N=new HOe(p);N.setData(xs.diagramMarginX,xs.diagramMarginX,xs.diagramMarginY,xs.diagramMarginY),N.data.widthLimit=screen.availWidth,BW=xs.diagramMarginX,RW=xs.diagramMarginY;const B=p.db.getTitle();let R=p.db.getBoundarys("");VOe(S,"",N,R,p),c3.insertArrowHead(S),c3.insertArrowEnd(S),c3.insertArrowCrossHead(S),c3.insertArrowFilledHead(S),nMt(S,p.db.getRels(),p.db.getC4Shape,p),N.data.stopx=BW,N.data.stopy=RW;const j=N.data;let V=j.stopy-j.starty+2*xs.diagramMarginY;const oe=j.stopx-j.startx+2*xs.diagramMarginX;B&&S.append("text").text(B).attr("x",(j.stopx-j.startx)/2-4*xs.diagramMarginX).attr("y",j.starty+xs.diagramMarginY),Vw(S,V,oe,xs.useMaxWidth);const ce=B?60:0;S.attr("viewBox",j.startx-xs.diagramMarginX+" -"+(xs.diagramMarginY+ce)+" "+oe+" "+(V+ce)),Fe.debug("models:",j)}},rMt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:vLt,db:ROe,renderer:UOe,styles:i=>`.person { + stroke: ${i.personBorder}; + fill: ${i.personBkg}; + } +`,init:i=>{UOe.setConf(i.c4)}}},Symbol.toStringTag,{value:"Module"}));var Mde=function(){var i=function(ug,rs,Ps,Aa){for(Ps=Ps||{},Aa=ug.length;Aa--;Ps[ug[Aa]]=rs);return Ps},a=[1,9],f=[1,7],p=[1,6],w=[1,8],y=[1,20,21,22,23,38,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],b=[2,10],E=[1,20],S=[1,21],N=[1,22],B=[1,23],R=[1,30],j=[1,32],$=[1,33],V=[1,34],Q=[1,62],oe=[1,48],ce=[1,52],se=[1,36],ge=[1,37],ye=[1,38],ke=[1,39],Ae=[1,40],de=[1,56],ve=[1,63],te=[1,51],xe=[1,53],De=[1,55],he=[1,59],Ie=[1,60],ee=[1,41],rt=[1,42],me=[1,43],gt=[1,44],pe=[1,61],Et=[1,50],wt=[1,54],jt=[1,57],At=[1,58],Bt=[1,49],cn=[1,66],Nn=[1,71],Ot=[1,20,21,22,23,38,42,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],oi=[1,75],kt=[1,74],Dt=[1,76],vt=[20,21,23,81,82],Nt=[1,99],ze=[1,104],Xe=[1,107],Lt=[1,108],Ge=[1,101],Bn=[1,106],Oe=[1,109],Ri=[1,102],tn=[1,114],hi=[1,113],Sr=[1,103],Zn=[1,105],Xn=[1,110],ir=[1,111],Hn=[1,112],tr=[1,115],ha=[20,21,22,23,81,82],Zs=[20,21,22,23,53,81,82],ns=[20,21,22,23,40,52,53,55,57,59,61,63,65,66,67,69,71,73,74,76,81,82,92,96,106,107,110,112,113,123,124,125,126,127,128],Hi=[20,21,23],Js=[20,21,23,52,66,67,81,82,92,96,106,107,110,112,113,123,124,125,126,127,128],Pc=[1,12,20,21,22,23,24,38,42,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],Ga=[52,66,67,92,96,106,107,110,112,113,123,124,125,126,127,128],ws=[1,150],Oi=[1,158],Er=[1,159],br=[1,160],Dr=[1,161],Vn=[1,145],qi=[1,146],yn=[1,141],Bc=[1,142],jn=[1,153],Ms=[1,154],Pa=[1,155],Ta=[1,156],_a=[1,157],ka=[1,162],Qi=[1,163],ea=[1,148],Ca=[1,151],Sa=[1,147],Ka=[1,144],cg=[20,21,22,23,38,42,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],Gc=[1,166],Dh=[20,21,22,23,26,52,66,67,92,106,107,110,112,113,123,124,125,126,127,128],Es=[20,21,22,23,24,26,38,40,41,42,52,56,58,60,62,64,66,67,68,70,72,73,75,77,81,82,87,88,89,90,91,92,93,96,106,107,110,112,113,114,115,123,124,125,126,127,128],lp=[12,21,22,24],sd=[22,107],sh=[1,251],Ai=[1,246],nn=[1,247],Tr=[1,255],ai=[1,252],Ns=[1,249],mc=[1,248],yu=[1,250],Mo=[1,253],ku=[1,254],Ih=[1,256],qf=[1,274],lx=[20,21,23,107],ad=[20,21,22,23,66,67,87,103,106,107,110,111,112,113,114],b3={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,":":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,direction:43,acc_title:44,acc_title_value:45,acc_descr:46,acc_descr_value:47,acc_descr_multiline_value:48,link:49,node:50,vertex:51,AMP:52,STYLE_SEPARATOR:53,idString:54,DOUBLECIRCLESTART:55,DOUBLECIRCLEEND:56,PS:57,PE:58,"(-":59,"-)":60,STADIUMSTART:61,STADIUMEND:62,SUBROUTINESTART:63,SUBROUTINEEND:64,VERTEX_WITH_PROPS_START:65,ALPHA:66,COLON:67,PIPE:68,CYLINDERSTART:69,CYLINDEREND:70,DIAMOND_START:71,DIAMOND_STOP:72,TAGEND:73,TRAPSTART:74,TRAPEND:75,INVTRAPSTART:76,INVTRAPEND:77,linkStatement:78,arrowText:79,TESTSTR:80,START_LINK:81,LINK:82,textToken:83,STR:84,MD_STR:85,keywords:86,STYLE:87,LINKSTYLE:88,CLASSDEF:89,CLASS:90,CLICK:91,DOWN:92,UP:93,textNoTags:94,textNoTagsToken:95,DEFAULT:96,stylesOpt:97,alphaNum:98,CALLBACKNAME:99,CALLBACKARGS:100,HREF:101,LINK_TARGET:102,HEX:103,numList:104,INTERPOLATE:105,NUM:106,COMMA:107,style:108,styleComponent:109,MINUS:110,UNIT:111,BRKT:112,DOT:113,PCT:114,TAGSTART:115,alphaNumToken:116,idStringToken:117,alphaNumStatement:118,direction_tb:119,direction_bt:120,direction_rl:121,direction_lr:122,PUNCTUATION:123,UNICODE_TEXT:124,PLUS:125,EQUALS:126,MULT:127,UNDERSCORE:128,graphCodeTokens:129,ARROW_CROSS:130,ARROW_POINT:131,ARROW_CIRCLE:132,ARROW_OPEN:133,QUOTE:134,$accept:0,$end:1},terminals_:{2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",44:"acc_title",45:"acc_title_value",46:"acc_descr",47:"acc_descr_value",48:"acc_descr_multiline_value",52:"AMP",53:"STYLE_SEPARATOR",55:"DOUBLECIRCLESTART",56:"DOUBLECIRCLEEND",57:"PS",58:"PE",59:"(-",60:"-)",61:"STADIUMSTART",62:"STADIUMEND",63:"SUBROUTINESTART",64:"SUBROUTINEEND",65:"VERTEX_WITH_PROPS_START",66:"ALPHA",67:"COLON",68:"PIPE",69:"CYLINDERSTART",70:"CYLINDEREND",71:"DIAMOND_START",72:"DIAMOND_STOP",73:"TAGEND",74:"TRAPSTART",75:"TRAPEND",76:"INVTRAPSTART",77:"INVTRAPEND",80:"TESTSTR",81:"START_LINK",82:"LINK",84:"STR",85:"MD_STR",87:"STYLE",88:"LINKSTYLE",89:"CLASSDEF",90:"CLASS",91:"CLICK",92:"DOWN",93:"UP",96:"DEFAULT",99:"CALLBACKNAME",100:"CALLBACKARGS",101:"HREF",102:"LINK_TARGET",103:"HEX",105:"INTERPOLATE",106:"NUM",107:"COMMA",110:"MINUS",111:"UNIT",112:"BRKT",113:"DOT",114:"PCT",115:"TAGSTART",119:"direction_tb",120:"direction_bt",121:"direction_rl",122:"direction_lr",123:"PUNCTUATION",124:"UNICODE_TEXT",125:"PLUS",126:"EQUALS",127:"MULT",128:"UNDERSCORE",130:"ARROW_CROSS",131:"ARROW_POINT",132:"ARROW_CIRCLE",133:"ARROW_OPEN",134:"QUOTE"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[19,2],[19,2],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[50,1],[50,5],[50,3],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,8],[51,4],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,4],[51,4],[51,1],[49,2],[49,3],[49,3],[49,1],[49,3],[78,1],[79,3],[39,1],[39,2],[39,1],[39,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[94,1],[94,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[104,1],[104,3],[97,1],[97,3],[108,1],[108,2],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[95,1],[95,1],[95,1],[95,1],[54,1],[54,2],[98,1],[98,2],[118,1],[118,1],[118,1],[118,1],[43,1],[43,1],[43,1],[43,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1]],performAction:function(rs,Ps,Aa,pi,Rc,_t,hp){var Gt=_t.length-1;switch(Rc){case 5:pi.parseDirective("%%{","open_directive");break;case 6:pi.parseDirective(_t[Gt],"type_directive");break;case 7:_t[Gt]=_t[Gt].trim().replace(/'/g,'"'),pi.parseDirective(_t[Gt],"arg_directive");break;case 8:pi.parseDirective("}%%","close_directive","flowchart");break;case 10:this.$=[];break;case 11:(!Array.isArray(_t[Gt])||_t[Gt].length>0)&&_t[Gt-1].push(_t[Gt]),this.$=_t[Gt-1];break;case 12:case 97:case 153:case 155:case 156:this.$=_t[Gt];break;case 19:pi.setDirection("TB"),this.$="TB";break;case 20:pi.setDirection(_t[Gt-1]),this.$=_t[Gt-1];break;case 35:this.$=_t[Gt-1].nodes;break;case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 41:this.$=pi.addSubGraph(_t[Gt-6],_t[Gt-1],_t[Gt-4]);break;case 42:this.$=pi.addSubGraph(_t[Gt-3],_t[Gt-1],_t[Gt-3]);break;case 43:this.$=pi.addSubGraph(void 0,_t[Gt-1],void 0);break;case 45:this.$=_t[Gt].trim(),pi.setAccTitle(this.$);break;case 46:case 47:this.$=_t[Gt].trim(),pi.setAccDescription(this.$);break;case 51:pi.addLink(_t[Gt-2].stmt,_t[Gt],_t[Gt-1]),this.$={stmt:_t[Gt],nodes:_t[Gt].concat(_t[Gt-2].nodes)};break;case 52:pi.addLink(_t[Gt-3].stmt,_t[Gt-1],_t[Gt-2]),this.$={stmt:_t[Gt-1],nodes:_t[Gt-1].concat(_t[Gt-3].nodes)};break;case 53:this.$={stmt:_t[Gt-1],nodes:_t[Gt-1]};break;case 54:this.$={stmt:_t[Gt],nodes:_t[Gt]};break;case 55:this.$=[_t[Gt]];break;case 56:this.$=_t[Gt-4].concat(_t[Gt]);break;case 57:this.$=[_t[Gt-2]],pi.setClass(_t[Gt-2],_t[Gt]);break;case 58:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"square");break;case 59:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"doublecircle");break;case 60:this.$=_t[Gt-5],pi.addVertex(_t[Gt-5],_t[Gt-2],"circle");break;case 61:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"ellipse");break;case 62:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"stadium");break;case 63:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"subroutine");break;case 64:this.$=_t[Gt-7],pi.addVertex(_t[Gt-7],_t[Gt-1],"rect",void 0,void 0,void 0,Object.fromEntries([[_t[Gt-5],_t[Gt-3]]]));break;case 65:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"cylinder");break;case 66:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"round");break;case 67:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"diamond");break;case 68:this.$=_t[Gt-5],pi.addVertex(_t[Gt-5],_t[Gt-2],"hexagon");break;case 69:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"odd");break;case 70:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"trapezoid");break;case 71:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"inv_trapezoid");break;case 72:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"lean_right");break;case 73:this.$=_t[Gt-3],pi.addVertex(_t[Gt-3],_t[Gt-1],"lean_left");break;case 74:this.$=_t[Gt],pi.addVertex(_t[Gt]);break;case 75:_t[Gt-1].text=_t[Gt],this.$=_t[Gt-1];break;case 76:case 77:_t[Gt-2].text=_t[Gt-1],this.$=_t[Gt-2];break;case 78:this.$=_t[Gt];break;case 79:var ff=pi.destructLink(_t[Gt],_t[Gt-2]);this.$={type:ff.type,stroke:ff.stroke,length:ff.length,text:_t[Gt-1]};break;case 80:var ff=pi.destructLink(_t[Gt]);this.$={type:ff.type,stroke:ff.stroke,length:ff.length};break;case 81:this.$=_t[Gt-1];break;case 82:this.$={text:_t[Gt],type:"text"};break;case 83:this.$={text:_t[Gt-1].text+""+_t[Gt],type:_t[Gt-1].type};break;case 84:this.$={text:_t[Gt],type:"text"};break;case 85:this.$={text:_t[Gt],type:"markdown"};break;case 98:case 154:this.$=_t[Gt-1]+""+_t[Gt];break;case 99:case 100:this.$=_t[Gt-4],pi.addClass(_t[Gt-2],_t[Gt]);break;case 101:this.$=_t[Gt-4],pi.setClass(_t[Gt-2],_t[Gt]);break;case 102:case 110:this.$=_t[Gt-1],pi.setClickEvent(_t[Gt-1],_t[Gt]);break;case 103:case 111:this.$=_t[Gt-3],pi.setClickEvent(_t[Gt-3],_t[Gt-2]),pi.setTooltip(_t[Gt-3],_t[Gt]);break;case 104:this.$=_t[Gt-2],pi.setClickEvent(_t[Gt-2],_t[Gt-1],_t[Gt]);break;case 105:this.$=_t[Gt-4],pi.setClickEvent(_t[Gt-4],_t[Gt-3],_t[Gt-2]),pi.setTooltip(_t[Gt-4],_t[Gt]);break;case 106:case 112:this.$=_t[Gt-1],pi.setLink(_t[Gt-1],_t[Gt]);break;case 107:case 113:this.$=_t[Gt-3],pi.setLink(_t[Gt-3],_t[Gt-2]),pi.setTooltip(_t[Gt-3],_t[Gt]);break;case 108:case 114:this.$=_t[Gt-3],pi.setLink(_t[Gt-3],_t[Gt-2],_t[Gt]);break;case 109:case 115:this.$=_t[Gt-5],pi.setLink(_t[Gt-5],_t[Gt-4],_t[Gt]),pi.setTooltip(_t[Gt-5],_t[Gt-2]);break;case 116:this.$=_t[Gt-4],pi.addVertex(_t[Gt-2],void 0,void 0,_t[Gt]);break;case 117:case 119:this.$=_t[Gt-4],pi.updateLink(_t[Gt-2],_t[Gt]);break;case 118:this.$=_t[Gt-4],pi.updateLink([_t[Gt-2]],_t[Gt]);break;case 120:this.$=_t[Gt-8],pi.updateLinkInterpolate([_t[Gt-6]],_t[Gt-2]),pi.updateLink([_t[Gt-6]],_t[Gt]);break;case 121:this.$=_t[Gt-8],pi.updateLinkInterpolate(_t[Gt-6],_t[Gt-2]),pi.updateLink(_t[Gt-6],_t[Gt]);break;case 122:this.$=_t[Gt-6],pi.updateLinkInterpolate([_t[Gt-4]],_t[Gt]);break;case 123:this.$=_t[Gt-6],pi.updateLinkInterpolate(_t[Gt-4],_t[Gt]);break;case 124:case 126:this.$=[_t[Gt]];break;case 125:case 127:_t[Gt-2].push(_t[Gt]),this.$=_t[Gt-2];break;case 129:this.$=_t[Gt-1]+_t[Gt];break;case 151:this.$=_t[Gt];break;case 152:this.$=_t[Gt-1]+""+_t[Gt];break;case 157:this.$="v";break;case 158:this.$="-";break;case 159:this.$={stmt:"dir",value:"TB"};break;case 160:this.$={stmt:"dir",value:"BT"};break;case 161:this.$={stmt:"dir",value:"RL"};break;case 162:this.$={stmt:"dir",value:"LR"};break}},table:[{3:1,4:2,5:3,6:5,12:a,16:4,21:f,22:p,24:w},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:a,16:4,21:f,22:p,24:w},i(y,b,{17:11}),{7:12,13:[1,13]},{16:14,21:f,22:p,24:w},{16:15,21:f,22:p,24:w},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:E,21:S,22:N,23:B,32:24,33:25,34:26,35:27,36:28,37:29,38:R,43:31,44:j,46:$,48:V,50:35,51:45,52:Q,54:46,66:oe,67:ce,87:se,88:ge,89:ye,90:ke,91:Ae,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,119:ee,120:rt,121:me,122:gt,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},{8:64,10:[1,65],15:cn},i([10,15],[2,6]),i(y,[2,17]),i(y,[2,18]),i(y,[2,19]),{20:[1,68],21:[1,69],22:Nn,27:67,30:70},i(Ot,[2,11]),i(Ot,[2,12]),i(Ot,[2,13]),i(Ot,[2,14]),i(Ot,[2,15]),i(Ot,[2,16]),{9:72,20:oi,21:kt,23:Dt,49:73,78:77,81:[1,78],82:[1,79]},{9:80,20:oi,21:kt,23:Dt},{9:81,20:oi,21:kt,23:Dt},{9:82,20:oi,21:kt,23:Dt},{9:83,20:oi,21:kt,23:Dt},{9:84,20:oi,21:kt,23:Dt},{9:86,20:oi,21:kt,22:[1,85],23:Dt},i(Ot,[2,44]),{45:[1,87]},{47:[1,88]},i(Ot,[2,47]),i(vt,[2,54],{30:89,22:Nn}),{22:[1,90]},{22:[1,91]},{22:[1,92]},{22:[1,93]},{26:Nt,52:ze,66:Xe,67:Lt,84:[1,97],92:Ge,98:96,99:[1,94],101:[1,95],106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Ot,[2,159]),i(Ot,[2,160]),i(Ot,[2,161]),i(Ot,[2,162]),i(ha,[2,55],{53:[1,116]}),i(Zs,[2,74],{117:129,40:[1,117],52:Q,55:[1,118],57:[1,119],59:[1,120],61:[1,121],63:[1,122],65:[1,123],66:oe,67:ce,69:[1,124],71:[1,125],73:[1,126],74:[1,127],76:[1,128],92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt}),i(ns,[2,151]),i(ns,[2,176]),i(ns,[2,177]),i(ns,[2,178]),i(ns,[2,179]),i(ns,[2,180]),i(ns,[2,181]),i(ns,[2,182]),i(ns,[2,183]),i(ns,[2,184]),i(ns,[2,185]),i(ns,[2,186]),i(ns,[2,187]),i(ns,[2,188]),i(ns,[2,189]),i(ns,[2,190]),i(ns,[2,191]),{9:130,20:oi,21:kt,23:Dt},{11:131,14:[1,132]},i(Hi,[2,8]),i(y,[2,20]),i(y,[2,26]),i(y,[2,27]),{21:[1,133]},i(Js,[2,34],{30:134,22:Nn}),i(Ot,[2,35]),{50:135,51:45,52:Q,54:46,66:oe,67:ce,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},i(Pc,[2,48]),i(Pc,[2,49]),i(Pc,[2,50]),i(Ga,[2,78],{79:136,68:[1,138],80:[1,137]}),{22:ws,24:Oi,26:Er,38:br,39:139,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i([52,66,67,68,80,92,96,106,107,110,112,113,123,124,125,126,127,128],[2,80]),i(Ot,[2,36]),i(Ot,[2,37]),i(Ot,[2,38]),i(Ot,[2,39]),i(Ot,[2,40]),{22:ws,24:Oi,26:Er,38:br,39:164,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(cg,b,{17:165}),i(Ot,[2,45]),i(Ot,[2,46]),i(vt,[2,53],{52:Gc}),{26:Nt,52:ze,66:Xe,67:Lt,92:Ge,98:167,103:[1,168],106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{96:[1,169],104:170,106:[1,171]},{26:Nt,52:ze,66:Xe,67:Lt,92:Ge,96:[1,172],98:173,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{26:Nt,52:ze,66:Xe,67:Lt,92:Ge,98:174,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Hi,[2,102],{22:[1,175],100:[1,176]}),i(Hi,[2,106],{22:[1,177]}),i(Hi,[2,110],{116:100,118:179,22:[1,178],26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr}),i(Hi,[2,112],{22:[1,180]}),i(Dh,[2,153]),i(Dh,[2,155]),i(Dh,[2,156]),i(Dh,[2,157]),i(Dh,[2,158]),i(Es,[2,163]),i(Es,[2,164]),i(Es,[2,165]),i(Es,[2,166]),i(Es,[2,167]),i(Es,[2,168]),i(Es,[2,169]),i(Es,[2,170]),i(Es,[2,171]),i(Es,[2,172]),i(Es,[2,173]),i(Es,[2,174]),i(Es,[2,175]),{52:Q,54:181,66:oe,67:ce,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},{22:ws,24:Oi,26:Er,38:br,39:182,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:183,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:185,42:Dr,52:ze,57:[1,184],66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:186,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:187,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:188,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{66:[1,189]},{22:ws,24:Oi,26:Er,38:br,39:190,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:191,42:Dr,52:ze,66:Xe,67:Lt,71:[1,192],73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:193,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:194,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:195,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(ns,[2,152]),i(lp,[2,3]),{8:196,15:cn},{15:[2,7]},i(y,[2,28]),i(Js,[2,33]),i(vt,[2,51],{30:197,22:Nn}),i(Ga,[2,75],{22:[1,198]}),{22:[1,199]},{22:ws,24:Oi,26:Er,38:br,39:200,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,82:[1,201],83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Es,[2,82]),i(Es,[2,84]),i(Es,[2,85]),i(Es,[2,141]),i(Es,[2,142]),i(Es,[2,143]),i(Es,[2,144]),i(Es,[2,145]),i(Es,[2,146]),i(Es,[2,147]),i(Es,[2,148]),i(Es,[2,149]),i(Es,[2,150]),i(Es,[2,86]),i(Es,[2,87]),i(Es,[2,88]),i(Es,[2,89]),i(Es,[2,90]),i(Es,[2,91]),i(Es,[2,92]),i(Es,[2,93]),i(Es,[2,94]),i(Es,[2,95]),i(Es,[2,96]),{9:204,20:oi,21:kt,22:ws,23:Dt,24:Oi,26:Er,38:br,40:[1,203],42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{18:18,19:19,20:E,21:S,22:N,23:B,32:24,33:25,34:26,35:27,36:28,37:29,38:R,42:[1,205],43:31,44:j,46:$,48:V,50:35,51:45,52:Q,54:46,66:oe,67:ce,87:se,88:ge,89:ye,90:ke,91:Ae,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,119:ee,120:rt,121:me,122:gt,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},{22:Nn,30:206},{22:[1,207],26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:179,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:[1,208]},{22:[1,209]},{22:[1,210],107:[1,211]},i(sd,[2,124]),{22:[1,212]},{22:[1,213],26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:179,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:[1,214],26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:179,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{84:[1,215]},i(Hi,[2,104],{22:[1,216]}),{84:[1,217],102:[1,218]},{84:[1,219]},i(Dh,[2,154]),{84:[1,220],102:[1,221]},i(ha,[2,57],{117:129,52:Q,66:oe,67:ce,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt}),{22:ws,24:Oi,26:Er,38:br,41:[1,222],42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,56:[1,223],66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:224,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,58:[1,225],66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,60:[1,226],66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,62:[1,227],66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,64:[1,228],66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{67:[1,229]},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,70:[1,230],73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,72:[1,231],73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,39:232,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,41:[1,233],42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,75:[1,234],77:[1,235],81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,75:[1,237],77:[1,236],81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{9:238,20:oi,21:kt,23:Dt},i(vt,[2,52],{52:Gc}),i(Ga,[2,77]),i(Ga,[2,76]),{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,68:[1,239],73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Ga,[2,79]),i(Es,[2,83]),{22:ws,24:Oi,26:Er,38:br,39:240,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(cg,b,{17:241}),i(Ot,[2,43]),{51:242,52:Q,54:46,66:oe,67:ce,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},{22:sh,66:Ai,67:nn,87:Tr,97:243,103:ai,106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{22:sh,66:Ai,67:nn,87:Tr,97:257,103:ai,106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{22:sh,66:Ai,67:nn,87:Tr,97:258,103:ai,105:[1,259],106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{22:sh,66:Ai,67:nn,87:Tr,97:260,103:ai,105:[1,261],106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{106:[1,262]},{22:sh,66:Ai,67:nn,87:Tr,97:263,103:ai,106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{22:sh,66:Ai,67:nn,87:Tr,97:264,103:ai,106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{26:Nt,52:ze,66:Xe,67:Lt,92:Ge,98:265,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Hi,[2,103]),{84:[1,266]},i(Hi,[2,107],{22:[1,267]}),i(Hi,[2,108]),i(Hi,[2,111]),i(Hi,[2,113],{22:[1,268]}),i(Hi,[2,114]),i(Zs,[2,58]),i(Zs,[2,59]),{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,58:[1,269],66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Zs,[2,66]),i(Zs,[2,61]),i(Zs,[2,62]),i(Zs,[2,63]),{66:[1,270]},i(Zs,[2,65]),i(Zs,[2,67]),{22:ws,24:Oi,26:Er,38:br,42:Dr,52:ze,66:Xe,67:Lt,72:[1,271],73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Zs,[2,69]),i(Zs,[2,70]),i(Zs,[2,72]),i(Zs,[2,71]),i(Zs,[2,73]),i(lp,[2,4]),i([22,52,66,67,92,96,106,107,110,112,113,123,124,125,126,127,128],[2,81]),{22:ws,24:Oi,26:Er,38:br,41:[1,272],42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{18:18,19:19,20:E,21:S,22:N,23:B,32:24,33:25,34:26,35:27,36:28,37:29,38:R,42:[1,273],43:31,44:j,46:$,48:V,50:35,51:45,52:Q,54:46,66:oe,67:ce,87:se,88:ge,89:ye,90:ke,91:Ae,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,119:ee,120:rt,121:me,122:gt,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},i(ha,[2,56]),i(Hi,[2,116],{107:qf}),i(lx,[2,126],{109:275,22:sh,66:Ai,67:nn,87:Tr,103:ai,106:Ns,110:mc,111:yu,112:Mo,113:ku,114:Ih}),i(ad,[2,128]),i(ad,[2,130]),i(ad,[2,131]),i(ad,[2,132]),i(ad,[2,133]),i(ad,[2,134]),i(ad,[2,135]),i(ad,[2,136]),i(ad,[2,137]),i(ad,[2,138]),i(ad,[2,139]),i(ad,[2,140]),i(Hi,[2,117],{107:qf}),i(Hi,[2,118],{107:qf}),{22:[1,276]},i(Hi,[2,119],{107:qf}),{22:[1,277]},i(sd,[2,125]),i(Hi,[2,99],{107:qf}),i(Hi,[2,100],{107:qf}),i(Hi,[2,101],{116:100,118:179,26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr}),i(Hi,[2,105]),{102:[1,278]},{102:[1,279]},{58:[1,280]},{68:[1,281]},{72:[1,282]},{9:283,20:oi,21:kt,23:Dt},i(Ot,[2,42]),{22:sh,66:Ai,67:nn,87:Tr,103:ai,106:Ns,108:284,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},i(ad,[2,129]),{26:Nt,52:ze,66:Xe,67:Lt,92:Ge,98:285,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{26:Nt,52:ze,66:Xe,67:Lt,92:Ge,98:286,106:Bn,107:Oe,110:Ri,112:tn,113:hi,116:100,118:98,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Hi,[2,109]),i(Hi,[2,115]),i(Zs,[2,60]),{22:ws,24:Oi,26:Er,38:br,39:287,42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:140,84:yn,85:Bc,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},i(Zs,[2,68]),i(cg,b,{17:288}),i(lx,[2,127],{109:275,22:sh,66:Ai,67:nn,87:Tr,103:ai,106:Ns,110:mc,111:yu,112:Mo,113:ku,114:Ih}),i(Hi,[2,122],{116:100,118:179,22:[1,289],26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr}),i(Hi,[2,123],{116:100,118:179,22:[1,290],26:Nt,52:ze,66:Xe,67:Lt,92:Ge,106:Bn,107:Oe,110:Ri,112:tn,113:hi,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr}),{22:ws,24:Oi,26:Er,38:br,41:[1,291],42:Dr,52:ze,66:Xe,67:Lt,73:Vn,81:qi,83:202,86:152,87:jn,88:Ms,89:Pa,90:Ta,91:_a,92:ka,93:Qi,95:143,96:ea,106:Bn,107:Oe,110:Ca,112:tn,113:hi,114:Sa,115:Ka,116:149,123:Sr,124:Zn,125:Xn,126:ir,127:Hn,128:tr},{18:18,19:19,20:E,21:S,22:N,23:B,32:24,33:25,34:26,35:27,36:28,37:29,38:R,42:[1,292],43:31,44:j,46:$,48:V,50:35,51:45,52:Q,54:46,66:oe,67:ce,87:se,88:ge,89:ye,90:ke,91:Ae,92:de,96:ve,106:te,107:xe,110:De,112:he,113:Ie,117:47,119:ee,120:rt,121:me,122:gt,123:pe,124:Et,125:wt,126:jt,127:At,128:Bt},{22:sh,66:Ai,67:nn,87:Tr,97:293,103:ai,106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},{22:sh,66:Ai,67:nn,87:Tr,97:294,103:ai,106:Ns,108:244,109:245,110:mc,111:yu,112:Mo,113:ku,114:Ih},i(Zs,[2,64]),i(Ot,[2,41]),i(Hi,[2,120],{107:qf}),i(Hi,[2,121],{107:qf})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],132:[2,7]},parseError:function(rs,Ps){if(Ps.recoverable)this.trace(rs);else{var Aa=new Error(rs);throw Aa.hash=Ps,Aa}},parse:function(rs){var Ps=this,Aa=[0],pi=[],Rc=[null],_t=[],hp=this.table,Gt="",ff=0,sm=0,m9=2,fp=1,N5=_t.slice.call(arguments,1),ah=Object.create(this.lexer),od={yy:{}};for(var P5 in this.yy)Object.prototype.hasOwnProperty.call(this.yy,P5)&&(od.yy[P5]=this.yy[P5]);ah.setInput(rs,od.yy),od.yy.lexer=ah,od.yy.parser=this,typeof ah.yylloc>"u"&&(ah.yylloc={});var B5=ah.yylloc;_t.push(B5);var y9=ah.options&&ah.options.ranges;typeof od.yy.parseError=="function"?this.parseError=od.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function vL(){var oh;return oh=pi.pop()||ah.lex()||fp,typeof oh!="number"&&(oh instanceof Array&&(pi=oh,oh=pi.pop()),oh=Ps.symbols_[oh]||oh),oh}for(var v1,dp,cd,am,ev={},om,yc,hx,Vo;;){if(dp=Aa[Aa.length-1],this.defaultActions[dp]?cd=this.defaultActions[dp]:((v1===null||typeof v1>"u")&&(v1=vL()),cd=hp[dp]&&hp[dp][v1]),typeof cd>"u"||!cd.length||!cd[0]){var fx="";Vo=[];for(om in hp[dp])this.terminals_[om]&&om>m9&&Vo.push("'"+this.terminals_[om]+"'");ah.showPosition?fx="Parse error on line "+(ff+1)+`: +`+ah.showPosition()+` +Expecting `+Vo.join(", ")+", got '"+(this.terminals_[v1]||v1)+"'":fx="Parse error on line "+(ff+1)+": Unexpected "+(v1==fp?"end of input":"'"+(this.terminals_[v1]||v1)+"'"),this.parseError(fx,{text:ah.match,token:this.terminals_[v1]||v1,line:ah.yylineno,loc:B5,expected:Vo})}if(cd[0]instanceof Array&&cd.length>1)throw new Error("Parse Error: multiple actions possible at state: "+dp+", token: "+v1);switch(cd[0]){case 1:Aa.push(v1),Rc.push(ah.yytext),_t.push(ah.yylloc),Aa.push(cd[1]),v1=null,sm=ah.yyleng,Gt=ah.yytext,ff=ah.yylineno,B5=ah.yylloc;break;case 2:if(yc=this.productions_[cd[1]][1],ev.$=Rc[Rc.length-yc],ev._$={first_line:_t[_t.length-(yc||1)].first_line,last_line:_t[_t.length-1].last_line,first_column:_t[_t.length-(yc||1)].first_column,last_column:_t[_t.length-1].last_column},y9&&(ev._$.range=[_t[_t.length-(yc||1)].range[0],_t[_t.length-1].range[1]]),am=this.performAction.apply(ev,[Gt,sm,ff,od.yy,cd[1],Rc,_t].concat(N5)),typeof am<"u")return am;yc&&(Aa=Aa.slice(0,-1*yc*2),Rc=Rc.slice(0,-1*yc),_t=_t.slice(0,-1*yc)),Aa.push(this.productions_[cd[1]][0]),Rc.push(ev.$),_t.push(ev._$),hx=hp[Aa[Aa.length-2]][Aa[Aa.length-1]],Aa.push(hx);break;case 3:return!0}}return!0}},bL=function(){var ug={EOF:1,parseError:function(Ps,Aa){if(this.yy.parser)this.yy.parser.parseError(Ps,Aa);else throw new Error(Ps)},setInput:function(rs,Ps){return this.yy=Ps||this.yy||{},this._input=rs,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var rs=this._input[0];this.yytext+=rs,this.yyleng++,this.offset++,this.match+=rs,this.matched+=rs;var Ps=rs.match(/(?:\r\n?|\n).*/g);return Ps?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),rs},unput:function(rs){var Ps=rs.length,Aa=rs.split(/(?:\r\n?|\n)/g);this._input=rs+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ps),this.offset-=Ps;var pi=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Aa.length-1&&(this.yylineno-=Aa.length-1);var Rc=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Aa?(Aa.length===pi.length?this.yylloc.first_column:0)+pi[pi.length-Aa.length].length-Aa[0].length:this.yylloc.first_column-Ps},this.options.ranges&&(this.yylloc.range=[Rc[0],Rc[0]+this.yyleng-Ps]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(rs){this.unput(this.match.slice(rs))},pastInput:function(){var rs=this.matched.substr(0,this.matched.length-this.match.length);return(rs.length>20?"...":"")+rs.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var rs=this.match;return rs.length<20&&(rs+=this._input.substr(0,20-rs.length)),(rs.substr(0,20)+(rs.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var rs=this.pastInput(),Ps=new Array(rs.length+1).join("-");return rs+this.upcomingInput()+` +`+Ps+"^"},test_match:function(rs,Ps){var Aa,pi,Rc;if(this.options.backtrack_lexer&&(Rc={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Rc.yylloc.range=this.yylloc.range.slice(0))),pi=rs[0].match(/(?:\r\n?|\n).*/g),pi&&(this.yylineno+=pi.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:pi?pi[pi.length-1].length-pi[pi.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+rs[0].length},this.yytext+=rs[0],this.match+=rs[0],this.matches=rs,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(rs[0].length),this.matched+=rs[0],Aa=this.performAction.call(this,this.yy,this,Ps,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Aa)return Aa;if(this._backtrack){for(var _t in Rc)this[_t]=Rc[_t];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var rs,Ps,Aa,pi;this._more||(this.yytext="",this.match="");for(var Rc=this._currentRules(),_t=0;_tPs[0].length)){if(Ps=Aa,pi=_t,this.options.backtrack_lexer){if(rs=this.test_match(Aa,Rc[_t]),rs!==!1)return rs;if(this._backtrack){Ps=!1;continue}else return!1}else if(!this.options.flex)break}return Ps?(rs=this.test_match(Ps,Rc[pi]),rs!==!1?rs:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Ps=this.next();return Ps||this.lex()},begin:function(Ps){this.conditionStack.push(Ps)},popState:function(){var Ps=this.conditionStack.length-1;return Ps>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Ps){return Ps=this.conditionStack.length-1-Math.abs(Ps||0),Ps>=0?this.conditionStack[Ps]:"INITIAL"},pushState:function(Ps){this.begin(Ps)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(Ps,Aa,pi,Rc){switch(pi){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:return this.begin("acc_title"),44;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),46;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:this.begin("md_string");break;case 13:return"MD_STR";case 14:this.popState();break;case 15:this.begin("string");break;case 16:this.popState();break;case 17:return"STR";case 18:return 87;case 19:return 96;case 20:return 88;case 21:return 105;case 22:return 89;case 23:return 90;case 24:this.begin("href");break;case 25:this.popState();break;case 26:return 101;case 27:this.begin("callbackname");break;case 28:this.popState();break;case 29:this.popState(),this.begin("callbackargs");break;case 30:return 99;case 31:this.popState();break;case 32:return 100;case 33:this.begin("click");break;case 34:this.popState();break;case 35:return 91;case 36:return Ps.lex.firstGraph()&&this.begin("dir"),24;case 37:return Ps.lex.firstGraph()&&this.begin("dir"),24;case 38:return Ps.lex.firstGraph()&&this.begin("dir"),24;case 39:return 38;case 40:return 42;case 41:return 102;case 42:return 102;case 43:return 102;case 44:return 102;case 45:return this.popState(),25;case 46:return this.popState(),26;case 47:return this.popState(),26;case 48:return this.popState(),26;case 49:return this.popState(),26;case 50:return this.popState(),26;case 51:return this.popState(),26;case 52:return this.popState(),26;case 53:return this.popState(),26;case 54:return this.popState(),26;case 55:return this.popState(),26;case 56:return 119;case 57:return 120;case 58:return 121;case 59:return 122;case 60:return 106;case 61:return 112;case 62:return 53;case 63:return 67;case 64:return 52;case 65:return 20;case 66:return 107;case 67:return 127;case 68:return 82;case 69:return 82;case 70:return 82;case 71:return 82;case 72:return 81;case 73:return 81;case 74:return 81;case 75:return 59;case 76:return 60;case 77:return 61;case 78:return 62;case 79:return 63;case 80:return 64;case 81:return 65;case 82:return 69;case 83:return 70;case 84:return 55;case 85:return 56;case 86:return 110;case 87:return 113;case 88:return 128;case 89:return 125;case 90:return 114;case 91:return 126;case 92:return 126;case 93:return 115;case 94:return 73;case 95:return 93;case 96:return"SEP";case 97:return 92;case 98:return 66;case 99:return 75;case 100:return 74;case 101:return 77;case 102:return 76;case 103:return 123;case 104:return 124;case 105:return 68;case 106:return 57;case 107:return 58;case 108:return 40;case 109:return 41;case 110:return 71;case 111:return 72;case 112:return 134;case 113:return 21;case 114:return 22;case 115:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\])/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[31,32],inclusive:!1},callbackname:{rules:[28,29,30],inclusive:!1},href:{rules:[25,26],inclusive:!1},click:{rules:[34,35],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[45,46,47,48,49,50,51,52,53,54,55],inclusive:!1},acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},md_string:{rules:[13,14],inclusive:!1},string:{rules:[16,17],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,15,18,19,20,21,22,23,24,27,33,36,37,38,39,40,41,42,43,44,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115],inclusive:!0}}};return ug}();b3.lexer=bL;function im(){this.yy={}}return im.prototype=b3,b3.Parser=im,new im}();Mde.parser=Mde;const Dde=Mde,iMt="flowchart-";let WOe=0,Ide=Tt(),_l={},r9=[],YA={},m5=[],jW={},Ode={},$W=0,Nde=!0,Yb,HW,zW=[];const GW=i=>Wa.sanitizeText(i,Ide),KOe=function(i,a,f){rd.parseDirective(this,i,a,f)},JN=function(i){const a=Object.keys(_l);for(const f of a)if(_l[f].id===i)return _l[f].domId;return i},YOe=function(i,a,f,p,w,y,b={}){let E,S=i;S!==void 0&&S.trim().length!==0&&(_l[S]===void 0&&(_l[S]={id:S,labelType:"text",domId:iMt+S+"-"+WOe,styles:[],classes:[]}),WOe++,a!==void 0?(Ide=Tt(),E=GW(a.text.trim()),_l[S].labelType=a.type,E[0]==='"'&&E[E.length-1]==='"'&&(E=E.substring(1,E.length-1)),_l[S].text=E):_l[S].text===void 0&&(_l[S].text=i),f!==void 0&&(_l[S].type=f),p!=null&&p.forEach(function(N){_l[S].styles.push(N)}),w!=null&&w.forEach(function(N){_l[S].classes.push(N)}),y!==void 0&&(_l[S].dir=y),_l[S].props===void 0?_l[S].props=b:b!==void 0&&Object.assign(_l[S].props,b))},XOe=function(i,a,f){const y={start:i,end:a,type:void 0,text:"",labelType:"text"};Fe.info("abc78 Got edge...",y);const b=f.text;b!==void 0&&(y.text=GW(b.text.trim()),y.text[0]==='"'&&y.text[y.text.length-1]==='"'&&(y.text=y.text.substring(1,y.text.length-1)),y.labelType=b.type),f!==void 0&&(y.type=f.type,y.stroke=f.stroke,y.length=f.length),r9.push(y)},QOe=function(i,a,f){Fe.info("addLink (abc78)",i,a,f);let p,w;for(p=0;p/)&&(Yb="LR"),Yb.match(/.*v/)&&(Yb="TB"),Yb==="TD"&&(Yb="TB")},qW=function(i,a){i.split(",").forEach(function(f){let p=f;_l[p]!==void 0&&_l[p].classes.push(a),jW[p]!==void 0&&jW[p].classes.push(a)})},sMt=function(i,a){i.split(",").forEach(function(f){a!==void 0&&(Ode[HW==="gen-1"?JN(f):f]=GW(a))})},aMt=function(i,a,f){let p=JN(i);if(Tt().securityLevel!=="loose"||a===void 0)return;let w=[];if(typeof f=="string"){w=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let y=0;y")),w.classed("hover",!0)}).on("mouseout",function(){a.transition().duration(500).style("opacity",0),Cr(this).classed("hover",!1)})};zW.push(lNe);const hNe=function(i="gen-1"){_l={},YA={},r9=[],zW=[lNe],m5=[],jW={},$W=0,Ode=[],Nde=!0,HW=i,rp()},fNe=i=>{HW=i||"gen-2"},dNe=function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},gNe=function(i,a,f){let p=i.text.trim(),w=f.text;i===f&&f.text.match(/\s/)&&(p=void 0);function y(B){const R={boolean:{},number:{},string:{}},j=[];let $;return{nodeList:B.filter(function(Q){const oe=typeof Q;return Q.stmt&&Q.stmt==="dir"?($=Q.value,!1):Q.trim()===""?!1:oe in R?R[oe].hasOwnProperty(Q)?!1:R[oe][Q]=!0:j.includes(Q)?!1:j.push(Q)}),dir:$}}let b=[];const{nodeList:E,dir:S}=y(b.concat.apply(b,a));if(b=E,HW==="gen-1")for(let B=0;B2e3)return;if(pNe[eP]=a,m5[a].id===i)return{result:!0,count:0};let p=0,w=1;for(;p=0){const b=bNe(i,y);if(b.result)return{result:!0,count:w+b.count};w=w+b.count}p=p+1}return{result:!1,count:w}},vNe=function(i){return pNe[i]},wNe=function(){eP=-1,m5.length>0&&bNe("none",m5.length-1)},mNe=function(){return m5},yNe=()=>Nde?(Nde=!1,!0):!1,cMt=i=>{let a=i.trim(),f="arrow_open";switch(a[0]){case"<":f="arrow_point",a=a.slice(1);break;case"x":f="arrow_cross",a=a.slice(1);break;case"o":f="arrow_circle",a=a.slice(1);break}let p="normal";return a.includes("=")&&(p="thick"),a.includes(".")&&(p="dotted"),{type:f,stroke:p}},uMt=(i,a)=>{const f=a.length;let p=0;for(let w=0;w{const a=i.trim();let f=a.slice(0,-1),p="arrow_open";switch(a.slice(-1)){case"x":p="arrow_cross",a[0]==="x"&&(p="double_"+p,f=f.slice(1));break;case">":p="arrow_point",a[0]==="<"&&(p="double_"+p,f=f.slice(1));break;case"o":p="arrow_circle",a[0]==="o"&&(p="double_"+p,f=f.slice(1));break}let w="normal",y=f.length-1;f[0]==="="&&(w="thick"),f[0]==="~"&&(w="invisible");let b=uMt(".",f);return b&&(w="dotted",y=b),{type:p,stroke:w,length:y}},kNe=(i,a)=>{const f=lMt(i);let p;if(a){if(p=cMt(a),p.stroke!==f.stroke)return{type:"INVALID",stroke:"INVALID"};if(p.type==="arrow_open")p.type=f.type;else{if(p.type!==f.type)return{type:"INVALID",stroke:"INVALID"};p.type="double_"+p.type}return p.type==="double_arrow"&&(p.type="double_arrow_point"),p.length=f.length,p}return f},xNe=(i,a)=>{let f=!1;return i.forEach(p=>{p.nodes.indexOf(a)>=0&&(f=!0)}),f},ENe=(i,a)=>{const f=[];return i.nodes.forEach((p,w)=>{xNe(a,p)||f.push(i.nodes[w])}),{nodes:f}},TNe={firstGraph:yNe},ix={parseDirective:KOe,defaultConfig:()=>OA.flowchart,setAccTitle:ip,getAccTitle:L2,getAccDescription:D2,setAccDescription:M2,addVertex:YOe,lookUpDomId:JN,addLink:QOe,updateLinkInterpolate:ZOe,updateLink:JOe,addClass:eNe,setDirection:tNe,setClass:qW,setTooltip:sMt,getTooltip:rNe,setClickEvent:iNe,setLink:nNe,bindFunctions:sNe,getDirection:aNe,getVertices:oNe,getEdges:cNe,getClasses:uNe,clear:hNe,setGen:fNe,defaultStyle:dNe,addSubGraph:gNe,getDepthFirstPos:vNe,indexNodes:wNe,getSubGraphs:mNe,destructLink:kNe,lex:TNe,exists:xNe,makeUniq:ENe,setDiagramTitle:Uw,getDiagramTitle:Ww},hMt=Object.freeze(Object.defineProperty({__proto__:null,addClass:eNe,addLink:QOe,addSingleLink:XOe,addSubGraph:gNe,addVertex:YOe,bindFunctions:sNe,clear:hNe,default:ix,defaultStyle:dNe,destructLink:kNe,firstGraph:yNe,getClasses:uNe,getDepthFirstPos:vNe,getDirection:aNe,getEdges:cNe,getSubGraphs:mNe,getTooltip:rNe,getVertices:oNe,indexNodes:wNe,lex:TNe,lookUpDomId:JN,parseDirective:KOe,setClass:qW,setClickEvent:iNe,setDirection:tNe,setGen:fNe,setLink:nNe,updateLink:JOe,updateLinkInterpolate:ZOe},Symbol.toStringTag,{value:"Module"}));var fMt="[object Symbol]";function i9(i){return typeof i=="symbol"||a3(i)&&QE(i)==fMt}function XA(i,a){for(var f=-1,p=i==null?0:i.length,w=Array(p);++f0){if(++a>=LMt)return arguments[0]}else a=0;return i.apply(void 0,arguments)}}function QA(i){return function(){return i}}var OMt=function(){try{var i=JE(Object,"defineProperty");return i({},"",{}),i}catch{}}();const UW=OMt;var NMt=UW?function(i,a){return UW(i,"toString",{configurable:!0,enumerable:!1,value:QA(a),writable:!0})}:s9,PMt=IMt(NMt);const INe=PMt;function ONe(i,a){for(var f=-1,p=i==null?0:i.length;++f-1}var $Mt=9007199254740991,HMt=/^(?:0|[1-9]\d*)$/;function WW(i,a){var f=typeof i;return a=a??$Mt,!!a&&(f=="number"||f!="symbol"&&HMt.test(i))&&i>-1&&i%1==0&&i1?f[w-1]:void 0,b=w>2?f[2]:void 0;for(y=i.length>3&&typeof y=="function"?(w--,y):void 0,b&&nP(f[0],f[1],b)&&(y=w<3?void 0:y,w=1),a=Object(a);++p0&&f(E)?a>1?JW(E,a-1,f,p,w):Bde(w,E):p||(w[w.length]=E)}return w}function ZA(i){var a=i==null?0:i.length;return a?JW(i,1):[]}function uDt(i){return INe(BNe(i,void 0,ZA),i+"")}var lDt=fOe(Object.getPrototypeOf,Object);const Rde=lDt;var hDt="[object Object]",fDt=Function.prototype,dDt=Object.prototype,$Ne=fDt.toString,gDt=dDt.hasOwnProperty,pDt=$Ne.call(Object);function HNe(i){if(!a3(i)||QE(i)!=hDt)return!1;var a=Rde(i);if(a===null)return!0;var f=gDt.call(a,"constructor")&&a.constructor;return typeof f=="function"&&f instanceof f&&$Ne.call(f)==pDt}function bDt(i,a,f,p){var w=-1,y=i==null?0:i.length;for(p&&y&&(f=i[++w]);++wE))return!1;var N=y.get(i),B=y.get(a);if(N&&B)return N==a&&B==i;var R=-1,j=!0,$=f&ZIt?new sP:void 0;for(y.set(i,a),y.set(a,i);++R2?a[2]:void 0;for(w&&nP(a[0],a[1],w)&&(p=1);++f-1?w[y?a[b]:b]:void 0}}var VOt=Math.max;function UOt(i,a,f){var p=i==null?0:i.length;if(!p)return-1;var w=f==null?0:TMt(f);return w<0&&(w=VOt(p+w,0)),NNe(i,sx(a),w)}var WOt=qOt(UOt);const Yde=WOt;function kPe(i,a){var f=-1,p=tx(i)?Array(i.length):[];return nK(i,function(w,y,b){p[++f]=a(w,y,b)}),p}function Hf(i,a){var f=$f(i)?XA:kPe;return f(i,sx(a))}function KOt(i,a){return i==null?i:qde(i,Kde(a),a9)}function YOt(i,a){return i&&Vde(i,Kde(a))}function XOt(i,a){return i>a}var QOt=Object.prototype,ZOt=QOt.hasOwnProperty;function JOt(i,a){return i!=null&&ZOt.call(i,a)}function Ja(i,a){return i!=null&&pPe(i,a,JOt)}function eNt(i,a){return XA(a,function(f){return i[f]})}function k5(i){return i==null?[]:eNt(i,N2(i))}function cf(i){return i===void 0}function xPe(i,a){return ia||y&&b&&S&&!E&&!N||p&&b&&S||!f&&S||!w)return 1;if(!p&&!y&&!N&&i=E)return S;var N=f[p];return S*(N=="desc"?-1:1)}}return i.index-a.index}function oNt(i,a,f){a.length?a=XA(a,function(y){return $f(y)?function(b){return ZW(b,y.length===1?y[0]:y)}:y}):a=[s9];var p=-1;a=XA(a,MW(sx));var w=kPe(i,function(y,b,E){var S=XA(a,function(N){return N(y)});return{criteria:S,index:++p,value:y}});return iNt(w,function(y,b){return aNt(y,b,f)})}function cNt(i,a){return rNt(i,a,function(f,p){return bPe(i,p)})}var uNt=uDt(function(i,a){return i==null?{}:cNt(i,a)});const oP=uNt;var lNt=Math.ceil,hNt=Math.max;function fNt(i,a,f,p){for(var w=-1,y=hNt(lNt((a-i)/(f||1)),0),b=Array(y);y--;)b[p?y:++w]=i,i+=f;return b}function dNt(i){return function(a,f,p){return p&&typeof p!="number"&&nP(a,f,p)&&(f=p=void 0),a=VW(a),f===void 0?(f=a,a=0):f=VW(f),p=p===void 0?a1&&nP(i,a[0],a[1])?a=[]:f>2&&nP(a[0],a[1],a[2])&&(a=[a[0]]),oNt(i,JW(a,1),[])});const uP=bNt;var vNt=1/0,wNt=GA&&1/Hde(new GA([,-0]))[1]==vNt?function(i){return new GA(i)}:AMt;const mNt=wNt;var yNt=200;function kNt(i,a,f){var p=-1,w=jMt,y=i.length,b=!0,E=[],S=E;if(f)b=!1,w=zOt;else if(y>=yNt){var N=a?null:mNt(i);if(N)return Hde(N);b=!1,w=oPe,S=new sP}else S=a?[]:E;e:for(;++p1?w.setNode(y,f):w.setNode(y)}),this}setNode(a,f){return Ja(this._nodes,a)?(arguments.length>1&&(this._nodes[a]=f),this):(this._nodes[a]=arguments.length>1?f:this._defaultNodeLabelFn(a),this._isCompound&&(this._parent[a]=u9,this._children[a]={},this._children[u9][a]=!0),this._in[a]={},this._preds[a]={},this._out[a]={},this._sucs[a]={},++this._nodeCount,this)}node(a){return this._nodes[a]}hasNode(a){return Ja(this._nodes,a)}removeNode(a){var f=this;if(Ja(this._nodes,a)){var p=function(w){f.removeEdge(f._edgeObjs[w])};delete this._nodes[a],this._isCompound&&(this._removeFromParentsChildList(a),delete this._parent[a],lr(this.children(a),function(w){f.setParent(w)}),delete this._children[a]),lr(N2(this._in[a]),p),delete this._in[a],delete this._preds[a],lr(N2(this._out[a]),p),delete this._out[a],delete this._sucs[a],--this._nodeCount}return this}setParent(a,f){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(cf(f))f=u9;else{f+="";for(var p=f;!cf(p);p=this.parent(p))if(p===a)throw new Error("Setting "+f+" as parent of "+a+" would create a cycle");this.setNode(f)}return this.setNode(a),this._removeFromParentsChildList(a),this._parent[a]=f,this._children[f][a]=!0,this}_removeFromParentsChildList(a){delete this._children[this._parent[a]][a]}parent(a){if(this._isCompound){var f=this._parent[a];if(f!==u9)return f}}children(a){if(cf(a)&&(a=u9),this._isCompound){var f=this._children[a];if(f)return N2(f)}else{if(a===u9)return this.nodes();if(this.hasNode(a))return[]}}predecessors(a){var f=this._preds[a];if(f)return N2(f)}successors(a){var f=this._sucs[a];if(f)return N2(f)}neighbors(a){var f=this.predecessors(a);if(f)return ENt(f,this.successors(a))}isLeaf(a){var f;return this.isDirected()?f=this.successors(a):f=this.neighbors(a),f.length===0}filterNodes(a){var f=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});f.setGraph(this.graph());var p=this;lr(this._nodes,function(b,E){a(E)&&f.setNode(E,b)}),lr(this._edgeObjs,function(b){f.hasNode(b.v)&&f.hasNode(b.w)&&f.setEdge(b,p.edge(b))});var w={};function y(b){var E=p.parent(b);return E===void 0||f.hasNode(E)?(w[b]=E,E):E in w?w[E]:y(E)}return this._isCompound&&lr(f.nodes(),function(b){f.setParent(b,y(b))}),f}setDefaultEdgeLabel(a){return BA(a)||(a=QA(a)),this._defaultEdgeLabelFn=a,this}edgeCount(){return this._edgeCount}edges(){return k5(this._edgeObjs)}setPath(a,f){var p=this,w=arguments;return cP(a,function(y,b){return w.length>1?p.setEdge(y,b,f):p.setEdge(y,b),b}),this}setEdge(){var a,f,p,w,y=!1,b=arguments[0];typeof b=="object"&&b!==null&&"v"in b?(a=b.v,f=b.w,p=b.name,arguments.length===2&&(w=arguments[1],y=!0)):(a=b,f=arguments[1],p=arguments[3],arguments.length>2&&(w=arguments[2],y=!0)),a=""+a,f=""+f,cf(p)||(p=""+p);var E=lP(this._isDirected,a,f,p);if(Ja(this._edgeLabels,E))return y&&(this._edgeLabels[E]=w),this;if(!cf(p)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(a),this.setNode(f),this._edgeLabels[E]=y?w:this._defaultEdgeLabelFn(a,f,p);var S=ANt(this._isDirected,a,f,p);return a=S.v,f=S.w,Object.freeze(S),this._edgeObjs[E]=S,TPe(this._preds[f],a),TPe(this._sucs[a],f),this._in[f][E]=S,this._out[a][E]=S,this._edgeCount++,this}edge(a,f,p){var w=arguments.length===1?Jde(this._isDirected,arguments[0]):lP(this._isDirected,a,f,p);return this._edgeLabels[w]}hasEdge(a,f,p){var w=arguments.length===1?Jde(this._isDirected,arguments[0]):lP(this._isDirected,a,f,p);return Ja(this._edgeLabels,w)}removeEdge(a,f,p){var w=arguments.length===1?Jde(this._isDirected,arguments[0]):lP(this._isDirected,a,f,p),y=this._edgeObjs[w];return y&&(a=y.v,f=y.w,delete this._edgeLabels[w],delete this._edgeObjs[w],_Pe(this._preds[f],a),_Pe(this._sucs[a],f),delete this._in[f][w],delete this._out[a][w],this._edgeCount--),this}inEdges(a,f){var p=this._in[a];if(p){var w=k5(p);return f?y5(w,function(y){return y.v===f}):w}}outEdges(a,f){var p=this._out[a];if(p){var w=k5(p);return f?y5(w,function(y){return y.w===f}):w}}nodeEdges(a,f){var p=this.inEdges(a,f);if(p)return p.concat(this.outEdges(a,f))}}zf.prototype._nodeCount=0,zf.prototype._edgeCount=0;function TPe(i,a){i[a]?i[a]++:i[a]=1}function _Pe(i,a){--i[a]||delete i[a]}function lP(i,a,f,p){var w=""+a,y=""+f;if(!i&&w>y){var b=w;w=y,y=b}return w+EPe+y+EPe+(cf(p)?SNt:p)}function ANt(i,a,f,p){var w=""+a,y=""+f;if(!i&&w>y){var b=w;w=y,y=b}var E={v:w,w:y};return p&&(E.name=p),E}function Jde(i,a){return lP(i,a.v,a.w,a.name)}class LNt{constructor(){var a={};a._next=a._prev=a,this._sentinel=a}dequeue(){var a=this._sentinel,f=a._prev;if(f!==a)return CPe(f),f}enqueue(a){var f=this._sentinel;a._prev&&a._next&&CPe(a),a._next=f._next,f._next._prev=a,f._next=a,a._prev=f}toString(){for(var a=[],f=this._sentinel,p=f._prev;p!==f;)a.push(JSON.stringify(p,MNt)),p=p._prev;return"["+a.join(", ")+"]"}}function CPe(i){i._prev._next=i._next,i._next._prev=i._prev,delete i._next,delete i._prev}function MNt(i,a){if(i!=="_next"&&i!=="_prev")return a}var DNt=QA(1);function INt(i,a){if(i.nodeCount()<=1)return[];var f=NNt(i,a||DNt),p=ONt(f.graph,f.buckets,f.zeroIdx);return ZA(Hf(p,function(w){return i.outEdges(w.v,w.w)}))}function ONt(i,a,f){for(var p=[],w=a[a.length-1],y=a[0],b;i.nodeCount();){for(;b=y.dequeue();)e0e(i,a,f,b);for(;b=w.dequeue();)e0e(i,a,f,b);if(i.nodeCount()){for(var E=a.length-2;E>0;--E)if(b=a[E].dequeue(),b){p=p.concat(e0e(i,a,f,b,!0));break}}}return p}function e0e(i,a,f,p,w){var y=w?[]:void 0;return lr(i.inEdges(p.v),function(b){var E=i.edge(b),S=i.node(b.v);w&&y.push({v:b.v,w:b.w}),S.out-=E,t0e(a,f,S)}),lr(i.outEdges(p.v),function(b){var E=i.edge(b),S=b.w,N=i.node(S);N.in-=E,t0e(a,f,N)}),i.removeNode(p.v),y}function NNt(i,a){var f=new zf,p=0,w=0;lr(i.nodes(),function(E){f.setNode(E,{v:E,in:0,out:0})}),lr(i.edges(),function(E){var S=f.edge(E.v,E.w)||0,N=a(E),B=S+N;f.setEdge(E.v,E.w,B),w=Math.max(w,f.node(E.v).out+=N),p=Math.max(p,f.node(E.w).in+=N)});var y=c9(w+p+3).map(function(){return new LNt}),b=p+1;return lr(f.nodes(),function(E){t0e(y,b,f.node(E))}),{graph:f,buckets:y,zeroIdx:b}}function t0e(i,a,f){f.out?f.in?i[f.out-f.in+a].enqueue(f):i[i.length-1].enqueue(f):i[0].enqueue(f)}function PNt(i){var a=i.graph().acyclicer==="greedy"?INt(i,f(i)):BNt(i);lr(a,function(p){var w=i.edge(p);i.removeEdge(p),w.forwardName=p.name,w.reversed=!0,i.setEdge(p.w,p.v,w,sK("rev"))});function f(p){return function(w){return p.edge(w).weight}}}function BNt(i){var a=[],f={},p={};function w(y){Ja(p,y)||(p[y]=!0,f[y]=!0,lr(i.outEdges(y),function(b){Ja(f,b.w)?a.push(b):w(b.w)}),delete f[y])}return lr(i.nodes(),w),a}function RNt(i){lr(i.edges(),function(a){var f=i.edge(a);if(f.reversed){i.removeEdge(a);var p=f.forwardName;delete f.reversed,delete f.forwardName,i.setEdge(a.w,a.v,f,p)}})}function eL(i,a,f,p){var w;do w=sK(p);while(i.hasNode(w));return f.dummy=a,i.setNode(w,f),w}function FNt(i){var a=new zf().setGraph(i.graph());return lr(i.nodes(),function(f){a.setNode(f,i.node(f))}),lr(i.edges(),function(f){var p=a.edge(f.v,f.w)||{weight:0,minlen:1},w=i.edge(f);a.setEdge(f.v,f.w,{weight:p.weight+w.weight,minlen:Math.max(p.minlen,w.minlen)})}),a}function SPe(i){var a=new zf({multigraph:i.isMultigraph()}).setGraph(i.graph());return lr(i.nodes(),function(f){i.children(f).length||a.setNode(f,i.node(f))}),lr(i.edges(),function(f){a.setEdge(f,i.edge(f))}),a}function APe(i,a){var f=i.x,p=i.y,w=a.x-f,y=a.y-p,b=i.width/2,E=i.height/2;if(!w&&!y)throw new Error("Not possible to find intersection inside of the rectangle");var S,N;return Math.abs(y)*b>Math.abs(w)*E?(y<0&&(E=-E),S=E*w/y,N=E):(w<0&&(b=-b),S=b,N=b*y/w),{x:f+S,y:p+N}}function aK(i){var a=Hf(c9(MPe(i)+1),function(){return[]});return lr(i.nodes(),function(f){var p=i.node(f),w=p.rank;cf(w)||(a[w][p.order]=f)}),a}function jNt(i){var a=aP(Hf(i.nodes(),function(f){return i.node(f).rank}));lr(i.nodes(),function(f){var p=i.node(f);Ja(p,"rank")&&(p.rank-=a)})}function $Nt(i){var a=aP(Hf(i.nodes(),function(y){return i.node(y).rank})),f=[];lr(i.nodes(),function(y){var b=i.node(y).rank-a;f[b]||(f[b]=[]),f[b].push(y)});var p=0,w=i.graph().nodeRankFactor;lr(f,function(y,b){cf(y)&&b%w!==0?--p:p&&lr(y,function(E){i.node(E).rank+=p})})}function LPe(i,a,f,p){var w={width:0,height:0};return arguments.length>=4&&(w.rank=f,w.order=p),eL(i,"border",w,a)}function MPe(i){return o9(Hf(i.nodes(),function(a){var f=i.node(a).rank;if(!cf(f))return f}))}function HNt(i,a){var f={lhs:[],rhs:[]};return lr(i,function(p){a(p)?f.lhs.push(p):f.rhs.push(p)}),f}function zNt(i,a){var f=vPe();try{return a()}finally{console.log(i+" time: "+(vPe()-f)+"ms")}}function GNt(i,a){return a()}function qNt(i){function a(f){var p=i.children(f),w=i.node(f);if(p.length&&lr(p,a),Ja(w,"minRank")){w.borderLeft=[],w.borderRight=[];for(var y=w.minRank,b=w.maxRank+1;yb.lim&&(E=b,S=!0);var N=y5(a.edges(),function(B){return S===zPe(i,i.node(B.v),E)&&S!==zPe(i,i.node(B.w),E)});return Zde(N,function(B){return hP(a,B)})}function HPe(i,a,f,p){var w=f.v,y=f.w;i.removeEdge(w,y),i.setEdge(p.v,p.w,{}),a0e(i),s0e(i,a),sPt(i,a)}function sPt(i,a){var f=Yde(i.nodes(),function(w){return!a.node(w).parent}),p=rPt(i,f);p=p.slice(1),lr(p,function(w){var y=i.node(w).parent,b=a.edge(w,y),E=!1;b||(b=a.edge(y,w),E=!0),a.node(w).rank=a.node(y).rank+(E?b.minlen:-b.minlen)})}function aPt(i,a,f){return i.hasEdge(a,f)}function zPe(i,a,f){return f.low<=a.lim&&a.lim<=f.lim}function oPt(i){switch(i.graph().ranker){case"network-simplex":GPe(i);break;case"tight-tree":uPt(i);break;case"longest-path":cPt(i);break;default:GPe(i)}}var cPt=i0e;function uPt(i){i0e(i),NPe(i)}function GPe(i){l9(i)}function lPt(i){var a=eL(i,"root",{},"_root"),f=hPt(i),p=o9(k5(f))-1,w=2*p+1;i.graph().nestingRoot=a,lr(i.edges(),function(b){i.edge(b).minlen*=w});var y=fPt(i)+1;lr(i.children(),function(b){qPe(i,a,w,y,p,f,b)}),i.graph().nodeRankFactor=w}function qPe(i,a,f,p,w,y,b){var E=i.children(b);if(!E.length){b!==a&&i.setEdge(a,b,{weight:0,minlen:f});return}var S=LPe(i,"_bt"),N=LPe(i,"_bb"),B=i.node(b);i.setParent(S,b),B.borderTop=S,i.setParent(N,b),B.borderBottom=N,lr(E,function(R){qPe(i,a,f,p,w,y,R);var j=i.node(R),$=j.borderTop?j.borderTop:R,V=j.borderBottom?j.borderBottom:R,Q=j.borderTop?p:2*p,oe=$!==V?1:w-y[b]+1;i.setEdge(S,$,{weight:Q,minlen:oe,nestingEdge:!0}),i.setEdge(V,N,{weight:Q,minlen:oe,nestingEdge:!0})}),i.parent(b)||i.setEdge(a,S,{weight:0,minlen:w+y[b]})}function hPt(i){var a={};function f(p,w){var y=i.children(p);y&&y.length&&lr(y,function(b){f(b,w+1)}),a[p]=w}return lr(i.children(),function(p){f(p,1)}),a}function fPt(i){return cP(i.edges(),function(a,f){return a+i.edge(f).weight},0)}function dPt(i){var a=i.graph();i.removeNode(a.nestingRoot),delete a.nestingRoot,lr(i.edges(),function(f){var p=i.edge(f);p.nestingEdge&&i.removeEdge(f)})}function gPt(i,a,f){var p={},w;lr(f,function(y){for(var b=i.parent(y),E,S;b;){if(E=i.parent(b),E?(S=p[E],p[E]=b):(S=w,w=b),S&&S!==b){a.setEdge(S,b);return}b=E}})}function pPt(i,a,f){var p=bPt(i),w=new zf({compound:!0}).setGraph({root:p}).setDefaultNodeLabel(function(y){return i.node(y)});return lr(i.nodes(),function(y){var b=i.node(y),E=i.parent(y);(b.rank===a||b.minRank<=a&&a<=b.maxRank)&&(w.setNode(y),w.setParent(y,E||p),lr(i[f](y),function(S){var N=S.v===y?S.w:S.v,B=w.edge(N,y),R=cf(B)?0:B.weight;w.setEdge(N,y,{weight:i.edge(S).weight+R})}),Ja(b,"minRank")&&w.setNode(y,{borderLeft:b.borderLeft[a],borderRight:b.borderRight[a]}))}),w}function bPt(i){for(var a;i.hasNode(a=sK("_root")););return a}function vPt(i,a){for(var f=0,p=1;p0;)B%2&&(R+=E[B+1]),B=B-1>>1,E[B]+=N.weight;S+=N.weight*R})),S}function mPt(i){var a={},f=y5(i.nodes(),function(E){return!i.children(E).length}),p=o9(Hf(f,function(E){return i.node(E).rank})),w=Hf(c9(p+1),function(){return[]});function y(E){if(!Ja(a,E)){a[E]=!0;var S=i.node(E);w[S.rank].push(E),lr(i.successors(E),y)}}var b=uP(f,function(E){return i.node(E).rank});return lr(b,y),w}function yPt(i,a){return Hf(a,function(f){var p=i.inEdges(f);if(p.length){var w=cP(p,function(y,b){var E=i.edge(b),S=i.node(b.v);return{sum:y.sum+E.weight*S.order,weight:y.weight+E.weight}},{sum:0,weight:0});return{v:f,barycenter:w.sum/w.weight,weight:w.weight}}else return{v:f}})}function kPt(i,a){var f={};lr(i,function(w,y){var b=f[w.v]={indegree:0,in:[],out:[],vs:[w.v],i:y};cf(w.barycenter)||(b.barycenter=w.barycenter,b.weight=w.weight)}),lr(a.edges(),function(w){var y=f[w.v],b=f[w.w];!cf(y)&&!cf(b)&&(b.indegree++,y.out.push(f[w.w]))});var p=y5(f,function(w){return!w.indegree});return xPt(p)}function xPt(i){var a=[];function f(y){return function(b){b.merged||(cf(b.barycenter)||cf(y.barycenter)||b.barycenter>=y.barycenter)&&EPt(y,b)}}function p(y){return function(b){b.in.push(y),--b.indegree===0&&i.push(b)}}for(;i.length;){var w=i.pop();a.push(w),lr(w.in.reverse(),f(w)),lr(w.out,p(w))}return Hf(y5(a,function(y){return!y.merged}),function(y){return oP(y,["vs","i","barycenter","weight"])})}function EPt(i,a){var f=0,p=0;i.weight&&(f+=i.barycenter*i.weight,p+=i.weight),a.weight&&(f+=a.barycenter*a.weight,p+=a.weight),i.vs=a.vs.concat(i.vs),i.barycenter=f/p,i.weight=p,i.i=Math.min(a.i,i.i),a.merged=!0}function TPt(i,a){var f=HNt(i,function(B){return Ja(B,"barycenter")}),p=f.lhs,w=uP(f.rhs,function(B){return-B.i}),y=[],b=0,E=0,S=0;p.sort(_Pt(!!a)),S=VPe(y,w,S),lr(p,function(B){S+=B.vs.length,y.push(B.vs),b+=B.barycenter*B.weight,E+=B.weight,S=VPe(y,w,S)});var N={vs:ZA(y)};return E&&(N.barycenter=b/E,N.weight=E),N}function VPe(i,a,f){for(var p;a.length&&(p=rK(a)).i<=f;)a.pop(),i.push(p.vs),f++;return f}function _Pt(i){return function(a,f){return a.barycenterf.barycenter?1:i?f.i-a.i:a.i-f.i}}function UPe(i,a,f,p){var w=i.children(a),y=i.node(a),b=y?y.borderLeft:void 0,E=y?y.borderRight:void 0,S={};b&&(w=y5(w,function(V){return V!==b&&V!==E}));var N=yPt(i,w);lr(N,function(V){if(i.children(V.v).length){var Q=UPe(i,V.v,f,p);S[V.v]=Q,Ja(Q,"barycenter")&&SPt(V,Q)}});var B=kPt(N,f);CPt(B,S);var R=TPt(B,p);if(b&&(R.vs=ZA([b,R.vs,E]),i.predecessors(b).length)){var j=i.node(i.predecessors(b)[0]),$=i.node(i.predecessors(E)[0]);Ja(R,"barycenter")||(R.barycenter=0,R.weight=0),R.barycenter=(R.barycenter*R.weight+j.order+$.order)/(R.weight+2),R.weight+=2}return R}function CPt(i,a){lr(i,function(f){f.vs=ZA(f.vs.map(function(p){return a[p]?a[p].vs:p}))})}function SPt(i,a){cf(i.barycenter)?(i.barycenter=a.barycenter,i.weight=a.weight):(i.barycenter=(i.barycenter*i.weight+a.barycenter*a.weight)/(i.weight+a.weight),i.weight+=a.weight)}function APt(i){var a=MPe(i),f=WPe(i,c9(1,a+1),"inEdges"),p=WPe(i,c9(a-1,-1,-1),"outEdges"),w=mPt(i);KPe(i,w);for(var y=Number.POSITIVE_INFINITY,b,E=0,S=0;S<4;++E,++S){LPt(E%2?f:p,E%4>=2),w=aK(i);var N=vPt(i,w);Nb||E>a[S].lim));for(N=S,S=p;(S=i.parent(S))!==N;)y.push(S);return{path:w.concat(y.reverse()),lca:N}}function IPt(i){var a={},f=0;function p(w){var y=f;lr(i.children(w),p),a[w]={low:y,lim:f++}}return lr(i.children(),p),a}function OPt(i,a){var f={};function p(w,y){var b=0,E=0,S=w.length,N=rK(y);return lr(y,function(B,R){var j=PPt(i,B),$=j?i.node(j).order:S;(j||B===N)&&(lr(y.slice(E,R+1),function(V){lr(i.predecessors(V),function(Q){var oe=i.node(Q),ce=oe.order;(ceN)&&YPe(f,j,B)})})}function w(y,b){var E=-1,S,N=0;return lr(b,function(B,R){if(i.node(B).dummy==="border"){var j=i.predecessors(B);j.length&&(S=i.node(j[0]).order,p(b,N,R,E,S),N=R,E=S)}p(b,N,b.length,S,y.length)}),b}return cP(a,w),f}function PPt(i,a){if(i.node(a).dummy)return Yde(i.predecessors(a),function(f){return i.node(f).dummy})}function YPe(i,a,f){if(a>f){var p=a;a=f,f=p}var w=i[a];w||(i[a]=w={}),w[f]=!0}function BPt(i,a,f){if(a>f){var p=a;a=f,f=p}return Ja(i[a],f)}function RPt(i,a,f,p){var w={},y={},b={};return lr(a,function(E){lr(E,function(S,N){w[S]=S,y[S]=S,b[S]=N})}),lr(a,function(E){var S=-1;lr(E,function(N){var B=p(N);if(B.length){B=uP(B,function(Q){return b[Q]});for(var R=(B.length-1)/2,j=Math.floor(R),$=Math.ceil(R);j<=$;++j){var V=B[j];y[N]===N&&S0}function l3(i,a,f){var p=i.x,w=i.y,y=[],b=Number.POSITIVE_INFINITY,E=Number.POSITIVE_INFINITY;a.forEach(function(V){b=Math.min(b,V.x),E=Math.min(E,V.y)});for(var S=p-i.width/2-b,N=w-i.height/2-E,B=0;B1&&y.sort(function(V,Q){var oe=V.x-f.x,ce=V.y-f.y,se=Math.sqrt(oe*oe+ce*ce),ge=Q.x-f.x,ye=Q.y-f.y,ke=Math.sqrt(ge*ge+ye*ye);return seMath.abs(w)*E?(y<0&&(E=-E),S=y===0?0:E*w/y,N=E):(w<0&&(b=-b),S=b,N=w===0?0:b*y/w),{x:f+S,y:p+N}}var w0e={rect:$Bt,ellipse:HBt,circle:zBt,diamond:GBt};function jBt(i){w0e=i}function $Bt(i,a,f){var p=i.insert("rect",":first-child").attr("rx",f.rx).attr("ry",f.ry).attr("x",-a.width/2).attr("y",-a.height/2).attr("width",a.width).attr("height",a.height);return f.intersect=function(w){return v0e(f,w)},p}function HBt(i,a,f){var p=a.width/2,w=a.height/2,y=i.insert("ellipse",":first-child").attr("x",-a.width/2).attr("y",-a.height/2).attr("rx",p).attr("ry",w);return f.intersect=function(b){return tBe(f,p,w,b)},y}function zBt(i,a,f){var p=Math.max(a.width,a.height)/2,w=i.insert("circle",":first-child").attr("x",-a.width/2).attr("y",-a.height/2).attr("r",p);return f.intersect=function(y){return RBt(f,p,y)},w}function GBt(i,a,f){var p=a.width*Math.SQRT2/2,w=a.height*Math.SQRT2/2,y=[{x:0,y:-w},{x:-p,y:0},{x:0,y:w},{x:p,y:0}],b=i.insert("polygon",":first-child").attr("points",y.map(function(E){return E.x+","+E.y}).join(" "));return f.intersect=function(E){return l3(f,y,E)},b}function qBt(){var i=function(a,f){WBt(f);var p=fP(a,"output"),w=fP(p,"clusters"),y=fP(p,"edgePaths"),b=g0e(fP(p,"edgeLabels"),f),E=b0e(fP(p,"nodes"),f,w0e);tL(f),BBt(E,f),PBt(b,f),p0e(y,f,l0e);var S=d0e(w,f);NBt(S,f),KBt(f)};return i.createNodes=function(a){return arguments.length?(OBt(a),i):b0e},i.createClusters=function(a){return arguments.length?(_Bt(a),i):d0e},i.createEdgeLabels=function(a){return arguments.length?(CBt(a),i):g0e},i.createEdgePaths=function(a){return arguments.length?(SBt(a),i):p0e},i.shapes=function(a){return arguments.length?(jBt(a),i):w0e},i.arrows=function(a){return arguments.length?(wBt(a),i):l0e},i}var VBt={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},UBt={arrowhead:"normal",curve:ng};function WBt(i){i.nodes().forEach(function(a){var f=i.node(a);!Ja(f,"label")&&!i.children(a).length&&(f.label=a),Ja(f,"paddingX")&&JA(f,{paddingLeft:f.paddingX,paddingRight:f.paddingX}),Ja(f,"paddingY")&&JA(f,{paddingTop:f.paddingY,paddingBottom:f.paddingY}),Ja(f,"padding")&&JA(f,{paddingLeft:f.padding,paddingRight:f.padding,paddingTop:f.padding,paddingBottom:f.padding}),JA(f,VBt),lr(["paddingLeft","paddingRight","paddingTop","paddingBottom"],function(p){f[p]=Number(f[p])}),Ja(f,"width")&&(f._prevWidth=f.width),Ja(f,"height")&&(f._prevHeight=f.height)}),i.edges().forEach(function(a){var f=i.edge(a);Ja(f,"label")||(f.label=""),JA(f,UBt)})}function KBt(i){lr(i.nodes(),function(a){var f=i.node(a);Ja(f,"_prevWidth")?f.width=f._prevWidth:delete f.width,Ja(f,"_prevHeight")?f.height=f._prevHeight:delete f.height,delete f._prevWidth,delete f._prevHeight})}function fP(i,a){var f=i.select("g."+a);return f.empty()&&(f=i.append("g").attr("class",a)),f}function rBe(i,a,f){const p=a.width,w=a.height,y=(p+w)*.9,b=[{x:y/2,y:0},{x:y,y:-y/2},{x:y/2,y:-y},{x:0,y:-y/2}],E=x5(i,y,y,b);return f.intersect=function(S){return l3(f,b,S)},E}function iBe(i,a,f){const w=a.height,y=w/4,b=a.width+2*y,E=[{x:y,y:0},{x:b-y,y:0},{x:b,y:-w/2},{x:b-y,y:-w},{x:y,y:-w},{x:0,y:-w/2}],S=x5(i,b,w,E);return f.intersect=function(N){return l3(f,E,N)},S}function sBe(i,a,f){const p=a.width,w=a.height,y=[{x:-w/2,y:0},{x:p,y:0},{x:p,y:-w},{x:-w/2,y:-w},{x:0,y:-w/2}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function aBe(i,a,f){const p=a.width,w=a.height,y=[{x:-2*w/6,y:0},{x:p-w/6,y:0},{x:p+2*w/6,y:-w},{x:w/6,y:-w}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function oBe(i,a,f){const p=a.width,w=a.height,y=[{x:2*w/6,y:0},{x:p+w/6,y:0},{x:p-2*w/6,y:-w},{x:-w/6,y:-w}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function cBe(i,a,f){const p=a.width,w=a.height,y=[{x:-2*w/6,y:0},{x:p+2*w/6,y:0},{x:p-w/6,y:-w},{x:w/6,y:-w}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function uBe(i,a,f){const p=a.width,w=a.height,y=[{x:w/6,y:0},{x:p-w/6,y:0},{x:p+2*w/6,y:-w},{x:-2*w/6,y:-w}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function lBe(i,a,f){const p=a.width,w=a.height,y=[{x:0,y:0},{x:p+w/2,y:0},{x:p,y:-w/2},{x:p+w/2,y:-w},{x:0,y:-w}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function hBe(i,a,f){const p=a.height,w=a.width+p/4,y=i.insert("rect",":first-child").attr("rx",p/2).attr("ry",p/2).attr("x",-w/2).attr("y",-p/2).attr("width",w).attr("height",p);return f.intersect=function(b){return v0e(f,b)},y}function fBe(i,a,f){const p=a.width,w=a.height,y=[{x:0,y:0},{x:p,y:0},{x:p,y:-w},{x:0,y:-w},{x:0,y:0},{x:-8,y:0},{x:p+8,y:0},{x:p+8,y:-w},{x:-8,y:-w},{x:-8,y:0}],b=x5(i,p,w,y);return f.intersect=function(E){return l3(f,y,E)},b}function dBe(i,a,f){const p=a.width,w=p/2,y=w/(2.5+p/50),b=a.height+y,E="M 0,"+y+" a "+w+","+y+" 0,0,0 "+p+" 0 a "+w+","+y+" 0,0,0 "+-p+" 0 l 0,"+b+" a "+w+","+y+" 0,0,0 "+p+" 0 l 0,"+-b,S=i.attr("label-offset-y",y).insert("path",":first-child").attr("d",E).attr("transform","translate("+-p/2+","+-(b/2+y)+")");return f.intersect=function(N){const B=v0e(f,N),R=B.x-f.x;if(w!=0&&(Math.abs(R)f.height/2-y)){let j=y*y*(1-R*R/(w*w));j!=0&&(j=Math.sqrt(j)),j=y-j,N.y-f.y>0&&(j=-j),B.y+=j}return B},S}function YBt(i){i.shapes().question=rBe,i.shapes().hexagon=iBe,i.shapes().stadium=hBe,i.shapes().subroutine=fBe,i.shapes().cylinder=dBe,i.shapes().rect_left_inv_arrow=sBe,i.shapes().lean_right=aBe,i.shapes().lean_left=oBe,i.shapes().trapezoid=cBe,i.shapes().inv_trapezoid=uBe,i.shapes().rect_right_inv_arrow=lBe}function XBt(i){i({question:rBe}),i({hexagon:iBe}),i({stadium:hBe}),i({subroutine:fBe}),i({cylinder:dBe}),i({rect_left_inv_arrow:sBe}),i({lean_right:aBe}),i({lean_left:oBe}),i({trapezoid:cBe}),i({inv_trapezoid:uBe}),i({rect_right_inv_arrow:lBe})}function x5(i,a,f,p){return i.insert("polygon",":first-child").attr("points",p.map(function(w){return w.x+","+w.y}).join(" ")).attr("transform","translate("+-a/2+","+f/2+")")}const QBt={addToRender:YBt,addToRenderV2:XBt},gBe={},ZBt=function(i){const a=Object.keys(i);for(const f of a)gBe[f]=i[f]},pBe=function(i,a,f,p,w,y){const b=p?p.select(`[id="${f}"]`):Cr(`[id="${f}"]`),E=w||document;Object.keys(i).forEach(function(N){const B=i[N];let R="default";B.classes.length>0&&(R=B.classes.join(" "));const j=Yw(B.styles);let $=B.text!==void 0?B.text:B.id,V;if(d1(Tt().flowchart.htmlLabels)){const ce={label:$.replace(/fa[blrs]?:fa-[\w-]+/g,se=>``)};V=h0e(b,ce).node(),V.parentNode.removeChild(V)}else{const ce=E.createElementNS("http://www.w3.org/2000/svg","text");ce.setAttribute("style",j.labelStyle.replace("color:","fill:"));const se=$.split(Wa.lineBreakRegex);for(const ge of se){const ye=E.createElementNS("http://www.w3.org/2000/svg","tspan");ye.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),ye.setAttribute("dy","1em"),ye.setAttribute("x","1"),ye.textContent=ge,ce.appendChild(ye)}V=ce}let Q=0,oe="";switch(B.type){case"round":Q=5,oe="rect";break;case"square":oe="rect";break;case"diamond":oe="question";break;case"hexagon":oe="hexagon";break;case"odd":oe="rect_left_inv_arrow";break;case"lean_right":oe="lean_right";break;case"lean_left":oe="lean_left";break;case"trapezoid":oe="trapezoid";break;case"inv_trapezoid":oe="inv_trapezoid";break;case"odd_right":oe="rect_left_inv_arrow";break;case"circle":oe="circle";break;case"ellipse":oe="ellipse";break;case"stadium":oe="stadium";break;case"subroutine":oe="subroutine";break;case"cylinder":oe="cylinder";break;case"group":oe="rect";break;default:oe="rect"}Fe.warn("Adding node",B.id,B.domId),a.setNode(y.db.lookUpDomId(B.id),{labelType:"svg",labelStyle:j.labelStyle,shape:oe,label:V,rx:Q,ry:Q,class:R,style:j.style,id:y.db.lookUpDomId(B.id)})})},bBe=function(i,a,f){let p=0,w,y;if(i.defaultStyle!==void 0){const b=Yw(i.defaultStyle);w=b.style,y=b.labelStyle}i.forEach(function(b){p++;var E="L-"+b.start+"-"+b.end,S="LS-"+b.start,N="LE-"+b.end;const B={};b.type==="arrow_open"?B.arrowhead="none":B.arrowhead="normal";let R="",j="";if(b.style!==void 0){const $=Yw(b.style);R=$.style,j=$.labelStyle}else switch(b.stroke){case"normal":R="fill:none",w!==void 0&&(R=w),y!==void 0&&(j=y);break;case"dotted":R="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":R=" stroke-width: 3.5px;fill:none";break}B.style=R,B.labelStyle=j,b.interpolate!==void 0?B.curve=Ub(b.interpolate,ng):i.defaultInterpolate!==void 0?B.curve=Ub(i.defaultInterpolate,ng):B.curve=Ub(gBe.curve,ng),b.text===void 0?b.style!==void 0&&(B.arrowheadStyle="fill: #333"):(B.arrowheadStyle="fill: #333",B.labelpos="c",d1(Tt().flowchart.htmlLabels)?(B.labelType="html",B.label=`${b.text.replace(/fa[blrs]?:fa-[\w-]+/g,$=>``)}`):(B.labelType="text",B.label=b.text.replace(Wa.lineBreakRegex,` +`),b.style===void 0&&(B.style=B.style||"stroke: #333; stroke-width: 1.5px;fill:none"),B.labelStyle=B.labelStyle.replace("color:","fill:"))),B.id=E,B.class=S+" "+N,B.minlen=b.length||1,a.setEdge(f.db.lookUpDomId(b.start),f.db.lookUpDomId(b.end),B,p)})},JBt={setConf:ZBt,addVertices:pBe,addEdges:bBe,getClasses:function(i,a){Fe.info("Extracting classes"),a.db.clear();try{return a.parse(i),a.db.getClasses()}catch(f){return Fe.error(f),{}}},draw:function(i,a,f,p){Fe.info("Drawing flowchart"),p.db.clear();const{securityLevel:w,flowchart:y}=Tt();let b;w==="sandbox"&&(b=Cr("#i"+a));const E=Cr(w==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=w==="sandbox"?b.nodes()[0].contentDocument:document;try{p.parser.parse(i)}catch{Fe.debug("Parsing failed")}let N=p.db.getDirection();N===void 0&&(N="TD");const B=y.nodeSpacing||50,R=y.rankSpacing||50,j=new zf({multigraph:!0,compound:!0}).setGraph({rankdir:N,nodesep:B,ranksep:R,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});let $;const V=p.db.getSubGraphs();for(let Ae=V.length-1;Ae>=0;Ae--)$=V[Ae],p.db.addVertex($.id,$.title,"group",void 0,$.classes);const Q=p.db.getVertices();Fe.warn("Get vertices",Q);const oe=p.db.getEdges();let ce=0;for(ce=V.length-1;ce>=0;ce--){$=V[ce],Jfe("cluster").append("text");for(let Ae=0;Ae<$.nodes.length;Ae++)Fe.warn("Setting subgraph",$.nodes[Ae],p.db.lookUpDomId($.nodes[Ae]),p.db.lookUpDomId($.id)),j.setParent(p.db.lookUpDomId($.nodes[Ae]),p.db.lookUpDomId($.id))}pBe(Q,j,a,E,S,p),bBe(oe,j,p);const se=new qBt;QBt.addToRender(se),se.arrows().none=function(de,ve,te,xe){const he=de.append("marker").attr("id",ve).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 0 0 L 0 0 z");u3(he,te[xe+"Style"])},se.arrows().normal=function(de,ve){de.append("marker").attr("id",ve).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowheadPath").style("stroke-width",1).style("stroke-dasharray","1,0")};const ge=E.select(`[id="${a}"]`),ye=E.select("#"+a+" g");for(se(ye,j),ye.selectAll("g.node").attr("title",function(){return p.db.getTooltip(this.id)}),p.db.indexNodes("subGraph"+ce),ce=0;ce{a.forEach(w=>{rRt[w](i,f,p)})},rRt={extension:(i,a,f)=>{Fe.trace("Making markers for ",f),i.append("defs").append("marker").attr("id",a+"-extensionStart").attr("class","marker extension "+a).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id",a+"-extensionEnd").attr("class","marker extension "+a).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},composition:(i,a)=>{i.append("defs").append("marker").attr("id",a+"-compositionStart").attr("class","marker composition "+a).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",a+"-compositionEnd").attr("class","marker composition "+a).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},aggregation:(i,a)=>{i.append("defs").append("marker").attr("id",a+"-aggregationStart").attr("class","marker aggregation "+a).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",a+"-aggregationEnd").attr("class","marker aggregation "+a).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},dependency:(i,a)=>{i.append("defs").append("marker").attr("id",a+"-dependencyStart").attr("class","marker dependency "+a).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",a+"-dependencyEnd").attr("class","marker dependency "+a).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},lollipop:(i,a)=>{i.append("defs").append("marker").attr("id",a+"-lollipopStart").attr("class","marker lollipop "+a).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","white").attr("cx",6).attr("cy",7).attr("r",6)},point:(i,a)=>{i.append("marker").attr("id",a+"-pointEnd").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",10).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),i.append("marker").attr("id",a+"-pointStart").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},circle:(i,a)=>{i.append("marker").attr("id",a+"-circleEnd").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),i.append("marker").attr("id",a+"-circleStart").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},cross:(i,a)=>{i.append("marker").attr("id",a+"-crossEnd").attr("class","marker cross "+a).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),i.append("marker").attr("id",a+"-crossStart").attr("class","marker cross "+a).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},barb:(i,a)=>{i.append("defs").append("marker").attr("id",a+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}},vBe=nRt;function iRt(i,a){a&&i.attr("style",a)}function sRt(i){const a=Cr(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),f=a.append("xhtml:div"),p=i.label,w=i.isNode?"nodeLabel":"edgeLabel";return f.html('"+p+""),iRt(f,i.labelStyle),f.style("display","inline-block"),f.style("white-space","nowrap"),f.attr("xmlns","http://www.w3.org/1999/xhtml"),a.node()}const sp=(i,a,f,p)=>{let w=i||"";if(typeof w=="object"&&(w=w[0]),d1(Tt().flowchart.htmlLabels)){w=w.replace(/\\n|\n/g,"
"),Fe.info("vertexText"+w);const y={isNode:p,label:XN(w).replace(/fa[blrs]?:fa-[\w-]+/g,E=>``),labelStyle:a.replace("fill:","color:")};return sRt(y)}else{const y=document.createElementNS("http://www.w3.org/2000/svg","text");y.setAttribute("style",a.replace("color:","fill:"));let b=[];typeof w=="string"?b=w.split(/\\n|\n|/gi):Array.isArray(w)?b=w:b=[];for(const E of b){const S=document.createElementNS("http://www.w3.org/2000/svg","tspan");S.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),S.setAttribute("dy","1em"),S.setAttribute("x","0"),f?S.setAttribute("class","title-row"):S.setAttribute("class","row"),S.textContent=E.trim(),y.appendChild(S)}return y}};var aRt=/\r\n?/g,oRt=/\t/g,cRt=/\f/g,wBe=function(a){return a.replace(aRt,` +`).replace(cRt,"").replace(oRt," ")},mBe=function(a,f){var p=a||{};if(f!=null)for(var w in f)Object.prototype.hasOwnProperty.call(f,w)&&(p[w]=f[w]);return p},yBe=function(a,f){var p=Object.keys(a).filter(function(E){var S=a[E];if(S==null||S.match==null)return!1;var N=S.order;return(typeof N!="number"||!isFinite(N))&&typeof console<"u"&&console.warn("simple-markdown: Invalid order for rule `"+E+"`: "+String(N)),!0});p.sort(function(E,S){var N=a[E],B=a[S],R=N.order,j=B.order;if(R!==j)return R-j;var $=N.quality?0:1,V=B.quality?0:1;return $!==V?$-V:ES?1:0});var w,y=function E(S,N){var B=[];for(N=N||w,w=N;S;){var R=null,j=null,$=null,V=NaN,Q=0,oe=p[0],ce=a[oe];do{var se=ce.order,ge=N.prevCapture==null?"":N.prevCapture[0],ye=ce.match(S,N,ge);if(ye){var ke=ce.quality?ce.quality(ye,N,ge):0;ke<=V||(R=oe,j=ce,$=ye,V=ke)}Q++,oe=p[Q],ce=a[oe]}while(ce&&(!$||ce.order===se&&ce.quality));if(j==null||$==null)throw new Error("Could not find a matching rule for the below content. The rule with highest `order` should always match content provided to it. Check the definition of `match` for '"+p[p.length-1]+`'. It seems to not match the following source: +`+S);if($.index)throw new Error("`match` must return a capture starting at index 0 (the current parse index). Did you forget a ^ at the start of the RegExp?");var Ae=j.parse($,E,N);if(Array.isArray(Ae))Array.prototype.push.apply(B,Ae);else{if(Ae==null||typeof Ae!="object")throw new Error(`parse() function returned invalid parse result: '${Ae}'`);Ae.type==null&&(Ae.type=R),B.push(Ae)}N.prevCapture=$,S=S.substring(N.prevCapture[0].length)}return B},b=function(S,N){return w=mBe(N,f),!w.inline&&!w.disableAutoBlockNewlines&&(S=S+` + +`),w.prevCapture=null,y(wBe(S),w)};return b},ap=function(a){var f=function(w,y,b){return y.inline?a.exec(w):null};return f.regex=a,f},Xb=function(a){var f=function(w,y){return y.inline?null:a.exec(w)};return f.regex=a,f},m0e=function(a){var f=function(w,y){return a.exec(w)};return f.regex=a,f},uRt=typeof Symbol=="function"&&Symbol.for&&Symbol.for("react.element")||60103,Cl=function(a,f,p){var w={$$typeof:uRt,type:a,key:f??void 0,ref:null,props:p,_owner:null};return w},Ah=function(a,f,p,w){p=p||{},w=typeof w<"u"?w:!0;var y="";for(var b in p){var E=p[b];Object.prototype.hasOwnProperty.call(p,b)&&E&&(y+=" "+nL(b)+'="'+nL(E)+'"')}var S="<"+a+y+">";return w?S+f+"":S},kBe={},dP=function(a){if(a==null)return null;try{var f=new URL(a,"https://localhost").protocol;if(f.indexOf("javascript:")===0||f.indexOf("vbscript:")===0||f.indexOf("data:")===0)return null}catch{return null}return a},lRt=/[<>&"']/g,hRt={"<":"<",">":">","&":"&",'"':""","'":"'","/":"/","`":"`"},nL=function(a){return String(a).replace(lRt,function(f){return hRt[f]})},fRt=/\\([^0-9A-Za-z\s])/g,y0e=function(a){return a.replace(fRt,"$1")},oK=function(a,f,p){var w=p.inline||!1;p.inline=!0;var y=a(f,p);return p.inline=w,y},dRt=function(a,f,p){var w=p.inline||!1;p.inline=!1;var y=a(f+` + +`,p);return p.inline=w,y},cK=function(a,f,p){return{content:oK(f,a[1],p)}},k0e=function(){return{}},uK="(?:[*+-]|\\d+\\.)",xBe="( *)("+uK+") +",EBe=new RegExp("^"+xBe),gRt=new RegExp(xBe+"[^\\n]*(?:\\n(?!\\1"+uK+` )[^\\n]*)*( +|$)`,"gm"),TBe=/\n{2,}$/,pRt=/^ (?= *`)|(` *) $/g,bRt=TBe,_Be=/ *\n+$/,vRt=new RegExp("^( *)("+uK+`) [\\s\\S]+?(?: +{2,}(?! )(?!\\1`+uK+` )\\n*|\\s* +*$)`),wRt=/(?:^|\n)( *)$/,lK=function(){var i=/^ *\| *| *\| *$/g,a=/ *$/,f=/^ *-+: *$/,p=/^ *:-+: *$/,w=/^ *:-+ *$/,y=function(R){return f.test(R)?"right":p.test(R)?"center":w.test(R)?"left":null},b=function(R,j,$,V){V&&(R=R.replace(i,""));var Q=R.trim().split("|");return Q.map(y)},E=function(R,j,$,V){var Q=$.inTable;$.inTable=!0;var oe=j(R.trim(),$);$.inTable=Q;var ce=[[]];return oe.forEach(function(se,ge){se.type==="tableSeparator"?(!V||ge!==0&&ge!==oe.length-1)&&ce.push([]):(se.type==="text"&&(oe[ge+1]==null||oe[ge+1].type==="tableSeparator")&&(se.content=se.content.replace(a,"")),ce[ce.length-1].push(se))}),ce},S=function(R,j,$,V){var Q=R.trim().split(` +`);return Q.map(function(oe){return E(oe,j,$,V)})},N=function(R){return function(j,$,V){V.inline=!0;var Q=E(j[1],$,V,R),oe=b(j[2],$,V,R),ce=S(j[3],$,V,R);return V.inline=!1,{type:"table",header:Q,align:oe,cells:ce}}};return{parseTable:N(!0),parseNpTable:N(!1),TABLE_REGEX:/^ *(\|.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/,NPTABLE_REGEX:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/}}(),hK="(?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*",CBe=`\\s*?(?:\\s+['"]([\\s\\S]*?)['"])?\\s*`,mRt=/mailto:/i,SBe=function(a,f,p){var w=(a[2]||a[1]).replace(/\s+/g," ").toLowerCase();if(f._defs&&f._defs[w]){var y=f._defs[w];p.target=y.target,p.title=y.title}return f._refs=f._refs||{},f._refs[w]=f._refs[w]||[],f._refs[w].push(p),p},$u=0,gP={Array:{react:function(i,a,f){for(var p=f.key,w=[],y=0,b=0;y"}},codeBlock:{order:$u++,match:Xb(/^(?: [^\n]+\n*)+(?:\n *)+\n/),parse:function(i,a,f){var p=i[0].replace(/^ /gm,"").replace(/\n+$/,"");return{lang:void 0,content:p}},react:function(i,a,f){var p=i.lang?"markdown-code-"+i.lang:void 0;return Cl("pre",f.key,{children:Cl("code",null,{className:p,children:i.content})})},html:function(i,a,f){var p=i.lang?"markdown-code-"+i.lang:void 0,w=Ah("code",nL(i.content),{class:p});return Ah("pre",w)}},fence:{order:$u++,match:Xb(/^ *(`{3,}|~{3,}) *(?:(\S+) *)?\n([\s\S]+?)\n?\1 *(?:\n *)+\n/),parse:function(i,a,f){return{type:"codeBlock",lang:i[2]||void 0,content:i[3]}},react:null,html:null},blockQuote:{order:$u++,match:Xb(/^( *>[^\n]+(\n[^\n]+)*\n*)+\n{2,}/),parse:function(i,a,f){var p=i[0].replace(/^ *> ?/gm,"");return{content:a(p,f)}},react:function(i,a,f){return Cl("blockquote",f.key,{children:a(i.content,f)})},html:function(i,a,f){return Ah("blockquote",a(i.content,f))}},list:{order:$u++,match:function(i,a){var f=a.prevCapture==null?"":a.prevCapture[0],p=wRt.exec(f),w=a._list||!a.inline;return p&&w?(i=p[1]+i,vRt.exec(i)):null},parse:function(i,a,f){var p=i[2],w=p.length>1,y=w?+p:void 0,b=i[0].replace(bRt,` +`).match(gRt),E=!1,S=b.map(function(N,B){var R=EBe.exec(N),j=R?R[0].length:0,$=new RegExp("^ {1,"+j+"}","gm"),V=N.replace($,"").replace(EBe,""),Q=B===b.length-1,oe=V.indexOf(` + +`)!==-1,ce=oe||Q&&E;E=ce;var se=f.inline,ge=f._list;f._list=!0;var ye;ce?(f.inline=!1,ye=V.replace(_Be,` + +`)):(f.inline=!0,ye=V.replace(_Be,""));var ke=a(ye,f);return f.inline=se,f._list=ge,ke});return{ordered:w,start:y,items:S}},react:function(i,a,f){var p=i.ordered?"ol":"ul";return Cl(p,f.key,{start:i.start,children:i.items.map(function(w,y){return Cl("li",""+y,{children:a(w,f)})})})},html:function(i,a,f){var p=i.items.map(function(b){return Ah("li",a(b,f))}).join(""),w=i.ordered?"ol":"ul",y={start:i.start};return Ah(w,p,y)}},def:{order:$u++,match:Xb(/^ *\[([^\]]+)\]: *]*)>?(?: +["(]([^\n]+)[")])? *\n(?: *\n)*/),parse:function(i,a,f){var p=i[1].replace(/\s+/g," ").toLowerCase(),w=i[2],y=i[3];return f._refs&&f._refs[p]&&f._refs[p].forEach(function(b){b.target=w,b.title=y}),f._defs=f._defs||{},f._defs[p]={target:w,title:y},{def:p,target:w,title:y}},react:function(){return null},html:function(){return""}},table:{order:$u++,match:Xb(lK.TABLE_REGEX),parse:lK.parseTable,react:function(i,a,f){var p=function(E){return i.align[E]==null?{}:{textAlign:i.align[E]}},w=i.header.map(function(b,E){return Cl("th",""+E,{style:p(E),scope:"col",children:a(b,f)})}),y=i.cells.map(function(b,E){return Cl("tr",""+E,{children:b.map(function(S,N){return Cl("td",""+N,{style:p(N),children:a(S,f)})})})});return Cl("table",f.key,{children:[Cl("thead","thead",{children:Cl("tr",null,{children:w})}),Cl("tbody","tbody",{children:y})]})},html:function(i,a,f){var p=function(N){return i.align[N]==null?"":"text-align:"+i.align[N]+";"},w=i.header.map(function(S,N){return Ah("th",a(S,f),{style:p(N),scope:"col"})}).join(""),y=i.cells.map(function(S){var N=S.map(function(B,R){return Ah("td",a(B,f),{style:p(R)})}).join("");return Ah("tr",N)}).join(""),b=Ah("thead",Ah("tr",w)),E=Ah("tbody",y);return Ah("table",b+E)}},newline:{order:$u++,match:Xb(/^(?:\n *)*\n/),parse:k0e,react:function(i,a,f){return` +`},html:function(i,a,f){return` +`}},paragraph:{order:$u++,match:Xb(/^((?:[^\n]|\n(?! *\n))+)(?:\n *)+\n/),parse:cK,react:function(i,a,f){return Cl("div",f.key,{className:"paragraph",children:a(i.content,f)})},html:function(i,a,f){var p={class:"paragraph"};return Ah("div",a(i.content,f),p)}},escape:{order:$u++,match:ap(/^\\([^0-9A-Za-z\s])/),parse:function(i,a,f){return{type:"text",content:i[1]}},react:null,html:null},tableSeparator:{order:$u++,match:function(i,a){return a.inTable?/^ *\| */.exec(i):null},parse:function(){return{type:"tableSeparator"}},react:function(){return" | "},html:function(){return" | "}},autolink:{order:$u++,match:ap(/^<([^: >]+:\/[^ >]+)>/),parse:function(i,a,f){return{type:"link",content:[{type:"text",content:i[1]}],target:i[1]}},react:null,html:null},mailto:{order:$u++,match:ap(/^<([^ >]+@[^ >]+)>/),parse:function(i,a,f){var p=i[1],w=i[1];return mRt.test(w)||(w="mailto:"+w),{type:"link",content:[{type:"text",content:p}],target:w}},react:null,html:null},url:{order:$u++,match:ap(/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/),parse:function(i,a,f){return{type:"link",content:[{type:"text",content:i[1]}],target:i[1],title:void 0}},react:null,html:null},link:{order:$u++,match:ap(new RegExp("^\\[("+hK+")\\]\\("+CBe+"\\)")),parse:function(i,a,f){var p={content:a(i[1],f),target:y0e(i[2]),title:i[3]};return p},react:function(i,a,f){return Cl("a",f.key,{href:dP(i.target),title:i.title,children:a(i.content,f)})},html:function(i,a,f){var p={href:dP(i.target),title:i.title};return Ah("a",a(i.content,f),p)}},image:{order:$u++,match:ap(new RegExp("^!\\[("+hK+")\\]\\("+CBe+"\\)")),parse:function(i,a,f){var p={alt:i[1],target:y0e(i[2]),title:i[3]};return p},react:function(i,a,f){return Cl("img",f.key,{src:dP(i.target),alt:i.alt,title:i.title})},html:function(i,a,f){var p={src:dP(i.target),alt:i.alt,title:i.title};return Ah("img","",p,!1)}},reflink:{order:$u++,match:ap(new RegExp("^\\[("+hK+")\\]\\s*\\[([^\\]]*)\\]")),parse:function(i,a,f){return SBe(i,f,{type:"link",content:a(i[1],f)})},react:null,html:null},refimage:{order:$u++,match:ap(new RegExp("^!\\[("+hK+")\\]\\s*\\[([^\\]]*)\\]")),parse:function(i,a,f){return SBe(i,f,{type:"image",alt:i[1]})},react:null,html:null},em:{order:$u,match:ap(new RegExp("^\\b_((?:__|\\\\[\\s\\S]|[^\\\\_])+?)_\\b|^\\*(?=\\S)((?:\\*\\*|\\\\[\\s\\S]|\\s+(?:\\\\[\\s\\S]|[^\\s\\*\\\\]|\\*\\*)|[^\\s\\*\\\\])+?)\\*(?!\\*)")),quality:function(i){return i[0].length+.2},parse:function(i,a,f){return{content:a(i[2]||i[1],f)}},react:function(i,a,f){return Cl("em",f.key,{children:a(i.content,f)})},html:function(i,a,f){return Ah("em",a(i.content,f))}},strong:{order:$u,match:ap(/^\*\*((?:\\[\s\S]|[^\\])+?)\*\*(?!\*)/),quality:function(i){return i[0].length+.1},parse:cK,react:function(i,a,f){return Cl("strong",f.key,{children:a(i.content,f)})},html:function(i,a,f){return Ah("strong",a(i.content,f))}},u:{order:$u++,match:ap(/^__((?:\\[\s\S]|[^\\])+?)__(?!_)/),quality:function(i){return i[0].length},parse:cK,react:function(i,a,f){return Cl("u",f.key,{children:a(i.content,f)})},html:function(i,a,f){return Ah("u",a(i.content,f))}},del:{order:$u++,match:ap(/^~~(?=\S)((?:\\[\s\S]|~(?!~)|[^\s~\\]|\s(?!~~))+?)~~/),parse:cK,react:function(i,a,f){return Cl("del",f.key,{children:a(i.content,f)})},html:function(i,a,f){return Ah("del",a(i.content,f))}},inlineCode:{order:$u++,match:ap(/^(`+)([\s\S]*?[^`])\1(?!`)/),parse:function(i,a,f){return{content:i[2].replace(pRt,"$1")}},react:function(i,a,f){return Cl("code",f.key,{children:i.content})},html:function(i,a,f){return Ah("code",nL(i.content))}},br:{order:$u++,match:m0e(/^ {2,}\n/),parse:k0e,react:function(i,a,f){return Cl("br",f.key,kBe)},html:function(i,a,f){return"
"}},text:{order:$u++,match:m0e(/^[\s\S]+?(?=[^0-9A-Za-z\s\u00c0-\uffff]|\n\n| {2,}\n|\w+:\S|$)/),parse:function(i,a,f){return{content:i[0]}},react:function(i,a,f){return i.content},html:function(i,a,f){return nL(i.content)}}},yRt=function(a,f){!f&&typeof console<"u"&&console.warn("simple-markdown ruleOutput should take 'react' or 'html' as the second argument.");var p=function(y,b,E){return a[y.type][f](y,b,E)};return p},kRt=function(a){var f=function p(w,y){if(y=y||{},Array.isArray(w)){for(var b=y.key,E=[],S=null,N=0;N{R!==0&&(y++,w.push([])),B.split(" ").forEach(j=>{j&&w[y].push({content:j,type:S||"normal"})})}):(E.type==="strong"||E.type==="em")&&E.content.forEach(N=>{b(N,E.type)})}return p.forEach(E=>{E.type==="paragraph"&&E.content.forEach(S=>{b(S)})}),w}function ARt(i){const a=DBe.defaultBlockParse,f=a(i);function p(w){return w.type==="text"?w.content.replace(/\n/g,"
"):w.type==="strong"?`${w.content.map(p).join("")}`:w.type==="em"?`${w.content.map(p).join("")}`:w.type==="paragraph"?`

${w.content.map(p).join("")}

`:""}return f.map(p).join("")}function LRt(i,a){a&&i.attr("style",a)}function MRt(i,a,f,p){const w=i.append("foreignObject"),y=w.append("xhtml:div"),b=a.label,E=a.isNode?"nodeLabel":"edgeLabel";y.html(`"+b+""),LRt(y,a.labelStyle),y.style("display","table-cell"),y.style("white-space","nowrap"),y.style("max-width",f+"px"),y.attr("xmlns","http://www.w3.org/1999/xhtml");let S=y.node().getBoundingClientRect();return S.width===f&&(y.style("display","table"),y.style("white-space","break-spaces"),y.style("width",f+"px"),S=y.node().getBoundingClientRect()),w.style("width",S.width),w.style("height",S.height),w.node()}function IBe(i,a,f){return i.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",a*f-.1+"em").attr("dy",f+"em")}function DRt(i,a,f,p=!1){const y=a.append("g");let b=y.insert("rect").attr("class","background");const E=y.append("text").attr("y","-10.1");let S=-1;if(f.forEach(N=>{S++;let B=IBe(E,S,1.1),R=[...N].reverse(),j,$=[];for(;R.length;)j=R.pop(),$.push(j),OBe(B,$),B.node().getComputedTextLength()>i&&($.pop(),R.push(j),OBe(B,$),$=[],S++,B=IBe(E,S,1.1))}),p){const N=E.node().getBBox(),B=2;return b.attr("x",-B).attr("y",-B).attr("width",N.width+2*B).attr("height",N.height+2*B),y.node()}else return E.node()}function OBe(i,a){i.text(""),a.forEach((f,p)=>{const w=i.append("tspan").attr("font-style",f.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",f.type==="strong"?"bold":"normal");p===0?w.text(f.content):w.text(" "+f.content)})}const dK=(i,a="",{style:f="",isTitle:p=!1,classes:w="",useHtmlLabels:y=!0,isNode:b=!0,width:E,addSvgBackground:S=!1}={})=>{if(Fe.info("createText",a,f,p,w,y,b,S),y){const N=ARt(a),B={isNode:b,label:XN(N).replace(/fa[blrs]?:fa-[\w-]+/g,j=>``),labelStyle:f.replace("fill:","color:")};return MRt(i,B,E,w)}else{const N=SRt(a),B=['"',"'",".",",",":",";","!","?","(",")","[","]","{","}"];let R;return N.forEach($=>{$.forEach(V=>{B.includes(V.content)&&R&&(R.content+=V.content,V.content=""),R=V})}),DRt(E,i,N,S)}},jd=async(i,a,f,p)=>{let w;const y=a.useHtmlLabels||d1(Tt().flowchart.htmlLabels);f?w=f:w="node default";const b=i.insert("g").attr("class",w).attr("id",a.domId||a.id),E=b.insert("g").attr("class","label").attr("style",a.labelStyle);let S;a.labelText===void 0?S="":S=typeof a.labelText=="string"?a.labelText:a.labelText[0];const N=E.node();let B;a.labelType==="markdown"?B=dK(E,ep(XN(S),Tt()),{useHtmlLabels:y,width:a.width||Tt().flowchart.wrappingWidth,classes:"markdown-node-label"}):B=N.appendChild(sp(ep(XN(S),Tt()),a.labelStyle,!1,p));let R=B.getBBox();const j=a.padding/2;if(d1(Tt().flowchart.htmlLabels)){const $=B.children[0],V=Cr(B),Q=$.getElementsByTagName("img");if(Q){const oe=S.replace(/]*>/g,"").trim()==="";await Promise.all([...Q].map(ce=>new Promise(se=>ce.addEventListener("load",function(){if(ce.style.display="flex",ce.style.flexDirection="column",oe){const ge=Tt().fontSize?Tt().fontSize:window.getComputedStyle(document.body).fontSize,ye=5;ce.style.width=parseInt(ge,10)*ye+"px"}else ce.style.width="100%";se(ce)}))))}R=$.getBoundingClientRect(),V.attr("width",R.width),V.attr("height",R.height)}return y?E.attr("transform","translate("+-R.width/2+", "+-R.height/2+")"):E.attr("transform","translate(0, "+-R.height/2+")"),a.centerLabel&&E.attr("transform","translate("+-R.width/2+", "+-R.height/2+")"),E.insert("rect",":first-child"),{shapeSvg:b,bbox:R,halfPadding:j,label:E}},uf=(i,a)=>{const f=a.node().getBBox();i.width=f.width,i.height=f.height};function T5(i,a,f,p){return i.insert("polygon",":first-child").attr("points",p.map(function(w){return w.x+","+w.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-a/2+","+f/2+")")}let ec={},nm={},NBe={};const IRt=()=>{nm={},NBe={},ec={}},gK=(i,a)=>(Fe.trace("In isDecendant",a," ",i," = ",nm[a].includes(i)),!!nm[a].includes(i)),ORt=(i,a)=>(Fe.info("Decendants of ",a," is ",nm[a]),Fe.info("Edge is ",i),i.v===a||i.w===a?!1:nm[a]?nm[a].includes(i.v)||gK(i.v,a)||gK(i.w,a)||nm[a].includes(i.w):(Fe.debug("Tilt, ",a,",not in decendants"),!1)),PBe=(i,a,f,p)=>{Fe.warn("Copying children of ",i,"root",p,"data",a.node(i),p);const w=a.children(i)||[];i!==p&&w.push(i),Fe.warn("Copying (nodes) clusterId",i,"nodes",w),w.forEach(y=>{if(a.children(y).length>0)PBe(y,a,f,p);else{const b=a.node(y);Fe.info("cp ",y," to ",p," with parent ",i),f.setNode(y,b),p!==a.parent(y)&&(Fe.warn("Setting parent",y,a.parent(y)),f.setParent(y,a.parent(y))),i!==p&&y!==i?(Fe.debug("Setting parent",y,i),f.setParent(y,i)):(Fe.info("In copy ",i,"root",p,"data",a.node(i),p),Fe.debug("Not Setting parent for node=",y,"cluster!==rootId",i!==p,"node!==clusterId",y!==i));const E=a.edges(y);Fe.debug("Copying Edges",E),E.forEach(S=>{Fe.info("Edge",S);const N=a.edge(S.v,S.w,S.name);Fe.info("Edge data",N,p);try{ORt(S,p)?(Fe.info("Copying as ",S.v,S.w,N,S.name),f.setEdge(S.v,S.w,N,S.name),Fe.info("newGraph edges ",f.edges(),f.edge(f.edges()[0]))):Fe.info("Skipping copy of edge ",S.v,"-->",S.w," rootId: ",p," clusterId:",i)}catch(B){Fe.error(B)}})}Fe.debug("Removing node",y),a.removeNode(y)})},BBe=(i,a)=>{const f=a.children(i);let p=[...f];for(const w of f)NBe[w]=i,p=[...p,...BBe(w,a)];return p},pP=(i,a)=>{Fe.trace("Searching",i);const f=a.children(i);if(Fe.trace("Searching children of id ",i,f),f.length<1)return Fe.trace("This is a valid node",i),i;for(const p of f){const w=pP(p,a);if(w)return Fe.trace("Found replacement for",i," => ",w),w}},pK=i=>!ec[i]||!ec[i].externalConnections?i:ec[i]?ec[i].id:i,NRt=(i,a)=>{if(!i||a>10){Fe.debug("Opting out, no graph ");return}else Fe.debug("Opting in, graph ");i.nodes().forEach(function(f){i.children(f).length>0&&(Fe.warn("Cluster identified",f," Replacement id in edges: ",pP(f,i)),nm[f]=BBe(f,i),ec[f]={id:pP(f,i),clusterData:i.node(f)})}),i.nodes().forEach(function(f){const p=i.children(f),w=i.edges();p.length>0?(Fe.debug("Cluster identified",f,nm),w.forEach(y=>{if(y.v!==f&&y.w!==f){const b=gK(y.v,f),E=gK(y.w,f);b^E&&(Fe.warn("Edge: ",y," leaves cluster ",f),Fe.warn("Decendants of XXX ",f,": ",nm[f]),ec[f].externalConnections=!0)}})):Fe.debug("Not a cluster ",f,nm)}),i.edges().forEach(function(f){const p=i.edge(f);Fe.warn("Edge "+f.v+" -> "+f.w+": "+JSON.stringify(f)),Fe.warn("Edge "+f.v+" -> "+f.w+": "+JSON.stringify(i.edge(f)));let w=f.v,y=f.w;if(Fe.warn("Fix XXX",ec,"ids:",f.v,f.w,"Translating: ",ec[f.v]," --- ",ec[f.w]),ec[f.v]&&ec[f.w]&&ec[f.v]===ec[f.w]){Fe.warn("Fixing and trixing link to self - removing XXX",f.v,f.w,f.name),Fe.warn("Fixing and trixing - removing XXX",f.v,f.w,f.name),w=pK(f.v),y=pK(f.w),i.removeEdge(f.v,f.w,f.name);const b=f.w+"---"+f.v;i.setNode(b,{domId:b,id:b,labelStyle:"",labelText:p.label,padding:0,shape:"labelRect",style:""});const E=JSON.parse(JSON.stringify(p)),S=JSON.parse(JSON.stringify(p));E.label="",E.arrowTypeEnd="none",S.label="",E.fromCluster=f.v,S.toCluster=f.v,i.setEdge(w,b,E,f.name+"-cyclic-special"),i.setEdge(b,y,S,f.name+"-cyclic-special")}else(ec[f.v]||ec[f.w])&&(Fe.warn("Fixing and trixing - removing XXX",f.v,f.w,f.name),w=pK(f.v),y=pK(f.w),i.removeEdge(f.v,f.w,f.name),w!==f.v&&(p.fromCluster=f.v),y!==f.w&&(p.toCluster=f.w),Fe.warn("Fix Replacing with XXX",w,y,f.name),i.setEdge(w,y,p,f.name))}),Fe.warn("Adjusted Graph",E5(i)),RBe(i,0),Fe.trace(ec)},RBe=(i,a)=>{if(Fe.warn("extractor - ",a,E5(i),i.children("D")),a>10){Fe.error("Bailing out");return}let f=i.nodes(),p=!1;for(const w of f){const y=i.children(w);p=p||y.length>0}if(!p){Fe.debug("Done, no node has children",i.nodes());return}Fe.debug("Nodes = ",f,a);for(const w of f)if(Fe.debug("Extracting node",w,ec,ec[w]&&!ec[w].externalConnections,!i.parent(w),i.node(w),i.children("D")," Depth ",a),!ec[w])Fe.debug("Not a cluster",w,a);else if(!ec[w].externalConnections&&i.children(w)&&i.children(w).length>0){Fe.warn("Cluster without external connections, without a parent and with children",w,a);let b=i.graph().rankdir==="TB"?"LR":"TB";ec[w]&&ec[w].clusterData&&ec[w].clusterData.dir&&(b=ec[w].clusterData.dir,Fe.warn("Fixing dir",ec[w].clusterData.dir,b));const E=new zf({multigraph:!0,compound:!0}).setGraph({rankdir:b,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});Fe.warn("Old graph before copy",E5(i)),PBe(w,i,E,w),i.setNode(w,{clusterNode:!0,id:w,clusterData:ec[w].clusterData,labelText:ec[w].labelText,graph:E}),Fe.warn("New graph after copy node: (",w,")",E5(E)),Fe.debug("Old graph after copy",E5(i))}else Fe.warn("Cluster ** ",w," **not meeting the criteria !externalConnections:",!ec[w].externalConnections," no parent: ",!i.parent(w)," children ",i.children(w)&&i.children(w).length>0,i.children("D"),a),Fe.debug(ec);f=i.nodes(),Fe.warn("New list of nodes",f);for(const w of f){const y=i.node(w);Fe.warn(" Now next level",w,y),y.clusterNode&&RBe(y.graph,a+1)}},FBe=(i,a)=>{if(a.length===0)return[];let f=Object.assign(a);return a.forEach(p=>{const w=i.children(p),y=FBe(i,w);f=[...f,...y]}),f},PRt=i=>FBe(i,i.children());function BRt(i,a){return i.intersect(a)}function jBe(i,a,f,p){var w=i.x,y=i.y,b=w-p.x,E=y-p.y,S=Math.sqrt(a*a*E*E+f*f*b*b),N=Math.abs(a*f*b/S);p.x0}function jRt(i,a,f){var p=i.x,w=i.y,y=[],b=Number.POSITIVE_INFINITY,E=Number.POSITIVE_INFINITY;typeof a.forEach=="function"?a.forEach(function(V){b=Math.min(b,V.x),E=Math.min(E,V.y)}):(b=Math.min(b,a.x),E=Math.min(E,a.y));for(var S=p-i.width/2-b,N=w-i.height/2-E,B=0;B1&&y.sort(function(V,Q){var oe=V.x-f.x,ce=V.y-f.y,se=Math.sqrt(oe*oe+ce*ce),ge=Q.x-f.x,ye=Q.y-f.y,ke=Math.sqrt(ge*ge+ye*ye);return se{var f=i.x,p=i.y,w=a.x-f,y=a.y-p,b=i.width/2,E=i.height/2,S,N;return Math.abs(y)*b>Math.abs(w)*E?(y<0&&(E=-E),S=y===0?0:E*w/y,N=E):(w<0&&(b=-b),S=b,N=w===0?0:b*y/w),{x:f+S,y:p+N}},Lh={node:BRt,circle:RRt,ellipse:jBe,polygon:jRt,rect:bP},$Rt=async(i,a)=>{a.useHtmlLabels||Tt().flowchart.htmlLabels||(a.centerLabel=!0);const{shapeSvg:p,bbox:w,halfPadding:y}=await jd(i,a,"node "+a.classes,!0);Fe.info("Classes = ",a.classes);const b=p.insert("rect",":first-child");return b.attr("rx",a.rx).attr("ry",a.ry).attr("x",-w.width/2-y).attr("y",-w.height/2-y).attr("width",w.width+a.padding).attr("height",w.height+a.padding),uf(a,b),a.intersect=function(E){return Lh.rect(a,E)},p};let HBe=0;const HRt=function(i,a,f,p,w){const y=function(se){switch(se){case w.db.relationType.AGGREGATION:return"aggregation";case w.db.relationType.EXTENSION:return"extension";case w.db.relationType.COMPOSITION:return"composition";case w.db.relationType.DEPENDENCY:return"dependency";case w.db.relationType.LOLLIPOP:return"lollipop"}};a.points=a.points.filter(se=>!Number.isNaN(se.y));const b=a.points,E=WE().x(function(se){return se.x}).y(function(se){return se.y}).curve(SA),S=i.append("path").attr("d",E(b)).attr("id","edge"+HBe).attr("class","relation");let N="";p.arrowMarkerAbsolute&&(N=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,N=N.replace(/\(/g,"\\("),N=N.replace(/\)/g,"\\)")),f.relation.lineType==1&&S.attr("class","relation dashed-line"),f.relation.lineType==10&&S.attr("class","relation dotted-line"),f.relation.type1!=="none"&&S.attr("marker-start","url("+N+"#"+y(f.relation.type1)+"Start)"),f.relation.type2!=="none"&&S.attr("marker-end","url("+N+"#"+y(f.relation.type2)+"End)");let B,R;const j=a.points.length;let $=co.calcLabelPosition(a.points);B=$.x,R=$.y;let V,Q,oe,ce;if(j%2!==0&&j>1){let se=co.calcCardinalityPosition(f.relation.type1!=="none",a.points,a.points[0]),ge=co.calcCardinalityPosition(f.relation.type2!=="none",a.points,a.points[j-1]);Fe.debug("cardinality_1_point "+JSON.stringify(se)),Fe.debug("cardinality_2_point "+JSON.stringify(ge)),V=se.x,Q=se.y,oe=ge.x,ce=ge.y}if(f.title!==void 0){const se=i.append("g").attr("class","classLabel"),ge=se.append("text").attr("class","label").attr("x",B).attr("y",R).attr("fill","red").attr("text-anchor","middle").text(f.title);window.label=ge;const ye=ge.node().getBBox();se.insert("rect",":first-child").attr("class","box").attr("x",ye.x-p.padding/2).attr("y",ye.y-p.padding/2).attr("width",ye.width+p.padding).attr("height",ye.height+p.padding)}Fe.info("Rendering relation "+JSON.stringify(f)),f.relationTitle1!==void 0&&f.relationTitle1!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",V).attr("y",Q).attr("fill","black").attr("font-size","6").text(f.relationTitle1),f.relationTitle2!==void 0&&f.relationTitle2!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",oe).attr("y",ce).attr("fill","black").attr("font-size","6").text(f.relationTitle2),HBe++},zRt=function(i,a,f,p){Fe.debug("Rendering class ",a,f);const w=a.id,y={id:w,label:a.id,width:0,height:0},b=i.append("g").attr("id",p.db.lookUpDomId(w)).attr("class","classGroup");let E;a.link?E=b.append("svg:a").attr("xlink:href",a.link).attr("target",a.linkTarget).append("text").attr("y",f.textHeight+f.padding).attr("x",0):E=b.append("text").attr("y",f.textHeight+f.padding).attr("x",0);let S=!0;a.annotations.forEach(function(ke){const Ae=E.append("tspan").text("«"+ke+"»");S||Ae.attr("dy",f.textHeight),S=!1});let N=zBe(a);const B=E.append("tspan").text(N).attr("class","title");S||B.attr("dy",f.textHeight);const R=E.node().getBBox().height,j=b.append("line").attr("x1",0).attr("y1",f.padding+R+f.dividerMargin/2).attr("y2",f.padding+R+f.dividerMargin/2),$=b.append("text").attr("x",f.padding).attr("y",R+f.dividerMargin+f.textHeight).attr("fill","white").attr("class","classText");S=!0,a.members.forEach(function(ke){GBe($,ke,S,f),S=!1});const V=$.node().getBBox(),Q=b.append("line").attr("x1",0).attr("y1",f.padding+R+f.dividerMargin+V.height).attr("y2",f.padding+R+f.dividerMargin+V.height),oe=b.append("text").attr("x",f.padding).attr("y",R+2*f.dividerMargin+V.height+f.textHeight).attr("fill","white").attr("class","classText");S=!0,a.methods.forEach(function(ke){GBe(oe,ke,S,f),S=!1});const ce=b.node().getBBox();var se=" ";a.cssClasses.length>0&&(se=se+a.cssClasses.join(" "));const ye=b.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",ce.width+2*f.padding).attr("height",ce.height+f.padding+.5*f.dividerMargin).attr("class",se).node().getBBox().width;return E.node().childNodes.forEach(function(ke){ke.setAttribute("x",(ye-ke.getBBox().width)/2)}),a.tooltip&&E.insert("title").text(a.tooltip),j.attr("x2",ye),Q.attr("x2",ye),y.width=ye,y.height=ce.height+f.padding+.5*f.dividerMargin,y},zBe=function(i){let a=i.id;return i.type&&(a+="<"+i.type+">"),a},GRt=function(i,a,f,p){Fe.debug("Rendering note ",a,f);const w=a.id,y={id:w,text:a.text,width:0,height:0},b=i.append("g").attr("id",w).attr("class","classGroup");let E=b.append("text").attr("y",f.textHeight+f.padding).attr("x",0);const S=JSON.parse(`"${a.text}"`).split(` +`);S.forEach(function(j){Fe.debug(`Adding line: ${j}`),E.append("tspan").text(j).attr("class","title").attr("dy",f.textHeight)});const N=b.node().getBBox(),R=b.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",N.width+2*f.padding).attr("height",N.height+S.length*f.textHeight+f.padding+.5*f.dividerMargin).node().getBBox().width;return E.node().childNodes.forEach(function(j){j.setAttribute("x",(R-j.getBBox().width)/2)}),y.width=R,y.height=N.height+S.length*f.textHeight+f.padding+.5*f.dividerMargin,y},bK=function(i){const a=/^([#+~-])?(\w+)(~\w+~|\[])?\s+(\w+) *([$*])?$/,f=/^([#+|~-])?(\w+) *\( *(.*)\) *([$*])? *(\w*[[\]|~]*\s*\w*~?)$/;let p=i.match(a),w=i.match(f);return p&&!w?qRt(p):w?VRt(w):URt(i)},qRt=function(i){let a="",f="";try{let p=i[1]?i[1].trim():"",w=i[2]?i[2].trim():"",y=i[3]?Yk(i[3].trim()):"",b=i[4]?i[4].trim():"",E=i[5]?i[5].trim():"";f=p+w+y+" "+b,a=vK(E)}catch{f=i}return{displayText:f,cssStyle:a}},VRt=function(i){let a="",f="";try{let p=i[1]?i[1].trim():"",w=i[2]?i[2].trim():"",y=i[3]?Yk(i[3].trim()):"",b=i[4]?i[4].trim():"",E=i[5]?" : "+Yk(i[5]).trim():"";f=p+w+"("+y+")"+E,a=vK(b)}catch{f=i}return{displayText:f,cssStyle:a}},URt=function(i){let a="",f="",p="",w="",y=i.substring(0,1),b=i.substring(i.length-1,i.length);y.match(/[#+~-]/)&&(w=y);let E=/[\s\w)~]/;b.match(E)||(f=vK(b));let S=w===""?0:1,N=f===""?i.length:i.length-1;i=i.substring(S,N);let B=i.indexOf("("),R=i.indexOf(")");if(B>1&&R>B&&R<=i.length){let j=i.substring(0,B).trim();const $=i.substring(B+1,R);if(a=w+j+"("+Yk($.trim())+")",R{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=w+y,E=[{x:b/2,y:0},{x:b,y:-b/2},{x:b/2,y:-b},{x:0,y:-b/2}];Fe.info("Question main (Circle)");const S=T5(f,b,b,E);return S.attr("style",a.style),uf(a,S),a.intersect=function(N){return Fe.warn("Intersect called"),Lh.polygon(a,E,N)},f},WRt=(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),p=28,w=[{x:0,y:p/2},{x:p/2,y:0},{x:0,y:-p/2},{x:-p/2,y:0}];return f.insert("polygon",":first-child").attr("points",w.map(function(b){return b.x+","+b.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),a.width=28,a.height=28,a.intersect=function(b){return Lh.circle(a,14,b)},f},KRt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=4,y=p.height+a.padding,b=y/w,E=p.width+2*b+a.padding,S=[{x:b,y:0},{x:E-b,y:0},{x:E,y:-y/2},{x:E-b,y:-y},{x:b,y:-y},{x:0,y:-y/2}],N=T5(f,E,y,S);return N.attr("style",a.style),uf(a,N),a.intersect=function(B){return Lh.polygon(a,S,B)},f},YRt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:-y/2,y:0},{x:w,y:0},{x:w,y:-y},{x:-y/2,y:-y},{x:0,y:-y/2}];return T5(f,w,y,b).attr("style",a.style),a.width=w+y,a.height=y,a.intersect=function(S){return Lh.polygon(a,b,S)},f},XRt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:-2*y/6,y:0},{x:w-y/6,y:0},{x:w+2*y/6,y:-y},{x:y/6,y:-y}],E=T5(f,w,y,b);return E.attr("style",a.style),uf(a,E),a.intersect=function(S){return Lh.polygon(a,b,S)},f},QRt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:2*y/6,y:0},{x:w+y/6,y:0},{x:w-2*y/6,y:-y},{x:-y/6,y:-y}],E=T5(f,w,y,b);return E.attr("style",a.style),uf(a,E),a.intersect=function(S){return Lh.polygon(a,b,S)},f},ZRt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:-2*y/6,y:0},{x:w+2*y/6,y:0},{x:w-y/6,y:-y},{x:y/6,y:-y}],E=T5(f,w,y,b);return E.attr("style",a.style),uf(a,E),a.intersect=function(S){return Lh.polygon(a,b,S)},f},JRt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:y/6,y:0},{x:w-y/6,y:0},{x:w+2*y/6,y:-y},{x:-2*y/6,y:-y}],E=T5(f,w,y,b);return E.attr("style",a.style),uf(a,E),a.intersect=function(S){return Lh.polygon(a,b,S)},f},eFt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:0,y:0},{x:w+y/2,y:0},{x:w,y:-y/2},{x:w+y/2,y:-y},{x:0,y:-y}],E=T5(f,w,y,b);return E.attr("style",a.style),uf(a,E),a.intersect=function(S){return Lh.polygon(a,b,S)},f},tFt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=w/2,b=y/(2.5+w/50),E=p.height+b+a.padding,S="M 0,"+b+" a "+y+","+b+" 0,0,0 "+w+" 0 a "+y+","+b+" 0,0,0 "+-w+" 0 l 0,"+E+" a "+y+","+b+" 0,0,0 "+w+" 0 l 0,"+-E,N=f.attr("label-offset-y",b).insert("path",":first-child").attr("style",a.style).attr("d",S).attr("transform","translate("+-w/2+","+-(E/2+b)+")");return uf(a,N),a.intersect=function(B){const R=Lh.rect(a,B),j=R.x-a.x;if(y!=0&&(Math.abs(j)a.height/2-b)){let $=b*b*(1-j*j/(y*y));$!=0&&($=Math.sqrt($)),$=b-$,B.y-a.y>0&&($=-$),R.y+=$}return R},f},nFt=async(i,a)=>{const{shapeSvg:f,bbox:p,halfPadding:w}=await jd(i,a,"node "+a.classes,!0),y=f.insert("rect",":first-child"),b=p.width+a.padding,E=p.height+a.padding;if(y.attr("class","basic label-container").attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("x",-p.width/2-w).attr("y",-p.height/2-w).attr("width",b).attr("height",E),a.props){const S=new Set(Object.keys(a.props));a.props.borders&&(VBe(y,a.props.borders,b,E),S.delete("borders")),S.forEach(N=>{Fe.warn(`Unknown node property ${N}`)})}return uf(a,y),a.intersect=function(S){return Lh.rect(a,S)},f},rFt=async(i,a)=>{const{shapeSvg:f}=await jd(i,a,"label",!0);Fe.trace("Classes = ",a.classes);const p=f.insert("rect",":first-child"),w=0,y=0;if(p.attr("width",w).attr("height",y),f.attr("class","label edgeLabel"),a.props){const b=new Set(Object.keys(a.props));a.props.borders&&(VBe(p,a.props.borders,w,y),b.delete("borders")),b.forEach(E=>{Fe.warn(`Unknown node property ${E}`)})}return uf(a,p),a.intersect=function(b){return Lh.rect(a,b)},f};function VBe(i,a,f,p){const w=[],y=E=>{w.push(E,0)},b=E=>{w.push(0,E)};a.includes("t")?(Fe.debug("add top border"),y(f)):b(f),a.includes("r")?(Fe.debug("add right border"),y(p)):b(p),a.includes("b")?(Fe.debug("add bottom border"),y(f)):b(f),a.includes("l")?(Fe.debug("add left border"),y(p)):b(p),i.attr("stroke-dasharray",w.join(" "))}const iFt=(i,a)=>{let f;a.classes?f="node "+a.classes:f="node default";const p=i.insert("g").attr("class",f).attr("id",a.domId||a.id),w=p.insert("rect",":first-child"),y=p.insert("line"),b=p.insert("g").attr("class","label"),E=a.labelText.flat?a.labelText.flat():a.labelText;let S="";typeof E=="object"?S=E[0]:S=E,Fe.info("Label text abc79",S,E,typeof E=="object");const N=b.node().appendChild(sp(S,a.labelStyle,!0,!0));let B={width:0,height:0};if(d1(Tt().flowchart.htmlLabels)){const Q=N.children[0],oe=Cr(N);B=Q.getBoundingClientRect(),oe.attr("width",B.width),oe.attr("height",B.height)}Fe.info("Text 2",E);const R=E.slice(1,E.length);let j=N.getBBox();const $=b.node().appendChild(sp(R.join?R.join("
"):R,a.labelStyle,!0,!0));if(d1(Tt().flowchart.htmlLabels)){const Q=$.children[0],oe=Cr($);B=Q.getBoundingClientRect(),oe.attr("width",B.width),oe.attr("height",B.height)}const V=a.padding/2;return Cr($).attr("transform","translate( "+(B.width>j.width?0:(j.width-B.width)/2)+", "+(j.height+V+5)+")"),Cr(N).attr("transform","translate( "+(B.width{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.height+a.padding,y=p.width+w/4+a.padding,b=f.insert("rect",":first-child").attr("style",a.style).attr("rx",w/2).attr("ry",w/2).attr("x",-y/2).attr("y",-w/2).attr("width",y).attr("height",w);return uf(a,b),a.intersect=function(E){return Lh.rect(a,E)},f},aFt=async(i,a)=>{const{shapeSvg:f,bbox:p,halfPadding:w}=await jd(i,a,void 0,!0),y=f.insert("circle",":first-child");return y.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",p.width/2+w).attr("width",p.width+a.padding).attr("height",p.height+a.padding),Fe.info("Circle main"),uf(a,y),a.intersect=function(b){return Fe.info("Circle intersect",a,p.width/2+w,b),Lh.circle(a,p.width/2+w,b)},f},oFt=async(i,a)=>{const{shapeSvg:f,bbox:p,halfPadding:w}=await jd(i,a,void 0,!0),y=5,b=f.insert("g",":first-child"),E=b.insert("circle"),S=b.insert("circle");return E.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",p.width/2+w+y).attr("width",p.width+a.padding+y*2).attr("height",p.height+a.padding+y*2),S.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",p.width/2+w).attr("width",p.width+a.padding).attr("height",p.height+a.padding),Fe.info("DoubleCircle main"),uf(a,E),a.intersect=function(N){return Fe.info("DoubleCircle intersect",a,p.width/2+w+y,N),Lh.circle(a,p.width/2+w+y,N)},f},cFt=async(i,a)=>{const{shapeSvg:f,bbox:p}=await jd(i,a,void 0,!0),w=p.width+a.padding,y=p.height+a.padding,b=[{x:0,y:0},{x:w,y:0},{x:w,y:-y},{x:0,y:-y},{x:0,y:0},{x:-8,y:0},{x:w+8,y:0},{x:w+8,y:-y},{x:-8,y:-y},{x:-8,y:0}],E=T5(f,w,y,b);return E.attr("style",a.style),uf(a,E),a.intersect=function(S){return Lh.polygon(a,b,S)},f},uFt=(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),p=f.insert("circle",":first-child");return p.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),uf(a,p),a.intersect=function(w){return Lh.circle(a,7,w)},f},UBe=(i,a,f)=>{const p=i.insert("g").attr("class","node default").attr("id",a.domId||a.id);let w=70,y=10;f==="LR"&&(w=10,y=70);const b=p.append("rect").attr("x",-1*w/2).attr("y",-1*y/2).attr("width",w).attr("height",y).attr("class","fork-join");return uf(a,b),a.height=a.height+a.padding/2,a.width=a.width+a.padding/2,a.intersect=function(E){return Lh.rect(a,E)},p},WBe={rhombus:qBe,question:qBe,rect:nFt,labelRect:rFt,rectWithTitle:iFt,choice:WRt,circle:aFt,doublecircle:oFt,stadium:sFt,hexagon:KRt,rect_left_inv_arrow:YRt,lean_right:XRt,lean_left:QRt,trapezoid:ZRt,inv_trapezoid:JRt,rect_right_inv_arrow:eFt,cylinder:tFt,start:uFt,end:(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),p=f.insert("circle",":first-child"),w=f.insert("circle",":first-child");return w.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),p.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),uf(a,w),a.intersect=function(y){return Lh.circle(a,7,y)},f},note:$Rt,subroutine:cFt,fork:UBe,join:UBe,class_box:(i,a)=>{const f=a.padding/2,p=4,w=8;let y;a.classes?y="node "+a.classes:y="node default";const b=i.insert("g").attr("class",y).attr("id",a.domId||a.id),E=b.insert("rect",":first-child"),S=b.insert("line"),N=b.insert("line");let B=0,R=p;const j=b.insert("g").attr("class","label");let $=0;const V=a.classData.annotations&&a.classData.annotations[0],Q=a.classData.annotations[0]?"«"+a.classData.annotations[0]+"»":"",oe=j.node().appendChild(sp(Q,a.labelStyle,!0,!0));let ce=oe.getBBox();if(d1(Tt().flowchart.htmlLabels)){const ve=oe.children[0],te=Cr(oe);ce=ve.getBoundingClientRect(),te.attr("width",ce.width),te.attr("height",ce.height)}a.classData.annotations[0]&&(R+=ce.height+p,B+=ce.width);let se=a.classData.label;a.classData.type!==void 0&&a.classData.type!==""&&(Tt().flowchart.htmlLabels?se+="<"+a.classData.type+">":se+="<"+a.classData.type+">");const ge=j.node().appendChild(sp(se,a.labelStyle,!0,!0));Cr(ge).attr("class","classTitle");let ye=ge.getBBox();if(d1(Tt().flowchart.htmlLabels)){const ve=ge.children[0],te=Cr(ge);ye=ve.getBoundingClientRect(),te.attr("width",ye.width),te.attr("height",ye.height)}R+=ye.height+p,ye.width>B&&(B=ye.width);const ke=[];a.classData.members.forEach(ve=>{const te=bK(ve);let xe=te.displayText;Tt().flowchart.htmlLabels&&(xe=xe.replace(//g,">"));const De=j.node().appendChild(sp(xe,te.cssStyle?te.cssStyle:a.labelStyle,!0,!0));let he=De.getBBox();if(d1(Tt().flowchart.htmlLabels)){const Ie=De.children[0],ee=Cr(De);he=Ie.getBoundingClientRect(),ee.attr("width",he.width),ee.attr("height",he.height)}he.width>B&&(B=he.width),R+=he.height+p,ke.push(De)}),R+=w;const Ae=[];if(a.classData.methods.forEach(ve=>{const te=bK(ve);let xe=te.displayText;Tt().flowchart.htmlLabels&&(xe=xe.replace(//g,">"));const De=j.node().appendChild(sp(xe,te.cssStyle?te.cssStyle:a.labelStyle,!0,!0));let he=De.getBBox();if(d1(Tt().flowchart.htmlLabels)){const Ie=De.children[0],ee=Cr(De);he=Ie.getBoundingClientRect(),ee.attr("width",he.width),ee.attr("height",he.height)}he.width>B&&(B=he.width),R+=he.height+p,Ae.push(De)}),R+=w,V){let ve=(B-ce.width)/2;Cr(oe).attr("transform","translate( "+(-1*B/2+ve)+", "+-1*R/2+")"),$=ce.height+p}let de=(B-ye.width)/2;return Cr(ge).attr("transform","translate( "+(-1*B/2+de)+", "+(-1*R/2+$)+")"),$+=ye.height+p,S.attr("class","divider").attr("x1",-B/2-f).attr("x2",B/2+f).attr("y1",-R/2-f+w+$).attr("y2",-R/2-f+w+$),$+=w,ke.forEach(ve=>{Cr(ve).attr("transform","translate( "+-B/2+", "+(-1*R/2+$+w/2)+")"),$+=ye.height+p}),$+=w,N.attr("class","divider").attr("x1",-B/2-f).attr("x2",B/2+f).attr("y1",-R/2-f+w+$).attr("y2",-R/2-f+w+$),$+=w,Ae.forEach(ve=>{Cr(ve).attr("transform","translate( "+-B/2+", "+(-1*R/2+$)+")"),$+=ye.height+p}),E.attr("class","outer title-state").attr("x",-B/2-f).attr("y",-(R/2)-f).attr("width",B+a.padding).attr("height",R+a.padding),uf(a,E),a.intersect=function(ve){return Lh.rect(a,ve)},b}};let rL={};const KBe=async(i,a,f)=>{let p,w;if(a.link){let y;Tt().securityLevel==="sandbox"?y="_top":a.linkTarget&&(y=a.linkTarget||"_blank"),p=i.insert("svg:a").attr("xlink:href",a.link).attr("target",y),w=await WBe[a.shape](p,a,f)}else w=await WBe[a.shape](i,a,f),p=w;return a.tooltip&&w.attr("title",a.tooltip),a.class&&w.attr("class","node default "+a.class),rL[a.id]=p,a.haveCallback&&rL[a.id].attr("class",rL[a.id].attr("class")+" clickable"),p},lFt=(i,a)=>{rL[a.id]=i},hFt=()=>{rL={}},YBe=i=>{const a=rL[i.id];Fe.trace("Transforming node",i.diff,i,"translate("+(i.x-i.width/2-5)+", "+i.width/2+")");const f=8,p=i.diff||0;return i.clusterNode?a.attr("transform","translate("+(i.x+p-i.width/2)+", "+(i.y-i.height/2-f)+")"):a.attr("transform","translate("+i.x+", "+i.y+")"),p},fFt={rect:(i,a)=>{Fe.info("Creating subgraph rect for ",a.id,a);const f=i.insert("g").attr("class","cluster"+(a.class?" "+a.class:"")).attr("id",a.id),p=f.insert("rect",":first-child"),w=d1(Tt().flowchart.htmlLabels),y=f.insert("g").attr("class","cluster-label"),b=a.labelType==="markdown"?dK(y,a.labelText,{style:a.labelStyle,useHtmlLabels:w}):y.node().appendChild(sp(a.labelText,a.labelStyle,void 0,!0));let E=b.getBBox();if(d1(Tt().flowchart.htmlLabels)){const j=b.children[0],$=Cr(b);E=j.getBoundingClientRect(),$.attr("width",E.width),$.attr("height",E.height)}const S=0*a.padding,N=S/2,B=a.width<=E.width+S?E.width+S:a.width;a.width<=E.width+S?a.diff=(E.width-a.width)/2-a.padding/2:a.diff=-a.padding/2,Fe.trace("Data ",a,JSON.stringify(a)),p.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("x",a.x-B/2).attr("y",a.y-a.height/2-N).attr("width",B).attr("height",a.height+S),w?y.attr("transform","translate("+(a.x-E.width/2)+", "+(a.y-a.height/2)+")"):y.attr("transform","translate("+a.x+", "+(a.y-a.height/2)+")");const R=p.node().getBBox();return a.width=R.width,a.height=R.height,a.intersect=function(j){return bP(a,j)},f},roundedWithTitle:(i,a)=>{const f=i.insert("g").attr("class",a.classes).attr("id",a.id),p=f.insert("rect",":first-child"),w=f.insert("g").attr("class","cluster-label"),y=f.append("rect"),b=w.node().appendChild(sp(a.labelText,a.labelStyle,void 0,!0));let E=b.getBBox();if(d1(Tt().flowchart.htmlLabels)){const j=b.children[0],$=Cr(b);E=j.getBoundingClientRect(),$.attr("width",E.width),$.attr("height",E.height)}E=b.getBBox();const S=0*a.padding,N=S/2,B=a.width<=E.width+a.padding?E.width+a.padding:a.width;a.width<=E.width+a.padding?a.diff=(E.width+a.padding*0-a.width)/2:a.diff=-a.padding/2,p.attr("class","outer").attr("x",a.x-B/2-N).attr("y",a.y-a.height/2-N).attr("width",B+S).attr("height",a.height+S),y.attr("class","inner").attr("x",a.x-B/2-N).attr("y",a.y-a.height/2-N+E.height-1).attr("width",B+S).attr("height",a.height+S-E.height-3),w.attr("transform","translate("+(a.x-E.width/2)+", "+(a.y-a.height/2-a.padding/3+(d1(Tt().flowchart.htmlLabels)?5:3))+")");const R=p.node().getBBox();return a.height=R.height,a.intersect=function(j){return bP(a,j)},f},noteGroup:(i,a)=>{const f=i.insert("g").attr("class","note-cluster").attr("id",a.id),p=f.insert("rect",":first-child"),w=0*a.padding,y=w/2;p.attr("rx",a.rx).attr("ry",a.ry).attr("x",a.x-a.width/2-y).attr("y",a.y-a.height/2-y).attr("width",a.width+w).attr("height",a.height+w).attr("fill","none");const b=p.node().getBBox();return a.width=b.width,a.height=b.height,a.intersect=function(E){return bP(a,E)},f},divider:(i,a)=>{const f=i.insert("g").attr("class",a.classes).attr("id",a.id),p=f.insert("rect",":first-child"),w=0*a.padding,y=w/2;p.attr("class","divider").attr("x",a.x-a.width/2-y).attr("y",a.y-a.height/2).attr("width",a.width+w).attr("height",a.height+w);const b=p.node().getBBox();return a.width=b.width,a.height=b.height,a.diff=-a.padding/2,a.intersect=function(E){return bP(a,E)},f}};let XBe={};const dFt=(i,a)=>{Fe.trace("Inserting cluster");const f=a.shape||"rect";XBe[a.id]=fFt[f](i,a)},gFt=()=>{XBe={}};let wK={},$d={};const pFt=()=>{wK={},$d={}},QBe=(i,a)=>{const f=d1(Tt().flowchart.htmlLabels),p=a.labelType==="markdown"?dK(i,a.label,{style:a.labelStyle,useHtmlLabels:f,addSvgBackground:!0}):sp(a.label,a.labelStyle);Fe.info("abc82",a,a.labelType);const w=i.insert("g").attr("class","edgeLabel"),y=w.insert("g").attr("class","label");y.node().appendChild(p);let b=p.getBBox();if(f){const S=p.children[0],N=Cr(p);b=S.getBoundingClientRect(),N.attr("width",b.width),N.attr("height",b.height)}y.attr("transform","translate("+-b.width/2+", "+-b.height/2+")"),wK[a.id]=w,a.width=b.width,a.height=b.height;let E;if(a.startLabelLeft){const S=sp(a.startLabelLeft,a.labelStyle),N=i.insert("g").attr("class","edgeTerminals"),B=N.insert("g").attr("class","inner");E=B.node().appendChild(S);const R=S.getBBox();B.attr("transform","translate("+-R.width/2+", "+-R.height/2+")"),$d[a.id]||($d[a.id]={}),$d[a.id].startLeft=N,mK(E,a.startLabelLeft)}if(a.startLabelRight){const S=sp(a.startLabelRight,a.labelStyle),N=i.insert("g").attr("class","edgeTerminals"),B=N.insert("g").attr("class","inner");E=N.node().appendChild(S),B.node().appendChild(S);const R=S.getBBox();B.attr("transform","translate("+-R.width/2+", "+-R.height/2+")"),$d[a.id]||($d[a.id]={}),$d[a.id].startRight=N,mK(E,a.startLabelRight)}if(a.endLabelLeft){const S=sp(a.endLabelLeft,a.labelStyle),N=i.insert("g").attr("class","edgeTerminals"),B=N.insert("g").attr("class","inner");E=B.node().appendChild(S);const R=S.getBBox();B.attr("transform","translate("+-R.width/2+", "+-R.height/2+")"),N.node().appendChild(S),$d[a.id]||($d[a.id]={}),$d[a.id].endLeft=N,mK(E,a.endLabelLeft)}if(a.endLabelRight){const S=sp(a.endLabelRight,a.labelStyle),N=i.insert("g").attr("class","edgeTerminals"),B=N.insert("g").attr("class","inner");E=B.node().appendChild(S);const R=S.getBBox();B.attr("transform","translate("+-R.width/2+", "+-R.height/2+")"),N.node().appendChild(S),$d[a.id]||($d[a.id]={}),$d[a.id].endRight=N,mK(E,a.endLabelRight)}return p};function mK(i,a){Tt().flowchart.htmlLabels&&i&&(i.style.width=a.length*9+"px",i.style.height="12px")}const bFt=(i,a)=>{Fe.info("Moving label abc78 ",i.id,i.label,wK[i.id]);let f=a.updatedPath?a.updatedPath:a.originalPath;if(i.label){const p=wK[i.id];let w=i.x,y=i.y;if(f){const b=co.calcLabelPosition(f);Fe.info("Moving label "+i.label+" from (",w,",",y,") to (",b.x,",",b.y,") abc78"),a.updatedPath&&(w=b.x,y=b.y)}p.attr("transform","translate("+w+", "+y+")")}if(i.startLabelLeft){const p=$d[i.id].startLeft;let w=i.x,y=i.y;if(f){const b=co.calcTerminalLabelPosition(i.arrowTypeStart?10:0,"start_left",f);w=b.x,y=b.y}p.attr("transform","translate("+w+", "+y+")")}if(i.startLabelRight){const p=$d[i.id].startRight;let w=i.x,y=i.y;if(f){const b=co.calcTerminalLabelPosition(i.arrowTypeStart?10:0,"start_right",f);w=b.x,y=b.y}p.attr("transform","translate("+w+", "+y+")")}if(i.endLabelLeft){const p=$d[i.id].endLeft;let w=i.x,y=i.y;if(f){const b=co.calcTerminalLabelPosition(i.arrowTypeEnd?10:0,"end_left",f);w=b.x,y=b.y}p.attr("transform","translate("+w+", "+y+")")}if(i.endLabelRight){const p=$d[i.id].endRight;let w=i.x,y=i.y;if(f){const b=co.calcTerminalLabelPosition(i.arrowTypeEnd?10:0,"end_right",f);w=b.x,y=b.y}p.attr("transform","translate("+w+", "+y+")")}},vFt=(i,a)=>{const f=i.x,p=i.y,w=Math.abs(a.x-f),y=Math.abs(a.y-p),b=i.width/2,E=i.height/2;return w>=b||y>=E},wFt=(i,a,f)=>{Fe.warn(`intersection calc abc89: + outsidePoint: ${JSON.stringify(a)} + insidePoint : ${JSON.stringify(f)} + node : x:${i.x} y:${i.y} w:${i.width} h:${i.height}`);const p=i.x,w=i.y,y=Math.abs(p-f.x),b=i.width/2;let E=f.xMath.abs(p-a.x)*S){let R=f.y{Fe.warn("abc88 cutPathAtIntersect",i,a);let f=[],p=i[0],w=!1;return i.forEach(y=>{if(Fe.info("abc88 checking point",y,a),!vFt(a,y)&&!w){const b=wFt(a,p,y);Fe.warn("abc88 inside",y,p,b),Fe.warn("abc88 intersection",b);let E=!1;f.forEach(S=>{E=E||S.x===b.x&&S.y===b.y}),f.some(S=>S.x===b.x&&S.y===b.y)?Fe.warn("abc88 no intersect",b,f):f.push(b),w=!0}else Fe.warn("abc88 outside",y,p),p=y,w||f.push(y)}),Fe.warn("abc88 returning points",f),f},mFt=function(i,a,f,p,w,y){let b=f.points,E=!1;const S=y.node(a.v);var N=y.node(a.w);Fe.info("abc88 InsertEdge: ",f),N.intersect&&S.intersect&&(b=b.slice(1,f.points.length-1),b.unshift(S.intersect(b[0])),Fe.info("Last point",b[b.length-1],N,N.intersect(b[b.length-1])),b.push(N.intersect(b[b.length-1]))),f.toCluster&&(Fe.info("to cluster abc88",p[f.toCluster]),b=ZBe(f.points,p[f.toCluster].node),E=!0),f.fromCluster&&(Fe.info("from cluster abc88",p[f.fromCluster]),b=ZBe(b.reverse(),p[f.fromCluster].node).reverse(),E=!0);const B=b.filter(ce=>!Number.isNaN(ce.y));let R;w==="graph"||w==="flowchart"?R=f.curve||SA:R=SA;const j=WE().x(function(ce){return ce.x}).y(function(ce){return ce.y}).curve(R);let $;switch(f.thickness){case"normal":$="edge-thickness-normal";break;case"thick":$="edge-thickness-thick";break;case"invisible":$="edge-thickness-thick";break;default:$=""}switch(f.pattern){case"solid":$+=" edge-pattern-solid";break;case"dotted":$+=" edge-pattern-dotted";break;case"dashed":$+=" edge-pattern-dashed";break}const V=i.append("path").attr("d",j(B)).attr("id",f.id).attr("class"," "+$+(f.classes?" "+f.classes:"")).attr("style",f.style);let Q="";switch((Tt().flowchart.arrowMarkerAbsolute||Tt().state.arrowMarkerAbsolute)&&(Q=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,Q=Q.replace(/\(/g,"\\("),Q=Q.replace(/\)/g,"\\)")),Fe.info("arrowTypeStart",f.arrowTypeStart),Fe.info("arrowTypeEnd",f.arrowTypeEnd),f.arrowTypeStart){case"arrow_cross":V.attr("marker-start","url("+Q+"#"+w+"-crossStart)");break;case"arrow_point":V.attr("marker-start","url("+Q+"#"+w+"-pointStart)");break;case"arrow_barb":V.attr("marker-start","url("+Q+"#"+w+"-barbStart)");break;case"arrow_circle":V.attr("marker-start","url("+Q+"#"+w+"-circleStart)");break;case"aggregation":V.attr("marker-start","url("+Q+"#"+w+"-aggregationStart)");break;case"extension":V.attr("marker-start","url("+Q+"#"+w+"-extensionStart)");break;case"composition":V.attr("marker-start","url("+Q+"#"+w+"-compositionStart)");break;case"dependency":V.attr("marker-start","url("+Q+"#"+w+"-dependencyStart)");break;case"lollipop":V.attr("marker-start","url("+Q+"#"+w+"-lollipopStart)");break}switch(f.arrowTypeEnd){case"arrow_cross":V.attr("marker-end","url("+Q+"#"+w+"-crossEnd)");break;case"arrow_point":V.attr("marker-end","url("+Q+"#"+w+"-pointEnd)");break;case"arrow_barb":V.attr("marker-end","url("+Q+"#"+w+"-barbEnd)");break;case"arrow_circle":V.attr("marker-end","url("+Q+"#"+w+"-circleEnd)");break;case"aggregation":V.attr("marker-end","url("+Q+"#"+w+"-aggregationEnd)");break;case"extension":V.attr("marker-end","url("+Q+"#"+w+"-extensionEnd)");break;case"composition":V.attr("marker-end","url("+Q+"#"+w+"-compositionEnd)");break;case"dependency":V.attr("marker-end","url("+Q+"#"+w+"-dependencyEnd)");break;case"lollipop":V.attr("marker-end","url("+Q+"#"+w+"-lollipopEnd)");break}let oe={};return E&&(oe.updatedPath=b),oe.originalPath=f.points,oe},JBe=async(i,a,f,p)=>{Fe.info("Graph in recursive render: XXX",E5(a),p);const w=a.graph().rankdir;Fe.trace("Dir in recursive render - dir:",w);const y=i.insert("g").attr("class","root");a.nodes()?Fe.info("Recursive render XXX",a.nodes()):Fe.info("No nodes found for",a),a.edges().length>0&&Fe.trace("Recursive edges",a.edge(a.edges()[0]));const b=y.insert("g").attr("class","clusters"),E=y.insert("g").attr("class","edgePaths"),S=y.insert("g").attr("class","edgeLabels"),N=y.insert("g").attr("class","nodes");await Promise.all(a.nodes().map(async function(R){const j=a.node(R);if(p!==void 0){const $=JSON.parse(JSON.stringify(p.clusterData));Fe.info("Setting data for cluster XXX (",R,") ",$,p),a.setNode(p.id,$),a.parent(R)||(Fe.trace("Setting parent",R,p.id),a.setParent(R,p.id,$))}if(Fe.info("(Insert) Node XXX"+R+": "+JSON.stringify(a.node(R))),j&&j.clusterNode){Fe.info("Cluster identified",R,j.width,a.node(R));const $=await JBe(N,j.graph,f,a.node(R)),V=$.elem;uf(j,V),j.diff=$.diff||0,Fe.info("Node bounds (abc123)",R,j,j.width,j.x,j.y),lFt(V,j),Fe.warn("Recursive render complete ",V,j)}else a.children(R).length>0?(Fe.info("Cluster - the non recursive path XXX",R,j.id,j,a),Fe.info(pP(j.id,a)),ec[j.id]={id:pP(j.id,a),node:j}):(Fe.info("Node - the non recursive path",R,j.id,j),await KBe(N,a.node(R),w))})),a.edges().forEach(function(R){const j=a.edge(R.v,R.w,R.name);Fe.info("Edge "+R.v+" -> "+R.w+": "+JSON.stringify(R)),Fe.info("Edge "+R.v+" -> "+R.w+": ",R," ",JSON.stringify(a.edge(R))),Fe.info("Fix",ec,"ids:",R.v,R.w,"Translateing: ",ec[R.v],ec[R.w]),QBe(S,j)}),a.edges().forEach(function(R){Fe.info("Edge "+R.v+" -> "+R.w+": "+JSON.stringify(R))}),Fe.info("#############################################"),Fe.info("### Layout ###"),Fe.info("#############################################"),Fe.info(a),tL(a),Fe.info("Graph after layout:",E5(a));let B=0;return PRt(a).forEach(function(R){const j=a.node(R);Fe.info("Position "+R+": "+JSON.stringify(a.node(R))),Fe.info("Position "+R+": ("+j.x,","+j.y,") width: ",j.width," height: ",j.height),j&&j.clusterNode?YBe(j):a.children(R).length>0?(dFt(b,j),ec[j.id].node=j):YBe(j)}),a.edges().forEach(function(R){const j=a.edge(R);Fe.info("Edge "+R.v+" -> "+R.w+": "+JSON.stringify(j),j);const $=mFt(E,R,j,ec,f,a);bFt(j,$)}),a.nodes().forEach(function(R){const j=a.node(R);Fe.info(R,j.type,j.diff),j.type==="group"&&(B=j.diff)}),{elem:y,diff:B}},C0e=async(i,a,f,p,w)=>{vBe(i,f,p,w),hFt(),pFt(),gFt(),IRt(),Fe.warn("Graph at first:",E5(a)),NRt(a),Fe.warn("Graph after:",E5(a)),await JBe(i,a,p)},eRe={},yFt=function(i){const a=Object.keys(i);for(const f of a)eRe[f]=i[f]},tRe=function(i,a,f,p,w,y){const b=p.select(`[id="${f}"]`);Object.keys(i).forEach(function(S){const N=i[S];let B="default";N.classes.length>0&&(B=N.classes.join(" ")),B=B+" flowchart-label";const R=Yw(N.styles);let j=N.text!==void 0?N.text:N.id,$;if(Fe.info("vertex",N,N.labelType),N.labelType==="markdown")Fe.info("vertex",N,N.labelType);else if(d1(Tt().flowchart.htmlLabels)){const oe={label:j.replace(/fa[blrs]?:fa-[\w-]+/g,ce=>``)};$=h0e(b,oe).node(),$.parentNode.removeChild($)}else{const oe=w.createElementNS("http://www.w3.org/2000/svg","text");oe.setAttribute("style",R.labelStyle.replace("color:","fill:"));const ce=j.split(Wa.lineBreakRegex);for(const se of ce){const ge=w.createElementNS("http://www.w3.org/2000/svg","tspan");ge.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),ge.setAttribute("dy","1em"),ge.setAttribute("x","1"),ge.textContent=se,oe.appendChild(ge)}$=oe}let V=0,Q="";switch(N.type){case"round":V=5,Q="rect";break;case"square":Q="rect";break;case"diamond":Q="question";break;case"hexagon":Q="hexagon";break;case"odd":Q="rect_left_inv_arrow";break;case"lean_right":Q="lean_right";break;case"lean_left":Q="lean_left";break;case"trapezoid":Q="trapezoid";break;case"inv_trapezoid":Q="inv_trapezoid";break;case"odd_right":Q="rect_left_inv_arrow";break;case"circle":Q="circle";break;case"ellipse":Q="ellipse";break;case"stadium":Q="stadium";break;case"subroutine":Q="subroutine";break;case"cylinder":Q="cylinder";break;case"group":Q="rect";break;case"doublecircle":Q="doublecircle";break;default:Q="rect"}a.setNode(N.id,{labelStyle:R.labelStyle,shape:Q,labelText:j,labelType:N.labelType,rx:V,ry:V,class:B,style:R.style,id:N.id,link:N.link,linkTarget:N.linkTarget,tooltip:y.db.getTooltip(N.id)||"",domId:y.db.lookUpDomId(N.id),haveCallback:N.haveCallback,width:N.type==="group"?500:void 0,dir:N.dir,type:N.type,props:N.props,padding:Tt().flowchart.padding}),Fe.info("setNode",{labelStyle:R.labelStyle,labelType:N.labelType,shape:Q,labelText:j,rx:V,ry:V,class:B,style:R.style,id:N.id,domId:y.db.lookUpDomId(N.id),width:N.type==="group"?500:void 0,type:N.type,dir:N.dir,props:N.props,padding:Tt().flowchart.padding})})},nRe=function(i,a,f){Fe.info("abc78 edges = ",i);let p=0,w={},y,b;if(i.defaultStyle!==void 0){const E=Yw(i.defaultStyle);y=E.style,b=E.labelStyle}i.forEach(function(E){p++;var S="L-"+E.start+"-"+E.end;w[S]===void 0?(w[S]=0,Fe.info("abc78 new entry",S,w[S])):(w[S]++,Fe.info("abc78 new entry",S,w[S]));let N=S+"-"+w[S];Fe.info("abc78 new link id to be used is",S,N,w[S]);var B="LS-"+E.start,R="LE-"+E.end;const j={style:"",labelStyle:""};switch(j.minlen=E.length||1,E.type==="arrow_open"?j.arrowhead="none":j.arrowhead="normal",j.arrowTypeStart="arrow_open",j.arrowTypeEnd="arrow_open",E.type){case"double_arrow_cross":j.arrowTypeStart="arrow_cross";case"arrow_cross":j.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":j.arrowTypeStart="arrow_point";case"arrow_point":j.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":j.arrowTypeStart="arrow_circle";case"arrow_circle":j.arrowTypeEnd="arrow_circle";break}let $="",V="";switch(E.stroke){case"normal":$="fill:none;",y!==void 0&&($=y),b!==void 0&&(V=b),j.thickness="normal",j.pattern="solid";break;case"dotted":j.thickness="normal",j.pattern="dotted",j.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":j.thickness="thick",j.pattern="solid",j.style="stroke-width: 3.5px;fill:none;";break;case"invisible":j.thickness="invisible",j.pattern="solid",j.style="stroke-width: 0;fill:none;";break}if(E.style!==void 0){const Q=Yw(E.style);$=Q.style,V=Q.labelStyle}j.style=j.style+=$,j.labelStyle=j.labelStyle+=V,E.interpolate!==void 0?j.curve=Ub(E.interpolate,ng):i.defaultInterpolate!==void 0?j.curve=Ub(i.defaultInterpolate,ng):j.curve=Ub(eRe.curve,ng),E.text===void 0?E.style!==void 0&&(j.arrowheadStyle="fill: #333"):(j.arrowheadStyle="fill: #333",j.labelpos="c"),j.labelType=E.labelType,j.label=E.text.replace(Wa.lineBreakRegex,` +`),E.style===void 0&&(j.style=j.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),j.labelStyle=j.labelStyle.replace("color:","fill:"),j.id=N,j.classes="flowchart-link "+B+" "+R,a.setEdge(E.start,E.end,j,p)})},S0e={setConf:yFt,addVertices:tRe,addEdges:nRe,getClasses:function(i,a){Fe.info("Extracting classes"),a.db.clear();try{return a.parse(i),a.db.getClasses()}catch{return}},draw:async function(i,a,f,p){Fe.info("Drawing flowchart"),p.db.clear(),ix.setGen("gen-2"),p.parser.parse(i);let w=p.db.getDirection();w===void 0&&(w="TD");const{securityLevel:y,flowchart:b}=Tt(),E=b.nodeSpacing||50,S=b.rankSpacing||50;let N;y==="sandbox"&&(N=Cr("#i"+a));const B=Cr(y==="sandbox"?N.nodes()[0].contentDocument.body:"body"),R=y==="sandbox"?N.nodes()[0].contentDocument:document,j=new zf({multigraph:!0,compound:!0}).setGraph({rankdir:w,nodesep:E,ranksep:S,marginx:0,marginy:0}).setDefaultEdgeLabel(function(){return{}});let $;const V=p.db.getSubGraphs();Fe.info("Subgraphs - ",V);for(let ke=V.length-1;ke>=0;ke--)$=V[ke],Fe.info("Subgraph - ",$),p.db.addVertex($.id,{text:$.title,type:$.labelType},"group",void 0,$.classes,$.dir);const Q=p.db.getVertices(),oe=p.db.getEdges();Fe.info("Edges",oe);let ce=0;for(ce=V.length-1;ce>=0;ce--){$=V[ce],Jfe("cluster").append("text");for(let ke=0;ke<$.nodes.length;ke++)Fe.info("Setting up subgraphs",$.nodes[ke],$.id),j.setParent($.nodes[ke],$.id)}tRe(Q,j,a,B,R,p),nRe(oe,j);const se=B.select(`[id="${a}"]`),ge=B.select("#"+a+" g");if(await C0e(ge,j,["point","circle","cross"],"flowchart",a),co.insertTitle(se,"flowchartTitleText",b.titleTopMargin,p.db.getDiagramTitle()),YE(j,se,b.diagramPadding,b.useMaxWidth),p.db.indexNodes("subGraph"+ce),!b.htmlLabels){const ke=R.querySelectorAll('[id="'+a+'"] .edgeLabel .label');for(const Ae of ke){const de=Ae.getBBox(),ve=R.createElementNS("http://www.w3.org/2000/svg","rect");ve.setAttribute("rx",0),ve.setAttribute("ry",0),ve.setAttribute("width",de.width),ve.setAttribute("height",de.height),Ae.insertBefore(ve,Ae.firstChild)}}Object.keys(Q).forEach(function(ke){const Ae=Q[ke];if(Ae.link){const de=Cr("#"+a+' [id="'+ke+'"]');if(de){const ve=R.createElementNS("http://www.w3.org/2000/svg","a");ve.setAttributeNS("http://www.w3.org/2000/svg","class",Ae.classes.join(" ")),ve.setAttributeNS("http://www.w3.org/2000/svg","href",Ae.link),ve.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),y==="sandbox"?ve.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):Ae.linkTarget&&ve.setAttributeNS("http://www.w3.org/2000/svg","target",Ae.linkTarget);const te=de.insert(function(){return ve},":first-child"),xe=de.select(".label-container");xe&&te.append(function(){return xe.node()});const De=de.select(".label");De&&te.append(function(){return De.node()})}}})}},rRe=i=>`.label { + font-family: ${i.fontFamily}; + color: ${i.nodeTextColor||i.textColor}; + } + .cluster-label text { + fill: ${i.titleColor}; + } + .cluster-label span,p { + color: ${i.titleColor}; + } + + .label text,span,p { + fill: ${i.nodeTextColor||i.textColor}; + color: ${i.nodeTextColor||i.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${i.edgeLabelBackground}; + fill: ${i.edgeLabelBackground}; + } + text-align: center; + } + + .cluster rect { + fill: ${i.clusterBkg}; + stroke: ${i.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${i.titleColor}; + } + + .cluster span,p { + color: ${i.titleColor}; + } + /* .cluster div { + color: ${i.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${i.fontFamily}; + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`,kFt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Dde,db:ix,renderer:S0e,styles:rRe,init:i=>{i.flowchart||(i.flowchart={}),i.flowchart.arrowMarkerAbsolute=i.arrowMarkerAbsolute,JBt.setConf(i.flowchart),ix.clear(),ix.setGen("gen-1")}}},Symbol.toStringTag,{value:"Module"})),xFt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Dde,db:ix,renderer:S0e,styles:rRe,init:i=>{i.flowchart||(i.flowchart={}),i.flowchart.arrowMarkerAbsolute=i.arrowMarkerAbsolute,pIe({flowchart:{arrowMarkerAbsolute:i.arrowMarkerAbsolute}}),S0e.setConf(i.flowchart),ix.clear(),ix.setGen("gen-2")}}},Symbol.toStringTag,{value:"Module"}));var A0e=function(){var i=function(De,he,Ie,ee){for(Ie=Ie||{},ee=De.length;ee--;Ie[De[ee]]=he);return Ie},a=[1,2],f=[1,5],p=[6,9,11,23,25,27,29,30,31,51],w=[1,17],y=[1,18],b=[1,19],E=[1,20],S=[1,21],N=[1,22],B=[1,25],R=[1,30],j=[1,31],$=[1,32],V=[1,33],Q=[6,9,11,15,20,23,25,27,29,30,31,44,45,46,47,51],oe=[1,45],ce=[30,31,48,49],se=[4,6,9,11,23,25,27,29,30,31,51],ge=[44,45,46,47],ye=[22,37],ke=[1,65],Ae=[1,64],de=[22,37,39,41],ve={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,title:23,title_value:24,acc_title:25,acc_title_value:26,acc_descr:27,acc_descr_value:28,acc_descr_multiline_value:29,ALPHANUM:30,ENTITY_NAME:31,attribute:32,attributeType:33,attributeName:34,attributeKeyTypeList:35,attributeComment:36,ATTRIBUTE_WORD:37,attributeKeyType:38,COMMA:39,ATTRIBUTE_KEY:40,COMMENT:41,cardinality:42,relType:43,ZERO_OR_ONE:44,ZERO_OR_MORE:45,ONE_OR_MORE:46,ONLY_ONE:47,NON_IDENTIFYING:48,IDENTIFYING:49,WORD:50,open_directive:51,type_directive:52,arg_directive:53,close_directive:54,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"title",24:"title_value",25:"acc_title",26:"acc_title_value",27:"acc_descr",28:"acc_descr_value",29:"acc_descr_multiline_value",30:"ALPHANUM",31:"ENTITY_NAME",37:"ATTRIBUTE_WORD",39:"COMMA",40:"ATTRIBUTE_KEY",41:"COMMENT",44:"ZERO_OR_ONE",45:"ZERO_OR_MORE",46:"ONE_OR_MORE",47:"ONLY_ONE",48:"NON_IDENTIFYING",49:"IDENTIFYING",50:"WORD",51:"open_directive",52:"type_directive",53:"arg_directive",54:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[10,2],[10,1],[17,1],[17,1],[21,1],[21,2],[32,2],[32,3],[32,3],[32,4],[33,1],[34,1],[35,1],[35,3],[38,1],[36,1],[18,3],[42,1],[42,1],[42,1],[42,1],[43,1],[43,1],[19,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(he,Ie,ee,rt,me,gt,pe){var Et=gt.length-1;switch(me){case 1:break;case 3:this.$=[];break;case 4:gt[Et-1].push(gt[Et]),this.$=gt[Et-1];break;case 5:case 6:this.$=gt[Et];break;case 7:case 8:this.$=[];break;case 12:rt.addEntity(gt[Et-4]),rt.addEntity(gt[Et-2]),rt.addRelationship(gt[Et-4],gt[Et],gt[Et-2],gt[Et-3]);break;case 13:rt.addEntity(gt[Et-3]),rt.addAttributes(gt[Et-3],gt[Et-1]);break;case 14:rt.addEntity(gt[Et-2]);break;case 15:rt.addEntity(gt[Et]);break;case 16:case 17:this.$=gt[Et].trim(),rt.setAccTitle(this.$);break;case 18:case 19:this.$=gt[Et].trim(),rt.setAccDescription(this.$);break;case 20:case 43:this.$=gt[Et];break;case 21:case 41:case 42:this.$=gt[Et].replace(/"/g,"");break;case 22:case 30:this.$=[gt[Et]];break;case 23:gt[Et].push(gt[Et-1]),this.$=gt[Et];break;case 24:this.$={attributeType:gt[Et-1],attributeName:gt[Et]};break;case 25:this.$={attributeType:gt[Et-2],attributeName:gt[Et-1],attributeKeyTypeList:gt[Et]};break;case 26:this.$={attributeType:gt[Et-2],attributeName:gt[Et-1],attributeComment:gt[Et]};break;case 27:this.$={attributeType:gt[Et-3],attributeName:gt[Et-2],attributeKeyTypeList:gt[Et-1],attributeComment:gt[Et]};break;case 28:case 29:case 32:this.$=gt[Et];break;case 31:gt[Et-2].push(gt[Et]),this.$=gt[Et-2];break;case 33:this.$=gt[Et].replace(/"/g,"");break;case 34:this.$={cardA:gt[Et],relType:gt[Et-1],cardB:gt[Et-2]};break;case 35:this.$=rt.Cardinality.ZERO_OR_ONE;break;case 36:this.$=rt.Cardinality.ZERO_OR_MORE;break;case 37:this.$=rt.Cardinality.ONE_OR_MORE;break;case 38:this.$=rt.Cardinality.ONLY_ONE;break;case 39:this.$=rt.Identification.NON_IDENTIFYING;break;case 40:this.$=rt.Identification.IDENTIFYING;break;case 44:rt.parseDirective("%%{","open_directive");break;case 45:rt.parseDirective(gt[Et],"type_directive");break;case 46:gt[Et]=gt[Et].trim().replace(/'/g,'"'),rt.parseDirective(gt[Et],"arg_directive");break;case 47:rt.parseDirective("}%%","close_directive","er");break}},table:[{3:1,4:a,7:3,12:4,51:f},{1:[3]},i(p,[2,3],{5:6}),{3:7,4:a,7:3,12:4,51:f},{13:8,52:[1,9]},{52:[2,44]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:w,25:y,27:b,29:E,30:S,31:N,51:f},{1:[2,2]},{14:23,15:[1,24],54:B},i([15,54],[2,45]),i(p,[2,8],{1:[2,1]}),i(p,[2,4]),{7:15,10:26,12:4,17:16,23:w,25:y,27:b,29:E,30:S,31:N,51:f},i(p,[2,6]),i(p,[2,7]),i(p,[2,11]),i(p,[2,15],{18:27,42:29,20:[1,28],44:R,45:j,46:$,47:V}),{24:[1,34]},{26:[1,35]},{28:[1,36]},i(p,[2,19]),i(Q,[2,20]),i(Q,[2,21]),{11:[1,37]},{16:38,53:[1,39]},{11:[2,47]},i(p,[2,5]),{17:40,30:S,31:N},{21:41,22:[1,42],32:43,33:44,37:oe},{43:46,48:[1,47],49:[1,48]},i(ce,[2,35]),i(ce,[2,36]),i(ce,[2,37]),i(ce,[2,38]),i(p,[2,16]),i(p,[2,17]),i(p,[2,18]),i(se,[2,9]),{14:49,54:B},{54:[2,46]},{15:[1,50]},{22:[1,51]},i(p,[2,14]),{21:52,22:[2,22],32:43,33:44,37:oe},{34:53,37:[1,54]},{37:[2,28]},{42:55,44:R,45:j,46:$,47:V},i(ge,[2,39]),i(ge,[2,40]),{11:[1,56]},{19:57,30:[1,60],31:[1,59],50:[1,58]},i(p,[2,13]),{22:[2,23]},i(ye,[2,24],{35:61,36:62,38:63,40:ke,41:Ae}),i([22,37,40,41],[2,29]),i([30,31],[2,34]),i(se,[2,10]),i(p,[2,12]),i(p,[2,41]),i(p,[2,42]),i(p,[2,43]),i(ye,[2,25],{36:66,39:[1,67],41:Ae}),i(ye,[2,26]),i(de,[2,30]),i(ye,[2,33]),i(de,[2,32]),i(ye,[2,27]),{38:68,40:ke},i(de,[2,31])],defaultActions:{5:[2,44],7:[2,2],25:[2,47],39:[2,46],45:[2,28],52:[2,23]},parseError:function(he,Ie){if(Ie.recoverable)this.trace(he);else{var ee=new Error(he);throw ee.hash=Ie,ee}},parse:function(he){var Ie=this,ee=[0],rt=[],me=[null],gt=[],pe=this.table,Et="",wt=0,jt=0,At=2,Bt=1,cn=gt.slice.call(arguments,1),Nn=Object.create(this.lexer),Ot={yy:{}};for(var oi in this.yy)Object.prototype.hasOwnProperty.call(this.yy,oi)&&(Ot.yy[oi]=this.yy[oi]);Nn.setInput(he,Ot.yy),Ot.yy.lexer=Nn,Ot.yy.parser=this,typeof Nn.yylloc>"u"&&(Nn.yylloc={});var kt=Nn.yylloc;gt.push(kt);var Dt=Nn.options&&Nn.options.ranges;typeof Ot.yy.parseError=="function"?this.parseError=Ot.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function vt(){var Sr;return Sr=rt.pop()||Nn.lex()||Bt,typeof Sr!="number"&&(Sr instanceof Array&&(rt=Sr,Sr=rt.pop()),Sr=Ie.symbols_[Sr]||Sr),Sr}for(var Nt,ze,Xe,Lt,Ge={},Bn,Oe,Ri,tn;;){if(ze=ee[ee.length-1],this.defaultActions[ze]?Xe=this.defaultActions[ze]:((Nt===null||typeof Nt>"u")&&(Nt=vt()),Xe=pe[ze]&&pe[ze][Nt]),typeof Xe>"u"||!Xe.length||!Xe[0]){var hi="";tn=[];for(Bn in pe[ze])this.terminals_[Bn]&&Bn>At&&tn.push("'"+this.terminals_[Bn]+"'");Nn.showPosition?hi="Parse error on line "+(wt+1)+`: +`+Nn.showPosition()+` +Expecting `+tn.join(", ")+", got '"+(this.terminals_[Nt]||Nt)+"'":hi="Parse error on line "+(wt+1)+": Unexpected "+(Nt==Bt?"end of input":"'"+(this.terminals_[Nt]||Nt)+"'"),this.parseError(hi,{text:Nn.match,token:this.terminals_[Nt]||Nt,line:Nn.yylineno,loc:kt,expected:tn})}if(Xe[0]instanceof Array&&Xe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ze+", token: "+Nt);switch(Xe[0]){case 1:ee.push(Nt),me.push(Nn.yytext),gt.push(Nn.yylloc),ee.push(Xe[1]),Nt=null,jt=Nn.yyleng,Et=Nn.yytext,wt=Nn.yylineno,kt=Nn.yylloc;break;case 2:if(Oe=this.productions_[Xe[1]][1],Ge.$=me[me.length-Oe],Ge._$={first_line:gt[gt.length-(Oe||1)].first_line,last_line:gt[gt.length-1].last_line,first_column:gt[gt.length-(Oe||1)].first_column,last_column:gt[gt.length-1].last_column},Dt&&(Ge._$.range=[gt[gt.length-(Oe||1)].range[0],gt[gt.length-1].range[1]]),Lt=this.performAction.apply(Ge,[Et,jt,wt,Ot.yy,Xe[1],me,gt].concat(cn)),typeof Lt<"u")return Lt;Oe&&(ee=ee.slice(0,-1*Oe*2),me=me.slice(0,-1*Oe),gt=gt.slice(0,-1*Oe)),ee.push(this.productions_[Xe[1]][0]),me.push(Ge.$),gt.push(Ge._$),Ri=pe[ee[ee.length-2]][ee[ee.length-1]],ee.push(Ri);break;case 3:return!0}}return!0}},te=function(){var De={EOF:1,parseError:function(Ie,ee){if(this.yy.parser)this.yy.parser.parseError(Ie,ee);else throw new Error(Ie)},setInput:function(he,Ie){return this.yy=Ie||this.yy||{},this._input=he,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var he=this._input[0];this.yytext+=he,this.yyleng++,this.offset++,this.match+=he,this.matched+=he;var Ie=he.match(/(?:\r\n?|\n).*/g);return Ie?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),he},unput:function(he){var Ie=he.length,ee=he.split(/(?:\r\n?|\n)/g);this._input=he+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ie),this.offset-=Ie;var rt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ee.length-1&&(this.yylineno-=ee.length-1);var me=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ee?(ee.length===rt.length?this.yylloc.first_column:0)+rt[rt.length-ee.length].length-ee[0].length:this.yylloc.first_column-Ie},this.options.ranges&&(this.yylloc.range=[me[0],me[0]+this.yyleng-Ie]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(he){this.unput(this.match.slice(he))},pastInput:function(){var he=this.matched.substr(0,this.matched.length-this.match.length);return(he.length>20?"...":"")+he.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var he=this.match;return he.length<20&&(he+=this._input.substr(0,20-he.length)),(he.substr(0,20)+(he.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var he=this.pastInput(),Ie=new Array(he.length+1).join("-");return he+this.upcomingInput()+` +`+Ie+"^"},test_match:function(he,Ie){var ee,rt,me;if(this.options.backtrack_lexer&&(me={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(me.yylloc.range=this.yylloc.range.slice(0))),rt=he[0].match(/(?:\r\n?|\n).*/g),rt&&(this.yylineno+=rt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:rt?rt[rt.length-1].length-rt[rt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+he[0].length},this.yytext+=he[0],this.match+=he[0],this.matches=he,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(he[0].length),this.matched+=he[0],ee=this.performAction.call(this,this.yy,this,Ie,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ee)return ee;if(this._backtrack){for(var gt in me)this[gt]=me[gt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var he,Ie,ee,rt;this._more||(this.yytext="",this.match="");for(var me=this._currentRules(),gt=0;gtIe[0].length)){if(Ie=ee,rt=gt,this.options.backtrack_lexer){if(he=this.test_match(ee,me[gt]),he!==!1)return he;if(this._backtrack){Ie=!1;continue}else return!1}else if(!this.options.flex)break}return Ie?(he=this.test_match(Ie,me[rt]),he!==!1?he:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Ie=this.next();return Ie||this.lex()},begin:function(Ie){this.conditionStack.push(Ie)},popState:function(){var Ie=this.conditionStack.length-1;return Ie>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Ie){return Ie=this.conditionStack.length-1-Math.abs(Ie||0),Ie>=0?this.conditionStack[Ie]:"INITIAL"},pushState:function(Ie){this.begin(Ie)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Ie,ee,rt,me){switch(rt){case 0:return this.begin("acc_title"),25;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),27;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.begin("open_directive"),51;case 8:return this.begin("type_directive"),52;case 9:return this.popState(),this.begin("arg_directive"),15;case 10:return this.popState(),this.popState(),54;case 11:return 53;case 12:return 11;case 13:break;case 14:return 9;case 15:return 31;case 16:return 50;case 17:return 4;case 18:return this.begin("block"),20;case 19:return 39;case 20:break;case 21:return 40;case 22:return 37;case 23:return 37;case 24:return 41;case 25:break;case 26:return this.popState(),22;case 27:return ee.yytext[0];case 28:return 44;case 29:return 46;case 30:return 46;case 31:return 46;case 32:return 44;case 33:return 44;case 34:return 45;case 35:return 45;case 36:return 45;case 37:return 45;case 38:return 45;case 39:return 46;case 40:return 45;case 41:return 46;case 42:return 47;case 43:return 47;case 44:return 47;case 45:return 47;case 46:return 44;case 47:return 45;case 48:return 46;case 49:return 48;case 50:return 49;case 51:return 49;case 52:return 48;case 53:return 48;case 54:return 48;case 55:return 30;case 56:return ee.yytext[0];case 57:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},open_directive:{rules:[8],inclusive:!1},type_directive:{rules:[9,10],inclusive:!1},arg_directive:{rules:[10,11],inclusive:!1},block:{rules:[19,20,21,22,23,24,25,26,27],inclusive:!1},INITIAL:{rules:[0,2,4,7,12,13,14,15,16,17,18,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],inclusive:!0}}};return De}();ve.lexer=te;function xe(){this.yy={}}return xe.prototype=ve,ve.Parser=xe,new xe}();A0e.parser=A0e;const EFt=A0e;let vP={},L0e=[];const TFt={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE"},_Ft={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},CFt=function(i,a,f){rd.parseDirective(this,i,a,f)},iRe=function(i){return vP[i]===void 0&&(vP[i]={attributes:[]},Fe.info("Added new entity :",i)),vP[i]},SFt={Cardinality:TFt,Identification:_Ft,parseDirective:CFt,getConfig:()=>Tt().er,addEntity:iRe,addAttributes:function(i,a){let f=iRe(i),p;for(p=a.length-1;p>=0;p--)f.attributes.push(a[p]),Fe.debug("Added attribute ",a[p].attributeName)},getEntities:()=>vP,addRelationship:function(i,a,f,p){let w={entityA:i,roleA:a,entityB:f,relSpec:p};L0e.push(w),Fe.debug("Added new relationship :",w)},getRelationships:()=>L0e,clear:function(){vP={},L0e=[],rp()},setAccTitle:ip,getAccTitle:L2,setAccDescription:M2,getAccDescription:D2,setDiagramTitle:Uw,getDiagramTitle:Ww},_5={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END"},C5={ERMarkers:_5,insertMarkers:function(i,a){let f;i.append("defs").append("marker").attr("id",_5.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),i.append("defs").append("marker").attr("id",_5.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),f=i.append("defs").append("marker").attr("id",_5.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M9,0 L9,18"),f=i.append("defs").append("marker").attr("id",_5.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M21,0 L21,18"),i.append("defs").append("marker").attr("id",_5.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),i.append("defs").append("marker").attr("id",_5.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),f=i.append("defs").append("marker").attr("id",_5.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),f=i.append("defs").append("marker").attr("id",_5.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")}},AFt=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function LFt(i){return typeof i=="string"&&AFt.test(i)}const Hd=[];for(let i=0;i<256;++i)Hd.push((i+256).toString(16).slice(1));function MFt(i,a=0){return(Hd[i[a+0]]+Hd[i[a+1]]+Hd[i[a+2]]+Hd[i[a+3]]+"-"+Hd[i[a+4]]+Hd[i[a+5]]+"-"+Hd[i[a+6]]+Hd[i[a+7]]+"-"+Hd[i[a+8]]+Hd[i[a+9]]+"-"+Hd[i[a+10]]+Hd[i[a+11]]+Hd[i[a+12]]+Hd[i[a+13]]+Hd[i[a+14]]+Hd[i[a+15]]).toLowerCase()}function DFt(i){if(!LFt(i))throw TypeError("Invalid UUID");let a;const f=new Uint8Array(16);return f[0]=(a=parseInt(i.slice(0,8),16))>>>24,f[1]=a>>>16&255,f[2]=a>>>8&255,f[3]=a&255,f[4]=(a=parseInt(i.slice(9,13),16))>>>8,f[5]=a&255,f[6]=(a=parseInt(i.slice(14,18),16))>>>8,f[7]=a&255,f[8]=(a=parseInt(i.slice(19,23),16))>>>8,f[9]=a&255,f[10]=(a=parseInt(i.slice(24,36),16))/1099511627776&255,f[11]=a/4294967296&255,f[12]=a>>>24&255,f[13]=a>>>16&255,f[14]=a>>>8&255,f[15]=a&255,f}function IFt(i){i=unescape(encodeURIComponent(i));const a=[];for(let f=0;f>>32-a}function RFt(i){const a=[1518500249,1859775393,2400959708,3395469782],f=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof i=="string"){const b=unescape(encodeURIComponent(i));i=[];for(let E=0;E>>0;j=R,R=B,B=M0e(N,30)>>>0,N=S,S=Q}f[0]=f[0]+S>>>0,f[1]=f[1]+N>>>0,f[2]=f[2]+B>>>0,f[3]=f[3]+R>>>0,f[4]=f[4]+j>>>0}return[f[0]>>24&255,f[0]>>16&255,f[0]>>8&255,f[0]&255,f[1]>>24&255,f[1]>>16&255,f[1]>>8&255,f[1]&255,f[2]>>24&255,f[2]>>16&255,f[2]>>8&255,f[2]&255,f[3]>>24&255,f[3]>>16&255,f[3]>>8&255,f[3]&255,f[4]>>24&255,f[4]>>16&255,f[4]>>8&255,f[4]&255]}const FFt=PFt("v5",80,RFt),jFt=/[^\dA-Za-z](\W)*/g;let g1={},wP=new Map;const $Ft=function(i){const a=Object.keys(i);for(const f of a)g1[f]=i[f]},HFt=(i,a,f)=>{const p=g1.entityPadding/3,w=g1.entityPadding/3,y=g1.fontSize*.85,b=a.node().getBBox(),E=[];let S=!1,N=!1,B=0,R=0,j=0,$=0,V=b.height+p*2,Q=1;f.forEach(ge=>{ge.attributeKeyTypeList!==void 0&&ge.attributeKeyTypeList.length>0&&(S=!0),ge.attributeComment!==void 0&&(N=!0)}),f.forEach(ge=>{const ye=`${a.node().id}-attr-${Q}`;let ke=0;const Ae=Yk(ge.attributeType),de=i.append("text").classed("er entityLabel",!0).attr("id",`${ye}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Tt().fontFamily).style("font-size",y+"px").text(Ae),ve=i.append("text").classed("er entityLabel",!0).attr("id",`${ye}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Tt().fontFamily).style("font-size",y+"px").text(ge.attributeName),te={};te.tn=de,te.nn=ve;const xe=de.node().getBBox(),De=ve.node().getBBox();if(B=Math.max(B,xe.width),R=Math.max(R,De.width),ke=Math.max(xe.height,De.height),S){const he=ge.attributeKeyTypeList!==void 0?ge.attributeKeyTypeList.join(","):"",Ie=i.append("text").classed("er entityLabel",!0).attr("id",`${ye}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Tt().fontFamily).style("font-size",y+"px").text(he);te.kn=Ie;const ee=Ie.node().getBBox();j=Math.max(j,ee.width),ke=Math.max(ke,ee.height)}if(N){const he=i.append("text").classed("er entityLabel",!0).attr("id",`${ye}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Tt().fontFamily).style("font-size",y+"px").text(ge.attributeComment||"");te.cn=he;const Ie=he.node().getBBox();$=Math.max($,Ie.width),ke=Math.max(ke,Ie.height)}te.height=ke,E.push(te),V+=ke+p*2,Q+=1});let oe=4;S&&(oe+=2),N&&(oe+=2);const ce=B+R+j+$,se={width:Math.max(g1.minEntityWidth,Math.max(b.width+g1.entityPadding*2,ce+w*oe)),height:f.length>0?V:Math.max(g1.minEntityHeight,b.height+g1.entityPadding*2)};if(f.length>0){const ge=Math.max(0,(se.width-ce-w*oe)/(oe/2));a.attr("transform","translate("+se.width/2+","+(p+b.height/2)+")");let ye=b.height+p*2,ke="attributeBoxOdd";E.forEach(Ae=>{const de=ye+p+Ae.height/2;Ae.tn.attr("transform","translate("+w+","+de+")");const ve=i.insert("rect","#"+Ae.tn.node().id).classed(`er ${ke}`,!0).attr("x",0).attr("y",ye).attr("width",B+w*2+ge).attr("height",Ae.height+p*2),te=parseFloat(ve.attr("x"))+parseFloat(ve.attr("width"));Ae.nn.attr("transform","translate("+(te+w)+","+de+")");const xe=i.insert("rect","#"+Ae.nn.node().id).classed(`er ${ke}`,!0).attr("x",te).attr("y",ye).attr("width",R+w*2+ge).attr("height",Ae.height+p*2);let De=parseFloat(xe.attr("x"))+parseFloat(xe.attr("width"));if(S){Ae.kn.attr("transform","translate("+(De+w)+","+de+")");const he=i.insert("rect","#"+Ae.kn.node().id).classed(`er ${ke}`,!0).attr("x",De).attr("y",ye).attr("width",j+w*2+ge).attr("height",Ae.height+p*2);De=parseFloat(he.attr("x"))+parseFloat(he.attr("width"))}N&&(Ae.cn.attr("transform","translate("+(De+w)+","+de+")"),i.insert("rect","#"+Ae.cn.node().id).classed(`er ${ke}`,"true").attr("x",De).attr("y",ye).attr("width",$+w*2+ge).attr("height",Ae.height+p*2)),ye+=Ae.height+p*2,ke=ke==="attributeBoxOdd"?"attributeBoxEven":"attributeBoxOdd"})}else se.height=Math.max(g1.minEntityHeight,V),a.attr("transform","translate("+se.width/2+","+se.height/2+")");return se},zFt=function(i,a,f){const p=Object.keys(a);let w;return p.forEach(function(y){const b=KFt(y,"entity");wP.set(y,b);const E=i.append("g").attr("id",b);w=w===void 0?b:w;const S="text-"+b,N=E.append("text").classed("er entityLabel",!0).attr("id",S).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",Tt().fontFamily).style("font-size",g1.fontSize+"px").text(y),{width:B,height:R}=HFt(E,N,a[y].attributes),$=E.insert("rect","#"+S).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",B).attr("height",R).node().getBBox();f.setNode(b,{width:$.width,height:$.height,shape:"rect",id:b})}),w},GFt=function(i,a){a.nodes().forEach(function(f){f!==void 0&&a.node(f)!==void 0&&i.select("#"+f).attr("transform","translate("+(a.node(f).x-a.node(f).width/2)+","+(a.node(f).y-a.node(f).height/2)+" )")})},sRe=function(i){return(i.entityA+i.roleA+i.entityB).replace(/\s/g,"")},qFt=function(i,a){return i.forEach(function(f){a.setEdge(wP.get(f.entityA),wP.get(f.entityB),{relationship:f},sRe(f))}),i};let aRe=0;const VFt=function(i,a,f,p,w){aRe++;const y=f.edge(wP.get(a.entityA),wP.get(a.entityB),sRe(a)),b=WE().x(function(V){return V.x}).y(function(V){return V.y}).curve(SA),E=i.insert("path","#"+p).classed("er relationshipLine",!0).attr("d",b(y.points)).style("stroke",g1.stroke).style("fill","none");a.relSpec.relType===w.db.Identification.NON_IDENTIFYING&&E.attr("stroke-dasharray","8,8");let S="";switch(g1.arrowMarkerAbsolute&&(S=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,S=S.replace(/\(/g,"\\("),S=S.replace(/\)/g,"\\)")),a.relSpec.cardA){case w.db.Cardinality.ZERO_OR_ONE:E.attr("marker-end","url("+S+"#"+C5.ERMarkers.ZERO_OR_ONE_END+")");break;case w.db.Cardinality.ZERO_OR_MORE:E.attr("marker-end","url("+S+"#"+C5.ERMarkers.ZERO_OR_MORE_END+")");break;case w.db.Cardinality.ONE_OR_MORE:E.attr("marker-end","url("+S+"#"+C5.ERMarkers.ONE_OR_MORE_END+")");break;case w.db.Cardinality.ONLY_ONE:E.attr("marker-end","url("+S+"#"+C5.ERMarkers.ONLY_ONE_END+")");break}switch(a.relSpec.cardB){case w.db.Cardinality.ZERO_OR_ONE:E.attr("marker-start","url("+S+"#"+C5.ERMarkers.ZERO_OR_ONE_START+")");break;case w.db.Cardinality.ZERO_OR_MORE:E.attr("marker-start","url("+S+"#"+C5.ERMarkers.ZERO_OR_MORE_START+")");break;case w.db.Cardinality.ONE_OR_MORE:E.attr("marker-start","url("+S+"#"+C5.ERMarkers.ONE_OR_MORE_START+")");break;case w.db.Cardinality.ONLY_ONE:E.attr("marker-start","url("+S+"#"+C5.ERMarkers.ONLY_ONE_START+")");break}const N=E.node().getTotalLength(),B=E.node().getPointAtLength(N*.5),R="rel"+aRe,$=i.append("text").classed("er relationshipLabel",!0).attr("id",R).attr("x",B.x).attr("y",B.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",Tt().fontFamily).style("font-size",g1.fontSize+"px").text(a.roleA).node().getBBox();i.insert("rect","#"+R).classed("er relationshipLabelBox",!0).attr("x",B.x-$.width/2).attr("y",B.y-$.height/2).attr("width",$.width).attr("height",$.height)},UFt=function(i,a,f,p){g1=Tt().er,Fe.info("Drawing ER diagram");const w=Tt().securityLevel;let y;w==="sandbox"&&(y=Cr("#i"+a));const E=Cr(w==="sandbox"?y.nodes()[0].contentDocument.body:"body").select(`[id='${a}']`);C5.insertMarkers(E,g1);let S;S=new zf({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:g1.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});const N=zFt(E,p.db.getEntities(),S),B=qFt(p.db.getRelationships(),S);tL(S),GFt(E,S),B.forEach(function(Q){VFt(E,Q,S,N,p)});const R=g1.diagramPadding;co.insertTitle(E,"entityTitleText",g1.titleTopMargin,p.db.getDiagramTitle());const j=E.node().getBBox(),$=j.width+R*2,V=j.height+R*2;Vw(E,V,$,g1.useMaxWidth),E.attr("viewBox",`${j.x-R} ${j.y-R} ${$} ${V}`)},WFt="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function KFt(i="",a=""){const f=i.replace(jFt,"");return`${oRe(a)}${oRe(f)}${FFt(i,WFt)}`}function oRe(i=""){return i.length>0?`${i}-`:""}const YFt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:EFt,db:SFt,renderer:{setConf:$Ft,draw:UFt},styles:i=>` + .entityBox { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + } + + .attributeBoxOdd { + fill: ${i.attributeBackgroundColorOdd}; + stroke: ${i.nodeBorder}; + } + + .attributeBoxEven { + fill: ${i.attributeBackgroundColorEven}; + stroke: ${i.nodeBorder}; + } + + .relationshipLabelBox { + fill: ${i.tertiaryColor}; + opacity: 0.7; + background-color: ${i.tertiaryColor}; + rect { + opacity: 0.5; + } + } + + .relationshipLine { + stroke: ${i.lineColor}; + } + + .entityTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`}},Symbol.toStringTag,{value:"Module"}));var D0e=function(){var i=function(ve,te,xe,De){for(xe=xe||{},De=ve.length;De--;xe[ve[De]]=te);return xe},a=[1,4],f=[1,7],p=[1,5],w=[1,9],y=[1,6],b=[2,6],E=[1,16],S=[6,8,14,20,22,24,25,27,29,32,37,40,50,55],N=[8,14,20,22,24,25,27,29,32,37,40],B=[8,13,14,20,22,24,25,27,29,32,37,40],R=[1,26],j=[6,8,14,50,55],$=[8,14,55],V=[1,53],Q=[1,52],oe=[8,14,30,33,35,38,55],ce=[1,67],se=[1,68],ge=[1,69],ye=[8,14,33,35,42,55],ke={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,GG:6,document:7,EOF:8,":":9,DIR:10,options:11,body:12,OPT:13,NL:14,line:15,statement:16,commitStatement:17,mergeStatement:18,cherryPickStatement:19,acc_title:20,acc_title_value:21,acc_descr:22,acc_descr_value:23,acc_descr_multiline_value:24,section:25,branchStatement:26,CHECKOUT:27,ref:28,BRANCH:29,ORDER:30,NUM:31,CHERRY_PICK:32,COMMIT_ID:33,STR:34,COMMIT_TAG:35,EMPTYSTR:36,MERGE:37,COMMIT_TYPE:38,commitType:39,COMMIT:40,commit_arg:41,COMMIT_MSG:42,NORMAL:43,REVERSE:44,HIGHLIGHT:45,openDirective:46,typeDirective:47,closeDirective:48,argDirective:49,open_directive:50,type_directive:51,arg_directive:52,close_directive:53,ID:54,";":55,$accept:0,$end:1},terminals_:{2:"error",6:"GG",8:"EOF",9:":",10:"DIR",13:"OPT",14:"NL",20:"acc_title",21:"acc_title_value",22:"acc_descr",23:"acc_descr_value",24:"acc_descr_multiline_value",25:"section",27:"CHECKOUT",29:"BRANCH",30:"ORDER",31:"NUM",32:"CHERRY_PICK",33:"COMMIT_ID",34:"STR",35:"COMMIT_TAG",36:"EMPTYSTR",37:"MERGE",38:"COMMIT_TYPE",40:"COMMIT",42:"COMMIT_MSG",43:"NORMAL",44:"REVERSE",45:"HIGHLIGHT",50:"open_directive",51:"type_directive",52:"arg_directive",53:"close_directive",54:"ID",55:";"},productions_:[0,[3,2],[3,2],[3,3],[3,4],[3,5],[7,0],[7,2],[11,2],[11,1],[12,0],[12,2],[15,2],[15,1],[16,1],[16,1],[16,1],[16,2],[16,2],[16,1],[16,1],[16,1],[16,2],[26,2],[26,4],[19,3],[19,5],[19,5],[19,5],[19,5],[18,2],[18,4],[18,4],[18,4],[18,6],[18,6],[18,6],[18,6],[18,6],[18,6],[18,8],[18,8],[18,8],[18,8],[18,8],[18,8],[17,2],[17,3],[17,3],[17,5],[17,5],[17,3],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,3],[17,5],[17,5],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[41,0],[41,1],[39,1],[39,1],[39,1],[5,3],[5,5],[46,1],[47,1],[49,1],[48,1],[28,1],[28,1],[4,1],[4,1],[4,1]],performAction:function(te,xe,De,he,Ie,ee,rt){var me=ee.length-1;switch(Ie){case 3:return ee[me];case 4:return ee[me-1];case 5:return he.setDirection(ee[me-3]),ee[me-1];case 7:he.setOptions(ee[me-1]),this.$=ee[me];break;case 8:ee[me-1]+=ee[me],this.$=ee[me-1];break;case 10:this.$=[];break;case 11:ee[me-1].push(ee[me]),this.$=ee[me-1];break;case 12:this.$=ee[me-1];break;case 17:this.$=ee[me].trim(),he.setAccTitle(this.$);break;case 18:case 19:this.$=ee[me].trim(),he.setAccDescription(this.$);break;case 20:he.addSection(ee[me].substr(8)),this.$=ee[me].substr(8);break;case 22:he.checkout(ee[me]);break;case 23:he.branch(ee[me]);break;case 24:he.branch(ee[me-2],ee[me]);break;case 25:he.cherryPick(ee[me],"",void 0);break;case 26:he.cherryPick(ee[me-2],"",ee[me]);break;case 27:case 29:he.cherryPick(ee[me-2],"","");break;case 28:he.cherryPick(ee[me],"",ee[me-2]);break;case 30:he.merge(ee[me],"","","");break;case 31:he.merge(ee[me-2],ee[me],"","");break;case 32:he.merge(ee[me-2],"",ee[me],"");break;case 33:he.merge(ee[me-2],"","",ee[me]);break;case 34:he.merge(ee[me-4],ee[me],"",ee[me-2]);break;case 35:he.merge(ee[me-4],"",ee[me],ee[me-2]);break;case 36:he.merge(ee[me-4],"",ee[me-2],ee[me]);break;case 37:he.merge(ee[me-4],ee[me-2],ee[me],"");break;case 38:he.merge(ee[me-4],ee[me-2],"",ee[me]);break;case 39:he.merge(ee[me-4],ee[me],ee[me-2],"");break;case 40:he.merge(ee[me-6],ee[me-4],ee[me-2],ee[me]);break;case 41:he.merge(ee[me-6],ee[me],ee[me-4],ee[me-2]);break;case 42:he.merge(ee[me-6],ee[me-4],ee[me],ee[me-2]);break;case 43:he.merge(ee[me-6],ee[me-2],ee[me-4],ee[me]);break;case 44:he.merge(ee[me-6],ee[me],ee[me-2],ee[me-4]);break;case 45:he.merge(ee[me-6],ee[me-2],ee[me],ee[me-4]);break;case 46:he.commit(ee[me]);break;case 47:he.commit("","",he.commitType.NORMAL,ee[me]);break;case 48:he.commit("","",ee[me],"");break;case 49:he.commit("","",ee[me],ee[me-2]);break;case 50:he.commit("","",ee[me-2],ee[me]);break;case 51:he.commit("",ee[me],he.commitType.NORMAL,"");break;case 52:he.commit("",ee[me-2],he.commitType.NORMAL,ee[me]);break;case 53:he.commit("",ee[me],he.commitType.NORMAL,ee[me-2]);break;case 54:he.commit("",ee[me-2],ee[me],"");break;case 55:he.commit("",ee[me],ee[me-2],"");break;case 56:he.commit("",ee[me-4],ee[me-2],ee[me]);break;case 57:he.commit("",ee[me-4],ee[me],ee[me-2]);break;case 58:he.commit("",ee[me-2],ee[me-4],ee[me]);break;case 59:he.commit("",ee[me],ee[me-4],ee[me-2]);break;case 60:he.commit("",ee[me],ee[me-2],ee[me-4]);break;case 61:he.commit("",ee[me-2],ee[me],ee[me-4]);break;case 62:he.commit(ee[me],"",he.commitType.NORMAL,"");break;case 63:he.commit(ee[me],"",he.commitType.NORMAL,ee[me-2]);break;case 64:he.commit(ee[me-2],"",he.commitType.NORMAL,ee[me]);break;case 65:he.commit(ee[me-2],"",ee[me],"");break;case 66:he.commit(ee[me],"",ee[me-2],"");break;case 67:he.commit(ee[me],ee[me-2],he.commitType.NORMAL,"");break;case 68:he.commit(ee[me-2],ee[me],he.commitType.NORMAL,"");break;case 69:he.commit(ee[me-4],"",ee[me-2],ee[me]);break;case 70:he.commit(ee[me-4],"",ee[me],ee[me-2]);break;case 71:he.commit(ee[me-2],"",ee[me-4],ee[me]);break;case 72:he.commit(ee[me],"",ee[me-4],ee[me-2]);break;case 73:he.commit(ee[me],"",ee[me-2],ee[me-4]);break;case 74:he.commit(ee[me-2],"",ee[me],ee[me-4]);break;case 75:he.commit(ee[me-4],ee[me],ee[me-2],"");break;case 76:he.commit(ee[me-4],ee[me-2],ee[me],"");break;case 77:he.commit(ee[me-2],ee[me],ee[me-4],"");break;case 78:he.commit(ee[me],ee[me-2],ee[me-4],"");break;case 79:he.commit(ee[me],ee[me-4],ee[me-2],"");break;case 80:he.commit(ee[me-2],ee[me-4],ee[me],"");break;case 81:he.commit(ee[me-4],ee[me],he.commitType.NORMAL,ee[me-2]);break;case 82:he.commit(ee[me-4],ee[me-2],he.commitType.NORMAL,ee[me]);break;case 83:he.commit(ee[me-2],ee[me],he.commitType.NORMAL,ee[me-4]);break;case 84:he.commit(ee[me],ee[me-2],he.commitType.NORMAL,ee[me-4]);break;case 85:he.commit(ee[me],ee[me-4],he.commitType.NORMAL,ee[me-2]);break;case 86:he.commit(ee[me-2],ee[me-4],he.commitType.NORMAL,ee[me]);break;case 87:he.commit(ee[me-6],ee[me-4],ee[me-2],ee[me]);break;case 88:he.commit(ee[me-6],ee[me-4],ee[me],ee[me-2]);break;case 89:he.commit(ee[me-6],ee[me-2],ee[me-4],ee[me]);break;case 90:he.commit(ee[me-6],ee[me],ee[me-4],ee[me-2]);break;case 91:he.commit(ee[me-6],ee[me-2],ee[me],ee[me-4]);break;case 92:he.commit(ee[me-6],ee[me],ee[me-2],ee[me-4]);break;case 93:he.commit(ee[me-4],ee[me-6],ee[me-2],ee[me]);break;case 94:he.commit(ee[me-4],ee[me-6],ee[me],ee[me-2]);break;case 95:he.commit(ee[me-2],ee[me-6],ee[me-4],ee[me]);break;case 96:he.commit(ee[me],ee[me-6],ee[me-4],ee[me-2]);break;case 97:he.commit(ee[me-2],ee[me-6],ee[me],ee[me-4]);break;case 98:he.commit(ee[me],ee[me-6],ee[me-2],ee[me-4]);break;case 99:he.commit(ee[me],ee[me-4],ee[me-2],ee[me-6]);break;case 100:he.commit(ee[me-2],ee[me-4],ee[me],ee[me-6]);break;case 101:he.commit(ee[me],ee[me-2],ee[me-4],ee[me-6]);break;case 102:he.commit(ee[me-2],ee[me],ee[me-4],ee[me-6]);break;case 103:he.commit(ee[me-4],ee[me-2],ee[me],ee[me-6]);break;case 104:he.commit(ee[me-4],ee[me],ee[me-2],ee[me-6]);break;case 105:he.commit(ee[me-2],ee[me-4],ee[me-6],ee[me]);break;case 106:he.commit(ee[me],ee[me-4],ee[me-6],ee[me-2]);break;case 107:he.commit(ee[me-2],ee[me],ee[me-6],ee[me-4]);break;case 108:he.commit(ee[me],ee[me-2],ee[me-6],ee[me-4]);break;case 109:he.commit(ee[me-4],ee[me-2],ee[me-6],ee[me]);break;case 110:he.commit(ee[me-4],ee[me],ee[me-6],ee[me-2]);break;case 111:this.$="";break;case 112:this.$=ee[me];break;case 113:this.$=he.commitType.NORMAL;break;case 114:this.$=he.commitType.REVERSE;break;case 115:this.$=he.commitType.HIGHLIGHT;break;case 118:he.parseDirective("%%{","open_directive");break;case 119:he.parseDirective(ee[me],"type_directive");break;case 120:ee[me]=ee[me].trim().replace(/'/g,'"'),he.parseDirective(ee[me],"arg_directive");break;case 121:he.parseDirective("}%%","close_directive","gitGraph");break}},table:[{3:1,4:2,5:3,6:a,8:f,14:p,46:8,50:w,55:y},{1:[3]},{3:10,4:2,5:3,6:a,8:f,14:p,46:8,50:w,55:y},{3:11,4:2,5:3,6:a,8:f,14:p,46:8,50:w,55:y},{7:12,8:b,9:[1,13],10:[1,14],11:15,14:E},i(S,[2,124]),i(S,[2,125]),i(S,[2,126]),{47:17,51:[1,18]},{51:[2,118]},{1:[2,1]},{1:[2,2]},{8:[1,19]},{7:20,8:b,11:15,14:E},{9:[1,21]},i(N,[2,10],{12:22,13:[1,23]}),i(B,[2,9]),{9:[1,25],48:24,53:R},i([9,53],[2,119]),{1:[2,3]},{8:[1,27]},{7:28,8:b,11:15,14:E},{8:[2,7],14:[1,31],15:29,16:30,17:32,18:33,19:34,20:[1,35],22:[1,36],24:[1,37],25:[1,38],26:39,27:[1,40],29:[1,44],32:[1,43],37:[1,42],40:[1,41]},i(B,[2,8]),i(j,[2,116]),{49:45,52:[1,46]},i(j,[2,121]),{1:[2,4]},{8:[1,47]},i(N,[2,11]),{4:48,8:f,14:p,55:y},i(N,[2,13]),i($,[2,14]),i($,[2,15]),i($,[2,16]),{21:[1,49]},{23:[1,50]},i($,[2,19]),i($,[2,20]),i($,[2,21]),{28:51,34:V,54:Q},i($,[2,111],{41:54,33:[1,57],34:[1,59],35:[1,55],38:[1,56],42:[1,58]}),{28:60,34:V,54:Q},{33:[1,61],35:[1,62]},{28:63,34:V,54:Q},{48:64,53:R},{53:[2,120]},{1:[2,5]},i(N,[2,12]),i($,[2,17]),i($,[2,18]),i($,[2,22]),i(oe,[2,122]),i(oe,[2,123]),i($,[2,46]),{34:[1,65]},{39:66,43:ce,44:se,45:ge},{34:[1,70]},{34:[1,71]},i($,[2,112]),i($,[2,30],{33:[1,72],35:[1,74],38:[1,73]}),{34:[1,75]},{34:[1,76],36:[1,77]},i($,[2,23],{30:[1,78]}),i(j,[2,117]),i($,[2,47],{33:[1,80],38:[1,79],42:[1,81]}),i($,[2,48],{33:[1,83],35:[1,82],42:[1,84]}),i(ye,[2,113]),i(ye,[2,114]),i(ye,[2,115]),i($,[2,51],{35:[1,85],38:[1,86],42:[1,87]}),i($,[2,62],{33:[1,90],35:[1,88],38:[1,89]}),{34:[1,91]},{39:92,43:ce,44:se,45:ge},{34:[1,93]},i($,[2,25],{35:[1,94]}),{33:[1,95]},{33:[1,96]},{31:[1,97]},{39:98,43:ce,44:se,45:ge},{34:[1,99]},{34:[1,100]},{34:[1,101]},{34:[1,102]},{34:[1,103]},{34:[1,104]},{39:105,43:ce,44:se,45:ge},{34:[1,106]},{34:[1,107]},{39:108,43:ce,44:se,45:ge},{34:[1,109]},i($,[2,31],{35:[1,111],38:[1,110]}),i($,[2,32],{33:[1,113],35:[1,112]}),i($,[2,33],{33:[1,114],38:[1,115]}),{34:[1,116],36:[1,117]},{34:[1,118]},{34:[1,119]},i($,[2,24]),i($,[2,49],{33:[1,120],42:[1,121]}),i($,[2,53],{38:[1,122],42:[1,123]}),i($,[2,63],{33:[1,125],38:[1,124]}),i($,[2,50],{33:[1,126],42:[1,127]}),i($,[2,55],{35:[1,128],42:[1,129]}),i($,[2,66],{33:[1,131],35:[1,130]}),i($,[2,52],{38:[1,132],42:[1,133]}),i($,[2,54],{35:[1,134],42:[1,135]}),i($,[2,67],{35:[1,137],38:[1,136]}),i($,[2,64],{33:[1,139],38:[1,138]}),i($,[2,65],{33:[1,141],35:[1,140]}),i($,[2,68],{35:[1,143],38:[1,142]}),{39:144,43:ce,44:se,45:ge},{34:[1,145]},{34:[1,146]},{34:[1,147]},{34:[1,148]},{39:149,43:ce,44:se,45:ge},i($,[2,26]),i($,[2,27]),i($,[2,28]),i($,[2,29]),{34:[1,150]},{34:[1,151]},{39:152,43:ce,44:se,45:ge},{34:[1,153]},{39:154,43:ce,44:se,45:ge},{34:[1,155]},{34:[1,156]},{34:[1,157]},{34:[1,158]},{34:[1,159]},{34:[1,160]},{34:[1,161]},{39:162,43:ce,44:se,45:ge},{34:[1,163]},{34:[1,164]},{34:[1,165]},{39:166,43:ce,44:se,45:ge},{34:[1,167]},{39:168,43:ce,44:se,45:ge},{34:[1,169]},{34:[1,170]},{34:[1,171]},{39:172,43:ce,44:se,45:ge},{34:[1,173]},i($,[2,37],{35:[1,174]}),i($,[2,38],{38:[1,175]}),i($,[2,36],{33:[1,176]}),i($,[2,39],{35:[1,177]}),i($,[2,34],{38:[1,178]}),i($,[2,35],{33:[1,179]}),i($,[2,60],{42:[1,180]}),i($,[2,73],{33:[1,181]}),i($,[2,61],{42:[1,182]}),i($,[2,84],{38:[1,183]}),i($,[2,74],{33:[1,184]}),i($,[2,83],{38:[1,185]}),i($,[2,59],{42:[1,186]}),i($,[2,72],{33:[1,187]}),i($,[2,58],{42:[1,188]}),i($,[2,78],{35:[1,189]}),i($,[2,71],{33:[1,190]}),i($,[2,77],{35:[1,191]}),i($,[2,57],{42:[1,192]}),i($,[2,85],{38:[1,193]}),i($,[2,56],{42:[1,194]}),i($,[2,79],{35:[1,195]}),i($,[2,80],{35:[1,196]}),i($,[2,86],{38:[1,197]}),i($,[2,70],{33:[1,198]}),i($,[2,81],{38:[1,199]}),i($,[2,69],{33:[1,200]}),i($,[2,75],{35:[1,201]}),i($,[2,76],{35:[1,202]}),i($,[2,82],{38:[1,203]}),{34:[1,204]},{39:205,43:ce,44:se,45:ge},{34:[1,206]},{34:[1,207]},{39:208,43:ce,44:se,45:ge},{34:[1,209]},{34:[1,210]},{34:[1,211]},{34:[1,212]},{39:213,43:ce,44:se,45:ge},{34:[1,214]},{39:215,43:ce,44:se,45:ge},{34:[1,216]},{34:[1,217]},{34:[1,218]},{34:[1,219]},{34:[1,220]},{34:[1,221]},{34:[1,222]},{39:223,43:ce,44:se,45:ge},{34:[1,224]},{34:[1,225]},{34:[1,226]},{39:227,43:ce,44:se,45:ge},{34:[1,228]},{39:229,43:ce,44:se,45:ge},{34:[1,230]},{34:[1,231]},{34:[1,232]},{39:233,43:ce,44:se,45:ge},i($,[2,40]),i($,[2,42]),i($,[2,41]),i($,[2,43]),i($,[2,45]),i($,[2,44]),i($,[2,101]),i($,[2,102]),i($,[2,99]),i($,[2,100]),i($,[2,104]),i($,[2,103]),i($,[2,108]),i($,[2,107]),i($,[2,106]),i($,[2,105]),i($,[2,110]),i($,[2,109]),i($,[2,98]),i($,[2,97]),i($,[2,96]),i($,[2,95]),i($,[2,93]),i($,[2,94]),i($,[2,92]),i($,[2,91]),i($,[2,90]),i($,[2,89]),i($,[2,87]),i($,[2,88])],defaultActions:{9:[2,118],10:[2,1],11:[2,2],19:[2,3],27:[2,4],46:[2,120],47:[2,5]},parseError:function(te,xe){if(xe.recoverable)this.trace(te);else{var De=new Error(te);throw De.hash=xe,De}},parse:function(te){var xe=this,De=[0],he=[],Ie=[null],ee=[],rt=this.table,me="",gt=0,pe=0,Et=2,wt=1,jt=ee.slice.call(arguments,1),At=Object.create(this.lexer),Bt={yy:{}};for(var cn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,cn)&&(Bt.yy[cn]=this.yy[cn]);At.setInput(te,Bt.yy),Bt.yy.lexer=At,Bt.yy.parser=this,typeof At.yylloc>"u"&&(At.yylloc={});var Nn=At.yylloc;ee.push(Nn);var Ot=At.options&&At.options.ranges;typeof Bt.yy.parseError=="function"?this.parseError=Bt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function oi(){var Ri;return Ri=he.pop()||At.lex()||wt,typeof Ri!="number"&&(Ri instanceof Array&&(he=Ri,Ri=he.pop()),Ri=xe.symbols_[Ri]||Ri),Ri}for(var kt,Dt,vt,Nt,ze={},Xe,Lt,Ge,Bn;;){if(Dt=De[De.length-1],this.defaultActions[Dt]?vt=this.defaultActions[Dt]:((kt===null||typeof kt>"u")&&(kt=oi()),vt=rt[Dt]&&rt[Dt][kt]),typeof vt>"u"||!vt.length||!vt[0]){var Oe="";Bn=[];for(Xe in rt[Dt])this.terminals_[Xe]&&Xe>Et&&Bn.push("'"+this.terminals_[Xe]+"'");At.showPosition?Oe="Parse error on line "+(gt+1)+`: +`+At.showPosition()+` +Expecting `+Bn.join(", ")+", got '"+(this.terminals_[kt]||kt)+"'":Oe="Parse error on line "+(gt+1)+": Unexpected "+(kt==wt?"end of input":"'"+(this.terminals_[kt]||kt)+"'"),this.parseError(Oe,{text:At.match,token:this.terminals_[kt]||kt,line:At.yylineno,loc:Nn,expected:Bn})}if(vt[0]instanceof Array&&vt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Dt+", token: "+kt);switch(vt[0]){case 1:De.push(kt),Ie.push(At.yytext),ee.push(At.yylloc),De.push(vt[1]),kt=null,pe=At.yyleng,me=At.yytext,gt=At.yylineno,Nn=At.yylloc;break;case 2:if(Lt=this.productions_[vt[1]][1],ze.$=Ie[Ie.length-Lt],ze._$={first_line:ee[ee.length-(Lt||1)].first_line,last_line:ee[ee.length-1].last_line,first_column:ee[ee.length-(Lt||1)].first_column,last_column:ee[ee.length-1].last_column},Ot&&(ze._$.range=[ee[ee.length-(Lt||1)].range[0],ee[ee.length-1].range[1]]),Nt=this.performAction.apply(ze,[me,pe,gt,Bt.yy,vt[1],Ie,ee].concat(jt)),typeof Nt<"u")return Nt;Lt&&(De=De.slice(0,-1*Lt*2),Ie=Ie.slice(0,-1*Lt),ee=ee.slice(0,-1*Lt)),De.push(this.productions_[vt[1]][0]),Ie.push(ze.$),ee.push(ze._$),Ge=rt[De[De.length-2]][De[De.length-1]],De.push(Ge);break;case 3:return!0}}return!0}},Ae=function(){var ve={EOF:1,parseError:function(xe,De){if(this.yy.parser)this.yy.parser.parseError(xe,De);else throw new Error(xe)},setInput:function(te,xe){return this.yy=xe||this.yy||{},this._input=te,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var te=this._input[0];this.yytext+=te,this.yyleng++,this.offset++,this.match+=te,this.matched+=te;var xe=te.match(/(?:\r\n?|\n).*/g);return xe?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),te},unput:function(te){var xe=te.length,De=te.split(/(?:\r\n?|\n)/g);this._input=te+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-xe),this.offset-=xe;var he=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),De.length-1&&(this.yylineno-=De.length-1);var Ie=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:De?(De.length===he.length?this.yylloc.first_column:0)+he[he.length-De.length].length-De[0].length:this.yylloc.first_column-xe},this.options.ranges&&(this.yylloc.range=[Ie[0],Ie[0]+this.yyleng-xe]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(te){this.unput(this.match.slice(te))},pastInput:function(){var te=this.matched.substr(0,this.matched.length-this.match.length);return(te.length>20?"...":"")+te.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var te=this.match;return te.length<20&&(te+=this._input.substr(0,20-te.length)),(te.substr(0,20)+(te.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var te=this.pastInput(),xe=new Array(te.length+1).join("-");return te+this.upcomingInput()+` +`+xe+"^"},test_match:function(te,xe){var De,he,Ie;if(this.options.backtrack_lexer&&(Ie={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ie.yylloc.range=this.yylloc.range.slice(0))),he=te[0].match(/(?:\r\n?|\n).*/g),he&&(this.yylineno+=he.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:he?he[he.length-1].length-he[he.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+te[0].length},this.yytext+=te[0],this.match+=te[0],this.matches=te,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(te[0].length),this.matched+=te[0],De=this.performAction.call(this,this.yy,this,xe,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),De)return De;if(this._backtrack){for(var ee in Ie)this[ee]=Ie[ee];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var te,xe,De,he;this._more||(this.yytext="",this.match="");for(var Ie=this._currentRules(),ee=0;eexe[0].length)){if(xe=De,he=ee,this.options.backtrack_lexer){if(te=this.test_match(De,Ie[ee]),te!==!1)return te;if(this._backtrack){xe=!1;continue}else return!1}else if(!this.options.flex)break}return xe?(te=this.test_match(xe,Ie[he]),te!==!1?te:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var xe=this.next();return xe||this.lex()},begin:function(xe){this.conditionStack.push(xe)},popState:function(){var xe=this.conditionStack.length-1;return xe>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(xe){return xe=this.conditionStack.length-1-Math.abs(xe||0),xe>=0?this.conditionStack[xe]:"INITIAL"},pushState:function(xe){this.begin(xe)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(xe,De,he,Ie){switch(he){case 0:return this.begin("open_directive"),50;case 1:return this.begin("type_directive"),51;case 2:return this.popState(),this.begin("arg_directive"),9;case 3:return this.popState(),this.popState(),53;case 4:return 52;case 5:return this.begin("acc_title"),20;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),22;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:return 14;case 13:break;case 14:break;case 15:return 6;case 16:return 40;case 17:return 33;case 18:return 38;case 19:return 42;case 20:return 43;case 21:return 44;case 22:return 45;case 23:return 35;case 24:return 29;case 25:return 30;case 26:return 37;case 27:return 32;case 28:return 27;case 29:return 10;case 30:return 10;case 31:return 9;case 32:return"CARET";case 33:this.begin("options");break;case 34:this.popState();break;case 35:return 13;case 36:return 36;case 37:this.begin("string");break;case 38:this.popState();break;case 39:return 34;case 40:return 31;case 41:return 54;case 42:return 8}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit(?=\s|$))/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\b)/i,/^(?:REVERSE\b)/i,/^(?:HIGHLIGHT\b)/i,/^(?:tag:)/i,/^(?:branch(?=\s|$))/i,/^(?:order:)/i,/^(?:merge(?=\s|$))/i,/^(?:cherry-pick(?=\s|$))/i,/^(?:checkout(?=\s|$))/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:[ \r\n\t]+end\b)/i,/^(?:[\s\S]+(?=[ \r\n\t]+end))/i,/^(?:["]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[0-9]+(?=\s|$))/i,/^(?:\w([-\./\w]*[-\w])?)/i,/^(?:$)/i,/^(?:\s+)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},options:{rules:[34,35],inclusive:!1},string:{rules:[38,39],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,36,37,40,41,42,43],inclusive:!0}}};return ve}();ke.lexer=Ae;function de(){this.yy={}}return de.prototype=ke,ke.Parser=de,new de}();D0e.parser=D0e;const XFt=D0e;let yK=Tt().gitGraph.mainBranchName,QFt=Tt().gitGraph.mainBranchOrder,p1={},og=null,mP={};mP[yK]={name:yK,order:QFt};let Gf={};Gf[yK]=og;let id=yK,cRe="LR",h9=0;function I0e(){return OIe({length:7})}const ZFt=function(i,a,f){rd.parseDirective(this,i,a,f)};function JFt(i,a){const f=Object.create(null);return i.reduce((p,w)=>{const y=a(w);return f[y]||(f[y]=!0,p.push(w)),p},[])}const ejt=function(i){cRe=i};let uRe={};const tjt=function(i){Fe.debug("options str",i),i=i&&i.trim(),i=i||"{}";try{uRe=JSON.parse(i)}catch(a){Fe.error("error while parsing gitGraph options",a.message)}},njt=function(){return uRe},rjt=function(i,a,f,p){Fe.debug("Entering commit:",i,a,f,p),a=Wa.sanitizeText(a,Tt()),i=Wa.sanitizeText(i,Tt()),p=Wa.sanitizeText(p,Tt());const w={id:a||h9+"-"+I0e(),message:i,seq:h9++,type:f||yP.NORMAL,tag:p||"",parents:og==null?[]:[og.id],branch:id};og=w,p1[w.id]=w,Gf[id]=w.id,Fe.debug("in pushCommit "+w.id)},ijt=function(i,a){if(i=Wa.sanitizeText(i,Tt()),Gf[i]===void 0)Gf[i]=og!=null?og.id:null,mP[i]={name:i,order:a?parseInt(a,10):null},lRe(i),Fe.debug("in createBranch");else{let f=new Error('Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout '+i+'")');throw f.hash={text:"branch "+i,token:"branch "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+i+'"']},f}},sjt=function(i,a,f,p){i=Wa.sanitizeText(i,Tt()),a=Wa.sanitizeText(a,Tt());const w=p1[Gf[id]],y=p1[Gf[i]];if(id===i){let E=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},E}else if(w===void 0||!w){let E=new Error('Incorrect usage of "merge". Current branch ('+id+")has no commits");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["commit"]},E}else if(Gf[i]===void 0){let E=new Error('Incorrect usage of "merge". Branch to be merged ('+i+") does not exist");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch "+i]},E}else if(y===void 0||!y){let E=new Error('Incorrect usage of "merge". Branch to be merged ('+i+") has no commits");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"commit"']},E}else if(w===y){let E=new Error('Incorrect usage of "merge". Both branches have same head');throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},E}else if(a&&p1[a]!==void 0){let E=new Error('Incorrect usage of "merge". Commit with id:'+a+" already exists, use different custom Id");throw E.hash={text:"merge "+i+a+f+p,token:"merge "+i+a+f+p,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["merge "+i+" "+a+"_UNIQUE "+f+" "+p]},E}const b={id:a||h9+"-"+I0e(),message:"merged branch "+i+" into "+id,seq:h9++,parents:[og==null?null:og.id,Gf[i]],branch:id,type:yP.MERGE,customType:f,customId:!!a,tag:p||""};og=b,p1[b.id]=b,Gf[id]=b.id,Fe.debug(Gf),Fe.debug("in mergeBranch")},ajt=function(i,a,f){if(Fe.debug("Entering cherryPick:",i,a,f),i=Wa.sanitizeText(i,Tt()),a=Wa.sanitizeText(a,Tt()),f=Wa.sanitizeText(f,Tt()),!i||p1[i]===void 0){let y=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw y.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},y}let p=p1[i],w=p.branch;if(p.type===yP.MERGE){let y=new Error('Incorrect usage of "cherryPick". Source commit should not be a merge commit');throw y.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},y}if(!a||p1[a]===void 0){if(w===id){let E=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw E.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},E}const y=p1[Gf[id]];if(y===void 0||!y){let E=new Error('Incorrect usage of "cherry-pick". Current branch ('+id+")has no commits");throw E.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},E}const b={id:h9+"-"+I0e(),message:"cherry-picked "+p+" into "+id,seq:h9++,parents:[og==null?null:og.id,p.id],branch:id,type:yP.CHERRY_PICK,tag:f??"cherry-pick:"+p.id};og=b,p1[b.id]=b,Gf[id]=b.id,Fe.debug(Gf),Fe.debug("in cherryPick")}},lRe=function(i){if(i=Wa.sanitizeText(i,Tt()),Gf[i]===void 0){let a=new Error('Trying to checkout branch which is not yet created. (Help try using "branch '+i+'")');throw a.hash={text:"checkout "+i,token:"checkout "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"branch '+i+'"']},a}else{id=i;const a=Gf[id];og=p1[a]}};function hRe(i,a,f){const p=i.indexOf(a);p===-1?i.push(f):i.splice(p,1,f)}function fRe(i){const a=i.reduce((w,y)=>w.seq>y.seq?w:y,i[0]);let f="";i.forEach(function(w){w===a?f+=" *":f+=" |"});const p=[f,a.id,a.seq];for(let w in Gf)Gf[w]===a.id&&p.push(w);if(Fe.debug(p.join(" ")),a.parents&&a.parents.length==2){const w=p1[a.parents[0]];hRe(i,a,w),i.push(p1[a.parents[1]])}else{if(a.parents.length==0)return;{const w=p1[a.parents];hRe(i,a,w)}}i=JFt(i,w=>w.id),fRe(i)}const ojt=function(){Fe.debug(p1);const i=dRe()[0];fRe([i])},cjt=function(){p1={},og=null;let i=Tt().gitGraph.mainBranchName,a=Tt().gitGraph.mainBranchOrder;Gf={},Gf[i]=null,mP={},mP[i]={name:i,order:a},id=i,h9=0,rp()},ujt=function(){return Object.values(mP).map((a,f)=>a.order!==null?a:{...a,order:parseFloat(`0.${f}`,10)}).sort((a,f)=>a.order-f.order).map(({name:a})=>({name:a}))},ljt=function(){return Gf},hjt=function(){return p1},dRe=function(){const i=Object.keys(p1).map(function(a){return p1[a]});return i.forEach(function(a){Fe.debug(a.id)}),i.sort((a,f)=>a.seq-f.seq),i},fjt=function(){return id},djt=function(){return cRe},gjt=function(){return og},yP={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},pjt={parseDirective:ZFt,getConfig:()=>Tt().gitGraph,setDirection:ejt,setOptions:tjt,getOptions:njt,commit:rjt,branch:ijt,merge:sjt,cherryPick:ajt,checkout:lRe,prettyPrint:ojt,clear:cjt,getBranchesAsObjArray:ujt,getBranches:ljt,getCommits:hjt,getCommitsArray:dRe,getCurrentBranch:fjt,getDirection:djt,getHead:gjt,setAccTitle:ip,getAccTitle:L2,getAccDescription:D2,setAccDescription:M2,setDiagramTitle:Uw,getDiagramTitle:Ww,commitType:yP};let kP={};const P2={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},f9=8;let op={},kK={},xK=[],EK=0;const bjt=()=>{op={},kK={},kP={},EK=0,xK=[]},vjt=i=>{const a=document.createElementNS("http://www.w3.org/2000/svg","text");let f=[];typeof i=="string"?f=i.split(/\\n|\n|/gi):Array.isArray(i)?f=i:f=[];for(const p of f){const w=document.createElementNS("http://www.w3.org/2000/svg","tspan");w.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),w.setAttribute("dy","1em"),w.setAttribute("x","0"),w.setAttribute("class","row"),w.textContent=p.trim(),a.appendChild(w)}return a},gRe=(i,a,f)=>{const p=GN().gitGraph,w=i.append("g").attr("class","commit-bullets"),y=i.append("g").attr("class","commit-labels");let b=0;Object.keys(a).sort((N,B)=>a[N].seq-a[B].seq).forEach(N=>{const B=a[N],R=op[B.branch].pos,j=b+10;if(f){let $,V=B.customType!==void 0&&B.customType!==""?B.customType:B.type;switch(V){case P2.NORMAL:$="commit-normal";break;case P2.REVERSE:$="commit-reverse";break;case P2.HIGHLIGHT:$="commit-highlight";break;case P2.MERGE:$="commit-merge";break;case P2.CHERRY_PICK:$="commit-cherry-pick";break;default:$="commit-normal"}if(V===P2.HIGHLIGHT){const Q=w.append("rect");Q.attr("x",j-10),Q.attr("y",R-10),Q.attr("height",20),Q.attr("width",20),Q.attr("class",`commit ${B.id} commit-highlight${op[B.branch].index%f9} ${$}-outer`),w.append("rect").attr("x",j-6).attr("y",R-6).attr("height",12).attr("width",12).attr("class",`commit ${B.id} commit${op[B.branch].index%f9} ${$}-inner`)}else if(V===P2.CHERRY_PICK)w.append("circle").attr("cx",j).attr("cy",R).attr("r",10).attr("class",`commit ${B.id} ${$}`),w.append("circle").attr("cx",j-3).attr("cy",R+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${B.id} ${$}`),w.append("circle").attr("cx",j+3).attr("cy",R+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${B.id} ${$}`),w.append("line").attr("x1",j+3).attr("y1",R+1).attr("x2",j).attr("y2",R-5).attr("stroke","#fff").attr("class",`commit ${B.id} ${$}`),w.append("line").attr("x1",j-3).attr("y1",R+1).attr("x2",j).attr("y2",R-5).attr("stroke","#fff").attr("class",`commit ${B.id} ${$}`);else{const Q=w.append("circle");if(Q.attr("cx",j),Q.attr("cy",R),Q.attr("r",B.type===P2.MERGE?9:10),Q.attr("class",`commit ${B.id} commit${op[B.branch].index%f9}`),V===P2.MERGE){const oe=w.append("circle");oe.attr("cx",j),oe.attr("cy",R),oe.attr("r",6),oe.attr("class",`commit ${$} ${B.id} commit${op[B.branch].index%f9}`)}V===P2.REVERSE&&w.append("path").attr("d",`M ${j-5},${R-5}L${j+5},${R+5}M${j-5},${R+5}L${j+5},${R-5}`).attr("class",`commit ${$} ${B.id} commit${op[B.branch].index%f9}`)}}if(kK[B.id]={x:b+10,y:R},f){if(B.type!==P2.CHERRY_PICK&&(B.customId&&B.type===P2.MERGE||B.type!==P2.MERGE)&&p.showCommitLabel){const Q=y.append("g"),oe=Q.insert("rect").attr("class","commit-label-bkg"),ce=Q.append("text").attr("x",b).attr("y",R+25).attr("class","commit-label").text(B.id);let se=ce.node().getBBox();if(oe.attr("x",b+10-se.width/2-2).attr("y",R+13.5).attr("width",se.width+2*2).attr("height",se.height+2*2),ce.attr("x",b+10-se.width/2),p.rotateCommitLabel){let ge=-7.5-(se.width+10)/25*9.5,ye=10+se.width/25*8.5;Q.attr("transform","translate("+ge+", "+ye+") rotate(-45, "+b+", "+R+")")}}if(B.tag){const Q=y.insert("polygon"),oe=y.append("circle"),ce=y.append("text").attr("y",R-16).attr("class","tag-label").text(B.tag);let se=ce.node().getBBox();ce.attr("x",b+10-se.width/2);const ge=se.height/2,ye=R-19.2;Q.attr("class","tag-label-bkg").attr("points",` + ${b-se.width/2-4/2},${ye+2} + ${b-se.width/2-4/2},${ye-2} + ${b+10-se.width/2-4},${ye-ge-2} + ${b+10+se.width/2+4},${ye-ge-2} + ${b+10+se.width/2+4},${ye+ge+2} + ${b+10-se.width/2-4},${ye+ge+2}`),oe.attr("cx",b-se.width/2+4/2).attr("cy",ye).attr("r",1.5).attr("class","tag-hole")}}b+=50,b>EK&&(EK=b)})},wjt=(i,a,f)=>Object.keys(f).filter(y=>f[y].branch===a.branch&&f[y].seq>i.seq&&f[y].seq0,O0e=(i,a,f=0)=>{const p=i+Math.abs(i-a)/2;if(f>5)return p;if(xK.every(b=>Math.abs(b-p)>=10))return xK.push(p),p;const y=Math.abs(i-a);return O0e(i,a-y/5,f+1)},mjt=(i,a,f,p)=>{const w=kK[a.id],y=kK[f.id],b=wjt(a,f,p);let E="",S="",N=0,B=0,R=op[f.branch].index,j;if(b){E="A 10 10, 0, 0, 0,",S="A 10 10, 0, 0, 1,",N=10,B=10,R=op[f.branch].index;const $=w.yy.y&&(E="A 20 20, 0, 0, 0,",N=20,B=20,R=op[a.branch].index,j=`M ${w.x} ${w.y} L ${y.x-N} ${w.y} ${E} ${y.x} ${w.y-B} L ${y.x} ${y.y}`),w.y===y.y&&(R=op[a.branch].index,j=`M ${w.x} ${w.y} L ${w.x} ${y.y-N} ${E} ${w.x+B} ${y.y} L ${y.x} ${y.y}`);i.append("path").attr("d",j).attr("class","arrow arrow"+R%f9)},yjt=(i,a)=>{const f=i.append("g").attr("class","commit-arrows");Object.keys(a).forEach(p=>{const w=a[p];w.parents&&w.parents.length>0&&w.parents.forEach(y=>{mjt(f,a[y],w,a)})})},kjt=(i,a)=>{const f=GN().gitGraph,p=i.append("g");a.forEach((w,y)=>{const b=y%f9,E=op[w.name].pos,S=p.append("line");S.attr("x1",0),S.attr("y1",E),S.attr("x2",EK),S.attr("y2",E),S.attr("class","branch branch"+b),xK.push(E);let N=w.name;const B=vjt(N),R=p.insert("rect"),$=p.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+b);$.node().appendChild(B);let V=B.getBBox();R.attr("class","branchLabelBkg label"+b).attr("rx",4).attr("ry",4).attr("x",-V.width-4-(f.rotateCommitLabel===!0?30:0)).attr("y",-V.height/2+8).attr("width",V.width+18).attr("height",V.height+4),$.attr("transform","translate("+(-V.width-14-(f.rotateCommitLabel===!0?30:0))+", "+(E-V.height/2-1)+")"),R.attr("transform","translate(-19, "+(E-V.height/2)+")")})},xjt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:XFt,db:pjt,renderer:{draw:function(i,a,f,p){bjt();const w=GN(),y=w.gitGraph;Fe.debug("in gitgraph renderer",i+` +`,"id:",a,f),kP=p.db.getCommits();const b=p.db.getBranchesAsObjArray();let E=0;b.forEach((N,B)=>{op[N.name]={pos:E,index:B},E+=50+(y.rotateCommitLabel?40:0)});const S=Cr(`[id="${a}"]`);gRe(S,kP,!1),y.showBranches&&kjt(S,b),yjt(S,kP),gRe(S,kP,!0),co.insertTitle(S,"gitTitleText",y.titleTopMargin,p.db.getDiagramTitle()),xIe(void 0,S,y.diagramPadding,y.useMaxWidth??w.useMaxWidth)}},styles:i=>` + .commit-id, + .commit-msg, + .branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + ${[0,1,2,3,4,5,6,7].map(a=>` + .branch-label${a} { fill: ${i["gitBranchLabel"+a]}; } + .commit${a} { stroke: ${i["git"+a]}; fill: ${i["git"+a]}; } + .commit-highlight${a} { stroke: ${i["gitInv"+a]}; fill: ${i["gitInv"+a]}; } + .label${a} { fill: ${i["git"+a]}; } + .arrow${a} { stroke: ${i["git"+a]}; } + `).join(` +`)} + + .branch { + stroke-width: 1; + stroke: ${i.lineColor}; + stroke-dasharray: 2; + } + .commit-label { font-size: ${i.commitLabelFontSize}; fill: ${i.commitLabelColor};} + .commit-label-bkg { font-size: ${i.commitLabelFontSize}; fill: ${i.commitLabelBackground}; opacity: 0.5; } + .tag-label { font-size: ${i.tagLabelFontSize}; fill: ${i.tagLabelColor};} + .tag-label-bkg { fill: ${i.tagLabelBackground}; stroke: ${i.tagLabelBorder}; } + .tag-hole { fill: ${i.textColor}; } + + .commit-merge { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + } + .commit-reverse { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + stroke-width: 3; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + } + + .arrow { stroke-width: 8; stroke-linecap: round; fill: none} + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`}},Symbol.toStringTag,{value:"Module"}));var N0e=function(){var i=function(ve,te,xe,De){for(xe=xe||{},De=ve.length;De--;xe[ve[De]]=te);return xe},a=[1,3],f=[1,5],p=[7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],w=[1,15],y=[1,16],b=[1,17],E=[1,18],S=[1,19],N=[1,20],B=[1,21],R=[1,22],j=[1,23],$=[1,24],V=[1,25],Q=[1,26],oe=[1,27],ce=[1,29],se=[1,31],ge=[1,34],ye=[5,7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],ke={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,topAxis:14,axisFormat:15,tickInterval:16,excludes:17,includes:18,todayMarker:19,title:20,acc_title:21,acc_title_value:22,acc_descr:23,acc_descr_value:24,acc_descr_multiline_value:25,section:26,clickStatement:27,taskTxt:28,taskData:29,openDirective:30,typeDirective:31,closeDirective:32,":":33,argDirective:34,click:35,callbackname:36,callbackargs:37,href:38,clickStatementDebug:39,open_directive:40,type_directive:41,arg_directive:42,close_directive:43,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"topAxis",15:"axisFormat",16:"tickInterval",17:"excludes",18:"includes",19:"todayMarker",20:"title",21:"acc_title",22:"acc_title_value",23:"acc_descr",24:"acc_descr_value",25:"acc_descr_multiline_value",26:"section",28:"taskTxt",29:"taskData",33:":",35:"click",36:"callbackname",37:"callbackargs",38:"href",40:"open_directive",41:"type_directive",42:"arg_directive",43:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[27,2],[27,3],[27,3],[27,4],[27,3],[27,4],[27,2],[39,2],[39,3],[39,3],[39,4],[39,3],[39,4],[39,2],[30,1],[31,1],[34,1],[32,1]],performAction:function(te,xe,De,he,Ie,ee,rt){var me=ee.length-1;switch(Ie){case 2:return ee[me-1];case 3:this.$=[];break;case 4:ee[me-1].push(ee[me]),this.$=ee[me-1];break;case 5:case 6:this.$=ee[me];break;case 7:case 8:this.$=[];break;case 9:he.setDateFormat(ee[me].substr(11)),this.$=ee[me].substr(11);break;case 10:he.enableInclusiveEndDates(),this.$=ee[me].substr(18);break;case 11:he.TopAxis(),this.$=ee[me].substr(8);break;case 12:he.setAxisFormat(ee[me].substr(11)),this.$=ee[me].substr(11);break;case 13:he.setTickInterval(ee[me].substr(13)),this.$=ee[me].substr(13);break;case 14:he.setExcludes(ee[me].substr(9)),this.$=ee[me].substr(9);break;case 15:he.setIncludes(ee[me].substr(9)),this.$=ee[me].substr(9);break;case 16:he.setTodayMarker(ee[me].substr(12)),this.$=ee[me].substr(12);break;case 17:he.setDiagramTitle(ee[me].substr(6)),this.$=ee[me].substr(6);break;case 18:this.$=ee[me].trim(),he.setAccTitle(this.$);break;case 19:case 20:this.$=ee[me].trim(),he.setAccDescription(this.$);break;case 21:he.addSection(ee[me].substr(8)),this.$=ee[me].substr(8);break;case 23:he.addTask(ee[me-1],ee[me]),this.$="task";break;case 27:this.$=ee[me-1],he.setClickEvent(ee[me-1],ee[me],null);break;case 28:this.$=ee[me-2],he.setClickEvent(ee[me-2],ee[me-1],ee[me]);break;case 29:this.$=ee[me-2],he.setClickEvent(ee[me-2],ee[me-1],null),he.setLink(ee[me-2],ee[me]);break;case 30:this.$=ee[me-3],he.setClickEvent(ee[me-3],ee[me-2],ee[me-1]),he.setLink(ee[me-3],ee[me]);break;case 31:this.$=ee[me-2],he.setClickEvent(ee[me-2],ee[me],null),he.setLink(ee[me-2],ee[me-1]);break;case 32:this.$=ee[me-3],he.setClickEvent(ee[me-3],ee[me-1],ee[me]),he.setLink(ee[me-3],ee[me-2]);break;case 33:this.$=ee[me-1],he.setLink(ee[me-1],ee[me]);break;case 34:case 40:this.$=ee[me-1]+" "+ee[me];break;case 35:case 36:case 38:this.$=ee[me-2]+" "+ee[me-1]+" "+ee[me];break;case 37:case 39:this.$=ee[me-3]+" "+ee[me-2]+" "+ee[me-1]+" "+ee[me];break;case 41:he.parseDirective("%%{","open_directive");break;case 42:he.parseDirective(ee[me],"type_directive");break;case 43:ee[me]=ee[me].trim().replace(/'/g,'"'),he.parseDirective(ee[me],"arg_directive");break;case 44:he.parseDirective("}%%","close_directive","gantt");break}},table:[{3:1,4:2,5:a,30:4,40:f},{1:[3]},{3:6,4:2,5:a,30:4,40:f},i(p,[2,3],{6:7}),{31:8,41:[1,9]},{41:[2,41]},{1:[2,1]},{4:30,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:w,13:y,14:b,15:E,16:S,17:N,18:B,19:R,20:j,21:$,23:V,25:Q,26:oe,27:28,28:ce,30:4,35:se,40:f},{32:32,33:[1,33],43:ge},i([33,43],[2,42]),i(p,[2,8],{1:[2,2]}),i(p,[2,4]),{4:30,10:35,12:w,13:y,14:b,15:E,16:S,17:N,18:B,19:R,20:j,21:$,23:V,25:Q,26:oe,27:28,28:ce,30:4,35:se,40:f},i(p,[2,6]),i(p,[2,7]),i(p,[2,9]),i(p,[2,10]),i(p,[2,11]),i(p,[2,12]),i(p,[2,13]),i(p,[2,14]),i(p,[2,15]),i(p,[2,16]),i(p,[2,17]),{22:[1,36]},{24:[1,37]},i(p,[2,20]),i(p,[2,21]),i(p,[2,22]),{29:[1,38]},i(p,[2,24]),{36:[1,39],38:[1,40]},{11:[1,41]},{34:42,42:[1,43]},{11:[2,44]},i(p,[2,5]),i(p,[2,18]),i(p,[2,19]),i(p,[2,23]),i(p,[2,27],{37:[1,44],38:[1,45]}),i(p,[2,33],{36:[1,46]}),i(ye,[2,25]),{32:47,43:ge},{43:[2,43]},i(p,[2,28],{38:[1,48]}),i(p,[2,29]),i(p,[2,31],{37:[1,49]}),{11:[1,50]},i(p,[2,30]),i(p,[2,32]),i(ye,[2,26])],defaultActions:{5:[2,41],6:[2,1],34:[2,44],43:[2,43]},parseError:function(te,xe){if(xe.recoverable)this.trace(te);else{var De=new Error(te);throw De.hash=xe,De}},parse:function(te){var xe=this,De=[0],he=[],Ie=[null],ee=[],rt=this.table,me="",gt=0,pe=0,Et=2,wt=1,jt=ee.slice.call(arguments,1),At=Object.create(this.lexer),Bt={yy:{}};for(var cn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,cn)&&(Bt.yy[cn]=this.yy[cn]);At.setInput(te,Bt.yy),Bt.yy.lexer=At,Bt.yy.parser=this,typeof At.yylloc>"u"&&(At.yylloc={});var Nn=At.yylloc;ee.push(Nn);var Ot=At.options&&At.options.ranges;typeof Bt.yy.parseError=="function"?this.parseError=Bt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function oi(){var Ri;return Ri=he.pop()||At.lex()||wt,typeof Ri!="number"&&(Ri instanceof Array&&(he=Ri,Ri=he.pop()),Ri=xe.symbols_[Ri]||Ri),Ri}for(var kt,Dt,vt,Nt,ze={},Xe,Lt,Ge,Bn;;){if(Dt=De[De.length-1],this.defaultActions[Dt]?vt=this.defaultActions[Dt]:((kt===null||typeof kt>"u")&&(kt=oi()),vt=rt[Dt]&&rt[Dt][kt]),typeof vt>"u"||!vt.length||!vt[0]){var Oe="";Bn=[];for(Xe in rt[Dt])this.terminals_[Xe]&&Xe>Et&&Bn.push("'"+this.terminals_[Xe]+"'");At.showPosition?Oe="Parse error on line "+(gt+1)+`: +`+At.showPosition()+` +Expecting `+Bn.join(", ")+", got '"+(this.terminals_[kt]||kt)+"'":Oe="Parse error on line "+(gt+1)+": Unexpected "+(kt==wt?"end of input":"'"+(this.terminals_[kt]||kt)+"'"),this.parseError(Oe,{text:At.match,token:this.terminals_[kt]||kt,line:At.yylineno,loc:Nn,expected:Bn})}if(vt[0]instanceof Array&&vt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Dt+", token: "+kt);switch(vt[0]){case 1:De.push(kt),Ie.push(At.yytext),ee.push(At.yylloc),De.push(vt[1]),kt=null,pe=At.yyleng,me=At.yytext,gt=At.yylineno,Nn=At.yylloc;break;case 2:if(Lt=this.productions_[vt[1]][1],ze.$=Ie[Ie.length-Lt],ze._$={first_line:ee[ee.length-(Lt||1)].first_line,last_line:ee[ee.length-1].last_line,first_column:ee[ee.length-(Lt||1)].first_column,last_column:ee[ee.length-1].last_column},Ot&&(ze._$.range=[ee[ee.length-(Lt||1)].range[0],ee[ee.length-1].range[1]]),Nt=this.performAction.apply(ze,[me,pe,gt,Bt.yy,vt[1],Ie,ee].concat(jt)),typeof Nt<"u")return Nt;Lt&&(De=De.slice(0,-1*Lt*2),Ie=Ie.slice(0,-1*Lt),ee=ee.slice(0,-1*Lt)),De.push(this.productions_[vt[1]][0]),Ie.push(ze.$),ee.push(ze._$),Ge=rt[De[De.length-2]][De[De.length-1]],De.push(Ge);break;case 3:return!0}}return!0}},Ae=function(){var ve={EOF:1,parseError:function(xe,De){if(this.yy.parser)this.yy.parser.parseError(xe,De);else throw new Error(xe)},setInput:function(te,xe){return this.yy=xe||this.yy||{},this._input=te,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var te=this._input[0];this.yytext+=te,this.yyleng++,this.offset++,this.match+=te,this.matched+=te;var xe=te.match(/(?:\r\n?|\n).*/g);return xe?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),te},unput:function(te){var xe=te.length,De=te.split(/(?:\r\n?|\n)/g);this._input=te+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-xe),this.offset-=xe;var he=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),De.length-1&&(this.yylineno-=De.length-1);var Ie=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:De?(De.length===he.length?this.yylloc.first_column:0)+he[he.length-De.length].length-De[0].length:this.yylloc.first_column-xe},this.options.ranges&&(this.yylloc.range=[Ie[0],Ie[0]+this.yyleng-xe]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(te){this.unput(this.match.slice(te))},pastInput:function(){var te=this.matched.substr(0,this.matched.length-this.match.length);return(te.length>20?"...":"")+te.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var te=this.match;return te.length<20&&(te+=this._input.substr(0,20-te.length)),(te.substr(0,20)+(te.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var te=this.pastInput(),xe=new Array(te.length+1).join("-");return te+this.upcomingInput()+` +`+xe+"^"},test_match:function(te,xe){var De,he,Ie;if(this.options.backtrack_lexer&&(Ie={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ie.yylloc.range=this.yylloc.range.slice(0))),he=te[0].match(/(?:\r\n?|\n).*/g),he&&(this.yylineno+=he.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:he?he[he.length-1].length-he[he.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+te[0].length},this.yytext+=te[0],this.match+=te[0],this.matches=te,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(te[0].length),this.matched+=te[0],De=this.performAction.call(this,this.yy,this,xe,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),De)return De;if(this._backtrack){for(var ee in Ie)this[ee]=Ie[ee];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var te,xe,De,he;this._more||(this.yytext="",this.match="");for(var Ie=this._currentRules(),ee=0;eexe[0].length)){if(xe=De,he=ee,this.options.backtrack_lexer){if(te=this.test_match(De,Ie[ee]),te!==!1)return te;if(this._backtrack){xe=!1;continue}else return!1}else if(!this.options.flex)break}return xe?(te=this.test_match(xe,Ie[he]),te!==!1?te:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var xe=this.next();return xe||this.lex()},begin:function(xe){this.conditionStack.push(xe)},popState:function(){var xe=this.conditionStack.length-1;return xe>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(xe){return xe=this.conditionStack.length-1-Math.abs(xe||0),xe>=0?this.conditionStack[xe]:"INITIAL"},pushState:function(xe){this.begin(xe)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(xe,De,he,Ie){switch(he){case 0:return this.begin("open_directive"),40;case 1:return this.begin("type_directive"),41;case 2:return this.popState(),this.begin("arg_directive"),33;case 3:return this.popState(),this.popState(),43;case 4:return 42;case 5:return this.begin("acc_title"),21;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),23;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:break;case 13:break;case 14:break;case 15:return 11;case 16:break;case 17:break;case 18:break;case 19:this.begin("href");break;case 20:this.popState();break;case 21:return 38;case 22:this.begin("callbackname");break;case 23:this.popState();break;case 24:this.popState(),this.begin("callbackargs");break;case 25:return 36;case 26:this.popState();break;case 27:return 37;case 28:this.begin("click");break;case 29:this.popState();break;case 30:return 35;case 31:return 5;case 32:return 12;case 33:return 13;case 34:return 14;case 35:return 15;case 36:return 16;case 37:return 18;case 38:return 17;case 39:return 19;case 40:return"date";case 41:return 20;case 42:return"accDescription";case 43:return 26;case 44:return 28;case 45:return 29;case 46:return 33;case 47:return 7;case 48:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[26,27],inclusive:!1},callbackname:{rules:[23,24,25],inclusive:!1},href:{rules:[20,21],inclusive:!1},click:{rules:[29,30],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,22,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],inclusive:!0}}};return ve}();ke.lexer=Ae;function de(){this.yy={}}return de.prototype=ke,ke.Parser=de,new de}();N0e.parser=N0e;const Ejt=N0e;var Tjt="isoweek";const _jt=function(i,a,f){var p=function(S,N){var B=(N?f.utc:f)().year(S).startOf(o5),R=4-B.isoWeekday();return B.isoWeekday()>4&&(R+=7),B.add(R,Fw)},w=function(S){return S.add(4-S.isoWeekday(),Fw)},y=a.prototype;y.isoWeekYear=function(){var E=w(this);return E.year()},y.isoWeek=function(E){if(!this.$utils().u(E))return this.add((E-this.isoWeek())*7,Fw);var S=w(this),N=p(this.isoWeekYear(),this.$u);return S.diff(N,yN)+1},y.isoWeekday=function(E){return this.$utils().u(E)?this.day()||7:this.day(this.day()%7?E:E-7)};var b=y.startOf;y.startOf=function(E,S){var N=this.$utils(),B=N.u(S)?!0:S,R=N.p(E);return R===Tjt?B?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):b.bind(this)(E,S)}};var Cjt=function(a){return a.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(f,p,w){return p||w.slice(1)})},Sjt={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Ajt=function(a,f){return a.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(p,w,y){var b=y&&y.toUpperCase();return w||f[y]||Sjt[y]||Cjt(f[b])})},Ljt=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,Mjt=/\d/,TK=/\d\d/,Djt=/\d{3}/,Ijt=/\d{4}/,h3=/\d\d?/,Ojt=/[+-]?\d+/,Njt=/[+-]\d\d:?(\d\d)?|Z/,xP=/\d*[^-_:/,()\s\d]+/,ax={},pRe=function(a){return a=+a,a+(a>68?1900:2e3)};function Pjt(i){if(!i||i==="Z")return 0;var a=i.match(/([+-]|\d\d)/g),f=+(a[1]*60)+(+a[2]||0);return f===0?0:a[0]==="+"?-f:f}var cp=function(a){return function(f){this[a]=+f}},bRe=[Njt,function(i){var a=this.zone||(this.zone={});a.offset=Pjt(i)}],P0e=function(a){var f=ax[a];return f&&(f.indexOf?f:f.s.concat(f.f))},vRe=function(a,f){var p,w=ax,y=w.meridiem;if(!y)p=a===(f?"pm":"PM");else for(var b=1;b<=24;b+=1)if(a.indexOf(y(b,0,f))>-1){p=b>12;break}return p},Bjt={A:[xP,function(i){this.afternoon=vRe(i,!1)}],a:[xP,function(i){this.afternoon=vRe(i,!0)}],S:[Mjt,function(i){this.milliseconds=+i*100}],SS:[TK,function(i){this.milliseconds=+i*10}],SSS:[Djt,function(i){this.milliseconds=+i}],s:[h3,cp("seconds")],ss:[h3,cp("seconds")],m:[h3,cp("minutes")],mm:[h3,cp("minutes")],H:[h3,cp("hours")],h:[h3,cp("hours")],HH:[h3,cp("hours")],hh:[h3,cp("hours")],D:[h3,cp("day")],DD:[TK,cp("day")],Do:[xP,function(i){var a=ax,f=a.ordinal,p=i.match(/\d+/);if(this.day=p[0],!!f)for(var w=1;w<=31;w+=1)f(w).replace(/\[|\]/g,"")===i&&(this.day=w)}],M:[h3,cp("month")],MM:[TK,cp("month")],MMM:[xP,function(i){var a=P0e("months"),f=P0e("monthsShort"),p=(f||a.map(function(w){return w.slice(0,3)})).indexOf(i)+1;if(p<1)throw new Error;this.month=p%12||p}],MMMM:[xP,function(i){var a=P0e("months"),f=a.indexOf(i)+1;if(f<1)throw new Error;this.month=f%12||f}],Y:[Ojt,cp("year")],YY:[TK,function(i){this.year=pRe(i)}],YYYY:[Ijt,cp("year")],Z:bRe,ZZ:bRe};function Rjt(i){var a=i.afternoon;if(a!==void 0){var f=i.hours;a?f<12&&(i.hours+=12):f===12&&(i.hours=0),delete i.afternoon}}function Fjt(i){i=Ajt(i,ax&&ax.formats);for(var a=i.match(Ljt),f=a.length,p=0;p-1)return new Date((f==="X"?1e3:1)*a);var w=Fjt(f),y=w(a),b=y.year,E=y.month,S=y.day,N=y.hours,B=y.minutes,R=y.seconds,j=y.milliseconds,$=y.zone,V=new Date,Q=S||(!b&&!E?V.getDate():1),oe=b||V.getFullYear(),ce=0;b&&!E||(ce=E>0?E-1:V.getMonth());var se=N||0,ge=B||0,ye=R||0,ke=j||0;return $?new Date(Date.UTC(oe,ce,Q,se,ge,ye,ke+$.offset*60*1e3)):p?new Date(Date.UTC(oe,ce,Q,se,ge,ye,ke)):new Date(oe,ce,Q,se,ge,ye,ke)}catch{return new Date("")}};const $jt=function(i,a,f){f.p.customParseFormat=!0,i&&i.parseTwoDigitYear&&(pRe=i.parseTwoDigitYear);var p=a.prototype,w=p.parse;p.parse=function(y){var b=y.date,E=y.utc,S=y.args;this.$u=E;var N=S[1];if(typeof N=="string"){var B=S[2]===!0,R=S[3]===!0,j=B||R,$=S[2];R&&($=S[2]),ax=this.$locale(),!B&&$&&(ax=f.Ls[$]),this.$d=jjt(b,N,E),this.init(),$&&$!==!0&&(this.$L=this.locale($).$L),j&&b!=this.format(N)&&(this.$d=new Date("")),ax={}}else if(N instanceof Array)for(var V=N.length,Q=1;Q<=V;Q+=1){S[1]=N[Q-1];var oe=f.apply(this,S);if(oe.isValid()){this.$d=oe.$d,this.$L=oe.$L,this.init();break}Q===V&&(this.$d=new Date(""))}else w.call(this,y)}},Hjt=function(i,a){var f=a.prototype,p=f.format;f.format=function(w){var y=this,b=this.$locale();if(!this.isValid())return p.bind(this)(w);var E=this.$utils(),S=w||mLe,N=S.replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(B){switch(B){case"Q":return Math.ceil((y.$M+1)/3);case"Do":return b.ordinal(y.$D);case"gggg":return y.weekYear();case"GGGG":return y.isoWeekYear();case"wo":return b.ordinal(y.week(),"W");case"w":case"ww":return E.s(y.week(),B==="w"?1:2,"0");case"W":case"WW":return E.s(y.isoWeek(),B==="W"?1:2,"0");case"k":case"kk":return E.s(String(y.$H===0?24:y.$H),B==="k"?1:2,"0");case"X":return Math.floor(y.$d.getTime()/1e3);case"x":return y.$d.getTime();case"z":return"["+y.offsetName()+"]";case"zzz":return"["+y.offsetName("long")+"]";default:return B}});return p.bind(this)(N)}};ru.extend(_jt),ru.extend($jt),ru.extend(Hjt);let f3="",B0e="",R0e,F0e="",EP=[],TP=[],j0e={},$0e=[],_K=[],iL="",H0e="";const wRe=["active","done","crit","milestone"];let z0e=[],_P=!1,G0e=!1,q0e=0;const zjt=function(i,a,f){rd.parseDirective(this,i,a,f)},Gjt=function(){$0e=[],_K=[],iL="",z0e=[],CK=0,U0e=void 0,SK=void 0,b1=[],f3="",B0e="",H0e="",R0e=void 0,F0e="",EP=[],TP=[],_P=!1,G0e=!1,q0e=0,j0e={},rp()},qjt=function(i){B0e=i},Vjt=function(){return B0e},Ujt=function(i){R0e=i},Wjt=function(){return R0e},Kjt=function(i){F0e=i},Yjt=function(){return F0e},Xjt=function(i){f3=i},Qjt=function(){_P=!0},Zjt=function(){return _P},Jjt=function(){G0e=!0},e$t=function(){return G0e},t$t=function(i){H0e=i},n$t=function(){return H0e},r$t=function(){return f3},i$t=function(i){EP=i.toLowerCase().split(/[\s,]+/)},s$t=function(){return EP},a$t=function(i){TP=i.toLowerCase().split(/[\s,]+/)},o$t=function(){return TP},c$t=function(){return j0e},u$t=function(i){iL=i,$0e.push(i)},l$t=function(){return $0e},h$t=function(){let i=TRe();const a=10;let f=0;for(;!i&&f=6&&f.includes("weekends")||f.includes(i.format("dddd").toLowerCase())?!0:f.includes(i.format(a.trim()))},yRe=function(i,a,f,p){if(!f.length||i.manualEndTime)return;let w;i.startTime instanceof Date?w=ru(i.startTime):w=ru(i.startTime,a,!0),w=w.add(1,"d");let y;i.endTime instanceof Date?y=ru(i.endTime):y=ru(i.endTime,a,!0);const[b,E]=f$t(w,y,a,f,p);i.endTime=b.toDate(),i.renderEndTime=E},f$t=function(i,a,f,p,w){let y=!1,b=null;for(;i<=a;)y||(b=a.toDate()),y=mRe(i,f,p,w),y&&(a=a.add(1,"d")),i=i.add(1,"d");return[a,b]},V0e=function(i,a,f){f=f.trim();const w=/^after\s+([\d\w- ]+)/.exec(f.trim());if(w!==null){let b=null;if(w[1].split(" ").forEach(function(E){let S=aL(E);S!==void 0&&(b?S.endTime>b.endTime&&(b=S):b=S)}),b)return b.endTime;{const E=new Date;return E.setHours(0,0,0,0),E}}let y=ru(f,a.trim(),!0);if(y.isValid())return y.toDate();{Fe.debug("Invalid date:"+f),Fe.debug("With date format:"+a.trim());const b=new Date(f);if(b===void 0||isNaN(b.getTime()))throw new Error("Invalid date:"+f);return b}},kRe=function(i){const a=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(i.trim());return a!==null?[Number.parseFloat(a[1]),a[2]]:[NaN,"ms"]},xRe=function(i,a,f,p=!1){f=f.trim();let w=ru(f,a.trim(),!0);if(w.isValid())return p&&(w=w.add(1,"d")),w.toDate();let y=ru(i);const[b,E]=kRe(f);if(!Number.isNaN(b)){const S=y.add(b,E);S.isValid()&&(y=S)}return y.toDate()};let CK=0;const sL=function(i){return i===void 0?(CK=CK+1,"task"+CK):i},d$t=function(i,a){let f;a.substr(0,1)===":"?f=a.substr(1,a.length):f=a;const p=f.split(","),w={};SRe(p,w,wRe);for(let b=0;b{window.open(f,"_self")}),j0e[p]=f)}),_Re(i,"clickable")},_Re=function(i,a){i.split(",").forEach(function(f){let p=aL(f);p!==void 0&&p.classes.push(a)})},w$t=function(i,a,f){if(Tt().securityLevel!=="loose"||a===void 0)return;let p=[];if(typeof f=="string"){p=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let y=0;y{co.runFunc(a,...p)})},CRe=function(i,a){z0e.push(function(){const f=document.querySelector(`[id="${i}"]`);f!==null&&f.addEventListener("click",function(){a()})},function(){const f=document.querySelector(`[id="${i}-text"]`);f!==null&&f.addEventListener("click",function(){a()})})},m$t={parseDirective:zjt,getConfig:()=>Tt().gantt,clear:Gjt,setDateFormat:Xjt,getDateFormat:r$t,enableInclusiveEndDates:Qjt,endDatesAreInclusive:Zjt,enableTopAxis:Jjt,topAxisEnabled:e$t,setAxisFormat:qjt,getAxisFormat:Vjt,setTickInterval:Ujt,getTickInterval:Wjt,setTodayMarker:Kjt,getTodayMarker:Yjt,setAccTitle:ip,getAccTitle:L2,setDiagramTitle:Uw,getDiagramTitle:Ww,setDisplayMode:t$t,getDisplayMode:n$t,setAccDescription:M2,getAccDescription:D2,addSection:u$t,getSections:l$t,getTasks:h$t,addTask:p$t,findTaskById:aL,addTaskOrg:b$t,setIncludes:i$t,getIncludes:s$t,setExcludes:a$t,getExcludes:o$t,setClickEvent:function(i,a,f){i.split(",").forEach(function(p){w$t(p,a,f)}),_Re(i,"clickable")},setLink:v$t,getLinks:c$t,bindFunctions:function(i){z0e.forEach(function(a){a(i)})},parseDuration:kRe,isInvalidDate:mRe};function SRe(i,a,f){let p=!0;for(;p;)p=!1,f.forEach(function(w){const y="^\\s*"+w+"\\s*$",b=new RegExp(y);i[0].match(b)&&(a[w]=!0,i.shift(1),p=!0)})}const y$t=function(){Fe.debug("Something is calling, setConf, remove the call")},k$t=(i,a)=>{let f=[...i].map(()=>-1/0),p=[...i].sort((y,b)=>y.startTime-b.startTime||y.order-b.order),w=0;for(const y of p)for(let b=0;b=f[b]){f[b]=y.endTime,y.order=b+a,b>w&&(w=b);break}return w};let S5;const x$t=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Ejt,db:m$t,renderer:{setConf:y$t,draw:function(i,a,f,p){const w=Tt().gantt,y=Tt().securityLevel;let b;y==="sandbox"&&(b=Cr("#i"+a));const E=Cr(y==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=y==="sandbox"?b.nodes()[0].contentDocument:document,N=S.getElementById(a);S5=N.parentElement.offsetWidth,S5===void 0&&(S5=1200),w.useWidth!==void 0&&(S5=w.useWidth);const B=p.db.getTasks();let R=[];for(const ve of B)R.push(ve.type);R=de(R);const j={};let $=2*w.topPadding;if(p.db.getDisplayMode()==="compact"||w.displayMode==="compact"){const ve={};for(const xe of B)ve[xe.section]===void 0?ve[xe.section]=[xe]:ve[xe.section].push(xe);let te=0;for(const xe of Object.keys(ve)){const De=k$t(ve[xe],te)+1;te+=De,$+=De*(w.barHeight+w.barGap),j[xe]=De}}else{$+=B.length*(w.barHeight+w.barGap);for(const ve of R)j[ve]=B.filter(te=>te.type===ve).length}N.setAttribute("viewBox","0 0 "+S5+" "+$);const V=E.select(`[id="${a}"]`),Q=J7t().domain([O5t(B,function(ve){return ve.startTime}),I5t(B,function(ve){return ve.endTime})]).rangeRound([0,S5-w.leftPadding-w.rightPadding]);function oe(ve,te){const xe=ve.startTime,De=te.startTime;let he=0;return xe>De?he=1:xewt.order))].map(wt=>ve.find(jt=>jt.order===wt));V.append("g").selectAll("rect").data(me).enter().append("rect").attr("x",0).attr("y",function(wt,jt){return jt=wt.order,jt*te+xe-2}).attr("width",function(){return ee-w.rightPadding/2}).attr("height",te).attr("class",function(wt){for(const[jt,At]of R.entries())if(wt.type===At)return"section section"+jt%w.numberSectionStyles;return"section section0"});const gt=V.append("g").selectAll("rect").data(ve).enter(),pe=p.db.getLinks();if(gt.append("rect").attr("id",function(wt){return wt.id}).attr("rx",3).attr("ry",3).attr("x",function(wt){return wt.milestone?Q(wt.startTime)+De+.5*(Q(wt.endTime)-Q(wt.startTime))-.5*he:Q(wt.startTime)+De}).attr("y",function(wt,jt){return jt=wt.order,jt*te+xe}).attr("width",function(wt){return wt.milestone?he:Q(wt.renderEndTime||wt.endTime)-Q(wt.startTime)}).attr("height",he).attr("transform-origin",function(wt,jt){return jt=wt.order,(Q(wt.startTime)+De+.5*(Q(wt.endTime)-Q(wt.startTime))).toString()+"px "+(jt*te+xe+.5*he).toString()+"px"}).attr("class",function(wt){const jt="task";let At="";wt.classes.length>0&&(At=wt.classes.join(" "));let Bt=0;for(const[Nn,Ot]of R.entries())wt.type===Ot&&(Bt=Nn%w.numberSectionStyles);let cn="";return wt.active?wt.crit?cn+=" activeCrit":cn=" active":wt.done?wt.crit?cn=" doneCrit":cn=" done":wt.crit&&(cn+=" crit"),cn.length===0&&(cn=" task"),wt.milestone&&(cn=" milestone "+cn),cn+=Bt,cn+=" "+At,jt+cn}),gt.append("text").attr("id",function(wt){return wt.id+"-text"}).text(function(wt){return wt.task}).attr("font-size",w.fontSize).attr("x",function(wt){let jt=Q(wt.startTime),At=Q(wt.renderEndTime||wt.endTime);wt.milestone&&(jt+=.5*(Q(wt.endTime)-Q(wt.startTime))-.5*he),wt.milestone&&(At=jt+he);const Bt=this.getBBox().width;return Bt>At-jt?At+Bt+1.5*w.leftPadding>ee?jt+De-5:At+De+5:(At-jt)/2+jt+De}).attr("y",function(wt,jt){return jt=wt.order,jt*te+w.barHeight/2+(w.fontSize/2-2)+xe}).attr("text-height",he).attr("class",function(wt){const jt=Q(wt.startTime);let At=Q(wt.endTime);wt.milestone&&(At=jt+he);const Bt=this.getBBox().width;let cn="";wt.classes.length>0&&(cn=wt.classes.join(" "));let Nn=0;for(const[oi,kt]of R.entries())wt.type===kt&&(Nn=oi%w.numberSectionStyles);let Ot="";return wt.active&&(wt.crit?Ot="activeCritText"+Nn:Ot="activeText"+Nn),wt.done?wt.crit?Ot=Ot+" doneCritText"+Nn:Ot=Ot+" doneText"+Nn:wt.crit&&(Ot=Ot+" critText"+Nn),wt.milestone&&(Ot+=" milestoneText"),Bt>At-jt?At+Bt+1.5*w.leftPadding>ee?cn+" taskTextOutsideLeft taskTextOutside"+Nn+" "+Ot:cn+" taskTextOutsideRight taskTextOutside"+Nn+" "+Ot+" width-"+Bt:cn+" taskText taskText"+Nn+" "+Ot+" width-"+Bt}),Tt().securityLevel==="sandbox"){let wt;wt=Cr("#i"+a);const jt=wt.nodes()[0].contentDocument;gt.filter(function(At){return pe[At.id]!==void 0}).each(function(At){var Bt=jt.querySelector("#"+At.id),cn=jt.querySelector("#"+At.id+"-text");const Nn=Bt.parentNode;var Ot=jt.createElement("a");Ot.setAttribute("xlink:href",pe[At.id]),Ot.setAttribute("target","_top"),Nn.appendChild(Ot),Ot.appendChild(Bt),Ot.appendChild(cn)})}}function ge(ve,te,xe,De,he,Ie,ee,rt){const me=Ie.reduce((Bt,{startTime:cn})=>Bt?Math.min(Bt,cn):cn,0),gt=Ie.reduce((Bt,{endTime:cn})=>Bt?Math.max(Bt,cn):cn,0),pe=p.db.getDateFormat();if(!me||!gt)return;const Et=[];let wt=null,jt=ru(me);for(;jt.valueOf()<=gt;)p.db.isInvalidDate(jt,pe,ee,rt)?wt?wt.end=jt:wt={start:jt,end:jt}:wt&&(Et.push(wt),wt=null),jt=jt.add(1,"d");V.append("g").selectAll("rect").data(Et).enter().append("rect").attr("id",function(Bt){return"exclude-"+Bt.start.format("YYYY-MM-DD")}).attr("x",function(Bt){return Q(Bt.start)+xe}).attr("y",w.gridLineStartPadding).attr("width",function(Bt){const cn=Bt.end.add(1,"day");return Q(cn)-Q(Bt.start)}).attr("height",he-te-w.gridLineStartPadding).attr("transform-origin",function(Bt,cn){return(Q(Bt.start)+xe+.5*(Q(Bt.end)-Q(Bt.start))).toString()+"px "+(cn*ve+.5*he).toString()+"px"}).attr("class","exclude-range")}function ye(ve,te,xe,De){let he=H5t(Q).tickSize(-De+te+w.gridLineStartPadding).tickFormat($U(p.db.getAxisFormat()||w.axisFormat||"%Y-%m-%d"));const ee=/^([1-9]\d*)(minute|hour|day|week|month)$/.exec(p.db.getTickInterval()||w.tickInterval);if(ee!==null){const rt=ee[1];switch(ee[2]){case"minute":he.ticks(PU.every(rt));break;case"hour":he.ticks(BU.every(rt));break;case"day":he.ticks(yA.every(rt));break;case"week":he.ticks(kA.every(rt));break;case"month":he.ticks(FU.every(rt));break}}if(V.append("g").attr("class","grid").attr("transform","translate("+ve+", "+(De-50)+")").call(he).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),p.db.topAxisEnabled()||w.topAxis){let rt=$5t(Q).tickSize(-De+te+w.gridLineStartPadding).tickFormat($U(p.db.getAxisFormat()||w.axisFormat||"%Y-%m-%d"));if(ee!==null){const me=ee[1];switch(ee[2]){case"minute":rt.ticks(PU.every(me));break;case"hour":rt.ticks(BU.every(me));break;case"day":rt.ticks(yA.every(me));break;case"week":rt.ticks(kA.every(me));break;case"month":rt.ticks(FU.every(me));break}}V.append("g").attr("class","grid").attr("transform","translate("+ve+", "+te+")").call(rt).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}function ke(ve,te){let xe=0;const De=Object.keys(j).map(he=>[he,j[he]]);V.append("g").selectAll("text").data(De).enter().append(function(he){const Ie=he[0].split(Wa.lineBreakRegex),ee=-(Ie.length-1)/2,rt=S.createElementNS("http://www.w3.org/2000/svg","text");rt.setAttribute("dy",ee+"em");for(const[me,gt]of Ie.entries()){const pe=S.createElementNS("http://www.w3.org/2000/svg","tspan");pe.setAttribute("alignment-baseline","central"),pe.setAttribute("x","10"),me>0&&pe.setAttribute("dy","1em"),pe.textContent=gt,rt.appendChild(pe)}return rt}).attr("x",10).attr("y",function(he,Ie){if(Ie>0)for(let ee=0;ee` + .mermaid-main-font { + font-family: "trebuchet ms", verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + .exclude-range { + fill: ${i.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${i.sectionBkgColor}; + } + + .section2 { + fill: ${i.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${i.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${i.titleColor}; + } + + .sectionTitle1 { + fill: ${i.titleColor}; + } + + .sectionTitle2 { + fill: ${i.titleColor}; + } + + .sectionTitle3 { + fill: ${i.titleColor}; + } + + .sectionTitle { + text-anchor: start; + // font-size: ${i.ganttFontSize}; + // text-height: 14px; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${i.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + text { + font-family: ${i.fontFamily}; + fill: ${i.textColor}; + } + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${i.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + + // .taskText:not([font-size]) { + // font-size: ${i.ganttFontSize}; + // } + + .taskTextOutsideRight { + fill: ${i.taskTextDarkColor}; + text-anchor: start; + // font-size: ${i.ganttFontSize}; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + + } + + .taskTextOutsideLeft { + fill: ${i.taskTextDarkColor}; + text-anchor: end; + // font-size: ${i.ganttFontSize}; + } + + /* Special case clickable */ + .task.clickable { + cursor: pointer; + } + .taskText.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${i.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${i.taskBkgColor}; + stroke: ${i.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${i.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${i.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${i.activeTaskBkgColor}; + stroke: ${i.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${i.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${i.doneTaskBorderColor}; + fill: ${i.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${i.taskTextDarkColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${i.critBorderColor}; + fill: ${i.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${i.critBorderColor}; + fill: ${i.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${i.critBorderColor}; + fill: ${i.doneTaskBkgColor}; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; + } + + .milestone { + transform: rotate(45deg) scale(0.8,0.8); + } + + .milestoneText { + font-style: italic; + } + .doneCritText0, + .doneCritText1, + .doneCritText2, + .doneCritText3 { + fill: ${i.taskTextDarkColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${i.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor} ; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } +`}},Symbol.toStringTag,{value:"Module"}));var W0e=function(){var i=function(y,b,E,S){for(E=E||{},S=y.length;S--;E[y[S]]=b);return E},a=[6,9,10],f={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(b,E,S,N,B,R,j){switch(R.length-1,B){case 1:return N;case 4:break;case 6:N.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},i(a,[2,3]),i(a,[2,4]),i(a,[2,5]),i(a,[2,6])],defaultActions:{4:[2,1]},parseError:function(b,E){if(E.recoverable)this.trace(b);else{var S=new Error(b);throw S.hash=E,S}},parse:function(b){var E=this,S=[0],N=[],B=[null],R=[],j=this.table,$="",V=0,Q=0,oe=2,ce=1,se=R.slice.call(arguments,1),ge=Object.create(this.lexer),ye={yy:{}};for(var ke in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ke)&&(ye.yy[ke]=this.yy[ke]);ge.setInput(b,ye.yy),ye.yy.lexer=ge,ye.yy.parser=this,typeof ge.yylloc>"u"&&(ge.yylloc={});var Ae=ge.yylloc;R.push(Ae);var de=ge.options&&ge.options.ranges;typeof ye.yy.parseError=="function"?this.parseError=ye.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ve(){var Et;return Et=N.pop()||ge.lex()||ce,typeof Et!="number"&&(Et instanceof Array&&(N=Et,Et=N.pop()),Et=E.symbols_[Et]||Et),Et}for(var te,xe,De,he,Ie={},ee,rt,me,gt;;){if(xe=S[S.length-1],this.defaultActions[xe]?De=this.defaultActions[xe]:((te===null||typeof te>"u")&&(te=ve()),De=j[xe]&&j[xe][te]),typeof De>"u"||!De.length||!De[0]){var pe="";gt=[];for(ee in j[xe])this.terminals_[ee]&&ee>oe&>.push("'"+this.terminals_[ee]+"'");ge.showPosition?pe="Parse error on line "+(V+1)+`: +`+ge.showPosition()+` +Expecting `+gt.join(", ")+", got '"+(this.terminals_[te]||te)+"'":pe="Parse error on line "+(V+1)+": Unexpected "+(te==ce?"end of input":"'"+(this.terminals_[te]||te)+"'"),this.parseError(pe,{text:ge.match,token:this.terminals_[te]||te,line:ge.yylineno,loc:Ae,expected:gt})}if(De[0]instanceof Array&&De.length>1)throw new Error("Parse Error: multiple actions possible at state: "+xe+", token: "+te);switch(De[0]){case 1:S.push(te),B.push(ge.yytext),R.push(ge.yylloc),S.push(De[1]),te=null,Q=ge.yyleng,$=ge.yytext,V=ge.yylineno,Ae=ge.yylloc;break;case 2:if(rt=this.productions_[De[1]][1],Ie.$=B[B.length-rt],Ie._$={first_line:R[R.length-(rt||1)].first_line,last_line:R[R.length-1].last_line,first_column:R[R.length-(rt||1)].first_column,last_column:R[R.length-1].last_column},de&&(Ie._$.range=[R[R.length-(rt||1)].range[0],R[R.length-1].range[1]]),he=this.performAction.apply(Ie,[$,Q,V,ye.yy,De[1],B,R].concat(se)),typeof he<"u")return he;rt&&(S=S.slice(0,-1*rt*2),B=B.slice(0,-1*rt),R=R.slice(0,-1*rt)),S.push(this.productions_[De[1]][0]),B.push(Ie.$),R.push(Ie._$),me=j[S[S.length-2]][S[S.length-1]],S.push(me);break;case 3:return!0}}return!0}},p=function(){var y={EOF:1,parseError:function(E,S){if(this.yy.parser)this.yy.parser.parseError(E,S);else throw new Error(E)},setInput:function(b,E){return this.yy=E||this.yy||{},this._input=b,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var b=this._input[0];this.yytext+=b,this.yyleng++,this.offset++,this.match+=b,this.matched+=b;var E=b.match(/(?:\r\n?|\n).*/g);return E?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),b},unput:function(b){var E=b.length,S=b.split(/(?:\r\n?|\n)/g);this._input=b+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-E),this.offset-=E;var N=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),S.length-1&&(this.yylineno-=S.length-1);var B=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:S?(S.length===N.length?this.yylloc.first_column:0)+N[N.length-S.length].length-S[0].length:this.yylloc.first_column-E},this.options.ranges&&(this.yylloc.range=[B[0],B[0]+this.yyleng-E]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(b){this.unput(this.match.slice(b))},pastInput:function(){var b=this.matched.substr(0,this.matched.length-this.match.length);return(b.length>20?"...":"")+b.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var b=this.match;return b.length<20&&(b+=this._input.substr(0,20-b.length)),(b.substr(0,20)+(b.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var b=this.pastInput(),E=new Array(b.length+1).join("-");return b+this.upcomingInput()+` +`+E+"^"},test_match:function(b,E){var S,N,B;if(this.options.backtrack_lexer&&(B={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(B.yylloc.range=this.yylloc.range.slice(0))),N=b[0].match(/(?:\r\n?|\n).*/g),N&&(this.yylineno+=N.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:N?N[N.length-1].length-N[N.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],S=this.performAction.call(this,this.yy,this,E,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),S)return S;if(this._backtrack){for(var R in B)this[R]=B[R];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var b,E,S,N;this._more||(this.yytext="",this.match="");for(var B=this._currentRules(),R=0;RE[0].length)){if(E=S,N=R,this.options.backtrack_lexer){if(b=this.test_match(S,B[R]),b!==!1)return b;if(this._backtrack){E=!1;continue}else return!1}else if(!this.options.flex)break}return E?(b=this.test_match(E,B[N]),b!==!1?b:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var E=this.next();return E||this.lex()},begin:function(E){this.conditionStack.push(E)},popState:function(){var E=this.conditionStack.length-1;return E>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(E){return E=this.conditionStack.length-1-Math.abs(E||0),E>=0?this.conditionStack[E]:"INITIAL"},pushState:function(E){this.begin(E)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(E,S,N,B){switch(N){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};return y}();f.lexer=p;function w(){this.yy={}}return w.prototype=f,f.Parser=w,new w}();W0e.parser=W0e;const E$t=W0e;var ARe="",LRe=!1;const T$t=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:E$t,db:{setMessage:i=>{Fe.debug("Setting message to: "+i),ARe=i},getMessage:()=>ARe,setInfo:i=>{LRe=i},getInfo:()=>LRe,clear:rp},renderer:{draw:(i,a,f)=>{try{Fe.debug(`Rendering info diagram +`+i);const p=Tt().securityLevel;let w;p==="sandbox"&&(w=Cr("#i"+a));const b=Cr(p==="sandbox"?w.nodes()[0].contentDocument.body:"body").select("#"+a);b.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+f),b.attr("height",100),b.attr("width",400)}catch(p){Fe.error("Error while rendering info diagram"),Fe.error(p.message)}}},styles:()=>""}},Symbol.toStringTag,{value:"Module"}));var K0e=function(){var i=function(Ae,de,ve,te){for(ve=ve||{},te=Ae.length;te--;ve[Ae[te]]=de);return ve},a=[1,4],f=[1,5],p=[1,6],w=[1,7],y=[1,9],b=[1,11,13,15,17,19,20,26,27,28,29],E=[2,5],S=[1,6,11,13,15,17,19,20,26,27,28,29],N=[26,27,28],B=[2,8],R=[1,18],j=[1,19],$=[1,20],V=[1,21],Q=[1,22],oe=[1,23],ce=[1,28],se=[6,26,27,28,29],ge={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,showData:8,line:9,statement:10,txt:11,value:12,title:13,title_value:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,openDirective:21,typeDirective:22,closeDirective:23,":":24,argDirective:25,NEWLINE:26,";":27,EOF:28,open_directive:29,type_directive:30,arg_directive:31,close_directive:32,$accept:0,$end:1},terminals_:{2:"error",6:"PIE",8:"showData",11:"txt",12:"value",13:"title",14:"title_value",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",24:":",26:"NEWLINE",27:";",28:"EOF",29:"open_directive",30:"type_directive",31:"arg_directive",32:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[21,1],[22,1],[25,1],[23,1]],performAction:function(de,ve,te,xe,De,he,Ie){var ee=he.length-1;switch(De){case 4:xe.setShowData(!0);break;case 7:this.$=he[ee-1];break;case 9:xe.addSection(he[ee-1],xe.cleanupValue(he[ee]));break;case 10:this.$=he[ee].trim(),xe.setDiagramTitle(this.$);break;case 11:this.$=he[ee].trim(),xe.setAccTitle(this.$);break;case 12:case 13:this.$=he[ee].trim(),xe.setAccDescription(this.$);break;case 14:xe.addSection(he[ee].substr(8)),this.$=he[ee].substr(8);break;case 21:xe.parseDirective("%%{","open_directive");break;case 22:xe.parseDirective(he[ee],"type_directive");break;case 23:he[ee]=he[ee].trim().replace(/'/g,'"'),xe.parseDirective(he[ee],"arg_directive");break;case 24:xe.parseDirective("}%%","close_directive","pie");break}},table:[{3:1,4:2,5:3,6:a,21:8,26:f,27:p,28:w,29:y},{1:[3]},{3:10,4:2,5:3,6:a,21:8,26:f,27:p,28:w,29:y},{3:11,4:2,5:3,6:a,21:8,26:f,27:p,28:w,29:y},i(b,E,{7:12,8:[1,13]}),i(S,[2,18]),i(S,[2,19]),i(S,[2,20]),{22:14,30:[1,15]},{30:[2,21]},{1:[2,1]},{1:[2,2]},i(N,B,{21:8,9:16,10:17,5:24,1:[2,3],11:R,13:j,15:$,17:V,19:Q,20:oe,29:y}),i(b,E,{7:25}),{23:26,24:[1,27],32:ce},i([24,32],[2,22]),i(b,[2,6]),{4:29,26:f,27:p,28:w},{12:[1,30]},{14:[1,31]},{16:[1,32]},{18:[1,33]},i(N,[2,13]),i(N,[2,14]),i(N,[2,15]),i(N,B,{21:8,9:16,10:17,5:24,1:[2,4],11:R,13:j,15:$,17:V,19:Q,20:oe,29:y}),i(se,[2,16]),{25:34,31:[1,35]},i(se,[2,24]),i(b,[2,7]),i(N,[2,9]),i(N,[2,10]),i(N,[2,11]),i(N,[2,12]),{23:36,32:ce},{32:[2,23]},i(se,[2,17])],defaultActions:{9:[2,21],10:[2,1],11:[2,2],35:[2,23]},parseError:function(de,ve){if(ve.recoverable)this.trace(de);else{var te=new Error(de);throw te.hash=ve,te}},parse:function(de){var ve=this,te=[0],xe=[],De=[null],he=[],Ie=this.table,ee="",rt=0,me=0,gt=2,pe=1,Et=he.slice.call(arguments,1),wt=Object.create(this.lexer),jt={yy:{}};for(var At in this.yy)Object.prototype.hasOwnProperty.call(this.yy,At)&&(jt.yy[At]=this.yy[At]);wt.setInput(de,jt.yy),jt.yy.lexer=wt,jt.yy.parser=this,typeof wt.yylloc>"u"&&(wt.yylloc={});var Bt=wt.yylloc;he.push(Bt);var cn=wt.options&&wt.options.ranges;typeof jt.yy.parseError=="function"?this.parseError=jt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Nn(){var Bn;return Bn=xe.pop()||wt.lex()||pe,typeof Bn!="number"&&(Bn instanceof Array&&(xe=Bn,Bn=xe.pop()),Bn=ve.symbols_[Bn]||Bn),Bn}for(var Ot,oi,kt,Dt,vt={},Nt,ze,Xe,Lt;;){if(oi=te[te.length-1],this.defaultActions[oi]?kt=this.defaultActions[oi]:((Ot===null||typeof Ot>"u")&&(Ot=Nn()),kt=Ie[oi]&&Ie[oi][Ot]),typeof kt>"u"||!kt.length||!kt[0]){var Ge="";Lt=[];for(Nt in Ie[oi])this.terminals_[Nt]&&Nt>gt&&Lt.push("'"+this.terminals_[Nt]+"'");wt.showPosition?Ge="Parse error on line "+(rt+1)+`: +`+wt.showPosition()+` +Expecting `+Lt.join(", ")+", got '"+(this.terminals_[Ot]||Ot)+"'":Ge="Parse error on line "+(rt+1)+": Unexpected "+(Ot==pe?"end of input":"'"+(this.terminals_[Ot]||Ot)+"'"),this.parseError(Ge,{text:wt.match,token:this.terminals_[Ot]||Ot,line:wt.yylineno,loc:Bt,expected:Lt})}if(kt[0]instanceof Array&&kt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+oi+", token: "+Ot);switch(kt[0]){case 1:te.push(Ot),De.push(wt.yytext),he.push(wt.yylloc),te.push(kt[1]),Ot=null,me=wt.yyleng,ee=wt.yytext,rt=wt.yylineno,Bt=wt.yylloc;break;case 2:if(ze=this.productions_[kt[1]][1],vt.$=De[De.length-ze],vt._$={first_line:he[he.length-(ze||1)].first_line,last_line:he[he.length-1].last_line,first_column:he[he.length-(ze||1)].first_column,last_column:he[he.length-1].last_column},cn&&(vt._$.range=[he[he.length-(ze||1)].range[0],he[he.length-1].range[1]]),Dt=this.performAction.apply(vt,[ee,me,rt,jt.yy,kt[1],De,he].concat(Et)),typeof Dt<"u")return Dt;ze&&(te=te.slice(0,-1*ze*2),De=De.slice(0,-1*ze),he=he.slice(0,-1*ze)),te.push(this.productions_[kt[1]][0]),De.push(vt.$),he.push(vt._$),Xe=Ie[te[te.length-2]][te[te.length-1]],te.push(Xe);break;case 3:return!0}}return!0}},ye=function(){var Ae={EOF:1,parseError:function(ve,te){if(this.yy.parser)this.yy.parser.parseError(ve,te);else throw new Error(ve)},setInput:function(de,ve){return this.yy=ve||this.yy||{},this._input=de,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var de=this._input[0];this.yytext+=de,this.yyleng++,this.offset++,this.match+=de,this.matched+=de;var ve=de.match(/(?:\r\n?|\n).*/g);return ve?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),de},unput:function(de){var ve=de.length,te=de.split(/(?:\r\n?|\n)/g);this._input=de+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ve),this.offset-=ve;var xe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),te.length-1&&(this.yylineno-=te.length-1);var De=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:te?(te.length===xe.length?this.yylloc.first_column:0)+xe[xe.length-te.length].length-te[0].length:this.yylloc.first_column-ve},this.options.ranges&&(this.yylloc.range=[De[0],De[0]+this.yyleng-ve]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(de){this.unput(this.match.slice(de))},pastInput:function(){var de=this.matched.substr(0,this.matched.length-this.match.length);return(de.length>20?"...":"")+de.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var de=this.match;return de.length<20&&(de+=this._input.substr(0,20-de.length)),(de.substr(0,20)+(de.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var de=this.pastInput(),ve=new Array(de.length+1).join("-");return de+this.upcomingInput()+` +`+ve+"^"},test_match:function(de,ve){var te,xe,De;if(this.options.backtrack_lexer&&(De={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(De.yylloc.range=this.yylloc.range.slice(0))),xe=de[0].match(/(?:\r\n?|\n).*/g),xe&&(this.yylineno+=xe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:xe?xe[xe.length-1].length-xe[xe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+de[0].length},this.yytext+=de[0],this.match+=de[0],this.matches=de,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(de[0].length),this.matched+=de[0],te=this.performAction.call(this,this.yy,this,ve,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),te)return te;if(this._backtrack){for(var he in De)this[he]=De[he];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var de,ve,te,xe;this._more||(this.yytext="",this.match="");for(var De=this._currentRules(),he=0;heve[0].length)){if(ve=te,xe=he,this.options.backtrack_lexer){if(de=this.test_match(te,De[he]),de!==!1)return de;if(this._backtrack){ve=!1;continue}else return!1}else if(!this.options.flex)break}return ve?(de=this.test_match(ve,De[xe]),de!==!1?de:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var ve=this.next();return ve||this.lex()},begin:function(ve){this.conditionStack.push(ve)},popState:function(){var ve=this.conditionStack.length-1;return ve>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(ve){return ve=this.conditionStack.length-1-Math.abs(ve||0),ve>=0?this.conditionStack[ve]:"INITIAL"},pushState:function(ve){this.begin(ve)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(ve,te,xe,De){switch(xe){case 0:return this.begin("open_directive"),29;case 1:return this.begin("type_directive"),30;case 2:return this.popState(),this.begin("arg_directive"),24;case 3:return this.popState(),this.popState(),32;case 4:return 31;case 5:break;case 6:break;case 7:return 26;case 8:break;case 9:break;case 10:return this.begin("title"),13;case 11:return this.popState(),"title_value";case 12:return this.begin("acc_title"),15;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),17;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:this.begin("string");break;case 20:this.popState();break;case 21:return"txt";case 22:return 6;case 23:return 8;case 24:return"value";case 25:return 28}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[20,21],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,14,16,19,22,23,24,25],inclusive:!0}}};return Ae}();ge.lexer=ye;function ke(){this.yy={}}return ke.prototype=ge,ge.Parser=ke,new ke}();K0e.parser=K0e;const _$t=K0e;let AK={},Y0e=!1;const C$t={parseDirective:function(i,a,f){rd.parseDirective(this,i,a,f)},getConfig:()=>Tt().pie,addSection:function(i,a){i=Wa.sanitizeText(i,Tt()),AK[i]===void 0&&(AK[i]=a,Fe.debug("Added new section :",i))},getSections:()=>AK,cleanupValue:function(i){return i.substring(0,1)===":"&&(i=i.substring(1).trim()),Number(i.trim())},clear:function(){AK={},Y0e=!1,rp()},setAccTitle:ip,getAccTitle:L2,setDiagramTitle:Uw,getDiagramTitle:Ww,setShowData:function(i){Y0e=i},getShowData:function(){return Y0e},getAccDescription:D2,setAccDescription:M2},S$t=i=>` + .pieCircle{ + stroke: ${i.pieStrokeColor}; + stroke-width : ${i.pieStrokeWidth}; + opacity : ${i.pieOpacity}; + } + .pieOuterCircle{ + stroke: ${i.pieOuterStrokeColor}; + stroke-width: ${i.pieOuterStrokeWidth}; + fill: none; + } + .pieTitleText { + text-anchor: middle; + font-size: ${i.pieTitleTextSize}; + fill: ${i.pieTitleTextColor}; + font-family: ${i.fontFamily}; + } + .slice { + font-family: ${i.fontFamily}; + fill: ${i.pieSectionTextColor}; + font-size:${i.pieSectionTextSize}; + // fill: white; + } + .legend text { + fill: ${i.pieLegendTextColor}; + font-family: ${i.fontFamily}; + font-size: ${i.pieLegendTextSize}; + } +`;let d3=Tt(),A5;const CP=450,A$t=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:_$t,db:C$t,renderer:{draw:(i,a,f,p)=>{var ge;try{d3=Tt(),Fe.debug(`Rendering info diagram +`+i);const ye=Tt().securityLevel;let ke;ye==="sandbox"&&(ke=Cr("#i"+a));const Ae=Cr(ye==="sandbox"?ke.nodes()[0].contentDocument.body:"body"),de=ye==="sandbox"?ke.nodes()[0].contentDocument:document;p.db.clear(),p.parser.parse(i),Fe.debug("Parsed info diagram");const ve=de.getElementById(a);A5=ve.parentElement.offsetWidth,A5===void 0&&(A5=1200),d3.useWidth!==void 0&&(A5=d3.useWidth),d3.pie.useWidth!==void 0&&(A5=d3.pie.useWidth);const te=Ae.select("#"+a);Vw(te,CP,A5,d3.pie.useMaxWidth),ve.setAttribute("viewBox","0 0 "+A5+" "+CP);var w=40,y=18,b=4,E=Math.min(A5,CP)/2-w,S=te.append("g").attr("transform","translate("+A5/2+","+CP/2+")"),N=p.db.getSections(),B=0;Object.keys(N).forEach(function(Ie){B+=N[Ie]});const xe=d3.themeVariables;var R=[xe.pie1,xe.pie2,xe.pie3,xe.pie4,xe.pie5,xe.pie6,xe.pie7,xe.pie8,xe.pie9,xe.pie10,xe.pie11,xe.pie12];const De=((ge=d3.pie)==null?void 0:ge.textPosition)??.75;let[he]=$A(xe.pieOuterStrokeWidth);he??(he=2);var j=DMe().range(R),$=Object.entries(N).map(function(Ie,ee){return{order:ee,name:Ie[0],value:Ie[1]}}),V=fEt().value(function(Ie){return Ie.value}).sort(function(Ie,ee){return Ie.order-ee.order}),Q=V($),oe=CA().innerRadius(0).outerRadius(E),ce=CA().innerRadius(E*De).outerRadius(E*De);S.append("circle").attr("cx",0).attr("cy",0).attr("r",E+he/2).attr("class","pieOuterCircle"),S.selectAll("mySlices").data(Q).enter().append("path").attr("d",oe).attr("fill",function(Ie){return j(Ie.data.name)}).attr("class","pieCircle"),S.selectAll("mySlices").data(Q).enter().append("text").text(function(Ie){return(Ie.data.value/B*100).toFixed(0)+"%"}).attr("transform",function(Ie){return"translate("+ce.centroid(Ie)+")"}).style("text-anchor","middle").attr("class","slice"),S.append("text").text(p.db.getDiagramTitle()).attr("x",0).attr("y",-(CP-50)/2).attr("class","pieTitleText");var se=S.selectAll(".legend").data(j.domain()).enter().append("g").attr("class","legend").attr("transform",function(Ie,ee){const rt=y+b,me=rt*j.domain().length/2,gt=12*y,pe=ee*rt-me;return"translate("+gt+","+pe+")"});se.append("rect").attr("width",y).attr("height",y).style("fill",j).style("stroke",j),se.data(Q).append("text").attr("x",y+b).attr("y",y-b).text(function(Ie){return p.db.getShowData()||d3.showData||d3.pie.showData?Ie.data.name+" ["+Ie.data.value+"]":Ie.data.name})}catch(ye){Fe.error("Error while rendering info diagram"),Fe.error(ye)}}},styles:S$t}},Symbol.toStringTag,{value:"Module"}));var X0e=function(){var i=function(oi,kt,Dt,vt){for(Dt=Dt||{},vt=oi.length;vt--;Dt[oi[vt]]=kt);return Dt},a=[1,3],f=[1,5],p=[1,6],w=[1,7],y=[1,8],b=[5,6,8,14,16,18,19,40,41,42,43,44,45,53,71,72],E=[1,22],S=[2,13],N=[1,26],B=[1,27],R=[1,28],j=[1,29],$=[1,30],V=[1,31],Q=[1,24],oe=[1,32],ce=[1,33],se=[1,36],ge=[71,72],ye=[5,8,14,16,18,19,40,41,42,43,44,45,53,60,62,71,72],ke=[1,56],Ae=[1,57],de=[1,58],ve=[1,59],te=[1,60],xe=[1,61],De=[1,62],he=[62,63],Ie=[1,74],ee=[1,70],rt=[1,71],me=[1,72],gt=[1,73],pe=[1,75],Et=[1,79],wt=[1,80],jt=[1,77],At=[1,78],Bt=[5,8,14,16,18,19,40,41,42,43,44,45,53,71,72],cn={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,openDirective:9,typeDirective:10,closeDirective:11,":":12,argDirective:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,requirementDef:23,elementDef:24,relationshipDef:25,requirementType:26,requirementName:27,STRUCT_START:28,requirementBody:29,ID:30,COLONSEP:31,id:32,TEXT:33,text:34,RISK:35,riskLevel:36,VERIFYMTHD:37,verifyType:38,STRUCT_STOP:39,REQUIREMENT:40,FUNCTIONAL_REQUIREMENT:41,INTERFACE_REQUIREMENT:42,PERFORMANCE_REQUIREMENT:43,PHYSICAL_REQUIREMENT:44,DESIGN_CONSTRAINT:45,LOW_RISK:46,MED_RISK:47,HIGH_RISK:48,VERIFY_ANALYSIS:49,VERIFY_DEMONSTRATION:50,VERIFY_INSPECTION:51,VERIFY_TEST:52,ELEMENT:53,elementName:54,elementBody:55,TYPE:56,type:57,DOCREF:58,ref:59,END_ARROW_L:60,relationship:61,LINE:62,END_ARROW_R:63,CONTAINS:64,COPIES:65,DERIVES:66,SATISFIES:67,VERIFIES:68,REFINES:69,TRACES:70,unqString:71,qString:72,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",12:":",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",28:"STRUCT_START",30:"ID",31:"COLONSEP",33:"TEXT",35:"RISK",37:"VERIFYMTHD",39:"STRUCT_STOP",40:"REQUIREMENT",41:"FUNCTIONAL_REQUIREMENT",42:"INTERFACE_REQUIREMENT",43:"PERFORMANCE_REQUIREMENT",44:"PHYSICAL_REQUIREMENT",45:"DESIGN_CONSTRAINT",46:"LOW_RISK",47:"MED_RISK",48:"HIGH_RISK",49:"VERIFY_ANALYSIS",50:"VERIFY_DEMONSTRATION",51:"VERIFY_INSPECTION",52:"VERIFY_TEST",53:"ELEMENT",56:"TYPE",58:"DOCREF",60:"END_ARROW_L",62:"LINE",63:"END_ARROW_R",64:"CONTAINS",65:"COPIES",66:"DERIVES",67:"SATISFIES",68:"VERIFIES",69:"REFINES",70:"TRACES",71:"unqString",72:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,3],[4,5],[4,2],[4,2],[4,1],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[23,5],[29,5],[29,5],[29,5],[29,5],[29,2],[29,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[36,1],[36,1],[36,1],[38,1],[38,1],[38,1],[38,1],[24,5],[55,5],[55,5],[55,2],[55,1],[25,5],[25,5],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[27,1],[27,1],[32,1],[32,1],[34,1],[34,1],[54,1],[54,1],[57,1],[57,1],[59,1],[59,1]],performAction:function(kt,Dt,vt,Nt,ze,Xe,Lt){var Ge=Xe.length-1;switch(ze){case 6:this.$=Xe[Ge].trim(),Nt.setAccTitle(this.$);break;case 7:case 8:this.$=Xe[Ge].trim(),Nt.setAccDescription(this.$);break;case 9:Nt.parseDirective("%%{","open_directive");break;case 10:Nt.parseDirective(Xe[Ge],"type_directive");break;case 11:Xe[Ge]=Xe[Ge].trim().replace(/'/g,'"'),Nt.parseDirective(Xe[Ge],"arg_directive");break;case 12:Nt.parseDirective("}%%","close_directive","pie");break;case 13:this.$=[];break;case 19:Nt.addRequirement(Xe[Ge-3],Xe[Ge-4]);break;case 20:Nt.setNewReqId(Xe[Ge-2]);break;case 21:Nt.setNewReqText(Xe[Ge-2]);break;case 22:Nt.setNewReqRisk(Xe[Ge-2]);break;case 23:Nt.setNewReqVerifyMethod(Xe[Ge-2]);break;case 26:this.$=Nt.RequirementType.REQUIREMENT;break;case 27:this.$=Nt.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 28:this.$=Nt.RequirementType.INTERFACE_REQUIREMENT;break;case 29:this.$=Nt.RequirementType.PERFORMANCE_REQUIREMENT;break;case 30:this.$=Nt.RequirementType.PHYSICAL_REQUIREMENT;break;case 31:this.$=Nt.RequirementType.DESIGN_CONSTRAINT;break;case 32:this.$=Nt.RiskLevel.LOW_RISK;break;case 33:this.$=Nt.RiskLevel.MED_RISK;break;case 34:this.$=Nt.RiskLevel.HIGH_RISK;break;case 35:this.$=Nt.VerifyType.VERIFY_ANALYSIS;break;case 36:this.$=Nt.VerifyType.VERIFY_DEMONSTRATION;break;case 37:this.$=Nt.VerifyType.VERIFY_INSPECTION;break;case 38:this.$=Nt.VerifyType.VERIFY_TEST;break;case 39:Nt.addElement(Xe[Ge-3]);break;case 40:Nt.setNewElementType(Xe[Ge-2]);break;case 41:Nt.setNewElementDocRef(Xe[Ge-2]);break;case 44:Nt.addRelationship(Xe[Ge-2],Xe[Ge],Xe[Ge-4]);break;case 45:Nt.addRelationship(Xe[Ge-2],Xe[Ge-4],Xe[Ge]);break;case 46:this.$=Nt.Relationships.CONTAINS;break;case 47:this.$=Nt.Relationships.COPIES;break;case 48:this.$=Nt.Relationships.DERIVES;break;case 49:this.$=Nt.Relationships.SATISFIES;break;case 50:this.$=Nt.Relationships.VERIFIES;break;case 51:this.$=Nt.Relationships.REFINES;break;case 52:this.$=Nt.Relationships.TRACES;break}},table:[{3:1,4:2,6:a,9:4,14:f,16:p,18:w,19:y},{1:[3]},{3:10,4:2,5:[1,9],6:a,9:4,14:f,16:p,18:w,19:y},{5:[1,11]},{10:12,20:[1,13]},{15:[1,14]},{17:[1,15]},i(b,[2,8]),{20:[2,9]},{3:16,4:2,6:a,9:4,14:f,16:p,18:w,19:y},{1:[2,2]},{4:21,5:E,7:17,8:S,9:4,14:f,16:p,18:w,19:y,23:18,24:19,25:20,26:23,32:25,40:N,41:B,42:R,43:j,44:$,45:V,53:Q,71:oe,72:ce},{11:34,12:[1,35],22:se},i([12,22],[2,10]),i(b,[2,6]),i(b,[2,7]),{1:[2,1]},{8:[1,37]},{4:21,5:E,7:38,8:S,9:4,14:f,16:p,18:w,19:y,23:18,24:19,25:20,26:23,32:25,40:N,41:B,42:R,43:j,44:$,45:V,53:Q,71:oe,72:ce},{4:21,5:E,7:39,8:S,9:4,14:f,16:p,18:w,19:y,23:18,24:19,25:20,26:23,32:25,40:N,41:B,42:R,43:j,44:$,45:V,53:Q,71:oe,72:ce},{4:21,5:E,7:40,8:S,9:4,14:f,16:p,18:w,19:y,23:18,24:19,25:20,26:23,32:25,40:N,41:B,42:R,43:j,44:$,45:V,53:Q,71:oe,72:ce},{4:21,5:E,7:41,8:S,9:4,14:f,16:p,18:w,19:y,23:18,24:19,25:20,26:23,32:25,40:N,41:B,42:R,43:j,44:$,45:V,53:Q,71:oe,72:ce},{4:21,5:E,7:42,8:S,9:4,14:f,16:p,18:w,19:y,23:18,24:19,25:20,26:23,32:25,40:N,41:B,42:R,43:j,44:$,45:V,53:Q,71:oe,72:ce},{27:43,71:[1,44],72:[1,45]},{54:46,71:[1,47],72:[1,48]},{60:[1,49],62:[1,50]},i(ge,[2,26]),i(ge,[2,27]),i(ge,[2,28]),i(ge,[2,29]),i(ge,[2,30]),i(ge,[2,31]),i(ye,[2,55]),i(ye,[2,56]),i(b,[2,4]),{13:51,21:[1,52]},i(b,[2,12]),{1:[2,3]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{8:[2,17]},{8:[2,18]},{28:[1,53]},{28:[2,53]},{28:[2,54]},{28:[1,54]},{28:[2,59]},{28:[2,60]},{61:55,64:ke,65:Ae,66:de,67:ve,68:te,69:xe,70:De},{61:63,64:ke,65:Ae,66:de,67:ve,68:te,69:xe,70:De},{11:64,22:se},{22:[2,11]},{5:[1,65]},{5:[1,66]},{62:[1,67]},i(he,[2,46]),i(he,[2,47]),i(he,[2,48]),i(he,[2,49]),i(he,[2,50]),i(he,[2,51]),i(he,[2,52]),{63:[1,68]},i(b,[2,5]),{5:Ie,29:69,30:ee,33:rt,35:me,37:gt,39:pe},{5:Et,39:wt,55:76,56:jt,58:At},{32:81,71:oe,72:ce},{32:82,71:oe,72:ce},i(Bt,[2,19]),{31:[1,83]},{31:[1,84]},{31:[1,85]},{31:[1,86]},{5:Ie,29:87,30:ee,33:rt,35:me,37:gt,39:pe},i(Bt,[2,25]),i(Bt,[2,39]),{31:[1,88]},{31:[1,89]},{5:Et,39:wt,55:90,56:jt,58:At},i(Bt,[2,43]),i(Bt,[2,44]),i(Bt,[2,45]),{32:91,71:oe,72:ce},{34:92,71:[1,93],72:[1,94]},{36:95,46:[1,96],47:[1,97],48:[1,98]},{38:99,49:[1,100],50:[1,101],51:[1,102],52:[1,103]},i(Bt,[2,24]),{57:104,71:[1,105],72:[1,106]},{59:107,71:[1,108],72:[1,109]},i(Bt,[2,42]),{5:[1,110]},{5:[1,111]},{5:[2,57]},{5:[2,58]},{5:[1,112]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[1,113]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[2,38]},{5:[1,114]},{5:[2,61]},{5:[2,62]},{5:[1,115]},{5:[2,63]},{5:[2,64]},{5:Ie,29:116,30:ee,33:rt,35:me,37:gt,39:pe},{5:Ie,29:117,30:ee,33:rt,35:me,37:gt,39:pe},{5:Ie,29:118,30:ee,33:rt,35:me,37:gt,39:pe},{5:Ie,29:119,30:ee,33:rt,35:me,37:gt,39:pe},{5:Et,39:wt,55:120,56:jt,58:At},{5:Et,39:wt,55:121,56:jt,58:At},i(Bt,[2,20]),i(Bt,[2,21]),i(Bt,[2,22]),i(Bt,[2,23]),i(Bt,[2,40]),i(Bt,[2,41])],defaultActions:{8:[2,9],10:[2,2],16:[2,1],37:[2,3],38:[2,14],39:[2,15],40:[2,16],41:[2,17],42:[2,18],44:[2,53],45:[2,54],47:[2,59],48:[2,60],52:[2,11],93:[2,57],94:[2,58],96:[2,32],97:[2,33],98:[2,34],100:[2,35],101:[2,36],102:[2,37],103:[2,38],105:[2,61],106:[2,62],108:[2,63],109:[2,64]},parseError:function(kt,Dt){if(Dt.recoverable)this.trace(kt);else{var vt=new Error(kt);throw vt.hash=Dt,vt}},parse:function(kt){var Dt=this,vt=[0],Nt=[],ze=[null],Xe=[],Lt=this.table,Ge="",Bn=0,Oe=0,Ri=2,tn=1,hi=Xe.slice.call(arguments,1),Sr=Object.create(this.lexer),Zn={yy:{}};for(var Xn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Xn)&&(Zn.yy[Xn]=this.yy[Xn]);Sr.setInput(kt,Zn.yy),Zn.yy.lexer=Sr,Zn.yy.parser=this,typeof Sr.yylloc>"u"&&(Sr.yylloc={});var ir=Sr.yylloc;Xe.push(ir);var Hn=Sr.options&&Sr.options.ranges;typeof Zn.yy.parseError=="function"?this.parseError=Zn.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function tr(){var br;return br=Nt.pop()||Sr.lex()||tn,typeof br!="number"&&(br instanceof Array&&(Nt=br,br=Nt.pop()),br=Dt.symbols_[br]||br),br}for(var ha,Zs,ns,Hi,Js={},Pc,Ga,ws,Oi;;){if(Zs=vt[vt.length-1],this.defaultActions[Zs]?ns=this.defaultActions[Zs]:((ha===null||typeof ha>"u")&&(ha=tr()),ns=Lt[Zs]&&Lt[Zs][ha]),typeof ns>"u"||!ns.length||!ns[0]){var Er="";Oi=[];for(Pc in Lt[Zs])this.terminals_[Pc]&&Pc>Ri&&Oi.push("'"+this.terminals_[Pc]+"'");Sr.showPosition?Er="Parse error on line "+(Bn+1)+`: +`+Sr.showPosition()+` +Expecting `+Oi.join(", ")+", got '"+(this.terminals_[ha]||ha)+"'":Er="Parse error on line "+(Bn+1)+": Unexpected "+(ha==tn?"end of input":"'"+(this.terminals_[ha]||ha)+"'"),this.parseError(Er,{text:Sr.match,token:this.terminals_[ha]||ha,line:Sr.yylineno,loc:ir,expected:Oi})}if(ns[0]instanceof Array&&ns.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Zs+", token: "+ha);switch(ns[0]){case 1:vt.push(ha),ze.push(Sr.yytext),Xe.push(Sr.yylloc),vt.push(ns[1]),ha=null,Oe=Sr.yyleng,Ge=Sr.yytext,Bn=Sr.yylineno,ir=Sr.yylloc;break;case 2:if(Ga=this.productions_[ns[1]][1],Js.$=ze[ze.length-Ga],Js._$={first_line:Xe[Xe.length-(Ga||1)].first_line,last_line:Xe[Xe.length-1].last_line,first_column:Xe[Xe.length-(Ga||1)].first_column,last_column:Xe[Xe.length-1].last_column},Hn&&(Js._$.range=[Xe[Xe.length-(Ga||1)].range[0],Xe[Xe.length-1].range[1]]),Hi=this.performAction.apply(Js,[Ge,Oe,Bn,Zn.yy,ns[1],ze,Xe].concat(hi)),typeof Hi<"u")return Hi;Ga&&(vt=vt.slice(0,-1*Ga*2),ze=ze.slice(0,-1*Ga),Xe=Xe.slice(0,-1*Ga)),vt.push(this.productions_[ns[1]][0]),ze.push(Js.$),Xe.push(Js._$),ws=Lt[vt[vt.length-2]][vt[vt.length-1]],vt.push(ws);break;case 3:return!0}}return!0}},Nn=function(){var oi={EOF:1,parseError:function(Dt,vt){if(this.yy.parser)this.yy.parser.parseError(Dt,vt);else throw new Error(Dt)},setInput:function(kt,Dt){return this.yy=Dt||this.yy||{},this._input=kt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var kt=this._input[0];this.yytext+=kt,this.yyleng++,this.offset++,this.match+=kt,this.matched+=kt;var Dt=kt.match(/(?:\r\n?|\n).*/g);return Dt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),kt},unput:function(kt){var Dt=kt.length,vt=kt.split(/(?:\r\n?|\n)/g);this._input=kt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Dt),this.offset-=Dt;var Nt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),vt.length-1&&(this.yylineno-=vt.length-1);var ze=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:vt?(vt.length===Nt.length?this.yylloc.first_column:0)+Nt[Nt.length-vt.length].length-vt[0].length:this.yylloc.first_column-Dt},this.options.ranges&&(this.yylloc.range=[ze[0],ze[0]+this.yyleng-Dt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(kt){this.unput(this.match.slice(kt))},pastInput:function(){var kt=this.matched.substr(0,this.matched.length-this.match.length);return(kt.length>20?"...":"")+kt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var kt=this.match;return kt.length<20&&(kt+=this._input.substr(0,20-kt.length)),(kt.substr(0,20)+(kt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var kt=this.pastInput(),Dt=new Array(kt.length+1).join("-");return kt+this.upcomingInput()+` +`+Dt+"^"},test_match:function(kt,Dt){var vt,Nt,ze;if(this.options.backtrack_lexer&&(ze={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ze.yylloc.range=this.yylloc.range.slice(0))),Nt=kt[0].match(/(?:\r\n?|\n).*/g),Nt&&(this.yylineno+=Nt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Nt?Nt[Nt.length-1].length-Nt[Nt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+kt[0].length},this.yytext+=kt[0],this.match+=kt[0],this.matches=kt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(kt[0].length),this.matched+=kt[0],vt=this.performAction.call(this,this.yy,this,Dt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),vt)return vt;if(this._backtrack){for(var Xe in ze)this[Xe]=ze[Xe];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var kt,Dt,vt,Nt;this._more||(this.yytext="",this.match="");for(var ze=this._currentRules(),Xe=0;XeDt[0].length)){if(Dt=vt,Nt=Xe,this.options.backtrack_lexer){if(kt=this.test_match(vt,ze[Xe]),kt!==!1)return kt;if(this._backtrack){Dt=!1;continue}else return!1}else if(!this.options.flex)break}return Dt?(kt=this.test_match(Dt,ze[Nt]),kt!==!1?kt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Dt=this.next();return Dt||this.lex()},begin:function(Dt){this.conditionStack.push(Dt)},popState:function(){var Dt=this.conditionStack.length-1;return Dt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Dt){return Dt=this.conditionStack.length-1-Math.abs(Dt||0),Dt>=0?this.conditionStack[Dt]:"INITIAL"},pushState:function(Dt){this.begin(Dt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Dt,vt,Nt,ze){switch(Nt){case 0:return this.begin("open_directive"),19;case 1:return this.begin("type_directive"),20;case 2:return this.popState(),this.begin("arg_directive"),12;case 3:return this.popState(),this.popState(),22;case 4:return 21;case 5:return"title";case 6:return this.begin("acc_title"),14;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),16;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 5;case 14:break;case 15:break;case 16:break;case 17:return 8;case 18:return 6;case 19:return 28;case 20:return 39;case 21:return 31;case 22:return 30;case 23:return 33;case 24:return 35;case 25:return 37;case 26:return 40;case 27:return 41;case 28:return 42;case 29:return 43;case 30:return 44;case 31:return 45;case 32:return 46;case 33:return 47;case 34:return 48;case 35:return 49;case 36:return 50;case 37:return 51;case 38:return 52;case 39:return 53;case 40:return 64;case 41:return 65;case 42:return 66;case 43:return 67;case 44:return 68;case 45:return 69;case 46:return 70;case 47:return 56;case 48:return 58;case 49:return 60;case 50:return 63;case 51:return 62;case 52:this.begin("string");break;case 53:this.popState();break;case 54:return"qString";case 55:return vt.yytext=vt.yytext.trim(),71}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[53,54],inclusive:!1},INITIAL:{rules:[0,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,55],inclusive:!0}}};return oi}();cn.lexer=Nn;function Ot(){this.yy={}}return Ot.prototype=cn,cn.Parser=Ot,new Ot}();X0e.parser=X0e;const L$t=X0e;let Q0e=[],up={},SP={},ox={},AP={};const M$t={RequirementType:{REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},RiskLevel:{LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},VerifyType:{VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Relationships:{CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},parseDirective:function(i,a,f){rd.parseDirective(this,i,a,f)},getConfig:()=>Tt().req,addRequirement:(i,a)=>(SP[i]===void 0&&(SP[i]={name:i,type:a,id:up.id,text:up.text,risk:up.risk,verifyMethod:up.verifyMethod}),up={},SP[i]),getRequirements:()=>SP,setNewReqId:i=>{up!==void 0&&(up.id=i)},setNewReqText:i=>{up!==void 0&&(up.text=i)},setNewReqRisk:i=>{up!==void 0&&(up.risk=i)},setNewReqVerifyMethod:i=>{up!==void 0&&(up.verifyMethod=i)},setAccTitle:ip,getAccTitle:L2,setAccDescription:M2,getAccDescription:D2,addElement:i=>(AP[i]===void 0&&(AP[i]={name:i,type:ox.type,docRef:ox.docRef},Fe.info("Added new requirement: ",i)),ox={},AP[i]),getElements:()=>AP,setNewElementType:i=>{ox!==void 0&&(ox.type=i)},setNewElementDocRef:i=>{ox!==void 0&&(ox.docRef=i)},addRelationship:(i,a,f)=>{Q0e.push({type:i,src:a,dst:f})},getRelationships:()=>Q0e,clear:()=>{Q0e=[],up={},SP={},ox={},AP={},rp()}},D$t=i=>` + + marker { + fill: ${i.relationColor}; + stroke: ${i.relationColor}; + } + + marker.cross { + stroke: ${i.lineColor}; + } + + svg { + font-family: ${i.fontFamily}; + font-size: ${i.fontSize}; + } + + .reqBox { + fill: ${i.requirementBackground}; + fill-opacity: 1.0; + stroke: ${i.requirementBorderColor}; + stroke-width: ${i.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${i.requirementTextColor}; + } + .reqLabelBox { + fill: ${i.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${i.requirementBorderColor}; + stroke-width: ${i.requirementBorderSize}; + } + .relationshipLine { + stroke: ${i.relationColor}; + stroke-width: 1; + } + .relationshipLabel { + fill: ${i.relationLabelColor}; + } + +`,Z0e={CONTAINS:"contains",ARROW:"arrow"},MRe={ReqMarkers:Z0e,insertLineEndings:(i,a)=>{let f=i.append("defs").append("marker").attr("id",Z0e.CONTAINS+"_line_ending").attr("refX",0).attr("refY",a.line_height/2).attr("markerWidth",a.line_height).attr("markerHeight",a.line_height).attr("orient","auto").append("g");f.append("circle").attr("cx",a.line_height/2).attr("cy",a.line_height/2).attr("r",a.line_height/2).attr("fill","none"),f.append("line").attr("x1",0).attr("x2",a.line_height).attr("y1",a.line_height/2).attr("y2",a.line_height/2).attr("stroke-width",1),f.append("line").attr("y1",0).attr("y2",a.line_height).attr("x1",a.line_height/2).attr("x2",a.line_height/2).attr("stroke-width",1),i.append("defs").append("marker").attr("id",Z0e.ARROW+"_line_ending").attr("refX",a.line_height).attr("refY",.5*a.line_height).attr("markerWidth",a.line_height).attr("markerHeight",a.line_height).attr("orient","auto").append("path").attr("d",`M0,0 + L${a.line_height},${a.line_height/2} + M${a.line_height},${a.line_height/2} + L0,${a.line_height}`).attr("stroke-width",1)}};let Mh={},DRe=0;const IRe=(i,a)=>i.insert("rect","#"+a).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",Mh.rect_min_width+"px").attr("height",Mh.rect_min_height+"px"),ORe=(i,a,f)=>{let p=Mh.rect_min_width/2,w=i.append("text").attr("class","req reqLabel reqTitle").attr("id",a).attr("x",p).attr("y",Mh.rect_padding).attr("dominant-baseline","hanging"),y=0;f.forEach(N=>{y==0?w.append("tspan").attr("text-anchor","middle").attr("x",Mh.rect_min_width/2).attr("dy",0).text(N):w.append("tspan").attr("text-anchor","middle").attr("x",Mh.rect_min_width/2).attr("dy",Mh.line_height*.75).text(N),y++});let b=1.5*Mh.rect_padding,E=y*Mh.line_height*.75,S=b+E;return i.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",Mh.rect_min_width).attr("y1",S).attr("y2",S),{titleNode:w,y:S}},NRe=(i,a,f,p)=>{let w=i.append("text").attr("class","req reqLabel").attr("id",a).attr("x",Mh.rect_padding).attr("y",p).attr("dominant-baseline","hanging"),y=0;const b=30;let E=[];return f.forEach(S=>{let N=S.length;for(;N>b&&y<3;){let B=S.substring(0,b);S=S.substring(b,S.length),N=S.length,E[E.length]=B,y++}if(y==3){let B=E[E.length-1];E[E.length-1]=B.substring(0,B.length-4)+"..."}else E[E.length]=S;y=0}),E.forEach(S=>{w.append("tspan").attr("x",Mh.rect_padding).attr("dy",Mh.line_height).text(S)}),w},I$t=(i,a,f,p)=>{const w=a.node().getTotalLength(),y=a.node().getPointAtLength(w*.5),b="rel"+DRe;DRe++;const S=i.append("text").attr("class","req relationshipLabel").attr("id",b).attr("x",y.x).attr("y",y.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(p).node().getBBox();i.insert("rect","#"+b).attr("class","req reqLabelBox").attr("x",y.x-S.width/2).attr("y",y.y-S.height/2).attr("width",S.width).attr("height",S.height).attr("fill","white").attr("fill-opacity","85%")},O$t=function(i,a,f,p,w){const y=f.edge(oL(a.src),oL(a.dst)),b=WE().x(function(S){return S.x}).y(function(S){return S.y}),E=i.insert("path","#"+p).attr("class","er relationshipLine").attr("d",b(y.points)).attr("fill","none");a.type==w.db.Relationships.CONTAINS?E.attr("marker-start","url("+Wa.getUrl(Mh.arrowMarkerAbsolute)+"#"+a.type+"_line_ending)"):(E.attr("stroke-dasharray","10,7"),E.attr("marker-end","url("+Wa.getUrl(Mh.arrowMarkerAbsolute)+"#"+MRe.ReqMarkers.ARROW+"_line_ending)")),I$t(i,E,Mh,`<<${a.type}>>`)},N$t=(i,a,f)=>{Object.keys(i).forEach(p=>{let w=i[p];p=oL(p),Fe.info("Added new requirement: ",p);const y=f.append("g").attr("id",p),b="req-"+p,E=IRe(y,b);let S=ORe(y,p+"_title",[`<<${w.type}>>`,`${w.name}`]);NRe(y,p+"_body",[`Id: ${w.id}`,`Text: ${w.text}`,`Risk: ${w.risk}`,`Verification: ${w.verifyMethod}`],S.y);const N=E.node().getBBox();a.setNode(p,{width:N.width,height:N.height,shape:"rect",id:p})})},P$t=(i,a,f)=>{Object.keys(i).forEach(p=>{let w=i[p];const y=oL(p),b=f.append("g").attr("id",y),E="element-"+y,S=IRe(b,E);let N=ORe(b,E+"_title",["<>",`${p}`]);NRe(b,E+"_body",[`Type: ${w.type||"Not Specified"}`,`Doc Ref: ${w.docRef||"None"}`],N.y);const B=S.node().getBBox();a.setNode(y,{width:B.width,height:B.height,shape:"rect",id:y})})},B$t=(i,a)=>(i.forEach(function(f){let p=oL(f.src),w=oL(f.dst);a.setEdge(p,w,{relationship:f})}),i),R$t=function(i,a){a.nodes().forEach(function(f){f!==void 0&&a.node(f)!==void 0&&(i.select("#"+f),i.select("#"+f).attr("transform","translate("+(a.node(f).x-a.node(f).width/2)+","+(a.node(f).y-a.node(f).height/2)+" )"))})},oL=i=>i.replace(/\s/g,"").replace(/\./g,"_"),F$t=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:L$t,db:M$t,renderer:{draw:(i,a,f,p)=>{Mh=Tt().requirement,p.db.clear(),p.parser.parse(i);const w=Mh.securityLevel;let y;w==="sandbox"&&(y=Cr("#i"+a));const E=Cr(w==="sandbox"?y.nodes()[0].contentDocument.body:"body").select(`[id='${a}']`);MRe.insertLineEndings(E,Mh);const S=new zf({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:Mh.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});let N=p.db.getRequirements(),B=p.db.getElements(),R=p.db.getRelationships();N$t(N,S,E),P$t(B,S,E),B$t(R,S),tL(S),R$t(E,S),R.forEach(function(oe){O$t(E,oe,S,a,p)});const j=Mh.rect_padding,$=E.node().getBBox(),V=$.width+j*2,Q=$.height+j*2;Vw(E,Q,V,Mh.useMaxWidth),E.attr("viewBox",`${$.x-j} ${$.y-j} ${V} ${Q}`)}},styles:D$t}},Symbol.toStringTag,{value:"Module"}));var J0e=function(){var i=function(Dt,vt,Nt,ze){for(Nt=Nt||{},ze=Dt.length;ze--;Nt[Dt[ze]]=vt);return Nt},a=[1,2],f=[1,3],p=[1,5],w=[1,7],y=[2,5],b=[1,15],E=[1,17],S=[1,19],N=[1,21],B=[1,22],R=[1,23],j=[1,29],$=[1,30],V=[1,31],Q=[1,32],oe=[1,33],ce=[1,34],se=[1,35],ge=[1,36],ye=[1,37],ke=[1,38],Ae=[1,39],de=[1,40],ve=[1,42],te=[1,43],xe=[1,45],De=[1,46],he=[1,47],Ie=[1,48],ee=[1,49],rt=[1,50],me=[1,53],gt=[1,4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,51,52,53,54,56,57,62,63,64,65,73,83],pe=[4,5,21,54,56],Et=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,54,56,57,62,63,64,65,73,83],wt=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,53,54,56,57,62,63,64,65,73,83],jt=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,52,54,56,57,62,63,64,65,73,83],At=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,51,54,56,57,62,63,64,65,73,83],Bt=[71,72,73],cn=[1,125],Nn=[1,4,5,7,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,51,52,53,54,56,57,62,63,64,65,73,83],Ot={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,directive:6,SD:7,document:8,line:9,statement:10,box_section:11,box_line:12,participant_statement:13,openDirective:14,typeDirective:15,closeDirective:16,":":17,argDirective:18,box:19,restOfLine:20,end:21,signal:22,autonumber:23,NUM:24,off:25,activate:26,actor:27,deactivate:28,note_statement:29,links_statement:30,link_statement:31,properties_statement:32,details_statement:33,title:34,legacy_title:35,acc_title:36,acc_title_value:37,acc_descr:38,acc_descr_value:39,acc_descr_multiline_value:40,loop:41,rect:42,opt:43,alt:44,else_sections:45,par:46,par_sections:47,critical:48,option_sections:49,break:50,option:51,and:52,else:53,participant:54,AS:55,participant_actor:56,note:57,placement:58,text2:59,over:60,actor_pair:61,links:62,link:63,properties:64,details:65,spaceList:66,",":67,left_of:68,right_of:69,signaltype:70,"+":71,"-":72,ACTOR:73,SOLID_OPEN_ARROW:74,DOTTED_OPEN_ARROW:75,SOLID_ARROW:76,DOTTED_ARROW:77,SOLID_CROSS:78,DOTTED_CROSS:79,SOLID_POINT:80,DOTTED_POINT:81,TXT:82,open_directive:83,type_directive:84,arg_directive:85,close_directive:86,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",7:"SD",17:":",19:"box",20:"restOfLine",21:"end",23:"autonumber",24:"NUM",25:"off",26:"activate",28:"deactivate",34:"title",35:"legacy_title",36:"acc_title",37:"acc_title_value",38:"acc_descr",39:"acc_descr_value",40:"acc_descr_multiline_value",41:"loop",42:"rect",43:"opt",44:"alt",46:"par",48:"critical",50:"break",51:"option",52:"and",53:"else",54:"participant",55:"AS",56:"participant_actor",57:"note",60:"over",62:"links",63:"link",64:"properties",65:"details",67:",",68:"left_of",69:"right_of",71:"+",72:"-",73:"ACTOR",74:"SOLID_OPEN_ARROW",75:"DOTTED_OPEN_ARROW",76:"SOLID_ARROW",77:"DOTTED_ARROW",78:"SOLID_CROSS",79:"DOTTED_CROSS",80:"SOLID_POINT",81:"DOTTED_POINT",82:"TXT",83:"open_directive",84:"type_directive",85:"arg_directive",86:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[11,0],[11,2],[12,2],[12,1],[12,1],[6,4],[6,6],[10,1],[10,4],[10,2],[10,4],[10,3],[10,3],[10,2],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,2],[10,2],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[49,1],[49,4],[47,1],[47,4],[45,1],[45,4],[13,5],[13,3],[13,5],[13,3],[29,4],[29,4],[30,3],[31,3],[32,3],[33,3],[66,2],[66,1],[61,3],[61,1],[58,1],[58,1],[22,5],[22,5],[22,4],[27,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[59,1],[14,1],[15,1],[18,1],[16,1]],performAction:function(vt,Nt,ze,Xe,Lt,Ge,Bn){var Oe=Ge.length-1;switch(Lt){case 4:return Xe.apply(Ge[Oe]),Ge[Oe];case 5:case 10:this.$=[];break;case 6:case 11:Ge[Oe-1].push(Ge[Oe]),this.$=Ge[Oe-1];break;case 7:case 8:case 12:case 13:this.$=Ge[Oe];break;case 9:case 14:this.$=[];break;case 18:Ge[Oe-1].unshift({type:"boxStart",boxData:Xe.parseBoxData(Ge[Oe-2])}),Ge[Oe-1].push({type:"boxEnd",boxText:Ge[Oe-2]}),this.$=Ge[Oe-1];break;case 20:this.$={type:"sequenceIndex",sequenceIndex:Number(Ge[Oe-2]),sequenceIndexStep:Number(Ge[Oe-1]),sequenceVisible:!0,signalType:Xe.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceIndex:Number(Ge[Oe-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:Xe.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:Xe.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:Xe.LINETYPE.AUTONUMBER};break;case 24:this.$={type:"activeStart",signalType:Xe.LINETYPE.ACTIVE_START,actor:Ge[Oe-1]};break;case 25:this.$={type:"activeEnd",signalType:Xe.LINETYPE.ACTIVE_END,actor:Ge[Oe-1]};break;case 31:Xe.setDiagramTitle(Ge[Oe].substring(6)),this.$=Ge[Oe].substring(6);break;case 32:Xe.setDiagramTitle(Ge[Oe].substring(7)),this.$=Ge[Oe].substring(7);break;case 33:this.$=Ge[Oe].trim(),Xe.setAccTitle(this.$);break;case 34:case 35:this.$=Ge[Oe].trim(),Xe.setAccDescription(this.$);break;case 36:Ge[Oe-1].unshift({type:"loopStart",loopText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.LOOP_START}),Ge[Oe-1].push({type:"loopEnd",loopText:Ge[Oe-2],signalType:Xe.LINETYPE.LOOP_END}),this.$=Ge[Oe-1];break;case 37:Ge[Oe-1].unshift({type:"rectStart",color:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.RECT_START}),Ge[Oe-1].push({type:"rectEnd",color:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.RECT_END}),this.$=Ge[Oe-1];break;case 38:Ge[Oe-1].unshift({type:"optStart",optText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.OPT_START}),Ge[Oe-1].push({type:"optEnd",optText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.OPT_END}),this.$=Ge[Oe-1];break;case 39:Ge[Oe-1].unshift({type:"altStart",altText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.ALT_START}),Ge[Oe-1].push({type:"altEnd",signalType:Xe.LINETYPE.ALT_END}),this.$=Ge[Oe-1];break;case 40:Ge[Oe-1].unshift({type:"parStart",parText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.PAR_START}),Ge[Oe-1].push({type:"parEnd",signalType:Xe.LINETYPE.PAR_END}),this.$=Ge[Oe-1];break;case 41:Ge[Oe-1].unshift({type:"criticalStart",criticalText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.CRITICAL_START}),Ge[Oe-1].push({type:"criticalEnd",signalType:Xe.LINETYPE.CRITICAL_END}),this.$=Ge[Oe-1];break;case 42:Ge[Oe-1].unshift({type:"breakStart",breakText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.BREAK_START}),Ge[Oe-1].push({type:"breakEnd",optText:Xe.parseMessage(Ge[Oe-2]),signalType:Xe.LINETYPE.BREAK_END}),this.$=Ge[Oe-1];break;case 45:this.$=Ge[Oe-3].concat([{type:"option",optionText:Xe.parseMessage(Ge[Oe-1]),signalType:Xe.LINETYPE.CRITICAL_OPTION},Ge[Oe]]);break;case 47:this.$=Ge[Oe-3].concat([{type:"and",parText:Xe.parseMessage(Ge[Oe-1]),signalType:Xe.LINETYPE.PAR_AND},Ge[Oe]]);break;case 49:this.$=Ge[Oe-3].concat([{type:"else",altText:Xe.parseMessage(Ge[Oe-1]),signalType:Xe.LINETYPE.ALT_ELSE},Ge[Oe]]);break;case 50:Ge[Oe-3].type="addParticipant",Ge[Oe-3].description=Xe.parseMessage(Ge[Oe-1]),this.$=Ge[Oe-3];break;case 51:Ge[Oe-1].type="addParticipant",this.$=Ge[Oe-1];break;case 52:Ge[Oe-3].type="addActor",Ge[Oe-3].description=Xe.parseMessage(Ge[Oe-1]),this.$=Ge[Oe-3];break;case 53:Ge[Oe-1].type="addActor",this.$=Ge[Oe-1];break;case 54:this.$=[Ge[Oe-1],{type:"addNote",placement:Ge[Oe-2],actor:Ge[Oe-1].actor,text:Ge[Oe]}];break;case 55:Ge[Oe-2]=[].concat(Ge[Oe-1],Ge[Oe-1]).slice(0,2),Ge[Oe-2][0]=Ge[Oe-2][0].actor,Ge[Oe-2][1]=Ge[Oe-2][1].actor,this.$=[Ge[Oe-1],{type:"addNote",placement:Xe.PLACEMENT.OVER,actor:Ge[Oe-2].slice(0,2),text:Ge[Oe]}];break;case 56:this.$=[Ge[Oe-1],{type:"addLinks",actor:Ge[Oe-1].actor,text:Ge[Oe]}];break;case 57:this.$=[Ge[Oe-1],{type:"addALink",actor:Ge[Oe-1].actor,text:Ge[Oe]}];break;case 58:this.$=[Ge[Oe-1],{type:"addProperties",actor:Ge[Oe-1].actor,text:Ge[Oe]}];break;case 59:this.$=[Ge[Oe-1],{type:"addDetails",actor:Ge[Oe-1].actor,text:Ge[Oe]}];break;case 62:this.$=[Ge[Oe-2],Ge[Oe]];break;case 63:this.$=Ge[Oe];break;case 64:this.$=Xe.PLACEMENT.LEFTOF;break;case 65:this.$=Xe.PLACEMENT.RIGHTOF;break;case 66:this.$=[Ge[Oe-4],Ge[Oe-1],{type:"addMessage",from:Ge[Oe-4].actor,to:Ge[Oe-1].actor,signalType:Ge[Oe-3],msg:Ge[Oe]},{type:"activeStart",signalType:Xe.LINETYPE.ACTIVE_START,actor:Ge[Oe-1]}];break;case 67:this.$=[Ge[Oe-4],Ge[Oe-1],{type:"addMessage",from:Ge[Oe-4].actor,to:Ge[Oe-1].actor,signalType:Ge[Oe-3],msg:Ge[Oe]},{type:"activeEnd",signalType:Xe.LINETYPE.ACTIVE_END,actor:Ge[Oe-4]}];break;case 68:this.$=[Ge[Oe-3],Ge[Oe-1],{type:"addMessage",from:Ge[Oe-3].actor,to:Ge[Oe-1].actor,signalType:Ge[Oe-2],msg:Ge[Oe]}];break;case 69:this.$={type:"addParticipant",actor:Ge[Oe]};break;case 70:this.$=Xe.LINETYPE.SOLID_OPEN;break;case 71:this.$=Xe.LINETYPE.DOTTED_OPEN;break;case 72:this.$=Xe.LINETYPE.SOLID;break;case 73:this.$=Xe.LINETYPE.DOTTED;break;case 74:this.$=Xe.LINETYPE.SOLID_CROSS;break;case 75:this.$=Xe.LINETYPE.DOTTED_CROSS;break;case 76:this.$=Xe.LINETYPE.SOLID_POINT;break;case 77:this.$=Xe.LINETYPE.DOTTED_POINT;break;case 78:this.$=Xe.parseMessage(Ge[Oe].trim().substring(1));break;case 79:Xe.parseDirective("%%{","open_directive");break;case 80:Xe.parseDirective(Ge[Oe],"type_directive");break;case 81:Ge[Oe]=Ge[Oe].trim().replace(/'/g,'"'),Xe.parseDirective(Ge[Oe],"arg_directive");break;case 82:Xe.parseDirective("}%%","close_directive","sequence");break}},table:[{3:1,4:a,5:f,6:4,7:p,14:6,83:w},{1:[3]},{3:8,4:a,5:f,6:4,7:p,14:6,83:w},{3:9,4:a,5:f,6:4,7:p,14:6,83:w},{3:10,4:a,5:f,6:4,7:p,14:6,83:w},i([1,4,5,19,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,54,56,57,62,63,64,65,73,83],y,{8:11}),{15:12,84:[1,13]},{84:[2,79]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{16:51,17:[1,52],86:me},i([17,86],[2,80]),i(gt,[2,6]),{6:41,10:54,13:18,14:6,19:S,22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},i(gt,[2,8]),i(gt,[2,9]),i(gt,[2,17]),{20:[1,55]},{5:[1,56]},{5:[1,59],24:[1,57],25:[1,58]},{27:60,73:rt},{27:61,73:rt},{5:[1,62]},{5:[1,63]},{5:[1,64]},{5:[1,65]},{5:[1,66]},i(gt,[2,31]),i(gt,[2,32]),{37:[1,67]},{39:[1,68]},i(gt,[2,35]),{20:[1,69]},{20:[1,70]},{20:[1,71]},{20:[1,72]},{20:[1,73]},{20:[1,74]},{20:[1,75]},i(gt,[2,43]),{27:76,73:rt},{27:77,73:rt},{70:78,74:[1,79],75:[1,80],76:[1,81],77:[1,82],78:[1,83],79:[1,84],80:[1,85],81:[1,86]},{58:87,60:[1,88],68:[1,89],69:[1,90]},{27:91,73:rt},{27:92,73:rt},{27:93,73:rt},{27:94,73:rt},i([5,55,67,74,75,76,77,78,79,80,81,82],[2,69]),{5:[1,95]},{18:96,85:[1,97]},{5:[2,82]},i(gt,[2,7]),i(pe,[2,10],{11:98}),i(gt,[2,19]),{5:[1,100],24:[1,99]},{5:[1,101]},i(gt,[2,23]),{5:[1,102]},{5:[1,103]},i(gt,[2,26]),i(gt,[2,27]),i(gt,[2,28]),i(gt,[2,29]),i(gt,[2,30]),i(gt,[2,33]),i(gt,[2,34]),i(Et,y,{8:104}),i(Et,y,{8:105}),i(Et,y,{8:106}),i(wt,y,{45:107,8:108}),i(jt,y,{47:109,8:110}),i(At,y,{49:111,8:112}),i(Et,y,{8:113}),{5:[1,115],55:[1,114]},{5:[1,117],55:[1,116]},{27:120,71:[1,118],72:[1,119],73:rt},i(Bt,[2,70]),i(Bt,[2,71]),i(Bt,[2,72]),i(Bt,[2,73]),i(Bt,[2,74]),i(Bt,[2,75]),i(Bt,[2,76]),i(Bt,[2,77]),{27:121,73:rt},{27:123,61:122,73:rt},{73:[2,64]},{73:[2,65]},{59:124,82:cn},{59:126,82:cn},{59:127,82:cn},{59:128,82:cn},i(Nn,[2,15]),{16:129,86:me},{86:[2,81]},{4:[1,132],5:[1,134],12:131,13:133,21:[1,130],54:ve,56:te},{5:[1,135]},i(gt,[2,21]),i(gt,[2,22]),i(gt,[2,24]),i(gt,[2,25]),{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[1,136],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[1,137],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[1,138],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{21:[1,139]},{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[2,48],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,53:[1,140],54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{21:[1,141]},{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[2,46],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,52:[1,142],54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{21:[1,143]},{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[2,44],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,51:[1,144],54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{4:b,5:E,6:41,9:14,10:16,13:18,14:6,19:S,21:[1,145],22:20,23:N,26:B,27:44,28:R,29:24,30:25,31:26,32:27,33:28,34:j,35:$,36:V,38:Q,40:oe,41:ce,42:se,43:ge,44:ye,46:ke,48:Ae,50:de,54:ve,56:te,57:xe,62:De,63:he,64:Ie,65:ee,73:rt,83:w},{20:[1,146]},i(gt,[2,51]),{20:[1,147]},i(gt,[2,53]),{27:148,73:rt},{27:149,73:rt},{59:150,82:cn},{59:151,82:cn},{59:152,82:cn},{67:[1,153],82:[2,63]},{5:[2,56]},{5:[2,78]},{5:[2,57]},{5:[2,58]},{5:[2,59]},{5:[1,154]},i(gt,[2,18]),i(pe,[2,11]),{13:155,54:ve,56:te},i(pe,[2,13]),i(pe,[2,14]),i(gt,[2,20]),i(gt,[2,36]),i(gt,[2,37]),i(gt,[2,38]),i(gt,[2,39]),{20:[1,156]},i(gt,[2,40]),{20:[1,157]},i(gt,[2,41]),{20:[1,158]},i(gt,[2,42]),{5:[1,159]},{5:[1,160]},{59:161,82:cn},{59:162,82:cn},{5:[2,68]},{5:[2,54]},{5:[2,55]},{27:163,73:rt},i(Nn,[2,16]),i(pe,[2,12]),i(wt,y,{8:108,45:164}),i(jt,y,{8:110,47:165}),i(At,y,{8:112,49:166}),i(gt,[2,50]),i(gt,[2,52]),{5:[2,66]},{5:[2,67]},{82:[2,62]},{21:[2,49]},{21:[2,47]},{21:[2,45]}],defaultActions:{7:[2,79],8:[2,1],9:[2,2],10:[2,3],53:[2,82],89:[2,64],90:[2,65],97:[2,81],124:[2,56],125:[2,78],126:[2,57],127:[2,58],128:[2,59],150:[2,68],151:[2,54],152:[2,55],161:[2,66],162:[2,67],163:[2,62],164:[2,49],165:[2,47],166:[2,45]},parseError:function(vt,Nt){if(Nt.recoverable)this.trace(vt);else{var ze=new Error(vt);throw ze.hash=Nt,ze}},parse:function(vt){var Nt=this,ze=[0],Xe=[],Lt=[null],Ge=[],Bn=this.table,Oe="",Ri=0,tn=0,hi=2,Sr=1,Zn=Ge.slice.call(arguments,1),Xn=Object.create(this.lexer),ir={yy:{}};for(var Hn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Hn)&&(ir.yy[Hn]=this.yy[Hn]);Xn.setInput(vt,ir.yy),ir.yy.lexer=Xn,ir.yy.parser=this,typeof Xn.yylloc>"u"&&(Xn.yylloc={});var tr=Xn.yylloc;Ge.push(tr);var ha=Xn.options&&Xn.options.ranges;typeof ir.yy.parseError=="function"?this.parseError=ir.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Zs(){var Vn;return Vn=Xe.pop()||Xn.lex()||Sr,typeof Vn!="number"&&(Vn instanceof Array&&(Xe=Vn,Vn=Xe.pop()),Vn=Nt.symbols_[Vn]||Vn),Vn}for(var ns,Hi,Js,Pc,Ga={},ws,Oi,Er,br;;){if(Hi=ze[ze.length-1],this.defaultActions[Hi]?Js=this.defaultActions[Hi]:((ns===null||typeof ns>"u")&&(ns=Zs()),Js=Bn[Hi]&&Bn[Hi][ns]),typeof Js>"u"||!Js.length||!Js[0]){var Dr="";br=[];for(ws in Bn[Hi])this.terminals_[ws]&&ws>hi&&br.push("'"+this.terminals_[ws]+"'");Xn.showPosition?Dr="Parse error on line "+(Ri+1)+`: +`+Xn.showPosition()+` +Expecting `+br.join(", ")+", got '"+(this.terminals_[ns]||ns)+"'":Dr="Parse error on line "+(Ri+1)+": Unexpected "+(ns==Sr?"end of input":"'"+(this.terminals_[ns]||ns)+"'"),this.parseError(Dr,{text:Xn.match,token:this.terminals_[ns]||ns,line:Xn.yylineno,loc:tr,expected:br})}if(Js[0]instanceof Array&&Js.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Hi+", token: "+ns);switch(Js[0]){case 1:ze.push(ns),Lt.push(Xn.yytext),Ge.push(Xn.yylloc),ze.push(Js[1]),ns=null,tn=Xn.yyleng,Oe=Xn.yytext,Ri=Xn.yylineno,tr=Xn.yylloc;break;case 2:if(Oi=this.productions_[Js[1]][1],Ga.$=Lt[Lt.length-Oi],Ga._$={first_line:Ge[Ge.length-(Oi||1)].first_line,last_line:Ge[Ge.length-1].last_line,first_column:Ge[Ge.length-(Oi||1)].first_column,last_column:Ge[Ge.length-1].last_column},ha&&(Ga._$.range=[Ge[Ge.length-(Oi||1)].range[0],Ge[Ge.length-1].range[1]]),Pc=this.performAction.apply(Ga,[Oe,tn,Ri,ir.yy,Js[1],Lt,Ge].concat(Zn)),typeof Pc<"u")return Pc;Oi&&(ze=ze.slice(0,-1*Oi*2),Lt=Lt.slice(0,-1*Oi),Ge=Ge.slice(0,-1*Oi)),ze.push(this.productions_[Js[1]][0]),Lt.push(Ga.$),Ge.push(Ga._$),Er=Bn[ze[ze.length-2]][ze[ze.length-1]],ze.push(Er);break;case 3:return!0}}return!0}},oi=function(){var Dt={EOF:1,parseError:function(Nt,ze){if(this.yy.parser)this.yy.parser.parseError(Nt,ze);else throw new Error(Nt)},setInput:function(vt,Nt){return this.yy=Nt||this.yy||{},this._input=vt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var vt=this._input[0];this.yytext+=vt,this.yyleng++,this.offset++,this.match+=vt,this.matched+=vt;var Nt=vt.match(/(?:\r\n?|\n).*/g);return Nt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),vt},unput:function(vt){var Nt=vt.length,ze=vt.split(/(?:\r\n?|\n)/g);this._input=vt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Nt),this.offset-=Nt;var Xe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ze.length-1&&(this.yylineno-=ze.length-1);var Lt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ze?(ze.length===Xe.length?this.yylloc.first_column:0)+Xe[Xe.length-ze.length].length-ze[0].length:this.yylloc.first_column-Nt},this.options.ranges&&(this.yylloc.range=[Lt[0],Lt[0]+this.yyleng-Nt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(vt){this.unput(this.match.slice(vt))},pastInput:function(){var vt=this.matched.substr(0,this.matched.length-this.match.length);return(vt.length>20?"...":"")+vt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var vt=this.match;return vt.length<20&&(vt+=this._input.substr(0,20-vt.length)),(vt.substr(0,20)+(vt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var vt=this.pastInput(),Nt=new Array(vt.length+1).join("-");return vt+this.upcomingInput()+` +`+Nt+"^"},test_match:function(vt,Nt){var ze,Xe,Lt;if(this.options.backtrack_lexer&&(Lt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Lt.yylloc.range=this.yylloc.range.slice(0))),Xe=vt[0].match(/(?:\r\n?|\n).*/g),Xe&&(this.yylineno+=Xe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Xe?Xe[Xe.length-1].length-Xe[Xe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+vt[0].length},this.yytext+=vt[0],this.match+=vt[0],this.matches=vt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(vt[0].length),this.matched+=vt[0],ze=this.performAction.call(this,this.yy,this,Nt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ze)return ze;if(this._backtrack){for(var Ge in Lt)this[Ge]=Lt[Ge];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var vt,Nt,ze,Xe;this._more||(this.yytext="",this.match="");for(var Lt=this._currentRules(),Ge=0;GeNt[0].length)){if(Nt=ze,Xe=Ge,this.options.backtrack_lexer){if(vt=this.test_match(ze,Lt[Ge]),vt!==!1)return vt;if(this._backtrack){Nt=!1;continue}else return!1}else if(!this.options.flex)break}return Nt?(vt=this.test_match(Nt,Lt[Xe]),vt!==!1?vt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Nt=this.next();return Nt||this.lex()},begin:function(Nt){this.conditionStack.push(Nt)},popState:function(){var Nt=this.conditionStack.length-1;return Nt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Nt){return Nt=this.conditionStack.length-1-Math.abs(Nt||0),Nt>=0?this.conditionStack[Nt]:"INITIAL"},pushState:function(Nt){this.begin(Nt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Nt,ze,Xe,Lt){switch(Xe){case 0:return this.begin("open_directive"),83;case 1:return this.begin("type_directive"),84;case 2:return this.popState(),this.begin("arg_directive"),17;case 3:return this.popState(),this.popState(),86;case 4:return 85;case 5:return 5;case 6:break;case 7:break;case 8:break;case 9:break;case 10:break;case 11:return 24;case 12:return this.begin("LINE"),19;case 13:return this.begin("ID"),54;case 14:return this.begin("ID"),56;case 15:return ze.yytext=ze.yytext.trim(),this.begin("ALIAS"),73;case 16:return this.popState(),this.popState(),this.begin("LINE"),55;case 17:return this.popState(),this.popState(),5;case 18:return this.begin("LINE"),41;case 19:return this.begin("LINE"),42;case 20:return this.begin("LINE"),43;case 21:return this.begin("LINE"),44;case 22:return this.begin("LINE"),53;case 23:return this.begin("LINE"),46;case 24:return this.begin("LINE"),52;case 25:return this.begin("LINE"),48;case 26:return this.begin("LINE"),51;case 27:return this.begin("LINE"),50;case 28:return this.popState(),20;case 29:return 21;case 30:return 68;case 31:return 69;case 32:return 62;case 33:return 63;case 34:return 64;case 35:return 65;case 36:return 60;case 37:return 57;case 38:return this.begin("ID"),26;case 39:return this.begin("ID"),28;case 40:return 34;case 41:return 35;case 42:return this.begin("acc_title"),36;case 43:return this.popState(),"acc_title_value";case 44:return this.begin("acc_descr"),38;case 45:return this.popState(),"acc_descr_value";case 46:this.begin("acc_descr_multiline");break;case 47:this.popState();break;case 48:return"acc_descr_multiline_value";case 49:return 7;case 50:return 23;case 51:return 25;case 52:return 67;case 53:return 5;case 54:return ze.yytext=ze.yytext.trim(),73;case 55:return 76;case 56:return 77;case 57:return 74;case 58:return 75;case 59:return 78;case 60:return 79;case 61:return 80;case 62:return 81;case 63:return 82;case 64:return 71;case 65:return 72;case 66:return 5;case 67:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:[^\->:\n,;]+?([\-]*[^\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[47,48],inclusive:!1},acc_descr:{rules:[45],inclusive:!1},acc_title:{rules:[43],inclusive:!1},open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,15],inclusive:!1},ALIAS:{rules:[7,8,16,17],inclusive:!1},LINE:{rules:[7,8,28],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,12,13,14,18,19,20,21,22,23,24,25,26,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,44,46,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0}}};return Dt}();Ot.lexer=oi;function kt(){this.yy={}}return kt.prototype=Ot,Ot.Parser=kt,new kt}();J0e.parser=J0e;const j$t=J0e;let LP,cx={},cL=[],rm=[],LK=!1,ege,L5;const $$t=function(i,a,f){rd.parseDirective(this,i,a,f)},H$t=function(i){cL.push({name:i.text,wrap:i.wrap===void 0&&d9()||!!i.wrap,fill:i.color,actorKeys:[]}),L5=cL.slice(-1)[0]},tge=function(i,a,f,p){let w=L5;const y=cx[i];if(y){if(L5&&y.box&&L5!==y.box)throw new Error("A same participant should only be defined in one Box: "+y.name+" can't be in '"+y.box.name+"' and in '"+L5.name+"' at the same time.");if(w=y.box?y.box:L5,y.box=w,y&&a===y.name&&f==null)return}(f==null||f.text==null)&&(f={text:a,wrap:null,type:p}),(p==null||f.text==null)&&(f={text:a,wrap:null,type:p}),cx[i]={box:w,name:a,description:f.text,wrap:f.wrap===void 0&&d9()||!!f.wrap,prevActor:LP,links:{},properties:{},actorCnt:null,rectData:null,type:p||"participant"},LP&&cx[LP]&&(cx[LP].nextActor=i),L5&&L5.actorKeys.push(i),LP=i},z$t=i=>{let a,f=0;for(a=0;a>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},y}return rm.push({from:i,to:a,message:f.text,wrap:f.wrap===void 0&&d9()||!!f.wrap,type:p}),!0},q$t=function(){return cL.length>0},V$t=function(){return cL.some(i=>i.name)},U$t=function(){return rm},W$t=function(){return cL},K$t=function(){return cx},MP=function(i){return cx[i]},Y$t=function(){return Object.keys(cx)},X$t=function(){LK=!0},Q$t=function(){LK=!1},Z$t=()=>LK,J$t=function(i){ege=i},d9=()=>ege!==void 0?ege:Tt().sequence.wrap,eHt=function(){cx={},cL=[],rm=[],LK=!1,rp()},tHt=function(i){const a=i.trim(),f={text:a.replace(/^:?(?:no)?wrap:/,"").trim(),wrap:a.match(/^:?wrap:/)!==null?!0:a.match(/^:?nowrap:/)!==null?!1:void 0};return Fe.debug("parseMessage:",f),f},nHt=function(i){const a=i.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);let f=a!=null&&a[1]?a[1].trim():"transparent",p=a!=null&&a[2]?a[2].trim():void 0;if(window&&window.CSS)window.CSS.supports("color",f)||(f="transparent",p=i.trim());else{const y=new Option().style;y.color=f,y.color!==f&&(f="transparent",p=i.trim())}return{color:f,text:p!==void 0?ep(p.replace(/^:?(?:no)?wrap:/,""),Tt()):void 0,wrap:p!==void 0?p.match(/^:?wrap:/)!==null?!0:p.match(/^:?nowrap:/)!==null?!1:void 0:void 0}},DP={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31},rHt={FILLED:0,OPEN:1},iHt={LEFTOF:0,RIGHTOF:1,OVER:2},PRe=function(i,a,f){f.text,f.wrap===void 0&&d9()||f.wrap;const p=[].concat(i,i);rm.push({from:p[0],to:p[1],message:f.text,wrap:f.wrap===void 0&&d9()||!!f.wrap,type:DP.NOTE,placement:a})},BRe=function(i,a){const f=MP(i);try{let p=ep(a.text,Tt());p=p.replace(/&/g,"&"),p=p.replace(/=/g,"=");const w=JSON.parse(p);nge(f,w)}catch(p){Fe.error("error while parsing actor link text",p)}},sHt=function(i,a){const f=MP(i);try{const b={};let E=ep(a.text,Tt());var p=E.indexOf("@");E=E.replace(/&/g,"&"),E=E.replace(/=/g,"=");var w=E.slice(0,p-1).trim(),y=E.slice(p+1).trim();b[w]=y,nge(f,b)}catch(b){Fe.error("error while parsing actor link text",b)}};function nge(i,a){if(i.links==null)i.links=a;else for(let f in a)i.links[f]=a[f]}const RRe=function(i,a){const f=MP(i);try{let p=ep(a.text,Tt());const w=JSON.parse(p);FRe(f,w)}catch(p){Fe.error("error while parsing actor properties text",p)}};function FRe(i,a){if(i.properties==null)i.properties=a;else for(let f in a)i.properties[f]=a[f]}function aHt(){L5=void 0}const jRe=function(i,a){const f=MP(i),p=document.getElementById(a.text);try{const w=p.innerHTML,y=JSON.parse(w);y.properties&&FRe(f,y.properties),y.links&&nge(f,y.links)}catch(w){Fe.error("error while parsing actor details text",w)}},oHt=function(i,a){if(i!==void 0&&i.properties!==void 0)return i.properties[a]},$Re=function(i){if(Array.isArray(i))i.forEach(function(a){$Re(a)});else switch(i.type){case"sequenceIndex":rm.push({from:void 0,to:void 0,message:{start:i.sequenceIndex,step:i.sequenceIndexStep,visible:i.sequenceVisible},wrap:!1,type:i.signalType});break;case"addParticipant":tge(i.actor,i.actor,i.description,"participant");break;case"addActor":tge(i.actor,i.actor,i.description,"actor");break;case"activeStart":lf(i.actor,void 0,void 0,i.signalType);break;case"activeEnd":lf(i.actor,void 0,void 0,i.signalType);break;case"addNote":PRe(i.actor,i.placement,i.text);break;case"addLinks":BRe(i.actor,i.text);break;case"addALink":sHt(i.actor,i.text);break;case"addProperties":RRe(i.actor,i.text);break;case"addDetails":jRe(i.actor,i.text);break;case"addMessage":lf(i.from,i.to,i.msg,i.signalType);break;case"boxStart":H$t(i.boxData);break;case"boxEnd":aHt();break;case"loopStart":lf(void 0,void 0,i.loopText,i.signalType);break;case"loopEnd":lf(void 0,void 0,void 0,i.signalType);break;case"rectStart":lf(void 0,void 0,i.color,i.signalType);break;case"rectEnd":lf(void 0,void 0,void 0,i.signalType);break;case"optStart":lf(void 0,void 0,i.optText,i.signalType);break;case"optEnd":lf(void 0,void 0,void 0,i.signalType);break;case"altStart":lf(void 0,void 0,i.altText,i.signalType);break;case"else":lf(void 0,void 0,i.altText,i.signalType);break;case"altEnd":lf(void 0,void 0,void 0,i.signalType);break;case"setAccTitle":ip(i.text);break;case"parStart":lf(void 0,void 0,i.parText,i.signalType);break;case"and":lf(void 0,void 0,i.parText,i.signalType);break;case"parEnd":lf(void 0,void 0,void 0,i.signalType);break;case"criticalStart":lf(void 0,void 0,i.criticalText,i.signalType);break;case"option":lf(void 0,void 0,i.optionText,i.signalType);break;case"criticalEnd":lf(void 0,void 0,void 0,i.signalType);break;case"breakStart":lf(void 0,void 0,i.breakText,i.signalType);break;case"breakEnd":lf(void 0,void 0,void 0,i.signalType);break}},cHt={addActor:tge,addMessage:G$t,addSignal:lf,addLinks:BRe,addDetails:jRe,addProperties:RRe,autoWrap:d9,setWrap:J$t,enableSequenceNumbers:X$t,disableSequenceNumbers:Q$t,showSequenceNumbers:Z$t,getMessages:U$t,getActors:K$t,getActor:MP,getActorKeys:Y$t,getActorProperty:oHt,getAccTitle:L2,getBoxes:W$t,getDiagramTitle:Ww,setDiagramTitle:Uw,parseDirective:$$t,getConfig:()=>Tt().sequence,clear:eHt,parseMessage:tHt,parseBoxData:nHt,LINETYPE:DP,ARROWTYPE:rHt,PLACEMENT:iHt,addNote:PRe,setAccTitle:ip,apply:$Re,setAccDescription:M2,getAccDescription:D2,hasAtLeastOneBox:q$t,hasAtLeastOneBoxWithTitle:V$t},uHt=i=>`.actor { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + } + + text.actor > tspan { + fill: ${i.actorTextColor}; + stroke: none; + } + + .actor-line { + stroke: ${i.actorLineColor}; + } + + .messageLine0 { + stroke-width: 1.5; + stroke-dasharray: none; + stroke: ${i.signalColor}; + } + + .messageLine1 { + stroke-width: 1.5; + stroke-dasharray: 2, 2; + stroke: ${i.signalColor}; + } + + #arrowhead path { + fill: ${i.signalColor}; + stroke: ${i.signalColor}; + } + + .sequenceNumber { + fill: ${i.sequenceNumberColor}; + } + + #sequencenumber { + fill: ${i.signalColor}; + } + + #crosshead path { + fill: ${i.signalColor}; + stroke: ${i.signalColor}; + } + + .messageText { + fill: ${i.signalTextColor}; + stroke: none; + } + + .labelBox { + stroke: ${i.labelBoxBorderColor}; + fill: ${i.labelBoxBkgColor}; + } + + .labelText, .labelText > tspan { + fill: ${i.labelTextColor}; + stroke: none; + } + + .loopText, .loopText > tspan { + fill: ${i.loopTextColor}; + stroke: none; + } + + .loopLine { + stroke-width: 2px; + stroke-dasharray: 2, 2; + stroke: ${i.labelBoxBorderColor}; + fill: ${i.labelBoxBorderColor}; + } + + .note { + //stroke: #decc93; + stroke: ${i.noteBorderColor}; + fill: ${i.noteBkgColor}; + } + + .noteText, .noteText > tspan { + fill: ${i.noteTextColor}; + stroke: none; + } + + .activation0 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .activation1 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .activation2 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .actorPopupMenu { + position: absolute; + } + + .actorPopupMenuPanel { + position: absolute; + fill: ${i.actorBkg}; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); +} + .actor-man line { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + } + .actor-man circle, line { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + stroke-width: 2px; + } +`,MK=function(i,a){const f=i.append("rect");return f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),f.attr("rx",a.rx),f.attr("ry",a.ry),a.class!==void 0&&f.attr("class",a.class),f},HRe=(i,a)=>{ISt(()=>{const f=document.querySelectorAll(i);f.length!==0&&(f[0].addEventListener("mouseover",function(){dHt("actor"+a+"_popup")}),f[0].addEventListener("mouseout",function(){gHt("actor"+a+"_popup")}))})},lHt=function(i,a,f,p,w){if(a.links===void 0||a.links===null||Object.keys(a.links).length===0)return{height:0,width:0};const y=a.links,b=a.actorCnt,E=a.rectData;var S="none";w&&(S="block !important");const N=i.append("g");N.attr("id","actor"+b+"_popup"),N.attr("class","actorPopupMenu"),N.attr("display",S),HRe("#actor"+b+"_popup",b);var B="";E.class!==void 0&&(B=" "+E.class);let R=E.width>f?E.width:f;const j=N.append("rect");if(j.attr("class","actorPopupMenuPanel"+B),j.attr("x",E.x),j.attr("y",E.height),j.attr("fill",E.fill),j.attr("stroke",E.stroke),j.attr("width",R),j.attr("height",E.height),j.attr("rx",E.rx),j.attr("ry",E.ry),y!=null){var $=20;for(let oe in y){var V=N.append("a"),Q=u5(y[oe]);V.attr("xlink:href",Q),V.attr("target","_blank"),LHt(p)(oe,V,E.x+10,E.height+$,R,20,{class:"actor"},p),$+=30}}return j.attr("height",$),{height:E.height+$,width:R}},zRe=function(i,a,f,p){const w=i.append("image");w.attr("x",a),w.attr("y",f);var y=u5(p);w.attr("xlink:href",y)},GRe=function(i,a,f,p){const w=i.append("use");w.attr("x",a),w.attr("y",f);var y=u5(p);w.attr("xlink:href","#"+y)},hHt=function(i){return"var pu = document.getElementById('"+i+"'); if (pu != null) { pu.style.display = 'block'; }"},fHt=function(i){return"var pu = document.getElementById('"+i+"'); if (pu != null) { pu.style.display = 'none'; }"},dHt=function(i){var a=document.getElementById(i);a!=null&&(a.style.display="block")},gHt=function(i){var a=document.getElementById(i);a!=null&&(a.style.display="none")},uL=function(i,a){let f=0,p=0;const w=a.text.split(Wa.lineBreakRegex),[y,b]=$A(a.fontSize);let E=[],S=0,N=()=>a.y;if(a.valign!==void 0&&a.textMargin!==void 0&&a.textMargin>0)switch(a.valign){case"top":case"start":N=()=>Math.round(a.y+a.textMargin);break;case"middle":case"center":N=()=>Math.round(a.y+(f+p+a.textMargin)/2);break;case"bottom":case"end":N=()=>Math.round(a.y+(f+p+2*a.textMargin)-a.textMargin);break}if(a.anchor!==void 0&&a.textMargin!==void 0&&a.width!==void 0)switch(a.anchor){case"left":case"start":a.x=Math.round(a.x+a.textMargin),a.anchor="start",a.dominantBaseline="middle",a.alignmentBaseline="middle";break;case"middle":case"center":a.x=Math.round(a.x+a.width/2),a.anchor="middle",a.dominantBaseline="middle",a.alignmentBaseline="middle";break;case"right":case"end":a.x=Math.round(a.x+a.width-a.textMargin),a.anchor="end",a.dominantBaseline="middle",a.alignmentBaseline="middle";break}for(let[B,R]of w.entries()){a.textMargin!==void 0&&a.textMargin===0&&y!==void 0&&(S=B*y);const j=i.append("text");if(j.attr("x",a.x),j.attr("y",N()),a.anchor!==void 0&&j.attr("text-anchor",a.anchor).attr("dominant-baseline",a.dominantBaseline).attr("alignment-baseline",a.alignmentBaseline),a.fontFamily!==void 0&&j.style("font-family",a.fontFamily),b!==void 0&&j.style("font-size",b),a.fontWeight!==void 0&&j.style("font-weight",a.fontWeight),a.fill!==void 0&&j.attr("fill",a.fill),a.class!==void 0&&j.attr("class",a.class),a.dy!==void 0?j.attr("dy",a.dy):S!==0&&j.attr("dy",S),a.tspan){const $=j.append("tspan");$.attr("x",a.x),a.fill!==void 0&&$.attr("fill",a.fill),$.text(R)}else j.text(R);a.valign!==void 0&&a.textMargin!==void 0&&a.textMargin>0&&(p+=(j._groups||j)[0][0].getBBox().height,f=p),E.push(j)}return E},qRe=function(i,a){function f(w,y,b,E,S){return w+","+y+" "+(w+b)+","+y+" "+(w+b)+","+(y+E-S)+" "+(w+b-S*1.2)+","+(y+E)+" "+w+","+(y+E)}const p=i.append("polygon");return p.attr("points",f(a.x,a.y,a.width,a.height,7)),p.attr("class","labelBox"),a.y=a.y+a.height/2,uL(i,a),p};let g3=-1;const VRe=(i,a)=>{i.selectAll&&i.selectAll(".actor-line").attr("class","200").attr("y2",a-55)},pHt=function(i,a,f,p){const w=a.x+a.width/2,y=a.y+5,b=i.append("g");var E=b;p||(g3++,E.append("line").attr("id","actor"+g3).attr("x1",w).attr("y1",y).attr("x2",w).attr("y2",2e3).attr("class","actor-line").attr("stroke-width","0.5px").attr("stroke","#999"),E=b.append("g"),a.actorCnt=g3,a.links!=null&&(E.attr("id","root-"+g3),HRe("#root-"+g3,g3)));const S=DK();var N="actor";a.properties!=null&&a.properties.class?N=a.properties.class:S.fill="#eaeaea",S.x=a.x,S.y=a.y,S.width=a.width,S.height=a.height,S.class=N,S.rx=3,S.ry=3;const B=MK(E,S);if(a.rectData=S,a.properties!=null&&a.properties.icon){const j=a.properties.icon.trim();j.charAt(0)==="@"?GRe(E,S.x+S.width-20,S.y+10,j.substr(1)):zRe(E,S.x+S.width-20,S.y+10,j)}ige(f)(a.description,E,S.x,S.y,S.width,S.height,{class:"actor"},f);let R=a.height;if(B.node){const j=B.node().getBBox();a.height=j.height,R=j.height}return R},bHt=function(i,a,f,p){const w=a.x+a.width/2,y=a.y+80;p||(g3++,i.append("line").attr("id","actor"+g3).attr("x1",w).attr("y1",y).attr("x2",w).attr("y2",2e3).attr("class","actor-line").attr("stroke-width","0.5px").attr("stroke","#999"));const b=i.append("g");b.attr("class","actor-man");const E=DK();E.x=a.x,E.y=a.y,E.fill="#eaeaea",E.width=a.width,E.height=a.height,E.class="actor",E.rx=3,E.ry=3,b.append("line").attr("id","actor-man-torso"+g3).attr("x1",w).attr("y1",a.y+25).attr("x2",w).attr("y2",a.y+45),b.append("line").attr("id","actor-man-arms"+g3).attr("x1",w-18).attr("y1",a.y+33).attr("x2",w+18).attr("y2",a.y+33),b.append("line").attr("x1",w-18).attr("y1",a.y+60).attr("x2",w).attr("y2",a.y+45),b.append("line").attr("x1",w).attr("y1",a.y+45).attr("x2",w+16).attr("y2",a.y+60);const S=b.append("circle");S.attr("cx",a.x+a.width/2),S.attr("cy",a.y+10),S.attr("r",15),S.attr("width",a.width),S.attr("height",a.height);const N=b.node().getBBox();return a.height=N.height,ige(f)(a.description,b,E.x,E.y+35,E.width,E.height,{class:"actor"},f),a.height},vHt=function(i,a,f,p){switch(a.type){case"actor":return bHt(i,a,f,p);case"participant":return pHt(i,a,f,p)}},wHt=function(i,a,f){const w=i.append("g");URe(w,a),a.name&&ige(f)(a.name,w,a.x,a.y+(a.textMaxHeight||0)/2,a.width,0,{class:"text"},f),w.lower()},mHt=function(i){return i.append("g")},yHt=function(i,a,f,p,w){const y=DK(),b=a.anchored;y.x=a.startx,y.y=a.starty,y.class="activation"+w%3,y.width=a.stopx-a.startx,y.height=f-a.starty,MK(b,y)},kHt=function(i,a,f,p){const{boxMargin:w,boxTextMargin:y,labelBoxHeight:b,labelBoxWidth:E,messageFontFamily:S,messageFontSize:N,messageFontWeight:B}=p,R=i.append("g"),j=function(Q,oe,ce,se){return R.append("line").attr("x1",Q).attr("y1",oe).attr("x2",ce).attr("y2",se).attr("class","loopLine")};j(a.startx,a.starty,a.stopx,a.starty),j(a.stopx,a.starty,a.stopx,a.stopy),j(a.startx,a.stopy,a.stopx,a.stopy),j(a.startx,a.starty,a.startx,a.stopy),a.sections!==void 0&&a.sections.forEach(function(Q){j(a.startx,Q.y,a.stopx,Q.y).style("stroke-dasharray","3, 3")});let $=rge();$.text=f,$.x=a.startx,$.y=a.starty,$.fontFamily=S,$.fontSize=N,$.fontWeight=B,$.anchor="middle",$.valign="middle",$.tspan=!1,$.width=E||50,$.height=b||20,$.textMargin=y,$.class="labelText",qRe(R,$),$=rge(),$.text=a.title,$.x=a.startx+E/2+(a.stopx-a.startx)/2,$.y=a.starty+w+y,$.anchor="middle",$.valign="middle",$.textMargin=y,$.class="loopText",$.fontFamily=S,$.fontSize=N,$.fontWeight=B,$.wrap=!0;let V=uL(R,$);return a.sectionTitles!==void 0&&a.sectionTitles.forEach(function(Q,oe){if(Q.message){$.text=Q.message,$.x=a.startx+(a.stopx-a.startx)/2,$.y=a.sections[oe].y+w+y,$.class="loopText",$.anchor="middle",$.valign="middle",$.tspan=!1,$.fontFamily=S,$.fontSize=N,$.fontWeight=B,$.wrap=a.wrap,V=uL(R,$);let ce=Math.round(V.map(se=>(se._groups||se)[0][0].getBBox().height).reduce((se,ge)=>se+ge));a.sections[oe].height+=ce-(w+y)}}),a.height=Math.round(a.stopy-a.starty),R},URe=function(i,a){MK(i,{x:a.startx,y:a.starty,width:a.stopx-a.startx,height:a.stopy-a.starty,fill:a.fill,stroke:a.stroke,class:"rect"}).lower()},xHt=function(i){i.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},EHt=function(i){i.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},THt=function(i){i.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},_Ht=function(i){i.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},CHt=function(i){i.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},SHt=function(i){i.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},AHt=function(i){i.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},rge=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},DK=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},ige=function(){function i(w,y,b,E,S,N,B){const R=y.append("text").attr("x",b+S/2).attr("y",E+N/2+5).style("text-anchor","middle").text(w);p(R,B)}function a(w,y,b,E,S,N,B,R){const{actorFontSize:j,actorFontFamily:$,actorFontWeight:V}=R,[Q,oe]=$A(j),ce=w.split(Wa.lineBreakRegex);for(let se=0;sei.height||0))+(this.loops.length===0?0:this.loops.map(i=>i.height||0).reduce((i,a)=>i+a))+(this.messages.length===0?0:this.messages.map(i=>i.height||0).reduce((i,a)=>i+a))+(this.notes.length===0?0:this.notes.map(i=>i.height||0).reduce((i,a)=>i+a))},clear:function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},addBox:function(i){this.boxes.push(i)},addActor:function(i){this.actors.push(i)},addLoop:function(i){this.loops.push(i)},addMessage:function(i){this.messages.push(i)},addNote:function(i){this.notes.push(i)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],boxes:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,KRe(Tt())},updateVal:function(i,a,f,p){i[a]===void 0?i[a]=f:i[a]=p(f,i[a])},updateBounds:function(i,a,f,p){const w=this;let y=0;function b(E){return function(N){y++;const B=w.sequenceItems.length-y+1;w.updateVal(N,"starty",a-B*ln.boxMargin,Math.min),w.updateVal(N,"stopy",p+B*ln.boxMargin,Math.max),w.updateVal(si.data,"startx",i-B*ln.boxMargin,Math.min),w.updateVal(si.data,"stopx",f+B*ln.boxMargin,Math.max),E!=="activation"&&(w.updateVal(N,"startx",i-B*ln.boxMargin,Math.min),w.updateVal(N,"stopx",f+B*ln.boxMargin,Math.max),w.updateVal(si.data,"starty",a-B*ln.boxMargin,Math.min),w.updateVal(si.data,"stopy",p+B*ln.boxMargin,Math.max))}}this.sequenceItems.forEach(b()),this.activations.forEach(b("activation"))},insert:function(i,a,f,p){const w=Math.min(i,f),y=Math.max(i,f),b=Math.min(a,p),E=Math.max(a,p);this.updateVal(si.data,"startx",w,Math.min),this.updateVal(si.data,"starty",b,Math.min),this.updateVal(si.data,"stopx",y,Math.max),this.updateVal(si.data,"stopy",E,Math.max),this.updateBounds(w,b,y,E)},newActivation:function(i,a,f){const p=f[i.from.actor],w=IK(i.from.actor).length||0,y=p.x+p.width/2+(w-1)*ln.activationWidth/2;this.activations.push({startx:y,starty:this.verticalPos+2,stopx:y+ln.activationWidth,stopy:void 0,actor:i.from.actor,anchored:ih.anchorElement(a)})},endActivation:function(i){const a=this.activations.map(function(f){return f.actor}).lastIndexOf(i.from.actor);return this.activations.splice(a,1)[0]},createLoop:function(i={message:void 0,wrap:!1,width:void 0},a){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:i.message,wrap:i.wrap,width:i.width,height:0,fill:a}},newLoop:function(i={message:void 0,wrap:!1,width:void 0},a){this.sequenceItems.push(this.createLoop(i,a))},endLoop:function(){return this.sequenceItems.pop()},addSectionToLoop:function(i){const a=this.sequenceItems.pop();a.sections=a.sections||[],a.sectionTitles=a.sectionTitles||[],a.sections.push({y:si.getVerticalPos(),height:0}),a.sectionTitles.push(i),this.sequenceItems.push(a)},bumpVerticalPos:function(i){this.verticalPos=this.verticalPos+i,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},MHt=function(i,a){si.bumpVerticalPos(ln.boxMargin),a.height=ln.boxMargin,a.starty=si.getVerticalPos();const f=ih.getNoteRect();f.x=a.startx,f.y=a.starty,f.width=a.width||ln.width,f.class="note";const p=i.append("g"),w=ih.drawRect(p,f),y=ih.getTextObj();y.x=a.startx,y.y=a.starty,y.width=f.width,y.dy="1em",y.text=a.message,y.class="noteText",y.fontFamily=ln.noteFontFamily,y.fontSize=ln.noteFontSize,y.fontWeight=ln.noteFontWeight,y.anchor=ln.noteAlign,y.textMargin=ln.noteMargin,y.valign="center";const b=uL(p,y),E=Math.round(b.map(S=>(S._groups||S)[0][0].getBBox().height).reduce((S,N)=>S+N));w.attr("height",E+2*ln.noteMargin),a.height+=E+2*ln.noteMargin,si.bumpVerticalPos(E+2*ln.noteMargin),a.stopy=a.starty+E+2*ln.noteMargin,a.stopx=a.startx+f.width,si.insert(a.startx,a.starty,a.stopx,a.stopy),si.models.addNote(a)},g9=i=>({fontFamily:i.messageFontFamily,fontSize:i.messageFontSize,fontWeight:i.messageFontWeight}),lL=i=>({fontFamily:i.noteFontFamily,fontSize:i.noteFontSize,fontWeight:i.noteFontWeight}),sge=i=>({fontFamily:i.actorFontFamily,fontSize:i.actorFontSize,fontWeight:i.actorFontWeight});function DHt(i,a){si.bumpVerticalPos(10);const{startx:f,stopx:p,message:w}=a,y=Wa.splitBreaks(w).length,b=co.calculateTextDimensions(w,g9(ln)),E=b.height/y;a.height+=E,si.bumpVerticalPos(E);let S,N=b.height-10;const B=b.width;if(f===p){S=si.getVerticalPos()+N,ln.rightAngles||(N+=ln.boxMargin,S=si.getVerticalPos()+N),N+=30;const R=Math.max(B/2,ln.width/2);si.insert(f-R,si.getVerticalPos()-10+N,p+R,si.getVerticalPos()+30+N)}else N+=ln.boxMargin,S=si.getVerticalPos()+N,si.insert(f,S-10,p,S);return si.bumpVerticalPos(N),a.height+=N,a.stopy=a.starty+a.height,si.insert(a.fromBounds,a.starty,a.toBounds,a.stopy),S}const IHt=function(i,a,f,p){const{startx:w,stopx:y,starty:b,message:E,type:S,sequenceIndex:N,sequenceVisible:B}=a,R=co.calculateTextDimensions(E,g9(ln)),j=ih.getTextObj();j.x=w,j.y=b+10,j.width=y-w,j.class="messageText",j.dy="1em",j.text=E,j.fontFamily=ln.messageFontFamily,j.fontSize=ln.messageFontSize,j.fontWeight=ln.messageFontWeight,j.anchor=ln.messageAlign,j.valign="center",j.textMargin=ln.wrapPadding,j.tspan=!1,uL(i,j);const $=R.width;let V;w===y?ln.rightAngles?V=i.append("path").attr("d",`M ${w},${f} H ${w+Math.max(ln.width/2,$/2)} V ${f+25} H ${w}`):V=i.append("path").attr("d","M "+w+","+f+" C "+(w+60)+","+(f-10)+" "+(w+60)+","+(f+30)+" "+w+","+(f+20)):(V=i.append("line"),V.attr("x1",w),V.attr("y1",f),V.attr("x2",y),V.attr("y2",f)),S===p.db.LINETYPE.DOTTED||S===p.db.LINETYPE.DOTTED_CROSS||S===p.db.LINETYPE.DOTTED_POINT||S===p.db.LINETYPE.DOTTED_OPEN?(V.style("stroke-dasharray","3, 3"),V.attr("class","messageLine1")):V.attr("class","messageLine0");let Q="";ln.arrowMarkerAbsolute&&(Q=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,Q=Q.replace(/\(/g,"\\("),Q=Q.replace(/\)/g,"\\)")),V.attr("stroke-width",2),V.attr("stroke","none"),V.style("fill","none"),(S===p.db.LINETYPE.SOLID||S===p.db.LINETYPE.DOTTED)&&V.attr("marker-end","url("+Q+"#arrowhead)"),(S===p.db.LINETYPE.SOLID_POINT||S===p.db.LINETYPE.DOTTED_POINT)&&V.attr("marker-end","url("+Q+"#filled-head)"),(S===p.db.LINETYPE.SOLID_CROSS||S===p.db.LINETYPE.DOTTED_CROSS)&&V.attr("marker-end","url("+Q+"#crosshead)"),(B||ln.showSequenceNumbers)&&(V.attr("marker-start","url("+Q+"#sequencenumber)"),i.append("text").attr("x",w).attr("y",f+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(N))},age=function(i,a,f,p,w,y,b){if(w.hideUnusedParticipants===!0){const R=new Set;y.forEach(j=>{R.add(j.from),R.add(j.to)}),f=f.filter(j=>R.has(j))}let E=0,S=0,N=0,B;for(const R of f){const j=a[R],$=j.box;B&&B!=$&&(b||si.models.addBox(B),S+=ln.boxMargin+B.margin),$&&$!=B&&(b||($.x=E+S,$.y=p),S+=$.margin),j.width=j.width||ln.width,j.height=Math.max(j.height||ln.height,ln.height),j.margin=j.margin||ln.actorMargin,j.x=E+S,j.y=si.getVerticalPos();const V=ih.drawActor(i,j,ln,b);N=Math.max(N,V),si.insert(j.x,p,j.x+j.width,j.height),E+=j.width+S,j.box&&(j.box.width=E+$.margin-j.box.x),S=j.margin,B=j.box,si.models.addActor(j)}B&&!b&&si.models.addBox(B),si.bumpVerticalPos(N)},WRe=function(i,a,f,p){let w=0,y=0;for(const b of f){const E=a[b],S=PHt(E),N=ih.drawPopup(i,E,S,ln,ln.forceMenus,p);N.height>w&&(w=N.height),N.width+E.x>y&&(y=N.width+E.x)}return{maxHeight:w,maxWidth:y}},KRe=function(i){nd(ln,i),i.fontFamily&&(ln.actorFontFamily=ln.noteFontFamily=ln.messageFontFamily=i.fontFamily),i.fontSize&&(ln.actorFontSize=ln.noteFontSize=ln.messageFontSize=i.fontSize),i.fontWeight&&(ln.actorFontWeight=ln.noteFontWeight=ln.messageFontWeight=i.fontWeight)},IK=function(i){return si.activations.filter(function(a){return a.actor===i})},YRe=function(i,a){const f=a[i],p=IK(i),w=p.reduce(function(b,E){return Math.min(b,E.startx)},f.x+f.width/2),y=p.reduce(function(b,E){return Math.max(b,E.stopx)},f.x+f.width/2);return[w,y]};function p3(i,a,f,p,w){si.bumpVerticalPos(f);let y=p;if(a.id&&a.message&&i[a.id]){const b=i[a.id].width,E=g9(ln);a.message=co.wrapLabel(`[${a.message}]`,b-2*ln.wrapPadding,E),a.width=b,a.wrap=!0;const S=co.calculateTextDimensions(a.message,E),N=Math.max(S.height,ln.labelBoxHeight);y=p+N,Fe.debug(`${N} - ${a.message}`)}w(a),si.bumpVerticalPos(y)}const OHt=function(i,a,f,p){const{securityLevel:w,sequence:y}=Tt();ln=y,p.db.clear(),p.parser.parse(i);let b;w==="sandbox"&&(b=Cr("#i"+a));const E=Cr(w==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=w==="sandbox"?b.nodes()[0].contentDocument:document;si.init(),Fe.debug(p.db);const N=w==="sandbox"?E.select(`[id="${a}"]`):Cr(`[id="${a}"]`),B=p.db.getActors(),R=p.db.getBoxes(),j=p.db.getActorKeys(),$=p.db.getMessages(),V=p.db.getDiagramTitle(),Q=p.db.hasAtLeastOneBox(),oe=p.db.hasAtLeastOneBoxWithTitle(),ce=NHt(B,$,p);ln.height=BHt(B,ce,R),ih.insertComputerIcon(N),ih.insertDatabaseIcon(N),ih.insertClockIcon(N),Q&&(si.bumpVerticalPos(ln.boxMargin),oe&&si.bumpVerticalPos(R[0].textMaxHeight)),age(N,B,j,0,ln,$,!1);const se=jHt($,B,ce,p);ih.insertArrowHead(N),ih.insertArrowCrossHead(N),ih.insertArrowFilledHead(N),ih.insertSequenceNumber(N);function ge(rt,me){const gt=si.endActivation(rt);gt.starty+18>me&&(gt.starty=me-6,me+=12),ih.drawActivation(N,gt,me,ln,IK(rt.from.actor).length),si.insert(gt.startx,me-10,gt.stopx,me)}let ye=1,ke=1;const Ae=[];$.forEach(function(rt){let me,gt,pe;switch(rt.type){case p.db.LINETYPE.NOTE:gt=rt.noteModel,MHt(N,gt);break;case p.db.LINETYPE.ACTIVE_START:si.newActivation(rt,N,B);break;case p.db.LINETYPE.ACTIVE_END:ge(rt,si.getVerticalPos());break;case p.db.LINETYPE.LOOP_START:p3(se,rt,ln.boxMargin,ln.boxMargin+ln.boxTextMargin,Et=>si.newLoop(Et));break;case p.db.LINETYPE.LOOP_END:me=si.endLoop(),ih.drawLoop(N,me,"loop",ln),si.bumpVerticalPos(me.stopy-si.getVerticalPos()),si.models.addLoop(me);break;case p.db.LINETYPE.RECT_START:p3(se,rt,ln.boxMargin,ln.boxMargin,Et=>si.newLoop(void 0,Et.message));break;case p.db.LINETYPE.RECT_END:me=si.endLoop(),ih.drawBackgroundRect(N,me),si.models.addLoop(me),si.bumpVerticalPos(me.stopy-si.getVerticalPos());break;case p.db.LINETYPE.OPT_START:p3(se,rt,ln.boxMargin,ln.boxMargin+ln.boxTextMargin,Et=>si.newLoop(Et));break;case p.db.LINETYPE.OPT_END:me=si.endLoop(),ih.drawLoop(N,me,"opt",ln),si.bumpVerticalPos(me.stopy-si.getVerticalPos()),si.models.addLoop(me);break;case p.db.LINETYPE.ALT_START:p3(se,rt,ln.boxMargin,ln.boxMargin+ln.boxTextMargin,Et=>si.newLoop(Et));break;case p.db.LINETYPE.ALT_ELSE:p3(se,rt,ln.boxMargin+ln.boxTextMargin,ln.boxMargin,Et=>si.addSectionToLoop(Et));break;case p.db.LINETYPE.ALT_END:me=si.endLoop(),ih.drawLoop(N,me,"alt",ln),si.bumpVerticalPos(me.stopy-si.getVerticalPos()),si.models.addLoop(me);break;case p.db.LINETYPE.PAR_START:p3(se,rt,ln.boxMargin,ln.boxMargin+ln.boxTextMargin,Et=>si.newLoop(Et));break;case p.db.LINETYPE.PAR_AND:p3(se,rt,ln.boxMargin+ln.boxTextMargin,ln.boxMargin,Et=>si.addSectionToLoop(Et));break;case p.db.LINETYPE.PAR_END:me=si.endLoop(),ih.drawLoop(N,me,"par",ln),si.bumpVerticalPos(me.stopy-si.getVerticalPos()),si.models.addLoop(me);break;case p.db.LINETYPE.AUTONUMBER:ye=rt.message.start||ye,ke=rt.message.step||ke,rt.message.visible?p.db.enableSequenceNumbers():p.db.disableSequenceNumbers();break;case p.db.LINETYPE.CRITICAL_START:p3(se,rt,ln.boxMargin,ln.boxMargin+ln.boxTextMargin,Et=>si.newLoop(Et));break;case p.db.LINETYPE.CRITICAL_OPTION:p3(se,rt,ln.boxMargin+ln.boxTextMargin,ln.boxMargin,Et=>si.addSectionToLoop(Et));break;case p.db.LINETYPE.CRITICAL_END:me=si.endLoop(),ih.drawLoop(N,me,"critical",ln),si.bumpVerticalPos(me.stopy-si.getVerticalPos()),si.models.addLoop(me);break;case p.db.LINETYPE.BREAK_START:p3(se,rt,ln.boxMargin,ln.boxMargin+ln.boxTextMargin,Et=>si.newLoop(Et));break;case p.db.LINETYPE.BREAK_END:me=si.endLoop(),ih.drawLoop(N,me,"break",ln),si.bumpVerticalPos(me.stopy-si.getVerticalPos()),si.models.addLoop(me);break;default:try{pe=rt.msgModel,pe.starty=si.getVerticalPos(),pe.sequenceIndex=ye,pe.sequenceVisible=p.db.showSequenceNumbers();const Et=DHt(N,pe);Ae.push({messageModel:pe,lineStartY:Et}),si.models.addMessage(pe)}catch(Et){Fe.error("error while drawing message",Et)}}[p.db.LINETYPE.SOLID_OPEN,p.db.LINETYPE.DOTTED_OPEN,p.db.LINETYPE.SOLID,p.db.LINETYPE.DOTTED,p.db.LINETYPE.SOLID_CROSS,p.db.LINETYPE.DOTTED_CROSS,p.db.LINETYPE.SOLID_POINT,p.db.LINETYPE.DOTTED_POINT].includes(rt.type)&&(ye=ye+ke)}),Ae.forEach(rt=>IHt(N,rt.messageModel,rt.lineStartY,p)),ln.mirrorActors&&(si.bumpVerticalPos(ln.boxMargin*2),age(N,B,j,si.getVerticalPos(),ln,$,!0),si.bumpVerticalPos(ln.boxMargin),VRe(N,si.getVerticalPos())),si.models.boxes.forEach(function(rt){rt.height=si.getVerticalPos()-rt.y,si.insert(rt.x,rt.y,rt.x+rt.width,rt.height),rt.startx=rt.x,rt.starty=rt.y,rt.stopx=rt.startx+rt.width,rt.stopy=rt.starty+rt.height,rt.stroke="rgb(0,0,0, 0.5)",ih.drawBox(N,rt,ln)}),Q&&si.bumpVerticalPos(ln.boxMargin);const de=WRe(N,B,j,S),{bounds:ve}=si.getBounds();Fe.debug("For line height fix Querying: #"+a+" .actor-line"),Jfe("#"+a+" .actor-line").attr("y2",ve.stopy);let xe=ve.stopy-ve.starty;xe{const b=i[y];b.wrap&&(b.description=co.wrapLabel(b.description,ln.width-2*ln.wrapPadding,sge(ln)));const E=co.calculateTextDimensions(b.description,sge(ln));b.width=b.wrap?ln.width:Math.max(ln.width,E.width+2*ln.wrapPadding),b.height=b.wrap?Math.max(E.height,ln.height):ln.height,p=Math.max(p,b.height)});for(const y in a){const b=i[y];if(!b)continue;const E=i[b.nextActor];if(!E){const R=a[y]+ln.actorMargin-b.width/2;b.margin=Math.max(R,ln.actorMargin);continue}const N=a[y]+ln.actorMargin-b.width/2-E.width/2;b.margin=Math.max(N,ln.actorMargin)}let w=0;return f.forEach(y=>{const b=g9(ln);let E=y.actorKeys.reduce((B,R)=>B+=i[R].width+(i[R].margin||0),0);E-=2*ln.boxTextMargin,y.wrap&&(y.name=co.wrapLabel(y.name,E-2*ln.wrapPadding,b));const S=co.calculateTextDimensions(y.name,b);w=Math.max(S.height,w);const N=Math.max(E,S.width+2*ln.wrapPadding);if(y.margin=ln.boxTextMargin,Ey.textMaxHeight=w),Math.max(p,ln.height)}const RHt=function(i,a,f){const p=a[i.from].x,w=a[i.to].x,y=i.wrap&&i.message;let b=co.calculateTextDimensions(y?co.wrapLabel(i.message,ln.width,lL(ln)):i.message,lL(ln));const E={width:y?ln.width:Math.max(ln.width,b.width+2*ln.noteMargin),height:0,startx:a[i.from].x,stopx:0,starty:0,stopy:0,message:i.message};return i.placement===f.db.PLACEMENT.RIGHTOF?(E.width=y?Math.max(ln.width,b.width):Math.max(a[i.from].width/2+a[i.to].width/2,b.width+2*ln.noteMargin),E.startx=p+(a[i.from].width+ln.actorMargin)/2):i.placement===f.db.PLACEMENT.LEFTOF?(E.width=Math.max(y?ln.width:a[i.from].width/2+a[i.to].width/2,b.width+2*ln.noteMargin),E.startx=p-E.width+(a[i.from].width-ln.actorMargin)/2):i.to===i.from?(b=co.calculateTextDimensions(y?co.wrapLabel(i.message,Math.max(ln.width,a[i.from].width),lL(ln)):i.message,lL(ln)),E.width=y?Math.max(ln.width,a[i.from].width):Math.max(a[i.from].width,ln.width,b.width+2*ln.noteMargin),E.startx=p+(a[i.from].width-E.width)/2):(E.width=Math.abs(p+a[i.from].width/2-(w+a[i.to].width/2))+ln.actorMargin,E.startx=pj.actor).lastIndexOf(N.from.actor);delete si.activations.splice(R,1)[0]}break}N.placement!==void 0?(E=RHt(N,a,p),N.noteModel=E,y.forEach(R=>{b=R,b.from=Math.min(b.from,E.startx),b.to=Math.max(b.to,E.startx+E.width),b.width=Math.max(b.width,Math.abs(b.from-b.to))-ln.labelBoxWidth})):(S=FHt(N,a,p),N.msgModel=S,S.startx&&S.stopx&&y.length>0&&y.forEach(R=>{if(b=R,S.startx===S.stopx){const j=a[N.from],$=a[N.to];b.from=Math.min(j.x-S.width/2,j.x-j.width/2,b.from),b.to=Math.max($.x+S.width/2,$.x+j.width/2,b.to),b.width=Math.max(b.width,Math.abs(b.to-b.from))-ln.labelBoxWidth}else b.from=Math.min(S.startx,b.from),b.to=Math.max(S.stopx,b.to),b.width=Math.max(b.width,S.width)-ln.labelBoxWidth}))}),si.activations=[],Fe.debug("Loop type widths:",w),w},$Ht=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:j$t,db:cHt,renderer:{bounds:si,drawActors:age,drawActorsPopup:WRe,setConf:KRe,draw:OHt},styles:uHt}},Symbol.toStringTag,{value:"Module"}));var oge=function(){var i=function(Nt,ze,Xe,Lt){for(Xe=Xe||{},Lt=Nt.length;Lt--;Xe[Nt[Lt]]=ze);return Xe},a=[1,32],f=[1,33],p=[1,34],w=[1,35],y=[1,9],b=[1,8],E=[1,18],S=[1,19],N=[1,20],B=[1,38],R=[1,25],j=[1,23],$=[1,24],V=[1,30],Q=[1,31],oe=[1,26],ce=[1,27],se=[1,28],ge=[1,29],ye=[1,42],ke=[1,39],Ae=[1,40],de=[1,41],ve=[1,43],te=[1,16,24],xe=[1,57],De=[1,58],he=[1,59],Ie=[1,60],ee=[1,61],rt=[1,62],me=[1,63],gt=[1,73],pe=[1,16,24,27,28,35,48,49,63,64,65,66,67,68,69,74,76],Et=[1,16,24,27,28,33,35,48,49,54,63,64,65,66,67,68,69,74,76,89,91,92,93,94],wt=[1,80],jt=[28,89,91,92,93,94],At=[28,68,69,89,91,92,93,94],Bt=[28,63,64,65,66,67,89,91,92,93,94],cn=[1,90],Nn=[1,16,24,48,49],Ot=[1,16,24,35],oi=[8,9,10,11,19,23,42,44,46,52,53,55,56,58,60,70,71,73,77,89,91,92,93,94],kt={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,statements:6,direction:7,direction_tb:8,direction_bt:9,direction_rl:10,direction_lr:11,graphConfig:12,openDirective:13,typeDirective:14,closeDirective:15,NEWLINE:16,":":17,argDirective:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,CLASS_DIAGRAM:23,EOF:24,statement:25,classLabel:26,SQS:27,STR:28,SQE:29,className:30,alphaNumToken:31,classLiteralName:32,GENERICTYPE:33,relationStatement:34,LABEL:35,classStatement:36,methodStatement:37,annotationStatement:38,clickStatement:39,cssClassStatement:40,noteStatement:41,acc_title:42,acc_title_value:43,acc_descr:44,acc_descr_value:45,acc_descr_multiline_value:46,classIdentifier:47,STYLE_SEPARATOR:48,STRUCT_START:49,members:50,STRUCT_STOP:51,CLASS:52,ANNOTATION_START:53,ANNOTATION_END:54,MEMBER:55,SEPARATOR:56,relation:57,NOTE_FOR:58,noteText:59,NOTE:60,relationType:61,lineType:62,AGGREGATION:63,EXTENSION:64,COMPOSITION:65,DEPENDENCY:66,LOLLIPOP:67,LINE:68,DOTTED_LINE:69,CALLBACK:70,LINK:71,LINK_TARGET:72,CLICK:73,CALLBACK_NAME:74,CALLBACK_ARGS:75,HREF:76,CSSCLASS:77,commentToken:78,textToken:79,graphCodeTokens:80,textNoTagsToken:81,TAGSTART:82,TAGEND:83,"==":84,"--":85,PCT:86,DEFAULT:87,SPACE:88,MINUS:89,keywords:90,UNICODE_TEXT:91,NUM:92,ALPHA:93,BQUOTE_STR:94,$accept:0,$end:1},terminals_:{2:"error",8:"direction_tb",9:"direction_bt",10:"direction_rl",11:"direction_lr",16:"NEWLINE",17:":",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",23:"CLASS_DIAGRAM",24:"EOF",27:"SQS",28:"STR",29:"SQE",33:"GENERICTYPE",35:"LABEL",42:"acc_title",43:"acc_title_value",44:"acc_descr",45:"acc_descr_value",46:"acc_descr_multiline_value",48:"STYLE_SEPARATOR",49:"STRUCT_START",51:"STRUCT_STOP",52:"CLASS",53:"ANNOTATION_START",54:"ANNOTATION_END",55:"MEMBER",56:"SEPARATOR",58:"NOTE_FOR",60:"NOTE",63:"AGGREGATION",64:"EXTENSION",65:"COMPOSITION",66:"DEPENDENCY",67:"LOLLIPOP",68:"LINE",69:"DOTTED_LINE",70:"CALLBACK",71:"LINK",72:"LINK_TARGET",73:"CLICK",74:"CALLBACK_NAME",75:"CALLBACK_ARGS",76:"HREF",77:"CSSCLASS",80:"graphCodeTokens",82:"TAGSTART",83:"TAGEND",84:"==",85:"--",86:"PCT",87:"DEFAULT",88:"SPACE",89:"MINUS",90:"keywords",91:"UNICODE_TEXT",92:"NUM",93:"ALPHA",94:"BQUOTE_STR"},productions_:[0,[3,1],[3,2],[3,1],[7,1],[7,1],[7,1],[7,1],[4,1],[5,4],[5,6],[13,1],[14,1],[18,1],[15,1],[12,4],[6,1],[6,2],[6,3],[26,3],[30,1],[30,1],[30,2],[30,2],[30,2],[25,1],[25,2],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,2],[25,2],[25,1],[36,1],[36,3],[36,4],[36,6],[47,2],[47,3],[38,4],[50,1],[50,2],[37,1],[37,2],[37,1],[37,1],[34,3],[34,4],[34,4],[34,5],[41,3],[41,2],[57,3],[57,2],[57,2],[57,1],[61,1],[61,1],[61,1],[61,1],[61,1],[62,1],[62,1],[39,3],[39,4],[39,3],[39,4],[39,4],[39,5],[39,3],[39,4],[39,4],[39,5],[39,3],[39,4],[39,4],[39,5],[40,3],[78,1],[78,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[81,1],[81,1],[81,1],[81,1],[31,1],[31,1],[31,1],[31,1],[32,1],[59,1]],performAction:function(ze,Xe,Lt,Ge,Bn,Oe,Ri){var tn=Oe.length-1;switch(Bn){case 4:Ge.setDirection("TB");break;case 5:Ge.setDirection("BT");break;case 6:Ge.setDirection("RL");break;case 7:Ge.setDirection("LR");break;case 11:Ge.parseDirective("%%{","open_directive");break;case 12:Ge.parseDirective(Oe[tn],"type_directive");break;case 13:Oe[tn]=Oe[tn].trim().replace(/'/g,'"'),Ge.parseDirective(Oe[tn],"arg_directive");break;case 14:Ge.parseDirective("}%%","close_directive","class");break;case 19:this.$=Oe[tn-1];break;case 20:case 21:this.$=Oe[tn];break;case 22:this.$=Oe[tn-1]+Oe[tn];break;case 23:case 24:this.$=Oe[tn-1]+"~"+Oe[tn]+"~";break;case 25:Ge.addRelation(Oe[tn]);break;case 26:Oe[tn-1].title=Ge.cleanupLabel(Oe[tn]),Ge.addRelation(Oe[tn-1]);break;case 34:this.$=Oe[tn].trim(),Ge.setAccTitle(this.$);break;case 35:case 36:this.$=Oe[tn].trim(),Ge.setAccDescription(this.$);break;case 38:Ge.setCssClass(Oe[tn-2],Oe[tn]);break;case 39:Ge.addMembers(Oe[tn-3],Oe[tn-1]);break;case 40:Ge.setCssClass(Oe[tn-5],Oe[tn-3]),Ge.addMembers(Oe[tn-5],Oe[tn-1]);break;case 41:this.$=Oe[tn],Ge.addClass(Oe[tn]);break;case 42:this.$=Oe[tn-1],Ge.addClass(Oe[tn-1]),Ge.setClassLabel(Oe[tn-1],Oe[tn]);break;case 43:Ge.addAnnotation(Oe[tn],Oe[tn-2]);break;case 44:this.$=[Oe[tn]];break;case 45:Oe[tn].push(Oe[tn-1]),this.$=Oe[tn];break;case 46:break;case 47:Ge.addMember(Oe[tn-1],Ge.cleanupLabel(Oe[tn]));break;case 48:break;case 49:break;case 50:this.$={id1:Oe[tn-2],id2:Oe[tn],relation:Oe[tn-1],relationTitle1:"none",relationTitle2:"none"};break;case 51:this.$={id1:Oe[tn-3],id2:Oe[tn],relation:Oe[tn-1],relationTitle1:Oe[tn-2],relationTitle2:"none"};break;case 52:this.$={id1:Oe[tn-3],id2:Oe[tn],relation:Oe[tn-2],relationTitle1:"none",relationTitle2:Oe[tn-1]};break;case 53:this.$={id1:Oe[tn-4],id2:Oe[tn],relation:Oe[tn-2],relationTitle1:Oe[tn-3],relationTitle2:Oe[tn-1]};break;case 54:Ge.addNote(Oe[tn],Oe[tn-1]);break;case 55:Ge.addNote(Oe[tn]);break;case 56:this.$={type1:Oe[tn-2],type2:Oe[tn],lineType:Oe[tn-1]};break;case 57:this.$={type1:"none",type2:Oe[tn],lineType:Oe[tn-1]};break;case 58:this.$={type1:Oe[tn-1],type2:"none",lineType:Oe[tn]};break;case 59:this.$={type1:"none",type2:"none",lineType:Oe[tn]};break;case 60:this.$=Ge.relationType.AGGREGATION;break;case 61:this.$=Ge.relationType.EXTENSION;break;case 62:this.$=Ge.relationType.COMPOSITION;break;case 63:this.$=Ge.relationType.DEPENDENCY;break;case 64:this.$=Ge.relationType.LOLLIPOP;break;case 65:this.$=Ge.lineType.LINE;break;case 66:this.$=Ge.lineType.DOTTED_LINE;break;case 67:case 73:this.$=Oe[tn-2],Ge.setClickEvent(Oe[tn-1],Oe[tn]);break;case 68:case 74:this.$=Oe[tn-3],Ge.setClickEvent(Oe[tn-2],Oe[tn-1]),Ge.setTooltip(Oe[tn-2],Oe[tn]);break;case 69:case 77:this.$=Oe[tn-2],Ge.setLink(Oe[tn-1],Oe[tn]);break;case 70:this.$=Oe[tn-3],Ge.setLink(Oe[tn-2],Oe[tn-1],Oe[tn]);break;case 71:case 79:this.$=Oe[tn-3],Ge.setLink(Oe[tn-2],Oe[tn-1]),Ge.setTooltip(Oe[tn-2],Oe[tn]);break;case 72:case 80:this.$=Oe[tn-4],Ge.setLink(Oe[tn-3],Oe[tn-2],Oe[tn]),Ge.setTooltip(Oe[tn-3],Oe[tn-1]);break;case 75:this.$=Oe[tn-3],Ge.setClickEvent(Oe[tn-2],Oe[tn-1],Oe[tn]);break;case 76:this.$=Oe[tn-4],Ge.setClickEvent(Oe[tn-3],Oe[tn-2],Oe[tn-1]),Ge.setTooltip(Oe[tn-3],Oe[tn]);break;case 78:this.$=Oe[tn-3],Ge.setLink(Oe[tn-2],Oe[tn-1],Oe[tn]);break;case 81:Ge.setCssClass(Oe[tn-1],Oe[tn]);break}},table:[{3:1,4:2,5:3,6:4,7:17,8:a,9:f,10:p,11:w,12:5,13:6,19:y,23:b,25:7,30:21,31:36,32:37,34:10,36:11,37:12,38:13,39:14,40:15,41:16,42:E,44:S,46:N,47:22,52:B,53:R,55:j,56:$,58:V,60:Q,70:oe,71:ce,73:se,77:ge,89:ye,91:ke,92:Ae,93:de,94:ve},{1:[3]},{1:[2,1]},{3:44,4:2,5:3,6:4,7:17,8:a,9:f,10:p,11:w,12:5,13:6,19:y,23:b,25:7,30:21,31:36,32:37,34:10,36:11,37:12,38:13,39:14,40:15,41:16,42:E,44:S,46:N,47:22,52:B,53:R,55:j,56:$,58:V,60:Q,70:oe,71:ce,73:se,77:ge,89:ye,91:ke,92:Ae,93:de,94:ve},{1:[2,3]},{1:[2,8]},{14:45,20:[1,46]},i($,[2,16],{16:[1,47]}),{16:[1,48]},{20:[2,11]},i(te,[2,25],{35:[1,49]}),i(te,[2,27]),i(te,[2,28]),i(te,[2,29]),i(te,[2,30]),i(te,[2,31]),i(te,[2,32]),i(te,[2,33]),{43:[1,50]},{45:[1,51]},i(te,[2,36]),i(te,[2,46],{57:52,61:55,62:56,28:[1,53],35:[1,54],63:xe,64:De,65:he,66:Ie,67:ee,68:rt,69:me}),i(te,[2,37],{48:[1,64],49:[1,65]}),i(te,[2,48]),i(te,[2,49]),{31:66,89:ye,91:ke,92:Ae,93:de},{30:67,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},{30:68,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},{30:69,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},{28:[1,70]},{30:71,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},{28:gt,59:72},i(te,[2,4]),i(te,[2,5]),i(te,[2,6]),i(te,[2,7]),i(pe,[2,20],{31:36,32:37,30:74,33:[1,75],89:ye,91:ke,92:Ae,93:de,94:ve}),i(pe,[2,21],{33:[1,76]}),{30:77,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},i(Et,[2,95]),i(Et,[2,96]),i(Et,[2,97]),i(Et,[2,98]),i([1,16,24,27,28,33,35,48,49,63,64,65,66,67,68,69,74,76],[2,99]),{1:[2,2]},{15:78,17:[1,79],22:wt},i([17,22],[2,12]),i($,[2,17],{25:7,34:10,36:11,37:12,38:13,39:14,40:15,41:16,7:17,30:21,47:22,31:36,32:37,6:81,8:a,9:f,10:p,11:w,42:E,44:S,46:N,52:B,53:R,55:j,56:$,58:V,60:Q,70:oe,71:ce,73:se,77:ge,89:ye,91:ke,92:Ae,93:de,94:ve}),{6:82,7:17,8:a,9:f,10:p,11:w,25:7,30:21,31:36,32:37,34:10,36:11,37:12,38:13,39:14,40:15,41:16,42:E,44:S,46:N,47:22,52:B,53:R,55:j,56:$,58:V,60:Q,70:oe,71:ce,73:se,77:ge,89:ye,91:ke,92:Ae,93:de,94:ve},i(te,[2,26]),i(te,[2,34]),i(te,[2,35]),{28:[1,84],30:83,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},{57:85,61:55,62:56,63:xe,64:De,65:he,66:Ie,67:ee,68:rt,69:me},i(te,[2,47]),{62:86,68:rt,69:me},i(jt,[2,59],{61:87,63:xe,64:De,65:he,66:Ie,67:ee}),i(At,[2,60]),i(At,[2,61]),i(At,[2,62]),i(At,[2,63]),i(At,[2,64]),i(Bt,[2,65]),i(Bt,[2,66]),{31:88,89:ye,91:ke,92:Ae,93:de},{50:89,55:cn},{54:[1,91]},{28:[1,92]},{28:[1,93]},{74:[1,94],76:[1,95]},{31:96,89:ye,91:ke,92:Ae,93:de},{28:gt,59:97},i(te,[2,55]),i(te,[2,100]),i(pe,[2,22]),i(pe,[2,23]),i(pe,[2,24]),i(Nn,[2,41],{26:98,27:[1,99]}),{16:[1,100]},{18:101,21:[1,102]},{16:[2,14]},i($,[2,18]),{24:[1,103]},i(Ot,[2,50]),{30:104,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},{28:[1,106],30:105,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},i(jt,[2,58],{61:107,63:xe,64:De,65:he,66:Ie,67:ee}),i(jt,[2,57]),i(te,[2,38],{49:[1,108]}),{51:[1,109]},{50:110,51:[2,44],55:cn},{30:111,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},i(te,[2,67],{28:[1,112]}),i(te,[2,69],{28:[1,114],72:[1,113]}),i(te,[2,73],{28:[1,115],75:[1,116]}),i(te,[2,77],{28:[1,118],72:[1,117]}),i(te,[2,81]),i(te,[2,54]),i(Nn,[2,42]),{28:[1,119]},i(oi,[2,9]),{15:120,22:wt},{22:[2,13]},{1:[2,15]},i(Ot,[2,52]),i(Ot,[2,51]),{30:121,31:36,32:37,89:ye,91:ke,92:Ae,93:de,94:ve},i(jt,[2,56]),{50:122,55:cn},i(te,[2,39]),{51:[2,45]},i(te,[2,43]),i(te,[2,68]),i(te,[2,70]),i(te,[2,71],{72:[1,123]}),i(te,[2,74]),i(te,[2,75],{28:[1,124]}),i(te,[2,78]),i(te,[2,79],{72:[1,125]}),{29:[1,126]},{16:[1,127]},i(Ot,[2,53]),{51:[1,128]},i(te,[2,72]),i(te,[2,76]),i(te,[2,80]),i(Nn,[2,19]),i(oi,[2,10]),i(te,[2,40])],defaultActions:{2:[2,1],4:[2,3],5:[2,8],9:[2,11],44:[2,2],80:[2,14],102:[2,13],103:[2,15],110:[2,45]},parseError:function(ze,Xe){if(Xe.recoverable)this.trace(ze);else{var Lt=new Error(ze);throw Lt.hash=Xe,Lt}},parse:function(ze){var Xe=this,Lt=[0],Ge=[],Bn=[null],Oe=[],Ri=this.table,tn="",hi=0,Sr=0,Zn=2,Xn=1,ir=Oe.slice.call(arguments,1),Hn=Object.create(this.lexer),tr={yy:{}};for(var ha in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ha)&&(tr.yy[ha]=this.yy[ha]);Hn.setInput(ze,tr.yy),tr.yy.lexer=Hn,tr.yy.parser=this,typeof Hn.yylloc>"u"&&(Hn.yylloc={});var Zs=Hn.yylloc;Oe.push(Zs);var ns=Hn.options&&Hn.options.ranges;typeof tr.yy.parseError=="function"?this.parseError=tr.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Hi(){var yn;return yn=Ge.pop()||Hn.lex()||Xn,typeof yn!="number"&&(yn instanceof Array&&(Ge=yn,yn=Ge.pop()),yn=Xe.symbols_[yn]||yn),yn}for(var Js,Pc,Ga,ws,Oi={},Er,br,Dr,Vn;;){if(Pc=Lt[Lt.length-1],this.defaultActions[Pc]?Ga=this.defaultActions[Pc]:((Js===null||typeof Js>"u")&&(Js=Hi()),Ga=Ri[Pc]&&Ri[Pc][Js]),typeof Ga>"u"||!Ga.length||!Ga[0]){var qi="";Vn=[];for(Er in Ri[Pc])this.terminals_[Er]&&Er>Zn&&Vn.push("'"+this.terminals_[Er]+"'");Hn.showPosition?qi="Parse error on line "+(hi+1)+`: +`+Hn.showPosition()+` +Expecting `+Vn.join(", ")+", got '"+(this.terminals_[Js]||Js)+"'":qi="Parse error on line "+(hi+1)+": Unexpected "+(Js==Xn?"end of input":"'"+(this.terminals_[Js]||Js)+"'"),this.parseError(qi,{text:Hn.match,token:this.terminals_[Js]||Js,line:Hn.yylineno,loc:Zs,expected:Vn})}if(Ga[0]instanceof Array&&Ga.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Pc+", token: "+Js);switch(Ga[0]){case 1:Lt.push(Js),Bn.push(Hn.yytext),Oe.push(Hn.yylloc),Lt.push(Ga[1]),Js=null,Sr=Hn.yyleng,tn=Hn.yytext,hi=Hn.yylineno,Zs=Hn.yylloc;break;case 2:if(br=this.productions_[Ga[1]][1],Oi.$=Bn[Bn.length-br],Oi._$={first_line:Oe[Oe.length-(br||1)].first_line,last_line:Oe[Oe.length-1].last_line,first_column:Oe[Oe.length-(br||1)].first_column,last_column:Oe[Oe.length-1].last_column},ns&&(Oi._$.range=[Oe[Oe.length-(br||1)].range[0],Oe[Oe.length-1].range[1]]),ws=this.performAction.apply(Oi,[tn,Sr,hi,tr.yy,Ga[1],Bn,Oe].concat(ir)),typeof ws<"u")return ws;br&&(Lt=Lt.slice(0,-1*br*2),Bn=Bn.slice(0,-1*br),Oe=Oe.slice(0,-1*br)),Lt.push(this.productions_[Ga[1]][0]),Bn.push(Oi.$),Oe.push(Oi._$),Dr=Ri[Lt[Lt.length-2]][Lt[Lt.length-1]],Lt.push(Dr);break;case 3:return!0}}return!0}},Dt=function(){var Nt={EOF:1,parseError:function(Xe,Lt){if(this.yy.parser)this.yy.parser.parseError(Xe,Lt);else throw new Error(Xe)},setInput:function(ze,Xe){return this.yy=Xe||this.yy||{},this._input=ze,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ze=this._input[0];this.yytext+=ze,this.yyleng++,this.offset++,this.match+=ze,this.matched+=ze;var Xe=ze.match(/(?:\r\n?|\n).*/g);return Xe?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ze},unput:function(ze){var Xe=ze.length,Lt=ze.split(/(?:\r\n?|\n)/g);this._input=ze+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Xe),this.offset-=Xe;var Ge=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Lt.length-1&&(this.yylineno-=Lt.length-1);var Bn=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Lt?(Lt.length===Ge.length?this.yylloc.first_column:0)+Ge[Ge.length-Lt.length].length-Lt[0].length:this.yylloc.first_column-Xe},this.options.ranges&&(this.yylloc.range=[Bn[0],Bn[0]+this.yyleng-Xe]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(ze){this.unput(this.match.slice(ze))},pastInput:function(){var ze=this.matched.substr(0,this.matched.length-this.match.length);return(ze.length>20?"...":"")+ze.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var ze=this.match;return ze.length<20&&(ze+=this._input.substr(0,20-ze.length)),(ze.substr(0,20)+(ze.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var ze=this.pastInput(),Xe=new Array(ze.length+1).join("-");return ze+this.upcomingInput()+` +`+Xe+"^"},test_match:function(ze,Xe){var Lt,Ge,Bn;if(this.options.backtrack_lexer&&(Bn={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Bn.yylloc.range=this.yylloc.range.slice(0))),Ge=ze[0].match(/(?:\r\n?|\n).*/g),Ge&&(this.yylineno+=Ge.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Ge?Ge[Ge.length-1].length-Ge[Ge.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ze[0].length},this.yytext+=ze[0],this.match+=ze[0],this.matches=ze,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ze[0].length),this.matched+=ze[0],Lt=this.performAction.call(this,this.yy,this,Xe,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Lt)return Lt;if(this._backtrack){for(var Oe in Bn)this[Oe]=Bn[Oe];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ze,Xe,Lt,Ge;this._more||(this.yytext="",this.match="");for(var Bn=this._currentRules(),Oe=0;OeXe[0].length)){if(Xe=Lt,Ge=Oe,this.options.backtrack_lexer){if(ze=this.test_match(Lt,Bn[Oe]),ze!==!1)return ze;if(this._backtrack){Xe=!1;continue}else return!1}else if(!this.options.flex)break}return Xe?(ze=this.test_match(Xe,Bn[Ge]),ze!==!1?ze:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Xe=this.next();return Xe||this.lex()},begin:function(Xe){this.conditionStack.push(Xe)},popState:function(){var Xe=this.conditionStack.length-1;return Xe>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Xe){return Xe=this.conditionStack.length-1-Math.abs(Xe||0),Xe>=0?this.conditionStack[Xe]:"INITIAL"},pushState:function(Xe){this.begin(Xe)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(Xe,Lt,Ge,Bn){switch(Ge){case 0:return this.begin("open_directive"),19;case 1:return 8;case 2:return 9;case 3:return 10;case 4:return 11;case 5:return this.begin("type_directive"),20;case 6:return this.popState(),this.begin("arg_directive"),17;case 7:return this.popState(),this.popState(),22;case 8:return 21;case 9:break;case 10:break;case 11:return this.begin("acc_title"),42;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),44;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:return 16;case 19:break;case 20:return 23;case 21:return 23;case 22:return this.begin("struct"),49;case 23:return"EDGE_STATE";case 24:return"EOF_IN_STRUCT";case 25:return"OPEN_IN_STRUCT";case 26:return this.popState(),51;case 27:break;case 28:return"MEMBER";case 29:return 52;case 30:return 77;case 31:return 70;case 32:return 71;case 33:return 73;case 34:return 58;case 35:return 60;case 36:return 53;case 37:return 54;case 38:this.begin("generic");break;case 39:this.popState();break;case 40:return"GENERICTYPE";case 41:this.begin("string");break;case 42:this.popState();break;case 43:return"STR";case 44:this.begin("bqstring");break;case 45:this.popState();break;case 46:return"BQUOTE_STR";case 47:this.begin("href");break;case 48:this.popState();break;case 49:return 76;case 50:this.begin("callback_name");break;case 51:this.popState();break;case 52:this.popState(),this.begin("callback_args");break;case 53:return 74;case 54:this.popState();break;case 55:return 75;case 56:return 72;case 57:return 72;case 58:return 72;case 59:return 72;case 60:return 64;case 61:return 64;case 62:return 66;case 63:return 66;case 64:return 65;case 65:return 63;case 66:return 67;case 67:return 68;case 68:return 69;case 69:return 35;case 70:return 48;case 71:return 89;case 72:return"DOT";case 73:return"PLUS";case 74:return 86;case 75:return"EQUALS";case 76:return"EQUALS";case 77:return 93;case 78:return 27;case 79:return 29;case 80:return"PUNCTUATION";case 81:return 92;case 82:return 91;case 83:return 88;case 84:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:[{])/,/^(?:\[\*\])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:class\b)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},callback_args:{rules:[54,55],inclusive:!1},callback_name:{rules:[51,52,53],inclusive:!1},href:{rules:[48,49],inclusive:!1},struct:{rules:[23,24,25,26,27,28],inclusive:!1},generic:{rules:[39,40],inclusive:!1},bqstring:{rules:[45,46],inclusive:!1},string:{rules:[42,43],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,29,30,31,32,33,34,35,36,37,38,41,44,47,50,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],inclusive:!0}}};return Nt}();kt.lexer=Dt;function vt(){this.yy={}}return vt.prototype=kt,kt.Parser=vt,new vt}();oge.parser=oge;const XRe=oge,cge="classId-";let uge=[],hf={},OK=[],QRe=0,IP=[];const M5=i=>Wa.sanitizeText(i,Tt()),HHt=function(i,a,f){rd.parseDirective(this,i,a,f)},hL=function(i){let a="",f=i;if(i.indexOf("~")>0){const p=i.split("~");f=M5(p[0]),a=M5(p[1])}return{className:f,type:a}},zHt=function(i,a){a&&(a=M5(a));const{className:f}=hL(i);hf[f].label=a},lge=function(i){const a=hL(i);hf[a.className]===void 0&&(hf[a.className]={id:a.className,type:a.type,label:a.className,cssClasses:[],methods:[],members:[],annotations:[],domId:cge+a.className+"-"+QRe},QRe++)},ZRe=function(i){if(i in hf)return hf[i].domId;throw new Error("Class not found: "+i)},GHt=function(){uge=[],hf={},OK=[],IP=[],IP.push(eFe),rp()},qHt=function(i){return hf[i]},VHt=function(){return hf},UHt=function(){return uge},WHt=function(){return OK},KHt=function(i){Fe.debug("Adding relation: "+JSON.stringify(i)),lge(i.id1),lge(i.id2),i.id1=hL(i.id1).className,i.id2=hL(i.id2).className,i.relationTitle1=Wa.sanitizeText(i.relationTitle1.trim(),Tt()),i.relationTitle2=Wa.sanitizeText(i.relationTitle2.trim(),Tt()),uge.push(i)},YHt=function(i,a){const f=hL(i).className;hf[f].annotations.push(a)},JRe=function(i,a){const f=hL(i).className,p=hf[f];if(typeof a=="string"){const w=a.trim();w.startsWith("<<")&&w.endsWith(">>")?p.annotations.push(M5(w.substring(2,w.length-2))):w.indexOf(")")>0?p.methods.push(M5(w)):w&&p.members.push(M5(w))}},XHt=function(i,a){Array.isArray(a)&&(a.reverse(),a.forEach(f=>JRe(i,f)))},QHt=function(i,a){const f={id:`note${OK.length}`,class:a,text:i};OK.push(f)},ZHt=function(i){return i.startsWith(":")&&(i=i.substring(1)),M5(i.trim())},hge=function(i,a){i.split(",").forEach(function(f){let p=f;f[0].match(/\d/)&&(p=cge+p),hf[p]!==void 0&&hf[p].cssClasses.push(a)})},JHt=function(i,a){i.split(",").forEach(function(f){a!==void 0&&(hf[f].tooltip=M5(a))})},ezt=function(i){return hf[i].tooltip},tzt=function(i,a,f){const p=Tt();i.split(",").forEach(function(w){let y=w;w[0].match(/\d/)&&(y=cge+y),hf[y]!==void 0&&(hf[y].link=co.formatUrl(a,p),p.securityLevel==="sandbox"?hf[y].linkTarget="_top":typeof f=="string"?hf[y].linkTarget=M5(f):hf[y].linkTarget="_blank")}),hge(i,"clickable")},nzt=function(i,a,f){i.split(",").forEach(function(p){rzt(p,a,f),hf[p].haveCallback=!0}),hge(i,"clickable")},rzt=function(i,a,f){if(Tt().securityLevel!=="loose"||a===void 0)return;const w=i;if(hf[w]!==void 0){const y=ZRe(w);let b=[];if(typeof f=="string"){b=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let E=0;E")),w.classed("hover",!0)}).on("mouseout",function(){a.transition().duration(500).style("opacity",0),Cr(this).classed("hover",!1)})};IP.push(eFe);let tFe="TB";const NK={parseDirective:HHt,setAccTitle:ip,getAccTitle:L2,getAccDescription:D2,setAccDescription:M2,getConfig:()=>Tt().class,addClass:lge,bindFunctions:izt,clear:GHt,getClass:qHt,getClasses:VHt,getNotes:WHt,addAnnotation:YHt,addNote:QHt,getRelations:UHt,addRelation:KHt,getDirection:()=>tFe,setDirection:i=>{tFe=i},addMember:JRe,addMembers:XHt,cleanupLabel:ZHt,lineType:szt,relationType:azt,setClickEvent:nzt,setCssClass:hge,setLink:tzt,getTooltip:ezt,setTooltip:JHt,lookUpDomId:ZRe,setDiagramTitle:Uw,getDiagramTitle:Ww,setClassLabel:zHt},nFe=i=>`g.classGroup text { + fill: ${i.nodeBorder}; + fill: ${i.classText}; + stroke: none; + font-family: ${i.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + +.nodeLabel, .edgeLabel { + color: ${i.classText}; +} +.edgeLabel .label rect { + fill: ${i.mainBkg}; +} +.label text { + fill: ${i.classText}; +} +.edgeLabel .label span { + background: ${i.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + +.divider { + stroke: ${i.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; +} + +g.classGroup line { + stroke: ${i.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${i.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${i.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${i.lineColor}; + stroke-width: 1; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +#compositionStart, .composition { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#compositionEnd, .composition { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#extensionStart, .extension { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#extensionEnd, .extension { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#aggregationStart, .aggregation { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#aggregationEnd, .aggregation { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#lollipopStart, .lollipop { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#lollipopEnd, .lollipop { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; +} +`;let PK={};const BK=20,OP=function(i){const a=Object.entries(PK).find(f=>f[1].label===i);if(a)return a[0]},ozt=function(i){i.append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),i.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},czt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:XRe,db:NK,renderer:{draw:function(i,a,f,p){const w=Tt().class;PK={},Fe.info("Rendering diagram "+i);const y=Tt().securityLevel;let b;y==="sandbox"&&(b=Cr("#i"+a));const E=Cr(y==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=E.select(`[id='${a}']`);ozt(S);const N=new zf({multigraph:!0});N.setGraph({isMultiGraph:!0}),N.setDefaultEdgeLabel(function(){return{}});const B=p.db.getClasses(),R=Object.keys(B);for(const se of R){const ge=B[se],ye=_0e.drawClass(S,ge,w,p);PK[ye.id]=ye,N.setNode(ye.id,ye),Fe.info("Org height: "+ye.height)}p.db.getRelations().forEach(function(se){Fe.info("tjoho"+OP(se.id1)+OP(se.id2)+JSON.stringify(se)),N.setEdge(OP(se.id1),OP(se.id2),{relation:se},se.title||"DEFAULT")}),p.db.getNotes().forEach(function(se){Fe.debug(`Adding note: ${JSON.stringify(se)}`);const ge=_0e.drawNote(S,se,w,p);PK[ge.id]=ge,N.setNode(ge.id,ge),se.class&&se.class in B&&N.setEdge(se.id,OP(se.class),{relation:{id1:se.id,id2:se.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")}),tL(N),N.nodes().forEach(function(se){se!==void 0&&N.node(se)!==void 0&&(Fe.debug("Node "+se+": "+JSON.stringify(N.node(se))),E.select("#"+(p.db.lookUpDomId(se)||se)).attr("transform","translate("+(N.node(se).x-N.node(se).width/2)+","+(N.node(se).y-N.node(se).height/2)+" )"))}),N.edges().forEach(function(se){se!==void 0&&N.edge(se)!==void 0&&(Fe.debug("Edge "+se.v+" -> "+se.w+": "+JSON.stringify(N.edge(se))),_0e.drawEdge(S,N.edge(se),N.edge(se).relation,w,p))});const V=S.node().getBBox(),Q=V.width+BK*2,oe=V.height+BK*2;Vw(S,oe,Q,w.useMaxWidth);const ce=`${V.x-BK} ${V.y-BK} ${Q} ${oe}`;Fe.debug(`viewBox ${ce}`),S.attr("viewBox",ce)}},styles:nFe,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,NK.clear()}}},Symbol.toStringTag,{value:"Module"})),rFe=i=>Wa.sanitizeText(i,Tt());let fge={dividerMargin:10,padding:5,textHeight:10,curve:void 0};const uzt=function(i,a,f,p){const w=Object.keys(i);Fe.info("keys:",w),Fe.info(i),w.forEach(function(y){var $,V;const b=i[y];let E="";b.cssClasses.length>0&&(E=E+" "+b.cssClasses.join(" "));const S={labelStyle:"",style:""},N=b.label??b.id,B=0,R="class_box",j={labelStyle:S.labelStyle,shape:R,labelText:rFe(N),classData:b,rx:B,ry:B,class:E,style:S.style,id:b.id,domId:b.domId,tooltip:p.db.getTooltip(b.id)||"",haveCallback:b.haveCallback,link:b.link,width:b.type==="group"?500:void 0,type:b.type,padding:(($=Tt().flowchart)==null?void 0:$.padding)??((V=Tt().class)==null?void 0:V.padding)};a.setNode(b.id,j),Fe.info("setNode",j)})},lzt=function(i,a,f,p){Fe.info(i),i.forEach(function(w,y){var Q,oe;const b=w,E="",S={labelStyle:"",style:""},N=b.text,B=0,R="note",j={labelStyle:S.labelStyle,shape:R,labelText:rFe(N),noteData:b,rx:B,ry:B,class:E,style:S.style,id:b.id,domId:b.id,tooltip:"",type:"note",padding:((Q=Tt().flowchart)==null?void 0:Q.padding)??((oe=Tt().class)==null?void 0:oe.padding)};if(a.setNode(b.id,j),Fe.info("setNode",j),!b.class||!(b.class in p))return;const $=f+y,V={id:`edgeNote${$}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:Ub(fge.curve,ng)};a.setEdge(b.id,b.class,V,$)})},hzt=function(i,a){const f=Tt().flowchart;let p=0;i.forEach(function(w){var b;p++;const y={classes:"relation",pattern:w.relation.lineType==1?"dashed":"solid",id:"id"+p,arrowhead:w.type==="arrow_open"?"none":"normal",startLabelRight:w.relationTitle1==="none"?"":w.relationTitle1,endLabelLeft:w.relationTitle2==="none"?"":w.relationTitle2,arrowTypeStart:iFe(w.relation.type1),arrowTypeEnd:iFe(w.relation.type2),style:"fill:none",labelStyle:"",curve:Ub(f==null?void 0:f.curve,ng)};if(Fe.info(y,w),w.style!==void 0){const E=Yw(w.style);y.style=E.style,y.labelStyle=E.labelStyle}w.text=w.title,w.text===void 0?w.style!==void 0&&(y.arrowheadStyle="fill: #333"):(y.arrowheadStyle="fill: #333",y.labelpos="c",((b=Tt().flowchart)==null?void 0:b.htmlLabels)??Tt().htmlLabels?(y.labelType="html",y.label=''+w.text+""):(y.labelType="text",y.label=w.text.replace(Wa.lineBreakRegex,` +`),w.style===void 0&&(y.style=y.style||"stroke: #333; stroke-width: 1.5px;fill:none"),y.labelStyle=y.labelStyle.replace("color:","fill:"))),a.setEdge(w.id1,w.id2,y,p)})},fzt=function(i){fge={...fge,...i}},dzt=async function(i,a,f,p){Fe.info("Drawing class - ",a);const w=Tt().flowchart??Tt().class,y=Tt().securityLevel;Fe.info("config:",w);const b=(w==null?void 0:w.nodeSpacing)??50,E=(w==null?void 0:w.rankSpacing)??50,S=new zf({multigraph:!0,compound:!0}).setGraph({rankdir:p.db.getDirection(),nodesep:b,ranksep:E,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),N=p.db.getClasses(),B=p.db.getRelations(),R=p.db.getNotes();Fe.info(B),uzt(N,S,a,p),hzt(B,S),lzt(R,S,B.length+1,N);let j;y==="sandbox"&&(j=Cr("#i"+a));const $=Cr(y==="sandbox"?j.nodes()[0].contentDocument.body:"body"),V=$.select(`[id="${a}"]`),Q=$.select("#"+a+" g");if(await C0e(Q,S,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",a),co.insertTitle(V,"classTitleText",(w==null?void 0:w.titleTopMargin)??5,p.db.getDiagramTitle()),YE(S,V,w==null?void 0:w.diagramPadding,w==null?void 0:w.useMaxWidth),!(w!=null&&w.htmlLabels)){const oe=y==="sandbox"?j.nodes()[0].contentDocument:document,ce=oe.querySelectorAll('[id="'+a+'"] .edgeLabel .label');for(const se of ce){const ge=se.getBBox(),ye=oe.createElementNS("http://www.w3.org/2000/svg","rect");ye.setAttribute("rx",0),ye.setAttribute("ry",0),ye.setAttribute("width",ge.width),ye.setAttribute("height",ge.height),se.insertBefore(ye,se.firstChild)}}};function iFe(i){let a;switch(i){case 0:a="aggregation";break;case 1:a="extension";break;case 2:a="composition";break;case 3:a="dependency";break;case 4:a="lollipop";break;default:a="none"}return a}const gzt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:XRe,db:NK,renderer:{setConf:fzt,draw:dzt},styles:nFe,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,NK.clear()}}},Symbol.toStringTag,{value:"Module"}));var dge=function(){var i=function(wt,jt,At,Bt){for(At=At||{},Bt=wt.length;Bt--;At[wt[Bt]]=jt);return At},a=[1,2],f=[1,3],p=[1,5],w=[1,7],y=[2,5],b=[1,15],E=[1,17],S=[1,21],N=[1,22],B=[1,23],R=[1,24],j=[1,37],$=[1,25],V=[1,26],Q=[1,27],oe=[1,28],ce=[1,29],se=[1,32],ge=[1,33],ye=[1,34],ke=[1,35],Ae=[1,36],de=[1,39],ve=[1,40],te=[1,41],xe=[1,42],De=[1,38],he=[1,45],Ie=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],ee=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],rt=[1,4,5,7,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],me=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],gt={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,classDefStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,class:42,CLASSENTITY_IDS:43,STYLECLASS:44,openDirective:45,typeDirective:46,closeDirective:47,":":48,argDirective:49,direction_tb:50,direction_bt:51,direction_rl:52,direction_lr:53,eol:54,";":55,EDGE_STATE:56,STYLE_SEPARATOR:57,left_of:58,right_of:59,open_directive:60,type_directive:61,arg_directive:62,close_directive:63,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"classDef",39:"CLASSDEF_ID",40:"CLASSDEF_STYLEOPTS",41:"DEFAULT",42:"class",43:"CLASSENTITY_IDS",44:"STYLECLASS",48:":",50:"direction_tb",51:"direction_bt",52:"direction_rl",53:"direction_lr",55:";",56:"EDGE_STATE",57:"STYLE_SEPARATOR",58:"left_of",59:"right_of",60:"open_directive",61:"type_directive",62:"arg_directive",63:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[10,2],[10,2],[10,1],[11,3],[11,3],[12,3],[6,3],[6,5],[32,1],[32,1],[32,1],[32,1],[54,1],[54,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1],[45,1],[46,1],[49,1],[47,1]],performAction:function(jt,At,Bt,cn,Nn,Ot,oi){var kt=Ot.length-1;switch(Nn){case 4:return cn.setRootDoc(Ot[kt]),Ot[kt];case 5:this.$=[];break;case 6:Ot[kt]!="nl"&&(Ot[kt-1].push(Ot[kt]),this.$=Ot[kt-1]);break;case 7:case 8:this.$=Ot[kt];break;case 9:this.$="nl";break;case 12:this.$=Ot[kt];break;case 13:const ze=Ot[kt-1];ze.description=cn.trimColon(Ot[kt]),this.$=ze;break;case 14:this.$={stmt:"relation",state1:Ot[kt-2],state2:Ot[kt]};break;case 15:const Xe=cn.trimColon(Ot[kt]);this.$={stmt:"relation",state1:Ot[kt-3],state2:Ot[kt-1],description:Xe};break;case 19:this.$={stmt:"state",id:Ot[kt-3],type:"default",description:"",doc:Ot[kt-1]};break;case 20:var Dt=Ot[kt],vt=Ot[kt-2].trim();if(Ot[kt].match(":")){var Nt=Ot[kt].split(":");Dt=Nt[0],vt=[vt,Nt[1]]}this.$={stmt:"state",id:Dt,type:"default",description:vt};break;case 21:this.$={stmt:"state",id:Ot[kt-3],type:"default",description:Ot[kt-5],doc:Ot[kt-1]};break;case 22:this.$={stmt:"state",id:Ot[kt],type:"fork"};break;case 23:this.$={stmt:"state",id:Ot[kt],type:"join"};break;case 24:this.$={stmt:"state",id:Ot[kt],type:"choice"};break;case 25:this.$={stmt:"state",id:cn.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:Ot[kt-1].trim(),note:{position:Ot[kt-2].trim(),text:Ot[kt].trim()}};break;case 30:this.$=Ot[kt].trim(),cn.setAccTitle(this.$);break;case 31:case 32:this.$=Ot[kt].trim(),cn.setAccDescription(this.$);break;case 33:case 34:this.$={stmt:"classDef",id:Ot[kt-1].trim(),classes:Ot[kt].trim()};break;case 35:this.$={stmt:"applyClass",id:Ot[kt-1].trim(),styleClass:Ot[kt].trim()};break;case 38:cn.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:cn.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:cn.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:cn.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:Ot[kt].trim(),type:"default",description:""};break;case 46:this.$={stmt:"state",id:Ot[kt-2].trim(),classes:[Ot[kt].trim()],type:"default",description:""};break;case 47:this.$={stmt:"state",id:Ot[kt-2].trim(),classes:[Ot[kt].trim()],type:"default",description:""};break;case 50:cn.parseDirective("%%{","open_directive");break;case 51:cn.parseDirective(Ot[kt],"type_directive");break;case 52:Ot[kt]=Ot[kt].trim().replace(/'/g,'"'),cn.parseDirective(Ot[kt],"arg_directive");break;case 53:cn.parseDirective("}%%","close_directive","state");break}},table:[{3:1,4:a,5:f,6:4,7:p,45:6,60:w},{1:[3]},{3:8,4:a,5:f,6:4,7:p,45:6,60:w},{3:9,4:a,5:f,6:4,7:p,45:6,60:w},{3:10,4:a,5:f,6:4,7:p,45:6,60:w},i([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],y,{8:11}),{46:12,61:[1,13]},{61:[2,50]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:b,5:E,6:30,9:14,10:16,11:18,12:19,13:20,16:S,17:N,19:B,22:R,24:j,25:$,26:V,27:Q,28:oe,29:ce,32:31,33:se,35:ge,37:ye,38:ke,42:Ae,45:6,50:de,51:ve,52:te,53:xe,56:De,60:w},{47:43,48:[1,44],63:he},i([48,63],[2,51]),i(Ie,[2,6]),{6:30,10:46,11:18,12:19,13:20,16:S,17:N,19:B,22:R,24:j,25:$,26:V,27:Q,28:oe,29:ce,32:31,33:se,35:ge,37:ye,38:ke,42:Ae,45:6,50:de,51:ve,52:te,53:xe,56:De,60:w},i(Ie,[2,8]),i(Ie,[2,9]),i(Ie,[2,10]),i(Ie,[2,11]),i(Ie,[2,12],{14:[1,47],15:[1,48]}),i(Ie,[2,16]),{18:[1,49]},i(Ie,[2,18],{20:[1,50]}),{23:[1,51]},i(Ie,[2,22]),i(Ie,[2,23]),i(Ie,[2,24]),i(Ie,[2,25]),{30:52,31:[1,53],58:[1,54],59:[1,55]},i(Ie,[2,28]),i(Ie,[2,29]),{34:[1,56]},{36:[1,57]},i(Ie,[2,32]),{39:[1,58],41:[1,59]},{43:[1,60]},i(ee,[2,44],{57:[1,61]}),i(ee,[2,45],{57:[1,62]}),i(Ie,[2,38]),i(Ie,[2,39]),i(Ie,[2,40]),i(Ie,[2,41]),i(rt,[2,36]),{49:63,62:[1,64]},i(rt,[2,53]),i(Ie,[2,7]),i(Ie,[2,13]),{13:65,24:j,56:De},i(Ie,[2,17]),i(me,y,{8:66}),{24:[1,67]},{24:[1,68]},{23:[1,69]},{24:[2,48]},{24:[2,49]},i(Ie,[2,30]),i(Ie,[2,31]),{40:[1,70]},{40:[1,71]},{44:[1,72]},{24:[1,73]},{24:[1,74]},{47:75,63:he},{63:[2,52]},i(Ie,[2,14],{14:[1,76]}),{4:b,5:E,6:30,9:14,10:16,11:18,12:19,13:20,16:S,17:N,19:B,21:[1,77],22:R,24:j,25:$,26:V,27:Q,28:oe,29:ce,32:31,33:se,35:ge,37:ye,38:ke,42:Ae,45:6,50:de,51:ve,52:te,53:xe,56:De,60:w},i(Ie,[2,20],{20:[1,78]}),{31:[1,79]},{24:[1,80]},i(Ie,[2,33]),i(Ie,[2,34]),i(Ie,[2,35]),i(ee,[2,46]),i(ee,[2,47]),i(rt,[2,37]),i(Ie,[2,15]),i(Ie,[2,19]),i(me,y,{8:81}),i(Ie,[2,26]),i(Ie,[2,27]),{4:b,5:E,6:30,9:14,10:16,11:18,12:19,13:20,16:S,17:N,19:B,21:[1,82],22:R,24:j,25:$,26:V,27:Q,28:oe,29:ce,32:31,33:se,35:ge,37:ye,38:ke,42:Ae,45:6,50:de,51:ve,52:te,53:xe,56:De,60:w},i(Ie,[2,21])],defaultActions:{7:[2,50],8:[2,1],9:[2,2],10:[2,3],54:[2,48],55:[2,49],64:[2,52]},parseError:function(jt,At){if(At.recoverable)this.trace(jt);else{var Bt=new Error(jt);throw Bt.hash=At,Bt}},parse:function(jt){var At=this,Bt=[0],cn=[],Nn=[null],Ot=[],oi=this.table,kt="",Dt=0,vt=0,Nt=2,ze=1,Xe=Ot.slice.call(arguments,1),Lt=Object.create(this.lexer),Ge={yy:{}};for(var Bn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Bn)&&(Ge.yy[Bn]=this.yy[Bn]);Lt.setInput(jt,Ge.yy),Ge.yy.lexer=Lt,Ge.yy.parser=this,typeof Lt.yylloc>"u"&&(Lt.yylloc={});var Oe=Lt.yylloc;Ot.push(Oe);var Ri=Lt.options&&Lt.options.ranges;typeof Ge.yy.parseError=="function"?this.parseError=Ge.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function tn(){var Hi;return Hi=cn.pop()||Lt.lex()||ze,typeof Hi!="number"&&(Hi instanceof Array&&(cn=Hi,Hi=cn.pop()),Hi=At.symbols_[Hi]||Hi),Hi}for(var hi,Sr,Zn,Xn,ir={},Hn,tr,ha,Zs;;){if(Sr=Bt[Bt.length-1],this.defaultActions[Sr]?Zn=this.defaultActions[Sr]:((hi===null||typeof hi>"u")&&(hi=tn()),Zn=oi[Sr]&&oi[Sr][hi]),typeof Zn>"u"||!Zn.length||!Zn[0]){var ns="";Zs=[];for(Hn in oi[Sr])this.terminals_[Hn]&&Hn>Nt&&Zs.push("'"+this.terminals_[Hn]+"'");Lt.showPosition?ns="Parse error on line "+(Dt+1)+`: +`+Lt.showPosition()+` +Expecting `+Zs.join(", ")+", got '"+(this.terminals_[hi]||hi)+"'":ns="Parse error on line "+(Dt+1)+": Unexpected "+(hi==ze?"end of input":"'"+(this.terminals_[hi]||hi)+"'"),this.parseError(ns,{text:Lt.match,token:this.terminals_[hi]||hi,line:Lt.yylineno,loc:Oe,expected:Zs})}if(Zn[0]instanceof Array&&Zn.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Sr+", token: "+hi);switch(Zn[0]){case 1:Bt.push(hi),Nn.push(Lt.yytext),Ot.push(Lt.yylloc),Bt.push(Zn[1]),hi=null,vt=Lt.yyleng,kt=Lt.yytext,Dt=Lt.yylineno,Oe=Lt.yylloc;break;case 2:if(tr=this.productions_[Zn[1]][1],ir.$=Nn[Nn.length-tr],ir._$={first_line:Ot[Ot.length-(tr||1)].first_line,last_line:Ot[Ot.length-1].last_line,first_column:Ot[Ot.length-(tr||1)].first_column,last_column:Ot[Ot.length-1].last_column},Ri&&(ir._$.range=[Ot[Ot.length-(tr||1)].range[0],Ot[Ot.length-1].range[1]]),Xn=this.performAction.apply(ir,[kt,vt,Dt,Ge.yy,Zn[1],Nn,Ot].concat(Xe)),typeof Xn<"u")return Xn;tr&&(Bt=Bt.slice(0,-1*tr*2),Nn=Nn.slice(0,-1*tr),Ot=Ot.slice(0,-1*tr)),Bt.push(this.productions_[Zn[1]][0]),Nn.push(ir.$),Ot.push(ir._$),ha=oi[Bt[Bt.length-2]][Bt[Bt.length-1]],Bt.push(ha);break;case 3:return!0}}return!0}},pe=function(){var wt={EOF:1,parseError:function(At,Bt){if(this.yy.parser)this.yy.parser.parseError(At,Bt);else throw new Error(At)},setInput:function(jt,At){return this.yy=At||this.yy||{},this._input=jt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var jt=this._input[0];this.yytext+=jt,this.yyleng++,this.offset++,this.match+=jt,this.matched+=jt;var At=jt.match(/(?:\r\n?|\n).*/g);return At?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),jt},unput:function(jt){var At=jt.length,Bt=jt.split(/(?:\r\n?|\n)/g);this._input=jt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-At),this.offset-=At;var cn=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Bt.length-1&&(this.yylineno-=Bt.length-1);var Nn=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Bt?(Bt.length===cn.length?this.yylloc.first_column:0)+cn[cn.length-Bt.length].length-Bt[0].length:this.yylloc.first_column-At},this.options.ranges&&(this.yylloc.range=[Nn[0],Nn[0]+this.yyleng-At]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(jt){this.unput(this.match.slice(jt))},pastInput:function(){var jt=this.matched.substr(0,this.matched.length-this.match.length);return(jt.length>20?"...":"")+jt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var jt=this.match;return jt.length<20&&(jt+=this._input.substr(0,20-jt.length)),(jt.substr(0,20)+(jt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var jt=this.pastInput(),At=new Array(jt.length+1).join("-");return jt+this.upcomingInput()+` +`+At+"^"},test_match:function(jt,At){var Bt,cn,Nn;if(this.options.backtrack_lexer&&(Nn={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Nn.yylloc.range=this.yylloc.range.slice(0))),cn=jt[0].match(/(?:\r\n?|\n).*/g),cn&&(this.yylineno+=cn.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:cn?cn[cn.length-1].length-cn[cn.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+jt[0].length},this.yytext+=jt[0],this.match+=jt[0],this.matches=jt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(jt[0].length),this.matched+=jt[0],Bt=this.performAction.call(this,this.yy,this,At,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Bt)return Bt;if(this._backtrack){for(var Ot in Nn)this[Ot]=Nn[Ot];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var jt,At,Bt,cn;this._more||(this.yytext="",this.match="");for(var Nn=this._currentRules(),Ot=0;OtAt[0].length)){if(At=Bt,cn=Ot,this.options.backtrack_lexer){if(jt=this.test_match(Bt,Nn[Ot]),jt!==!1)return jt;if(this._backtrack){At=!1;continue}else return!1}else if(!this.options.flex)break}return At?(jt=this.test_match(At,Nn[cn]),jt!==!1?jt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var At=this.next();return At||this.lex()},begin:function(At){this.conditionStack.push(At)},popState:function(){var At=this.conditionStack.length-1;return At>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(At){return At=this.conditionStack.length-1-Math.abs(At||0),At>=0?this.conditionStack[At]:"INITIAL"},pushState:function(At){this.begin(At)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(At,Bt,cn,Nn){switch(cn){case 0:return 41;case 1:return 50;case 2:return 51;case 3:return 52;case 4:return 53;case 5:return this.begin("open_directive"),60;case 6:return this.begin("type_directive"),61;case 7:return this.popState(),this.begin("arg_directive"),48;case 8:return this.popState(),this.popState(),63;case 9:return 62;case 10:break;case 11:break;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:break;case 17:return this.pushState("SCALE"),17;case 18:return 18;case 19:this.popState();break;case 20:return this.begin("acc_title"),33;case 21:return this.popState(),"acc_title_value";case 22:return this.begin("acc_descr"),35;case 23:return this.popState(),"acc_descr_value";case 24:this.begin("acc_descr_multiline");break;case 25:this.popState();break;case 26:return"acc_descr_multiline_value";case 27:return this.pushState("CLASSDEF"),38;case 28:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 29:return this.popState(),this.pushState("CLASSDEFID"),39;case 30:return this.popState(),40;case 31:return this.pushState("CLASS"),42;case 32:return this.popState(),this.pushState("CLASS_STYLE"),43;case 33:return this.popState(),44;case 34:return this.pushState("SCALE"),17;case 35:return 18;case 36:this.popState();break;case 37:this.pushState("STATE");break;case 38:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-8).trim(),25;case 39:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-8).trim(),26;case 40:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-10).trim(),27;case 41:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-8).trim(),25;case 42:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-8).trim(),26;case 43:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-10).trim(),27;case 44:return 50;case 45:return 51;case 46:return 52;case 47:return 53;case 48:this.pushState("STATE_STRING");break;case 49:return this.pushState("STATE_ID"),"AS";case 50:return this.popState(),"ID";case 51:this.popState();break;case 52:return"STATE_DESCR";case 53:return 19;case 54:this.popState();break;case 55:return this.popState(),this.pushState("struct"),20;case 56:break;case 57:return this.popState(),21;case 58:break;case 59:return this.begin("NOTE"),29;case 60:return this.popState(),this.pushState("NOTE_ID"),58;case 61:return this.popState(),this.pushState("NOTE_ID"),59;case 62:this.popState(),this.pushState("FLOATING_NOTE");break;case 63:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 64:break;case 65:return"NOTE_TEXT";case 66:return this.popState(),"ID";case 67:return this.popState(),this.pushState("NOTE_TEXT"),24;case 68:return this.popState(),Bt.yytext=Bt.yytext.substr(2).trim(),31;case 69:return this.popState(),Bt.yytext=Bt.yytext.slice(0,-8).trim(),31;case 70:return 7;case 71:return 7;case 72:return 16;case 73:return 56;case 74:return 24;case 75:return Bt.yytext=Bt.yytext.trim(),14;case 76:return 15;case 77:return 28;case 78:return 57;case 79:return 5;case 80:return"INVALID"}},rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[14,15],inclusive:!1},close_directive:{rules:[14,15],inclusive:!1},arg_directive:{rules:[8,9,14,15],inclusive:!1},type_directive:{rules:[7,8,14,15],inclusive:!1},open_directive:{rules:[6,14,15],inclusive:!1},struct:{rules:[14,15,27,31,37,44,45,46,47,56,57,58,59,73,74,75,76,77],inclusive:!1},FLOATING_NOTE_ID:{rules:[66],inclusive:!1},FLOATING_NOTE:{rules:[63,64,65],inclusive:!1},NOTE_TEXT:{rules:[68,69],inclusive:!1},NOTE_ID:{rules:[67],inclusive:!1},NOTE:{rules:[60,61,62],inclusive:!1},CLASS_STYLE:{rules:[33],inclusive:!1},CLASS:{rules:[32],inclusive:!1},CLASSDEFID:{rules:[30],inclusive:!1},CLASSDEF:{rules:[28,29],inclusive:!1},acc_descr_multiline:{rules:[25,26],inclusive:!1},acc_descr:{rules:[23],inclusive:!1},acc_title:{rules:[21],inclusive:!1},SCALE:{rules:[18,19,35,36],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[50],inclusive:!1},STATE_STRING:{rules:[51,52],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[14,15,38,39,40,41,42,43,48,49,53,54,55],inclusive:!1},ID:{rules:[14,15],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,10,11,12,13,15,16,17,20,22,24,27,31,34,37,55,59,70,71,72,73,74,75,76,78,79,80],inclusive:!0}}};return wt}();gt.lexer=pe;function Et(){this.yy={}}return Et.prototype=gt,gt.Parser=Et,new Et}();dge.parser=dge;const sFe=dge,pzt="LR",bzt="TB",RK="state",gge="relation",vzt="classDef",wzt="applyClass",NP="default",aFe="divider",pge="[*]",oFe="start",cFe=pge,uFe="end",lFe="color",hFe="fill",mzt="bgFill",yzt=",";function fFe(){return{}}let dFe=pzt,FK=[],PP=fFe();const gFe=()=>({relations:[],states:{},documents:{}});let jK={root:gFe()},x0=jK.root,BP=0,pFe=0;const kzt={LINE:0,DOTTED_LINE:1},xzt={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},$K=i=>JSON.parse(JSON.stringify(i)),Ezt=function(i,a,f){rd.parseDirective(this,i,a,f)},Tzt=i=>{Fe.info("Setting root doc",i),FK=i},_zt=()=>FK,HK=(i,a,f)=>{if(a.stmt===gge)HK(i,a.state1,!0),HK(i,a.state2,!1);else if(a.stmt===RK&&(a.id==="[*]"?(a.id=f?i.id+"_start":i.id+"_end",a.start=f):a.id=a.id.trim()),a.doc){const p=[];let w=[],y;for(y=0;y0&&w.length>0){const b={stmt:RK,id:IIe(),type:"divider",doc:$K(w)};p.push($K(b)),a.doc=p}a.doc.forEach(b=>HK(a,b,!0))}},Czt=()=>(HK({id:"root"},{id:"root",doc:FK},!0),{id:"root",doc:FK}),Szt=i=>{let a;i.doc?a=i.doc:a=i,Fe.info(a),bFe(!0),Fe.info("Extract",a),a.forEach(f=>{switch(f.stmt){case RK:p9(f.id.trim(),f.type,f.doc,f.description,f.note,f.classes,f.styles,f.textStyles);break;case gge:vFe(f.state1,f.state2,f.description);break;case vzt:wFe(f.id.trim(),f.classes);break;case wzt:mge(f.id.trim(),f.styleClass);break}})},p9=function(i,a=NP,f=null,p=null,w=null,y=null,b=null,E=null){const S=i==null?void 0:i.trim();x0.states[S]===void 0?(Fe.info("Adding state ",S,p),x0.states[S]={id:S,descriptions:[],type:a,doc:f,note:w,classes:[],styles:[],textStyles:[]}):(x0.states[S].doc||(x0.states[S].doc=f),x0.states[S].type||(x0.states[S].type=a)),p&&(Fe.info("Setting state description",S,p),typeof p=="string"&&wge(S,p.trim()),typeof p=="object"&&p.forEach(N=>wge(S,N.trim()))),w&&(x0.states[S].note=w,x0.states[S].note.text=Wa.sanitizeText(x0.states[S].note.text,Tt())),y&&(Fe.info("Setting state classes",S,y),(typeof y=="string"?[y]:y).forEach(B=>mge(S,B.trim()))),b&&(Fe.info("Setting state styles",S,b),(typeof b=="string"?[b]:b).forEach(B=>Rzt(S,B.trim()))),E&&(Fe.info("Setting state styles",S,b),(typeof E=="string"?[E]:E).forEach(B=>Fzt(S,B.trim())))},bFe=function(i){jK={root:gFe()},x0=jK.root,BP=0,PP=fFe(),i||rp()},RP=function(i){return x0.states[i]},Azt=function(){return x0.states},Lzt=function(){Fe.info("Documents = ",jK)},Mzt=function(){return x0.relations};function bge(i=""){let a=i;return i===pge&&(BP++,a=`${oFe}${BP}`),a}function vge(i="",a=NP){return i===pge?oFe:a}function Dzt(i=""){let a=i;return i===cFe&&(BP++,a=`${uFe}${BP}`),a}function Izt(i="",a=NP){return i===cFe?uFe:a}function Ozt(i,a,f){let p=bge(i.id.trim()),w=vge(i.id.trim(),i.type),y=bge(a.id.trim()),b=vge(a.id.trim(),a.type);p9(p,w,i.doc,i.description,i.note,i.classes,i.styles,i.textStyles),p9(y,b,a.doc,a.description,a.note,a.classes,a.styles,a.textStyles),x0.relations.push({id1:p,id2:y,relationTitle:Wa.sanitizeText(f,Tt())})}const vFe=function(i,a,f){if(typeof i=="object")Ozt(i,a,f);else{const p=bge(i.trim()),w=vge(i),y=Dzt(a.trim()),b=Izt(a);p9(p,w),p9(y,b),x0.relations.push({id1:p,id2:y,title:Wa.sanitizeText(f,Tt())})}},wge=function(i,a){const f=x0.states[i],p=a.startsWith(":")?a.replace(":","").trim():a;f.descriptions.push(Wa.sanitizeText(p,Tt()))},Nzt=function(i){return i.substring(0,1)===":"?i.substr(2).trim():i.trim()},Pzt=()=>(pFe++,"divider-id-"+pFe),wFe=function(i,a=""){PP[i]===void 0&&(PP[i]={id:i,styles:[],textStyles:[]});const f=PP[i];a!=null&&a.split(yzt).forEach(p=>{const w=p.replace(/([^;]*);/,"$1").trim();if(p.match(lFe)){const b=w.replace(hFe,mzt).replace(lFe,hFe);f.textStyles.push(b)}f.styles.push(w)})},Bzt=function(){return PP},mge=function(i,a){i.split(",").forEach(function(f){let p=RP(f);if(p===void 0){const w=f.trim();p9(w),p=RP(w)}p.classes.push(a)})},Rzt=function(i,a){const f=RP(i);f!==void 0&&f.textStyles.push(a)},Fzt=function(i,a){const f=RP(i);f!==void 0&&f.textStyles.push(a)},D5={parseDirective:Ezt,getConfig:()=>Tt().state,addState:p9,clear:bFe,getState:RP,getStates:Azt,getRelations:Mzt,getClasses:Bzt,getDirection:()=>dFe,addRelation:vFe,getDividerId:Pzt,setDirection:i=>{dFe=i},cleanupLabel:Nzt,lineType:kzt,relationType:xzt,logDocuments:Lzt,getRootDoc:_zt,setRootDoc:Tzt,getRootDocV2:Czt,extract:Szt,trimColon:i=>i&&i[0]===":"?i.substr(1).trim():i.trim(),getAccTitle:L2,setAccTitle:ip,getAccDescription:D2,setAccDescription:M2,addStyleClass:wFe,setCssClass:mge,addDescription:wge,setDiagramTitle:Uw,getDiagramTitle:Ww},mFe=i=>` +defs #statediagram-barbEnd { + fill: ${i.transitionColor}; + stroke: ${i.transitionColor}; + } +g.stateGroup text { + fill: ${i.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${i.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${i.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; +} + +g.stateGroup line { + stroke: ${i.lineColor}; + stroke-width: 1; +} + +.transition { + stroke: ${i.transitionColor}; + stroke-width: 1; + fill: none; +} + +.stateGroup .composit { + fill: ${i.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${i.noteBorderColor}; + fill: ${i.noteBkgColor}; + + text { + fill: ${i.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${i.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${i.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel .label text { + fill: ${i.transitionLabelColor||i.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${i.transitionLabelColor||i.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${i.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${i.specialStateColor}; + stroke: ${i.specialStateColor}; +} + +.node .fork-join { + fill: ${i.specialStateColor}; + stroke: ${i.specialStateColor}; +} + +.node circle.state-end { + fill: ${i.innerEndBackground}; + stroke: ${i.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${i.compositeBackground||i.background}; + // stroke: ${i.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${i.stateBkg||i.mainBkg}; + stroke: ${i.stateBorder||i.nodeBorder}; + stroke-width: 1px; +} +.node polygon { + fill: ${i.mainBkg}; + stroke: ${i.stateBorder||i.nodeBorder};; + stroke-width: 1px; +} +#statediagram-barbEnd { + fill: ${i.lineColor}; +} + +.statediagram-cluster rect { + fill: ${i.compositeTitleBackground}; + stroke: ${i.stateBorder||i.nodeBorder}; + stroke-width: 1px; +} + +.cluster-label, .nodeLabel { + color: ${i.stateLabelColor}; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${i.stateBorder||i.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${i.compositeBackground||i.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${i.altBackground?i.altBackground:"#efefef"}; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: ${i.altBackground?i.altBackground:"#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${i.noteBkgColor}; + stroke: ${i.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${i.noteBkgColor}; + stroke: ${i.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${i.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${i.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${i.noteTextColor}; +} + +#dependencyStart, #dependencyEnd { + fill: ${i.lineColor}; + stroke: ${i.lineColor}; + stroke-width: 1; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; +} +`,yge={},jzt=(i,a)=>{yge[i]=a},$zt=i=>yge[i],yFe=()=>Object.keys(yge),Hzt={get:$zt,set:jzt,keys:yFe,size:()=>yFe().length},zzt=i=>i.append("circle").attr("class","start-state").attr("r",Tt().state.sizeUnit).attr("cx",Tt().state.padding+Tt().state.sizeUnit).attr("cy",Tt().state.padding+Tt().state.sizeUnit),Gzt=i=>i.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",Tt().state.textHeight).attr("class","divider").attr("x2",Tt().state.textHeight*2).attr("y1",0).attr("y2",0),qzt=(i,a)=>{const f=i.append("text").attr("x",2*Tt().state.padding).attr("y",Tt().state.textHeight+2*Tt().state.padding).attr("font-size",Tt().state.fontSize).attr("class","state-title").text(a.id),p=f.node().getBBox();return i.insert("rect",":first-child").attr("x",Tt().state.padding).attr("y",Tt().state.padding).attr("width",p.width+2*Tt().state.padding).attr("height",p.height+2*Tt().state.padding).attr("rx",Tt().state.radius),f},Vzt=(i,a)=>{const f=function(j,$,V){const Q=j.append("tspan").attr("x",2*Tt().state.padding).text($);V||Q.attr("dy",Tt().state.textHeight)},w=i.append("text").attr("x",2*Tt().state.padding).attr("y",Tt().state.textHeight+1.3*Tt().state.padding).attr("font-size",Tt().state.fontSize).attr("class","state-title").text(a.descriptions[0]).node().getBBox(),y=w.height,b=i.append("text").attr("x",Tt().state.padding).attr("y",y+Tt().state.padding*.4+Tt().state.dividerMargin+Tt().state.textHeight).attr("class","state-description");let E=!0,S=!0;a.descriptions.forEach(function(j){E||(f(b,j,S),S=!1),E=!1});const N=i.append("line").attr("x1",Tt().state.padding).attr("y1",Tt().state.padding+y+Tt().state.dividerMargin/2).attr("y2",Tt().state.padding+y+Tt().state.dividerMargin/2).attr("class","descr-divider"),B=b.node().getBBox(),R=Math.max(B.width,w.width);return N.attr("x2",R+3*Tt().state.padding),i.insert("rect",":first-child").attr("x",Tt().state.padding).attr("y",Tt().state.padding).attr("width",R+2*Tt().state.padding).attr("height",B.height+y+2*Tt().state.padding).attr("rx",Tt().state.radius),i},Uzt=(i,a,f)=>{const p=Tt().state.padding,w=2*Tt().state.padding,y=i.node().getBBox(),b=y.width,E=y.x,S=i.append("text").attr("x",0).attr("y",Tt().state.titleShift).attr("font-size",Tt().state.fontSize).attr("class","state-title").text(a.id),B=S.node().getBBox().width+w;let R=Math.max(B,b);R===b&&(R=R+w);let j;const $=i.node().getBBox();a.doc,j=E-p,B>b&&(j=(b-R)/2+p),Math.abs(E-$.x)b&&(j=E-(B-b)/2);const V=1-Tt().state.textHeight;return i.insert("rect",":first-child").attr("x",j).attr("y",V).attr("class",f?"alt-composit":"composit").attr("width",R).attr("height",$.height+Tt().state.textHeight+Tt().state.titleShift+1).attr("rx","0"),S.attr("x",j+p),B<=b&&S.attr("x",E+(R-w)/2-B/2+p),i.insert("rect",":first-child").attr("x",j).attr("y",Tt().state.titleShift-Tt().state.textHeight-Tt().state.padding).attr("width",R).attr("height",Tt().state.textHeight*3).attr("rx",Tt().state.radius),i.insert("rect",":first-child").attr("x",j).attr("y",Tt().state.titleShift-Tt().state.textHeight-Tt().state.padding).attr("width",R).attr("height",$.height+3+2*Tt().state.textHeight).attr("rx",Tt().state.radius),i},Wzt=i=>(i.append("circle").attr("class","end-state-outer").attr("r",Tt().state.sizeUnit+Tt().state.miniPadding).attr("cx",Tt().state.padding+Tt().state.sizeUnit+Tt().state.miniPadding).attr("cy",Tt().state.padding+Tt().state.sizeUnit+Tt().state.miniPadding),i.append("circle").attr("class","end-state-inner").attr("r",Tt().state.sizeUnit).attr("cx",Tt().state.padding+Tt().state.sizeUnit+2).attr("cy",Tt().state.padding+Tt().state.sizeUnit+2)),Kzt=(i,a)=>{let f=Tt().state.forkWidth,p=Tt().state.forkHeight;if(a.parentId){let w=f;f=p,p=w}return i.append("rect").style("stroke","black").style("fill","black").attr("width",f).attr("height",p).attr("x",Tt().state.padding).attr("y",Tt().state.padding)},Yzt=(i,a,f,p)=>{let w=0;const y=p.append("text");y.style("text-anchor","start"),y.attr("class","noteText");let b=i.replace(/\r\n/g,"
");b=b.replace(/\n/g,"
");const E=b.split(Wa.lineBreakRegex);let S=1.25*Tt().state.noteMargin;for(const N of E){const B=N.trim();if(B.length>0){const R=y.append("tspan");if(R.text(B),S===0){const j=R.node().getBBox();S+=j.height}w+=S,R.attr("x",a+Tt().state.noteMargin),R.attr("y",f+w+1.25*Tt().state.noteMargin)}}return{textWidth:y.node().getBBox().width,textHeight:w}},Xzt=(i,a)=>{a.attr("class","state-note");const f=a.append("rect").attr("x",0).attr("y",Tt().state.padding),p=a.append("g"),{textWidth:w,textHeight:y}=Yzt(i,0,0,p);return f.attr("height",y+2*Tt().state.noteMargin),f.attr("width",w+Tt().state.noteMargin*2),f},kFe=function(i,a){const f=a.id,p={id:f,label:a.id,width:0,height:0},w=i.append("g").attr("id",f).attr("class","stateGroup");a.type==="start"&&zzt(w),a.type==="end"&&Wzt(w),(a.type==="fork"||a.type==="join")&&Kzt(w,a),a.type==="note"&&Xzt(a.note.text,w),a.type==="divider"&&Gzt(w),a.type==="default"&&a.descriptions.length===0&&qzt(w,a),a.type==="default"&&a.descriptions.length>0&&Vzt(w,a);const y=w.node().getBBox();return p.width=y.width+2*Tt().state.padding,p.height=y.height+2*Tt().state.padding,Hzt.set(f,p),p};let xFe=0;const Qzt=function(i,a,f){const p=function(S){switch(S){case D5.relationType.AGGREGATION:return"aggregation";case D5.relationType.EXTENSION:return"extension";case D5.relationType.COMPOSITION:return"composition";case D5.relationType.DEPENDENCY:return"dependency"}};a.points=a.points.filter(S=>!Number.isNaN(S.y));const w=a.points,y=WE().x(function(S){return S.x}).y(function(S){return S.y}).curve(SA),b=i.append("path").attr("d",y(w)).attr("id","edge"+xFe).attr("class","transition");let E="";if(Tt().state.arrowMarkerAbsolute&&(E=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,E=E.replace(/\(/g,"\\("),E=E.replace(/\)/g,"\\)")),b.attr("marker-end","url("+E+"#"+p(D5.relationType.DEPENDENCY)+"End)"),f.title!==void 0){const S=i.append("g").attr("class","stateLabel"),{x:N,y:B}=co.calcLabelPosition(a.points),R=Wa.getRows(f.title);let j=0;const $=[];let V=0,Q=0;for(let se=0;se<=R.length;se++){const ge=S.append("text").attr("text-anchor","middle").text(R[se]).attr("x",N).attr("y",B+j),ye=ge.node().getBBox();V=Math.max(V,ye.width),Q=Math.min(Q,ye.x),Fe.info(ye.x,N,B+j),j===0&&(j=ge.node().getBBox().height,Fe.info("Title height",j,B)),$.push(ge)}let oe=j*R.length;if(R.length>1){const se=(R.length-1)*j*.5;$.forEach((ge,ye)=>ge.attr("y",B+ye*j-se)),oe=j*R.length}const ce=S.node().getBBox();S.insert("rect",":first-child").attr("class","box").attr("x",N-V/2-Tt().state.padding/2).attr("y",B-oe/2-Tt().state.padding/2-3.5).attr("width",V+Tt().state.padding).attr("height",oe+Tt().state.padding),Fe.info(ce)}xFe++};let B2;const kge={},Zzt=function(){},Jzt=function(i){i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},eGt=function(i,a,f,p){B2=Tt().state;const w=Tt().securityLevel;let y;w==="sandbox"&&(y=Cr("#i"+a));const b=Cr(w==="sandbox"?y.nodes()[0].contentDocument.body:"body"),E=w==="sandbox"?y.nodes()[0].contentDocument:document;Fe.debug("Rendering diagram "+i);const S=b.select(`[id='${a}']`);Jzt(S),new zf({multigraph:!0,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel(function(){return{}});const B=p.db.getRootDoc();EFe(B,S,void 0,!1,b,E,p);const R=B2.padding,j=S.node().getBBox(),$=j.width+R*2,V=j.height+R*2,Q=$*1.75;Vw(S,V,Q,B2.useMaxWidth),S.attr("viewBox",`${j.x-B2.padding} ${j.y-B2.padding} `+$+" "+V)},tGt=i=>i?i.length*B2.fontSizeFactor:1,EFe=(i,a,f,p,w,y,b)=>{const E=new zf({compound:!0,multigraph:!0});let S,N=!0;for(S=0;S{const ye=ge.parentElement;let ke=0,Ae=0;ye&&(ye.parentElement&&(ke=ye.parentElement.getBBox().width),Ae=parseInt(ye.getAttribute("data-x-shift"),10),Number.isNaN(Ae)&&(Ae=0)),ge.setAttribute("x1",0-Ae+8),ge.setAttribute("x2",ke-Ae-8)})):Fe.debug("No Node "+ce+": "+JSON.stringify(E.node(ce)))});let Q=V.getBBox();E.edges().forEach(function(ce){ce!==void 0&&E.edge(ce)!==void 0&&(Fe.debug("Edge "+ce.v+" -> "+ce.w+": "+JSON.stringify(E.edge(ce))),Qzt(a,E.edge(ce),E.edge(ce).relation))}),Q=V.getBBox();const oe={id:f||"root",label:f||"root",width:0,height:0};return oe.width=Q.width+2*B2.padding,oe.height=Q.height+2*B2.padding,Fe.debug("Doc rendered",oe,E),oe},nGt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:sFe,db:D5,renderer:{setConf:Zzt,draw:eGt},styles:mFe,init:i=>{i.state||(i.state={}),i.state.arrowMarkerAbsolute=i.arrowMarkerAbsolute,D5.clear()}}},Symbol.toStringTag,{value:"Module"})),zK="rect",xge="rectWithTitle",rGt="start",iGt="end",sGt="divider",aGt="roundedWithTitle",oGt="note",cGt="noteGroup",fL="statediagram",uGt=`${fL}-state`,TFe="transition",lGt="note",hGt=`${TFe} note-edge`,fGt=`${fL}-${lGt}`,dGt=`${fL}-cluster`,gGt=`${fL}-cluster-alt`,_Fe="parent",CFe="note",pGt="state",Ege="----",bGt=`${Ege}${CFe}`,SFe=`${Ege}${_Fe}`,AFe="fill:none",LFe="fill: #333",MFe="c",DFe="text",IFe="normal";let GK={},ux=0;const vGt=function(i){const a=Object.keys(i);for(const f of a)i[f]},wGt=function(i,a){Fe.trace("Extracting classes"),a.db.clear();try{return a.parser.parse(i),a.db.extract(a.db.getRootDocV2()),a.db.getClasses()}catch(f){return f}};function mGt(i){return i==null?"":i.classes?i.classes.join(" "):""}function Tge(i="",a=0,f="",p=Ege){const w=f!==null&&f.length>0?`${p}${f}`:"";return`${pGt}-${i}${w}-${a}`}const FP=(i,a,f,p,w,y)=>{const b=f.id,E=mGt(p[b]);if(b!=="root"){let S=zK;f.start===!0&&(S=rGt),f.start===!1&&(S=iGt),f.type!==NP&&(S=f.type),GK[b]||(GK[b]={id:b,shape:S,description:Wa.sanitizeText(b,Tt()),classes:`${E} ${uGt}`});const N=GK[b];f.description&&(Array.isArray(N.description)?(N.shape=xge,N.description.push(f.description)):N.description.length>0?(N.shape=xge,N.description===b?N.description=[f.description]:N.description=[N.description,f.description]):(N.shape=zK,N.description=f.description),N.description=Wa.sanitizeTextOrArray(N.description,Tt())),N.description.length===1&&N.shape===xge&&(N.shape=zK),!N.type&&f.doc&&(Fe.info("Setting cluster for ",b,_ge(f)),N.type="group",N.dir=_ge(f),N.shape=f.type===aFe?sGt:aGt,N.classes=N.classes+" "+dGt+" "+(y?gGt:""));const B={labelStyle:"",shape:N.shape,labelText:N.description,classes:N.classes,style:"",id:b,dir:N.dir,domId:Tge(b,ux),type:N.type,padding:15};if(B.centerLabel=!0,f.note){const R={labelStyle:"",shape:oGt,labelText:f.note.text,classes:fGt,style:"",id:b+bGt+"-"+ux,domId:Tge(b,ux,CFe),type:N.type,padding:15},j={labelStyle:"",shape:cGt,labelText:f.note.text,classes:N.classes,style:"",id:b+SFe,domId:Tge(b,ux,_Fe),type:"group",padding:0};ux++;const $=b+SFe;i.setNode($,j),i.setNode(R.id,R),i.setNode(b,B),i.setParent(b,$),i.setParent(R.id,$);let V=b,Q=R.id;f.note.position==="left of"&&(V=R.id,Q=b),i.setEdge(V,Q,{arrowhead:"none",arrowType:"",style:AFe,labelStyle:"",classes:hGt,arrowheadStyle:LFe,labelpos:MFe,labelType:DFe,thickness:IFe})}else i.setNode(b,B)}a&&a.id!=="root"&&(Fe.trace("Setting node ",b," to be child of its parent ",a.id),i.setParent(b,a.id)),f.doc&&(Fe.trace("Adding nodes children "),yGt(i,f,f.doc,p,w,!y))},yGt=(i,a,f,p,w,y)=>{Fe.trace("items",f),f.forEach(b=>{switch(b.stmt){case RK:FP(i,a,b,p,w,y);break;case NP:FP(i,a,b,p,w,y);break;case gge:{FP(i,a,b.state1,p,w,y),FP(i,a,b.state2,p,w,y);const E={id:"edge"+ux,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:AFe,labelStyle:"",label:Wa.sanitizeText(b.description,Tt()),arrowheadStyle:LFe,labelpos:MFe,labelType:DFe,thickness:IFe,classes:TFe};i.setEdge(b.state1.id,b.state2.id,E,ux),ux++}break}})},_ge=(i,a=bzt)=>{let f=a;if(i.doc)for(let p=0;p{i.state||(i.state={}),i.state.arrowMarkerAbsolute=i.arrowMarkerAbsolute,D5.clear()}}},Symbol.toStringTag,{value:"Module"}));var Cge=function(){var i=function(Q,oe,ce,se){for(ce=ce||{},se=Q.length;se--;ce[Q[se]]=oe);return ce},a=[1,2],f=[1,5],p=[6,9,11,17,18,20,22,23,24,26],w=[1,15],y=[1,16],b=[1,17],E=[1,18],S=[1,19],N=[1,20],B=[1,24],R=[4,6,9,11,17,18,20,22,23,24,26],j={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,acc_title:18,acc_title_value:19,acc_descr:20,acc_descr_value:21,acc_descr_multiline_value:22,section:23,taskName:24,taskData:25,open_directive:26,type_directive:27,arg_directive:28,close_directive:29,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"acc_title",19:"acc_title_value",20:"acc_descr",21:"acc_descr_value",22:"acc_descr_multiline_value",23:"section",24:"taskName",25:"taskData",26:"open_directive",27:"type_directive",28:"arg_directive",29:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(oe,ce,se,ge,ye,ke,Ae){var de=ke.length-1;switch(ye){case 1:return ke[de-1];case 3:this.$=[];break;case 4:ke[de-1].push(ke[de]),this.$=ke[de-1];break;case 5:case 6:this.$=ke[de];break;case 7:case 8:this.$=[];break;case 11:ge.setDiagramTitle(ke[de].substr(6)),this.$=ke[de].substr(6);break;case 12:this.$=ke[de].trim(),ge.setAccTitle(this.$);break;case 13:case 14:this.$=ke[de].trim(),ge.setAccDescription(this.$);break;case 15:ge.addSection(ke[de].substr(8)),this.$=ke[de].substr(8);break;case 16:ge.addTask(ke[de-1],ke[de]),this.$="task";break;case 18:ge.parseDirective("%%{","open_directive");break;case 19:ge.parseDirective(ke[de],"type_directive");break;case 20:ke[de]=ke[de].trim().replace(/'/g,'"'),ge.parseDirective(ke[de],"arg_directive");break;case 21:ge.parseDirective("}%%","close_directive","journey");break}},table:[{3:1,4:a,7:3,12:4,26:f},{1:[3]},i(p,[2,3],{5:6}),{3:7,4:a,7:3,12:4,26:f},{13:8,27:[1,9]},{27:[2,18]},{6:[1,10],7:21,8:11,9:[1,12],10:13,11:[1,14],12:4,17:w,18:y,20:b,22:E,23:S,24:N,26:f},{1:[2,2]},{14:22,15:[1,23],29:B},i([15,29],[2,19]),i(p,[2,8],{1:[2,1]}),i(p,[2,4]),{7:21,10:25,12:4,17:w,18:y,20:b,22:E,23:S,24:N,26:f},i(p,[2,6]),i(p,[2,7]),i(p,[2,11]),{19:[1,26]},{21:[1,27]},i(p,[2,14]),i(p,[2,15]),{25:[1,28]},i(p,[2,17]),{11:[1,29]},{16:30,28:[1,31]},{11:[2,21]},i(p,[2,5]),i(p,[2,12]),i(p,[2,13]),i(p,[2,16]),i(R,[2,9]),{14:32,29:B},{29:[2,20]},{11:[1,33]},i(R,[2,10])],defaultActions:{5:[2,18],7:[2,2],24:[2,21],31:[2,20]},parseError:function(oe,ce){if(ce.recoverable)this.trace(oe);else{var se=new Error(oe);throw se.hash=ce,se}},parse:function(oe){var ce=this,se=[0],ge=[],ye=[null],ke=[],Ae=this.table,de="",ve=0,te=0,xe=2,De=1,he=ke.slice.call(arguments,1),Ie=Object.create(this.lexer),ee={yy:{}};for(var rt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,rt)&&(ee.yy[rt]=this.yy[rt]);Ie.setInput(oe,ee.yy),ee.yy.lexer=Ie,ee.yy.parser=this,typeof Ie.yylloc>"u"&&(Ie.yylloc={});var me=Ie.yylloc;ke.push(me);var gt=Ie.options&&Ie.options.ranges;typeof ee.yy.parseError=="function"?this.parseError=ee.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pe(){var Dt;return Dt=ge.pop()||Ie.lex()||De,typeof Dt!="number"&&(Dt instanceof Array&&(ge=Dt,Dt=ge.pop()),Dt=ce.symbols_[Dt]||Dt),Dt}for(var Et,wt,jt,At,Bt={},cn,Nn,Ot,oi;;){if(wt=se[se.length-1],this.defaultActions[wt]?jt=this.defaultActions[wt]:((Et===null||typeof Et>"u")&&(Et=pe()),jt=Ae[wt]&&Ae[wt][Et]),typeof jt>"u"||!jt.length||!jt[0]){var kt="";oi=[];for(cn in Ae[wt])this.terminals_[cn]&&cn>xe&&oi.push("'"+this.terminals_[cn]+"'");Ie.showPosition?kt="Parse error on line "+(ve+1)+`: +`+Ie.showPosition()+` +Expecting `+oi.join(", ")+", got '"+(this.terminals_[Et]||Et)+"'":kt="Parse error on line "+(ve+1)+": Unexpected "+(Et==De?"end of input":"'"+(this.terminals_[Et]||Et)+"'"),this.parseError(kt,{text:Ie.match,token:this.terminals_[Et]||Et,line:Ie.yylineno,loc:me,expected:oi})}if(jt[0]instanceof Array&&jt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+wt+", token: "+Et);switch(jt[0]){case 1:se.push(Et),ye.push(Ie.yytext),ke.push(Ie.yylloc),se.push(jt[1]),Et=null,te=Ie.yyleng,de=Ie.yytext,ve=Ie.yylineno,me=Ie.yylloc;break;case 2:if(Nn=this.productions_[jt[1]][1],Bt.$=ye[ye.length-Nn],Bt._$={first_line:ke[ke.length-(Nn||1)].first_line,last_line:ke[ke.length-1].last_line,first_column:ke[ke.length-(Nn||1)].first_column,last_column:ke[ke.length-1].last_column},gt&&(Bt._$.range=[ke[ke.length-(Nn||1)].range[0],ke[ke.length-1].range[1]]),At=this.performAction.apply(Bt,[de,te,ve,ee.yy,jt[1],ye,ke].concat(he)),typeof At<"u")return At;Nn&&(se=se.slice(0,-1*Nn*2),ye=ye.slice(0,-1*Nn),ke=ke.slice(0,-1*Nn)),se.push(this.productions_[jt[1]][0]),ye.push(Bt.$),ke.push(Bt._$),Ot=Ae[se[se.length-2]][se[se.length-1]],se.push(Ot);break;case 3:return!0}}return!0}},$=function(){var Q={EOF:1,parseError:function(ce,se){if(this.yy.parser)this.yy.parser.parseError(ce,se);else throw new Error(ce)},setInput:function(oe,ce){return this.yy=ce||this.yy||{},this._input=oe,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var oe=this._input[0];this.yytext+=oe,this.yyleng++,this.offset++,this.match+=oe,this.matched+=oe;var ce=oe.match(/(?:\r\n?|\n).*/g);return ce?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),oe},unput:function(oe){var ce=oe.length,se=oe.split(/(?:\r\n?|\n)/g);this._input=oe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ce),this.offset-=ce;var ge=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),se.length-1&&(this.yylineno-=se.length-1);var ye=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:se?(se.length===ge.length?this.yylloc.first_column:0)+ge[ge.length-se.length].length-se[0].length:this.yylloc.first_column-ce},this.options.ranges&&(this.yylloc.range=[ye[0],ye[0]+this.yyleng-ce]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(oe){this.unput(this.match.slice(oe))},pastInput:function(){var oe=this.matched.substr(0,this.matched.length-this.match.length);return(oe.length>20?"...":"")+oe.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var oe=this.match;return oe.length<20&&(oe+=this._input.substr(0,20-oe.length)),(oe.substr(0,20)+(oe.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var oe=this.pastInput(),ce=new Array(oe.length+1).join("-");return oe+this.upcomingInput()+` +`+ce+"^"},test_match:function(oe,ce){var se,ge,ye;if(this.options.backtrack_lexer&&(ye={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ye.yylloc.range=this.yylloc.range.slice(0))),ge=oe[0].match(/(?:\r\n?|\n).*/g),ge&&(this.yylineno+=ge.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ge?ge[ge.length-1].length-ge[ge.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+oe[0].length},this.yytext+=oe[0],this.match+=oe[0],this.matches=oe,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(oe[0].length),this.matched+=oe[0],se=this.performAction.call(this,this.yy,this,ce,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),se)return se;if(this._backtrack){for(var ke in ye)this[ke]=ye[ke];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var oe,ce,se,ge;this._more||(this.yytext="",this.match="");for(var ye=this._currentRules(),ke=0;kece[0].length)){if(ce=se,ge=ke,this.options.backtrack_lexer){if(oe=this.test_match(se,ye[ke]),oe!==!1)return oe;if(this._backtrack){ce=!1;continue}else return!1}else if(!this.options.flex)break}return ce?(oe=this.test_match(ce,ye[ge]),oe!==!1?oe:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var ce=this.next();return ce||this.lex()},begin:function(ce){this.conditionStack.push(ce)},popState:function(){var ce=this.conditionStack.length-1;return ce>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(ce){return ce=this.conditionStack.length-1-Math.abs(ce||0),ce>=0?this.conditionStack[ce]:"INITIAL"},pushState:function(ce){this.begin(ce)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(ce,se,ge,ye){switch(ge){case 0:return this.begin("open_directive"),26;case 1:return this.begin("type_directive"),27;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),29;case 4:return 28;case 5:break;case 6:break;case 7:return 11;case 8:break;case 9:break;case 10:return 4;case 11:return 17;case 12:return this.begin("acc_title"),18;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),20;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:return 23;case 20:return 24;case 21:return 25;case 22:return 15;case 23:return 6;case 24:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23,24],inclusive:!0}}};return Q}();j.lexer=$;function V(){this.yy={}}return V.prototype=j,j.Parser=V,new V}();Cge.parser=Cge;const xGt=Cge;let dL="";const Sge=[],jP=[],$P=[],EGt=function(i,a,f){rd.parseDirective(this,i,a,f)},TGt=function(){Sge.length=0,jP.length=0,dL="",$P.length=0,rp()},_Gt=function(i){dL=i,Sge.push(i)},CGt=function(){return Sge},SGt=function(){let i=OFe();const a=100;let f=0;for(;!i&&f{f.people&&i.push(...f.people)}),[...new Set(i)].sort()},LGt=function(i,a){const f=a.substr(1).split(":");let p=0,w=[];f.length===1?(p=Number(f[0]),w=[]):(p=Number(f[0]),w=f[1].split(","));const y=w.map(E=>E.trim()),b={section:dL,type:dL,people:y,task:i,score:p};$P.push(b)},MGt=function(i){const a={section:dL,type:dL,description:i,task:i,classes:[]};jP.push(a)},OFe=function(){const i=function(f){return $P[f].processed};let a=!0;for(const[f,p]of $P.entries())i(f),a=a&&p.processed;return a},NFe={parseDirective:EGt,getConfig:()=>Tt().journey,clear:TGt,setDiagramTitle:Uw,getDiagramTitle:Ww,setAccTitle:ip,getAccTitle:L2,setAccDescription:M2,getAccDescription:D2,addSection:_Gt,getSections:CGt,getTasks:SGt,addTask:LGt,addTaskOrg:MGt,getActors:function(){return AGt()}},DGt=i=>`.label { + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + color: ${i.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${i.textColor} + } + + .legend { + fill: ${i.textColor}; + } + + .label text { + fill: #333; + } + .label { + color: ${i.textColor} + } + + .face { + ${i.faceColor?`fill: ${i.faceColor}`:"fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${i.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${i.fillType0?`fill: ${i.fillType0}`:""}; + } + .task-type-1, .section-type-1 { + ${i.fillType0?`fill: ${i.fillType1}`:""}; + } + .task-type-2, .section-type-2 { + ${i.fillType0?`fill: ${i.fillType2}`:""}; + } + .task-type-3, .section-type-3 { + ${i.fillType0?`fill: ${i.fillType3}`:""}; + } + .task-type-4, .section-type-4 { + ${i.fillType0?`fill: ${i.fillType4}`:""}; + } + .task-type-5, .section-type-5 { + ${i.fillType0?`fill: ${i.fillType5}`:""}; + } + .task-type-6, .section-type-6 { + ${i.fillType0?`fill: ${i.fillType6}`:""}; + } + .task-type-7, .section-type-7 { + ${i.fillType0?`fill: ${i.fillType7}`:""}; + } + + .actor-0 { + ${i.actor0?`fill: ${i.actor0}`:""}; + } + .actor-1 { + ${i.actor1?`fill: ${i.actor1}`:""}; + } + .actor-2 { + ${i.actor2?`fill: ${i.actor2}`:""}; + } + .actor-3 { + ${i.actor3?`fill: ${i.actor3}`:""}; + } + .actor-4 { + ${i.actor4?`fill: ${i.actor4}`:""}; + } + .actor-5 { + ${i.actor5?`fill: ${i.actor5}`:""}; + } +`,qK=function(i,a){const f=i.append("rect");return f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),f.attr("rx",a.rx),f.attr("ry",a.ry),a.class!==void 0&&f.attr("class",a.class),f},IGt=function(i,a){const p=i.append("circle").attr("cx",a.cx).attr("cy",a.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),w=i.append("g");w.append("circle").attr("cx",a.cx-15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),w.append("circle").attr("cx",a.cx+15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function y(S){const N=CA().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",N).attr("transform","translate("+a.cx+","+(a.cy+2)+")")}function b(S){const N=CA().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",N).attr("transform","translate("+a.cx+","+(a.cy+7)+")")}function E(S){S.append("line").attr("class","mouth").attr("stroke",2).attr("x1",a.cx-5).attr("y1",a.cy+7).attr("x2",a.cx+5).attr("y2",a.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.score>3?y(w):a.score<3?b(w):E(w),p},PFe=function(i,a){const f=i.append("circle");return f.attr("cx",a.cx),f.attr("cy",a.cy),f.attr("class","actor-"+a.pos),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("r",a.r),f.class!==void 0&&f.attr("class",f.class),a.title!==void 0&&f.append("title").text(a.title),f},BFe=function(i,a){const f=a.text.replace(//gi," "),p=i.append("text");p.attr("x",a.x),p.attr("y",a.y),p.attr("class","legend"),p.style("text-anchor",a.anchor),a.class!==void 0&&p.attr("class",a.class);const w=p.append("tspan");return w.attr("x",a.x+a.textMargin*2),w.text(f),p},OGt=function(i,a){function f(w,y,b,E,S){return w+","+y+" "+(w+b)+","+y+" "+(w+b)+","+(y+E-S)+" "+(w+b-S*1.2)+","+(y+E)+" "+w+","+(y+E)}const p=i.append("polygon");p.attr("points",f(a.x,a.y,50,20,7)),p.attr("class","labelBox"),a.y=a.y+a.labelMargin,a.x=a.x+.5*a.labelMargin,BFe(i,a)},NGt=function(i,a,f){const p=i.append("g"),w=Age();w.x=a.x,w.y=a.y,w.fill=a.fill,w.width=f.width*a.taskCount+f.diagramMarginX*(a.taskCount-1),w.height=f.height,w.class="journey-section section-type-"+a.num,w.rx=3,w.ry=3,qK(p,w),FFe(f)(a.text,p,w.x,w.y,w.width,w.height,{class:"journey-section section-type-"+a.num},f,a.colour)};let RFe=-1;const PGt=function(i,a,f){const p=a.x+f.width/2,w=i.append("g");RFe++;const y=300+5*30;w.append("line").attr("id","task"+RFe).attr("x1",p).attr("y1",a.y).attr("x2",p).attr("y2",y).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),IGt(w,{cx:p,cy:300+(5-a.score)*30,score:a.score});const b=Age();b.x=a.x,b.y=a.y,b.fill=a.fill,b.width=f.width,b.height=f.height,b.class="task task-type-"+a.num,b.rx=3,b.ry=3,qK(w,b);let E=a.x+14;a.people.forEach(S=>{const N=a.actors[S].color,B={cx:E,cy:a.y,r:7,fill:N,stroke:"#000",title:S,pos:a.actors[S].position};PFe(w,B),E+=10}),FFe(f)(a.task,w,b.x,b.y,b.width,b.height,{class:"task"},f,a.colour)},BGt=function(i,a){qK(i,{x:a.startx,y:a.starty,width:a.stopx-a.startx,height:a.stopy-a.starty,fill:a.fill,class:"rect"}).lower()},RGt=function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},Age=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},FFe=function(){function i(w,y,b,E,S,N,B,R){const j=y.append("text").attr("x",b+S/2).attr("y",E+N/2+5).style("font-color",R).style("text-anchor","middle").text(w);p(j,B)}function a(w,y,b,E,S,N,B,R,j){const{taskFontSize:$,taskFontFamily:V}=R,Q=w.split(//gi);for(let oe=0;oe{const w=I5[p].color,y={cx:20,cy:f,r:7,fill:w,stroke:"#000",pos:I5[p].position};HP.drawCircle(i,y);const b={x:40,y:f+7,fill:"#666",text:p,textMargin:a.boxTextMargin|5};HP.drawText(i,b),f+=20})}const VK=Tt().journey,b9=VK.leftMargin,$Gt=function(i,a,f,p){const w=Tt().journey;p.db.clear(),p.parser.parse(i+` +`);const y=Tt().securityLevel;let b;y==="sandbox"&&(b=Cr("#i"+a));const E=Cr(y==="sandbox"?b.nodes()[0].contentDocument.body:"body");Qb.init();const S=E.select("#"+a);HP.initGraphics(S);const N=p.db.getTasks(),B=p.db.getDiagramTitle(),R=p.db.getActors();for(const ce in I5)delete I5[ce];let j=0;R.forEach(ce=>{I5[ce]={color:w.actorColours[j%w.actorColours.length],position:j},j++}),jGt(S),Qb.insert(0,0,b9,Object.keys(I5).length*50),HGt(S,N,0);const $=Qb.getBounds();B&&S.append("text").text(B).attr("x",b9).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);const V=$.stopy-$.starty+2*w.diagramMarginY,Q=b9+$.stopx+2*w.diagramMarginX;Vw(S,V,Q,w.useMaxWidth),S.append("line").attr("x1",b9).attr("y1",w.height*4).attr("x2",Q-b9-4).attr("y2",w.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const oe=B?70:0;S.attr("viewBox",`${$.startx} -25 ${Q} ${V+oe}`),S.attr("preserveAspectRatio","xMinYMin meet"),S.attr("height",V+oe+25)},Qb={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(i,a,f,p){i[a]===void 0?i[a]=f:i[a]=p(f,i[a])},updateBounds:function(i,a,f,p){const w=Tt().journey,y=this;let b=0;function E(S){return function(B){b++;const R=y.sequenceItems.length-b+1;y.updateVal(B,"starty",a-R*w.boxMargin,Math.min),y.updateVal(B,"stopy",p+R*w.boxMargin,Math.max),y.updateVal(Qb.data,"startx",i-R*w.boxMargin,Math.min),y.updateVal(Qb.data,"stopx",f+R*w.boxMargin,Math.max),S!=="activation"&&(y.updateVal(B,"startx",i-R*w.boxMargin,Math.min),y.updateVal(B,"stopx",f+R*w.boxMargin,Math.max),y.updateVal(Qb.data,"starty",a-R*w.boxMargin,Math.min),y.updateVal(Qb.data,"stopy",p+R*w.boxMargin,Math.max))}}this.sequenceItems.forEach(E())},insert:function(i,a,f,p){const w=Math.min(i,f),y=Math.max(i,f),b=Math.min(a,p),E=Math.max(a,p);this.updateVal(Qb.data,"startx",w,Math.min),this.updateVal(Qb.data,"starty",b,Math.min),this.updateVal(Qb.data,"stopx",y,Math.max),this.updateVal(Qb.data,"stopy",E,Math.max),this.updateBounds(w,b,y,E)},bumpVerticalPos:function(i){this.verticalPos=this.verticalPos+i,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},Lge=VK.sectionFills,jFe=VK.sectionColours,HGt=function(i,a,f){const p=Tt().journey;let w="";const y=p.height*2+p.diagramMarginY,b=f+y;let E=0,S="#CCC",N="black",B=0;for(const[R,j]of a.entries()){if(w!==j.section){S=Lge[E%Lge.length],B=E%Lge.length,N=jFe[E%jFe.length];let V=0;const Q=j.section;for(let ce=R;ce(I5[Q]&&(V[Q]=I5[Q]),V),{});j.x=R*p.taskMargin+R*p.width+b9,j.y=b,j.width=p.diagramMarginX,j.height=p.diagramMarginY,j.colour=N,j.fill=S,j.num=B,j.actors=$,HP.drawTask(i,j,p),Qb.insert(j.x,j.y,j.x+j.width+p.taskMargin,300+5*30)}},$Fe={setConf:FGt,draw:$Gt},zGt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:xGt,db:NFe,renderer:$Fe,styles:DGt,init:i=>{$Fe.setConf(i.journey),NFe.clear()}}},Symbol.toStringTag,{value:"Module"})),GGt=(i,a,f)=>{const{parentById:p}=f,w=new Set;let y=i;for(;y;){if(w.add(y),y===a)return y;y=p[y]}for(y=a;y;){if(w.has(y))return y;y=p[y]}return"root"};function UK(i){throw new Error('Could not dynamically require "'+i+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Mge={},qGt={get exports(){return Mge},set exports(i){Mge=i}};(function(i,a){(function(f){i.exports=f()})(function(){return function(){function f(p,w,y){function b(N,B){if(!w[N]){if(!p[N]){var R=typeof UK=="function"&&UK;if(!B&&R)return R(N,!0);if(E)return E(N,!0);var j=new Error("Cannot find module '"+N+"'");throw j.code="MODULE_NOT_FOUND",j}var $=w[N]={exports:{}};p[N][0].call($.exports,function(V){var Q=p[N][1][V];return b(Q||V)},$,$.exports,f,p,w,y)}return w[N].exports}for(var E=typeof UK=="function"&&UK,S=0;S0&&arguments[0]!==void 0?arguments[0]:{},j=R.defaultLayoutOptions,$=j===void 0?{}:j,V=R.algorithms,Q=V===void 0?["layered","stress","mrtree","radial","force","disco","sporeOverlap","sporeCompaction","rectpacking"]:V,oe=R.workerFactory,ce=R.workerUrl;if(b(this,N),this.defaultLayoutOptions=$,this.initialized=!1,typeof ce>"u"&&typeof oe>"u")throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.");var se=oe;typeof ce<"u"&&typeof oe>"u"&&(se=function(ke){return new Worker(ke)});var ge=se(ce);if(typeof ge.postMessage!="function")throw new TypeError("Created worker does not provide the required 'postMessage' function.");this.worker=new S(ge),this.worker.postMessage({cmd:"register",algorithms:Q}).then(function(ye){return B.initialized=!0}).catch(console.err)}return y(N,[{key:"layout",value:function(R){var j=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},$=j.layoutOptions,V=$===void 0?this.defaultLayoutOptions:$,Q=j.logging,oe=Q===void 0?!1:Q,ce=j.measureExecutionTime,se=ce===void 0?!1:ce;return R?this.worker.postMessage({cmd:"layout",graph:R,layoutOptions:V,options:{logging:oe,measureExecutionTime:se}}):Promise.reject(new Error("Missing mandatory parameter 'graph'."))}},{key:"knownLayoutAlgorithms",value:function(){return this.worker.postMessage({cmd:"algorithms"})}},{key:"knownLayoutOptions",value:function(){return this.worker.postMessage({cmd:"options"})}},{key:"knownLayoutCategories",value:function(){return this.worker.postMessage({cmd:"categories"})}},{key:"terminateWorker",value:function(){this.worker.terminate()}}]),N}();w.default=E;var S=function(){function N(B){var R=this;if(b(this,N),B===void 0)throw new Error("Missing mandatory parameter 'worker'.");this.resolvers={},this.worker=B,this.worker.onmessage=function(j){setTimeout(function(){R.receive(R,j)},0)}}return y(N,[{key:"postMessage",value:function(R){var j=this.id||0;this.id=j+1,R.id=j;var $=this;return new Promise(function(V,Q){$.resolvers[j]=function(oe,ce){oe?($.convertGwtStyleError(oe),Q(oe)):V(ce)},$.worker.postMessage(R)})}},{key:"receive",value:function(R,j){var $=j.data,V=R.resolvers[$.id];V&&(delete R.resolvers[$.id],$.error?V($.error):V(null,$.data))}},{key:"terminate",value:function(){this.worker.terminate&&this.worker.terminate()}},{key:"convertGwtStyleError",value:function(R){if(R){var j=R.__java$exception;j&&(j.cause&&j.cause.backingJsObject&&(R.cause=j.cause.backingJsObject,this.convertGwtStyleError(R.cause)),delete R.__java$exception)}}}]),N}()},{}],2:[function(f,p,w){(function(y){(function(){var b;typeof window<"u"?b=window:typeof y<"u"?b=y:typeof self<"u"&&(b=self);var E;function S(){}function N(){}function B(){}function R(){}function j(){}function $(){}function V(){}function Q(){}function oe(){}function ce(){}function se(){}function ge(){}function ye(){}function ke(){}function Ae(){}function de(){}function ve(){}function te(){}function xe(){}function De(){}function he(){}function Ie(){}function ee(){}function rt(){}function me(){}function gt(){}function pe(){}function Et(){}function wt(){}function jt(){}function At(){}function Bt(){}function cn(){}function Nn(){}function Ot(){}function oi(){}function kt(){}function Dt(){}function vt(){}function Nt(){}function ze(){}function Xe(){}function Lt(){}function Ge(){}function Bn(){}function Oe(){}function Ri(){}function tn(){}function hi(){}function Sr(){}function Zn(){}function Xn(){}function ir(){}function Hn(){}function tr(){}function ha(){}function Zs(){}function ns(){}function Hi(){}function Js(){}function Pc(){}function Ga(){}function ws(){}function Oi(){}function Er(){}function br(){}function Dr(){}function Vn(){}function qi(){}function yn(){}function Bc(){}function jn(){}function Ms(){}function Pa(){}function Ta(){}function _a(){}function ka(){}function Qi(){}function ea(){}function Ca(){}function Sa(){}function Ka(){}function cg(){}function Gc(){}function Dh(){}function Es(){}function lp(){}function sd(){}function sh(){}function Ai(){}function nn(){}function Tr(){}function ai(){}function Ns(){}function mc(){}function yu(){}function Mo(){}function ku(){}function Ih(){}function qf(){}function lx(){}function ad(){}function b3(){}function bL(){}function im(){}function ug(){}function rs(){}function Ps(){}function Aa(){}function pi(){}function Rc(){}function _t(){}function hp(){}function Gt(){}function ff(){}function sm(){}function m9(){}function fp(){}function N5(){}function ah(){}function od(){}function P5(){}function B5(){}function y9(){}function vL(){}function v1(){}function dp(){}function cd(){}function am(){}function ev(){}function om(){}function yc(){}function hx(){}function Vo(){}function fx(){}function oh(){}function QK(){}function k9(){}function ZK(){}function GP(){}function Vf(){}function cm(){}function wL(){}function qP(){}function gp(){}function um(){}function JK(){}function R2(){}function eY(){}function tY(){}function R5(){}function x9(){}function VP(){}function dx(){}function nY(){}function gx(){}function rY(){}function iY(){}function sY(){}function aY(){}function oY(){}function cY(){}function uY(){}function lY(){}function hY(){}function fY(){}function dY(){}function mL(){}function gY(){}function pY(){}function E9(){}function UP(){}function F5(){}function bY(){}function vY(){}function wY(){}function mY(){}function yY(){}function T9(){}function yL(){}function WP(){}function v3(){}function w3(){}function kY(){}function df(){}function j5(){}function xY(){}function px(){}function zd(){}function EY(){}function TY(){}function _Y(){}function CY(){}function _9(){}function kL(){}function KP(){}function xL(){}function $5(){}function SY(){}function YP(){}function XP(){}function AY(){}function LY(){}function MY(){}function DY(){}function IY(){}function OY(){}function Gd(){}function tv(){}function NY(){}function QP(){}function ZP(){}function PY(){}function m3(){}function bx(){}function EL(){}function lm(){}function vx(){}function BY(){}function C9(){}function ud(){}function JP(){}function TL(){}function wx(){}function _L(){}function eB(){}function RY(){}function CL(){}function FY(){}function jY(){}function tB(){}function H5(){}function nB(){}function z5(){}function $Y(){}function SL(){}function HY(){}function zY(){}function GY(){}function qY(){}function rB(){}function VY(){}function UY(){}function WY(){}function iB(){}function KY(){}function YY(){}function XY(){}function sB(){}function QY(){}function ZY(){}function aB(){}function oB(){}function cB(){}function JY(){}function eX(){}function mx(){}function G5(){}function S9(){}function tX(){}function AL(){}function A9(){}function LL(){}function uB(){}function lB(){}function nX(){}function rX(){}function iX(){}function hB(){}function fB(){}function sX(){}function aX(){}function oX(){}function cX(){}function uX(){}function dB(){}function lX(){}function hX(){}function fX(){}function dX(){}function gB(){}function L9(){}function gX(){}function pX(){}function pB(){}function bX(){}function vX(){}function wX(){}function mX(){}function yX(){}function kX(){}function bB(){}function xX(){}function vB(){}function EX(){}function TX(){}function _X(){}function M9(){}function CX(){}function D9(){}function SX(){}function wB(){}function mB(){}function yB(){}function kB(){}function nv(){}function xB(){}function EB(){}function TB(){}function _B(){}function AX(){}function q5(){}function I9(){}function y3(){}function LX(){}function MX(){}function O9(){}function DX(){}function IX(){}function OX(){}function NX(){}function PX(){}function BX(){}function RX(){}function FX(){}function jX(){}function $X(){}function HX(){}function ML(){}function CB(){}function zX(){}function GX(){}function qX(){}function SB(){}function VX(){}function UX(){}function WX(){}function KX(){}function YX(){}function XX(){}function AB(){}function LB(){}function QX(){}function MB(){}function DB(){}function ZX(){}function JX(){}function eQ(){}function DL(){}function tQ(){}function yx(){}function nQ(){}function rQ(){}function iQ(){}function IB(){}function sQ(){}function aQ(){}function oQ(){}function cQ(){}function uQ(){}function lQ(){}function hQ(){}function fQ(){}function dQ(){}function gQ(){}function pQ(){}function bQ(){}function V5(){}function OB(){}function vQ(){}function wQ(){}function mQ(){}function NB(){}function yQ(){}function N9(){}function kQ(){}function xQ(){}function EQ(){}function TQ(){}function _Q(){}function CQ(){}function SQ(){}function AQ(){}function LQ(){}function MQ(){}function U5(){}function DQ(){}function IQ(){}function OQ(){}function NQ(){}function PQ(){}function BQ(){}function RQ(){}function FQ(){}function P9(){}function jQ(){}function $Q(){}function HQ(){}function zQ(){}function GQ(){}function qQ(){}function VQ(){}function UQ(){}function W5(){}function PB(){}function WQ(){}function IL(){}function KQ(){}function YQ(){}function XQ(){}function QQ(){}function ZQ(){}function JQ(){}function eZ(){}function BB(){}function tZ(){}function RB(){}function nZ(){}function FB(){}function jB(){}function $B(){}function rZ(){}function iZ(){}function B9(){}function OL(){}function R9(){}function sZ(){}function aZ(){}function NL(){}function oZ(){}function cZ(){}function HB(){}function uZ(){}function lZ(){}function hZ(){}function fZ(){}function dZ(){}function gZ(){}function pZ(){}function bZ(){}function vZ(){}function wZ(){}function lg(){}function mZ(){}function hm(){}function zB(){}function yZ(){}function kZ(){}function xZ(){}function EZ(){}function TZ(){}function _Z(){}function CZ(){}function SZ(){}function AZ(){}function Fc(){}function LZ(){}function F9(){}function lc(){}function iu(){}function Ki(){}function PL(){}function MZ(){}function DZ(){}function IZ(){}function K5(){}function fm(){}function Ht(){}function OZ(){}function NZ(){}function PZ(){}function BZ(){}function RZ(){}function GB(){}function FZ(){}function jZ(){}function BL(){}function $Z(){}function rl(){}function Hu(){}function HZ(){}function zZ(){}function GZ(){}function dm(){}function rv(){}function pp(){}function ld(){}function Y5(){}function j9(){}function kx(){}function qB(){}function qZ(){}function xx(){}function VB(){}function VZ(){}function $9(){}function X5(){}function Q5(){}function bp(){}function UB(){}function Ex(){}function WB(){}function KB(){}function Z5(){}function F2(){}function E0(){}function vp(){}function k3(){}function Tx(){}function H9(){}function YB(){}function UZ(){}function XB(){}function QB(){}function ZB(){}function _x(){}function JB(){}function eR(){}function WZ(){}function Cx(){}function Sx(){}function gm(){}function RL(){}function KZ(){}function YZ(){}function XZ(){}function QZ(){}function ZZ(){}function JZ(){}function eJ(){}function tJ(){}function tR(){}function nJ(){}function rJ(){}function iJ(){}function nR(){}function Ax(){}function z9(){}function rR(){}function sJ(){}function iR(){}function sR(){}function aJ(){}function G9(){}function pm(){}function aR(){}function oR(){}function oJ(){}function cJ(){}function q9(){}function cR(){}function uR(){}function kc(){}function uJ(){}function lR(){}function V9(){}function lJ(){}function hJ(){}function U9(){}function hR(){}function W9(){}function K9(){}function Uf(){}function FL(){}function jL(){}function J5(){}function fJ(){}function dJ(){}function gJ(){}function pJ(){}function bm(){}function fR(){}function e6(){}function w1(){}function dR(){}function gR(){}function pR(){}function bR(){}function vR(){}function wR(){}function Wf(){}function xu(){}function bJ(){}function vJ(){}function wJ(){}function Eu(){}function Y9(){}function mR(){}function yR(){}function t6(){}function mJ(){}function Lx(){}function yJ(){}function kR(){}function kJ(){}function xJ(){}function X9(){}function xR(){}function $L(){}function Q9(){}function EJ(){}function TJ(){}function HL(){}function Z9(){}function m1(){}function Mx(){}function _J(){}function Dx(){}function zL(){}function j2(){}function J9(){}function GL(){}function Kf(){}function eT(){}function y1(){}function k1(){}function CJ(){}function SJ(){}function x3(){}function Ix(){}function Ox(){}function tT(){}function AJ(){}function n6(){}function qL(){}function ER(){}function LJ(){}function nT(){kT()}function MJ(){Tie()}function TR(){K_()}function VL(){GH()}function DJ(){m4e()}function rT(){a1()}function IJ(){M3e()}function OJ(){ZD()}function NJ(){vM()}function PJ(){bM()}function BJ(){GM()}function _R(){AGe()}function RJ(){U6()}function FJ(){TF()}function jJ(){jZe()}function CR(){ett()}function $J(){vJe()}function HJ(){NXe()}function iT(){X8()}function zJ(){Xp()}function GJ(){ttt()}function qJ(){SQe()}function VJ(){f6e()}function UJ(){zit()}function WJ(){PXe()}function SR(){pt()}function KJ(){OXe()}function AR(){ntt()}function YJ(){snt()}function UL(){RXe()}function XJ(){xJe()}function LR(){LGe()}function QJ(){e5e()}function MR(){Jm()}function ZJ(){Ltt()}function DR(){nI()}function IR(){Jse()}function OR(){ase()}function WL(){nw()}function E3(){Xme()}function sT(){BXe()}function hd(){Xct()}function NR(){Q4e()}function Nx(){Vse()}function KL(){A$()}function JJ(){XH()}function wp(){bi()}function PR(){hH()}function BR(){i3e()}function RR(){pz()}function ch(){EWe()}function YL(){cie()}function FR(){F5e()}function Px(e){Sn(e)}function aT(e){this.a=e}function Bx(e){this.a=e}function jR(e){this.a=e}function r6(e){this.a=e}function iv(e){this.a=e}function Rx(e){this.a=e}function $R(e){this.a=e}function eee(e){this.a=e}function XL(e){this.a=e}function T3(e){this.a=e}function QL(e){this.a=e}function oT(e){this.a=e}function tee(e){this.a=e}function cT(e){this.a=e}function uT(e){this.a=e}function i6(e){this.a=e}function ZL(e){this.a=e}function JL(e){this.a=e}function nee(e){this.a=e}function ree(e){this.a=e}function iee(e){this.a=e}function HR(e){this.b=e}function see(e){this.c=e}function aee(e){this.a=e}function oee(e){this.a=e}function cee(e){this.a=e}function uee(e){this.a=e}function lee(e){this.a=e}function hee(e){this.a=e}function fee(e){this.a=e}function dee(e){this.a=e}function s6(e){this.a=e}function gee(e){this.a=e}function Fx(e){this.a=e}function Oh(e){this.a=e}function pee(e){this.a=e}function a6(e){this.a=e}function jx(e){this.a=e}function lT(e){this.a=e}function $x(e){this.a=e}function hg(){this.a=[]}function bee(e,t){e.a=t}function jge(e,t){e.a=t}function $ge(e,t){e.b=t}function Hge(e,t){e.b=t}function zge(e,t){e.b=t}function eM(e,t){e.j=t}function Gge(e,t){e.g=t}function qge(e,t){e.i=t}function vee(e,t){e.c=t}function x1(e,t){e.d=t}function wee(e,t){e.d=t}function Vge(e,t){e.c=t}function T0(e,t){e.k=t}function mee(e,t){e.c=t}function zR(e,t){e.c=t}function GR(e,t){e.a=t}function yee(e,t){e.a=t}function Uge(e,t){e.f=t}function Wge(e,t){e.a=t}function sv(e,t){e.b=t}function tM(e,t){e.d=t}function hT(e,t){e.i=t}function qR(e,t){e.o=t}function Kge(e,t){e.r=t}function Yge(e,t){e.a=t}function VR(e,t){e.b=t}function av(e,t){e.e=t}function kee(e,t){e.f=t}function fT(e,t){e.g=t}function o6(e,t){e.e=t}function Xge(e,t){e.f=t}function Hx(e,t){e.f=t}function xee(e,t){e.n=t}function fg(e,t){e.a=t}function Qge(e,t){e.a=t}function _3(e,t){e.c=t}function Eee(e,t){e.c=t}function Tee(e,t){e.d=t}function UR(e,t){e.e=t}function WR(e,t){e.g=t}function _ee(e,t){e.a=t}function zx(e,t){e.c=t}function dT(e,t){e.d=t}function Zge(e,t){e.e=t}function Cee(e,t){e.f=t}function See(e,t){e.j=t}function Aee(e,t){e.a=t}function Jge(e,t){e.b=t}function Ac(e,t){e.a=t}function KR(e){e.b=e.a}function Lee(e){e.c=e.d.d}function c6(e){this.d=e}function dg(e){this.a=e}function vm(e){this.a=e}function nM(e){this.a=e}function E1(e){this.a=e}function u6(e){this.a=e}function Mee(e){this.a=e}function YR(e){this.a=e}function C3(e){this.a=e}function rM(e){this.a=e}function wm(e){this.a=e}function XR(e){this.a=e}function T1(e){this.a=e}function m(e){this.a=e}function g(e){this.a=e}function k(e){this.b=e}function T(e){this.b=e}function A(e){this.b=e}function D(e){this.a=e}function I(e){this.a=e}function F(e){this.a=e}function H(e){this.c=e}function C(e){this.c=e}function G(e){this.c=e}function U(e){this.a=e}function Z(e){this.a=e}function ne(e){this.a=e}function ae(e){this.a=e}function ue(e){this.a=e}function _e(e){this.a=e}function be(e){this.a=e}function Se(e){this.a=e}function Le(e){this.a=e}function Be(e){this.a=e}function Ke(e){this.a=e}function qe(e){this.a=e}function Re(e){this.a=e}function Ze(e){this.a=e}function $e(e){this.a=e}function ot(e){this.a=e}function ut(e){this.a=e}function Je(e){this.a=e}function Ct(e){this.a=e}function lt(e){this.a=e}function un(e){this.a=e}function Rt(e){this.a=e}function $t(e){this.a=e}function bn(e){this.a=e}function Cn(e){this.a=e}function Kn(e){this.a=e}function kn(e){this.a=e}function Wn(e){this.a=e}function sr(e){this.a=e}function yr(e){this.a=e}function hr(e){this.a=e}function nr(e){this.a=e}function fn(e){this.a=e}function vr(e){this.a=e}function gr(e){this.a=e}function ni(e){this.a=e}function Ti(e){this.a=e}function ia(e){this.a=e}function Ba(e){this.a=e}function Li(e){this.a=e}function wi(e){this.a=e}function Ts(e){this.a=e}function Yi(e){this.a=e}function Di(e){this.a=e}function es(e){this.a=e}function eo(e){this.e=e}function sa(e){this.a=e}function Ks(e){this.a=e}function Ar(e){this.a=e}function We(e){this.a=e}function On(e){this.a=e}function Ir(e){this.a=e}function ar(e){this.a=e}function or(e){this.a=e}function qa(e){this.a=e}function qr(e){this.a=e}function is(e){this.a=e}function Uo(e){this.a=e}function qc(e){this.a=e}function uo(e){this.a=e}function Lc(e){this.a=e}function Ra(e){this.a=e}function lo(e){this.a=e}function Sl(e){this.a=e}function Yf(e){this.a=e}function mp(e){this.a=e}function yp(e){this.a=e}function Xf(e){this.a=e}function gg(e){this.a=e}function fd(e){this.a=e}function ov(e){this.a=e}function mm(e){this.a=e}function l6(e){this.a=e}function S3(e){this.a=e}function h6(e){this.a=e}function gT(e){this.a=e}function A3(e){this.a=e}function qd(e){this.a=e}function _1(e){this.a=e}function Vd(e){this.a=e}function pT(e){this.a=e}function $2(e){this.a=e}function QR(e){this.a=e}function Dee(e){this.a=e}function Iee(e){this.a=e}function Oee(e){this.a=e}function Nee(e){this.a=e}function Pee(e){this.a=e}function Bee(e){this.a=e}function Ree(e){this.a=e}function Gx(e){this.a=e}function iM(e){this.a=e}function bT(e){this.a=e}function ZR(e){this.a=e}function JR(e){this.a=e}function Fee(e){this.a=e}function kp(e){this.a=e}function sM(e){this.a=e}function eF(e){this.a=e}function qx(e){this.c=e}function xp(e){this.b=e}function jee(e){this.a=e}function wje(e){this.a=e}function mje(e){this.a=e}function yje(e){this.a=e}function kje(e){this.a=e}function xje(e){this.a=e}function Eje(e){this.a=e}function Tje(e){this.a=e}function _je(e){this.a=e}function Cje(e){this.a=e}function Sje(e){this.a=e}function Aje(e){this.a=e}function Lje(e){this.a=e}function Mje(e){this.a=e}function Dje(e){this.a=e}function Ije(e){this.a=e}function Oje(e){this.a=e}function Nje(e){this.a=e}function Pje(e){this.a=e}function Bje(e){this.a=e}function Rje(e){this.a=e}function Fje(e){this.a=e}function jje(e){this.a=e}function $je(e){this.a=e}function Ep(e){this.a=e}function f6(e){this.a=e}function Hje(e){this.a=e}function zje(e){this.a=e}function Gje(e){this.a=e}function qje(e){this.a=e}function Vje(e){this.a=e}function Uje(e){this.a=e}function Wje(e){this.a=e}function Kje(e){this.a=e}function Yje(e){this.a=e}function Xje(e){this.a=e}function Qje(e){this.a=e}function Zje(e){this.a=e}function Jje(e){this.a=e}function e$e(e){this.a=e}function t$e(e){this.a=e}function n$e(e){this.a=e}function tF(e){this.a=e}function r$e(e){this.a=e}function i$e(e){this.a=e}function s$e(e){this.a=e}function a$e(e){this.a=e}function o$e(e){this.a=e}function c$e(e){this.a=e}function u$e(e){this.a=e}function l$e(e){this.a=e}function h$e(e){this.a=e}function f$e(e){this.a=e}function d$e(e){this.a=e}function g$e(e){this.a=e}function p$e(e){this.a=e}function b$e(e){this.a=e}function v$e(e){this.a=e}function w$e(e){this.a=e}function m$e(e){this.a=e}function y$e(e){this.a=e}function k$e(e){this.a=e}function x$e(e){this.a=e}function E$e(e){this.a=e}function T$e(e){this.a=e}function _$e(e){this.a=e}function C$e(e){this.a=e}function S$e(e){this.a=e}function A$e(e){this.a=e}function L$e(e){this.a=e}function M$e(e){this.a=e}function epe(e){this.a=e}function Zi(e){this.b=e}function D$e(e){this.f=e}function tpe(e){this.a=e}function I$e(e){this.a=e}function O$e(e){this.a=e}function N$e(e){this.a=e}function P$e(e){this.a=e}function B$e(e){this.a=e}function R$e(e){this.a=e}function F$e(e){this.a=e}function j$e(e){this.a=e}function aM(e){this.a=e}function $$e(e){this.a=e}function H$e(e){this.b=e}function npe(e){this.c=e}function nF(e){this.e=e}function z$e(e){this.a=e}function rF(e){this.a=e}function iF(e){this.a=e}function $ee(e){this.a=e}function G$e(e){this.a=e}function q$e(e){this.d=e}function rpe(e){this.a=e}function ipe(e){this.a=e}function cv(e){this.e=e}function nVt(){this.a=0}function L3(){EVe(this)}function st(){Ute(this)}function Mr(){sl(this)}function Hee(){SYe(this)}function V$e(){}function uv(){this.c=FAe}function rVt(e,t){t.Wb(e)}function U$e(e,t){e.b+=t}function W$e(e){e.b=new ite}function J(e){return e.e}function iVt(e){return e.a}function sVt(e){return e.a}function aVt(e){return e.a}function oVt(e){return e.a}function cVt(e){return e.a}function uVt(){return null}function lVt(){return null}function hVt(){qpe(),xyn()}function fVt(e){e.b.tf(e.e)}function vT(e,t){e.b=t-e.b}function wT(e,t){e.a=t-e.a}function K$e(e,t){t.ad(e.a)}function dVt(e,t){Vs(t,e)}function gVt(e,t,n){e.Od(n,t)}function oM(e,t){e.e=t,t.b=e}function spe(e){wd(),this.a=e}function Y$e(e){wd(),this.a=e}function X$e(e){wd(),this.a=e}function ape(e){Rm(),this.a=e}function Q$e(e){k8(),mue.be(e)}function H2(){aUe.call(this)}function ope(){aUe.call(this)}function cpe(){H2.call(this)}function zee(){H2.call(this)}function Z$e(){H2.call(this)}function cM(){H2.call(this)}function zu(){H2.call(this)}function mT(){H2.call(this)}function Fr(){H2.call(this)}function uh(){H2.call(this)}function J$e(){H2.call(this)}function xc(){H2.call(this)}function eHe(){H2.call(this)}function tHe(){this.a=this}function sF(){this.Bb|=256}function nHe(){this.b=new iVe}function upe(){upe=pe,new Mr}function lpe(){cpe.call(this)}function rHe(e,t){e.length=t}function aF(e,t){it(e.a,t)}function pVt(e,t){k4e(e.c,t)}function bVt(e,t){Gs(e.b,t)}function vVt(e,t){RH(e.a,t)}function wVt(e,t){Oie(e.a,t)}function Vx(e,t){_i(e.e,t)}function d6(e){JH(e.c,e.b)}function mVt(e,t){e.kc().Nb(t)}function hpe(e){this.a=von(e)}function Ys(){this.a=new Mr}function iHe(){this.a=new Mr}function oF(){this.a=new st}function Gee(){this.a=new st}function fpe(){this.a=new st}function Nh(){this.a=new Bc}function z2(){this.a=new PZe}function dpe(){this.a=new m9}function gpe(){this.a=new yGe}function sHe(){this.a=new cQe}function ppe(){this.a=new TXe}function bpe(){this.a=new KUe}function aHe(){this.a=new st}function vpe(){this.a=new st}function oHe(){this.a=new st}function cHe(){this.a=new st}function uHe(){this.d=new st}function lHe(){this.a=new Ys}function hHe(){this.a=new Mr}function fHe(){this.b=new Mr}function dHe(){this.b=new st}function wpe(){this.e=new st}function gHe(){this.d=new st}function pHe(){this.a=new zJ}function bHe(){st.call(this)}function mpe(){oF.call(this)}function vHe(){bj.call(this)}function wHe(){vpe.call(this)}function qee(){yT.call(this)}function yT(){V$e.call(this)}function g6(){V$e.call(this)}function ype(){g6.call(this)}function mHe(){tXe.call(this)}function yHe(){tXe.call(this)}function kHe(){Spe.call(this)}function xHe(){Spe.call(this)}function EHe(){Spe.call(this)}function THe(){Ape.call(this)}function Gu(){as.call(this)}function kpe(){dm.call(this)}function xpe(){dm.call(this)}function _He(){HHe.call(this)}function CHe(){HHe.call(this)}function SHe(){Mr.call(this)}function AHe(){Mr.call(this)}function LHe(){Mr.call(this)}function MHe(){Ys.call(this)}function Vee(){Qet.call(this)}function DHe(){sF.call(this)}function Uee(){Z2e.call(this)}function Wee(){Z2e.call(this)}function Epe(){Mr.call(this)}function Kee(){Mr.call(this)}function IHe(){Mr.call(this)}function Tpe(){Ex.call(this)}function OHe(){Ex.call(this)}function NHe(){Tpe.call(this)}function PHe(){qL.call(this)}function BHe(e){ket.call(this,e)}function RHe(e){ket.call(this,e)}function _pe(e){XL.call(this,e)}function Cpe(e){lGe.call(this,e)}function yVt(e){Cpe.call(this,e)}function kVt(e){lGe.call(this,e)}function Ux(){this.a=new as}function Spe(){this.a=new Ys}function Ape(){this.a=new Mr}function FHe(){this.a=new st}function jHe(){this.j=new st}function Lpe(){this.a=new $B}function $He(){this.a=new Pze}function HHe(){this.a=new UB}function Yee(){Yee=pe,due=new sze}function Xee(){Xee=pe,fue=new ize}function kT(){kT=pe,hue=new N}function cF(){cF=pe,bue=new iUe}function xVt(e){Cpe.call(this,e)}function EVt(e){Cpe.call(this,e)}function zHe(e){Cre.call(this,e)}function GHe(e){Cre.call(this,e)}function qHe(e){bWe.call(this,e)}function Qee(e){Gfn.call(this,e)}function lv(e){Em.call(this,e)}function xT(e){yF.call(this,e)}function Mpe(e){yF.call(this,e)}function VHe(e){yF.call(this,e)}function tc(e){MKe.call(this,e)}function UHe(e){tc.call(this,e)}function p6(){$x.call(this,{})}function uF(e){a8(),this.a=e}function ET(e){e.b=null,e.c=0}function TVt(e,t){e.e=t,Yot(e,t)}function _Vt(e,t){e.a=t,L1n(e)}function Zee(e,t,n){e.a[t.g]=n}function CVt(e,t,n){Vln(n,e,t)}function SVt(e,t){ZKt(t.i,e.n)}function WHe(e,t){Jsn(e).td(t)}function AVt(e,t){return e*e/t}function KHe(e,t){return e.g-t.g}function LVt(e){return new lT(e)}function MVt(e){return new Bm(e)}function lF(e){tc.call(this,e)}function Do(e){tc.call(this,e)}function YHe(e){tc.call(this,e)}function Jee(e){MKe.call(this,e)}function ete(e){Kme(),this.a=e}function XHe(e){xWe(),this.a=e}function ym(e){Mne(),this.f=e}function tte(e){Mne(),this.f=e}function Wx(e){tc.call(this,e)}function Ln(e){tc.call(this,e)}function Wo(e){tc.call(this,e)}function QHe(e){tc.call(this,e)}function b6(e){tc.call(this,e)}function It(e){return Sn(e),e}function Ue(e){return Sn(e),e}function uM(e){return Sn(e),e}function Dpe(e){return Sn(e),e}function DVt(e){return Sn(e),e}function TT(e){return e.b==e.c}function km(e){return!!e&&e.b}function IVt(e){return!!e&&e.k}function OVt(e){return!!e&&e.j}function Al(e){Sn(e),this.a=e}function Ipe(e){return ab(e),e}function _T(e){qve(e,e.length)}function pg(e){tc.call(this,e)}function dd(e){tc.call(this,e)}function nte(e){tc.call(this,e)}function M3(e){tc.call(this,e)}function CT(e){tc.call(this,e)}function $r(e){tc.call(this,e)}function rte(e){bbe.call(this,e,0)}function ite(){Twe.call(this,12,3)}function Ope(){Ope=pe,N8e=new xe}function ZHe(){ZHe=pe,O8e=new S}function hF(){hF=pe,YC=new ye}function JHe(){JHe=pe,M0t=new Ae}function eze(){throw J(new Fr)}function Npe(){throw J(new Fr)}function tze(){throw J(new Fr)}function NVt(){throw J(new Fr)}function PVt(){throw J(new Fr)}function BVt(){throw J(new Fr)}function ste(){this.a=Hr(Nr(io))}function v6(e){wd(),this.a=Nr(e)}function nze(e,t){e.Td(t),t.Sd(e)}function RVt(e,t){e.a.ec().Mc(t)}function FVt(e,t,n){e.c.lf(t,n)}function Ppe(e){Do.call(this,e)}function gd(e){Ln.call(this,e)}function bg(){u6.call(this,"")}function ST(){u6.call(this,"")}function Tp(){u6.call(this,"")}function xm(){u6.call(this,"")}function Bpe(e){Do.call(this,e)}function Kx(e){T.call(this,e)}function ate(e){oj.call(this,e)}function rze(e){Kx.call(this,e)}function ize(){cT.call(this,null)}function sze(){cT.call(this,null)}function fF(){fF=pe,k8()}function aze(){aze=pe,$0t=whn()}function oze(e){return e.a?e.b:0}function jVt(e){return e.a?e.b:0}function $Vt(e,t){return e.a-t.a}function HVt(e,t){return e.a-t.a}function zVt(e,t){return e.a-t.a}function dF(e,t){return gme(e,t)}function re(e,t){return SXe(e,t)}function GVt(e,t){return t in e.a}function cze(e,t){return e.f=t,e}function qVt(e,t){return e.b=t,e}function uze(e,t){return e.c=t,e}function VVt(e,t){return e.g=t,e}function Rpe(e,t){return e.a=t,e}function Fpe(e,t){return e.f=t,e}function UVt(e,t){return e.k=t,e}function jpe(e,t){return e.a=t,e}function WVt(e,t){return e.e=t,e}function $pe(e,t){return e.e=t,e}function KVt(e,t){return e.f=t,e}function YVt(e,t){e.b=!0,e.d=t}function XVt(e,t){e.b=new Io(t)}function QVt(e,t,n){t.td(e.a[n])}function ZVt(e,t,n){t.we(e.a[n])}function JVt(e,t){return e.b-t.b}function eUt(e,t){return e.g-t.g}function tUt(e,t){return e.s-t.s}function nUt(e,t){return e?0:t-1}function lze(e,t){return e?0:t-1}function rUt(e,t){return e?t-1:0}function iUt(e,t){return t.Yf(e)}function hv(e,t){return e.b=t,e}function gF(e,t){return e.a=t,e}function fv(e,t){return e.c=t,e}function dv(e,t){return e.d=t,e}function gv(e,t){return e.e=t,e}function Hpe(e,t){return e.f=t,e}function AT(e,t){return e.a=t,e}function Yx(e,t){return e.b=t,e}function Xx(e,t){return e.c=t,e}function Wt(e,t){return e.c=t,e}function pn(e,t){return e.b=t,e}function Kt(e,t){return e.d=t,e}function Yt(e,t){return e.e=t,e}function sUt(e,t){return e.f=t,e}function Xt(e,t){return e.g=t,e}function Qt(e,t){return e.a=t,e}function Zt(e,t){return e.i=t,e}function Jt(e,t){return e.j=t,e}function hze(e,t){return e.k=t,e}function aUt(e,t){return e.j=t,e}function oUt(e,t){Xp(),rc(t,e)}function cUt(e,t,n){nZt(e.a,t,n)}function fze(e){LYe.call(this,e)}function zpe(e){LYe.call(this,e)}function pF(e){dne.call(this,e)}function dze(e){_on.call(this,e)}function _p(e){jv.call(this,e)}function gze(e){tre.call(this,e)}function pze(e){tre.call(this,e)}function bze(){W2e.call(this,"")}function Fa(){this.a=0,this.b=0}function vze(){this.b=0,this.a=0}function wze(e,t){e.b=0,Wm(e,t)}function uUt(e,t){e.c=t,e.b=!0}function mze(e,t){return e.c._b(t)}function Qf(e){return e.e&&e.e()}function ote(e){return e?e.d:null}function yze(e,t){return Knt(e.b,t)}function lUt(e){return e?e.g:null}function hUt(e){return e?e.i:null}function Cp(e){return S0(e),e.o}function pv(){pv=pe,F3t=Lln()}function kze(){kze=pe,la=Hhn()}function Qx(){Qx=pe,RAe=Dln()}function xze(){xze=pe,x4t=Mln()}function Gpe(){Gpe=pe,Sc=C1n()}function qpe(){qpe=pe,x2=F8()}function Eze(){throw J(new Fr)}function Tze(){throw J(new Fr)}function _ze(){throw J(new Fr)}function Cze(){throw J(new Fr)}function Sze(){throw J(new Fr)}function Aze(){throw J(new Fr)}function bF(e){this.a=new w6(e)}function Vpe(e){_lt(),Pyn(this,e)}function Sp(e){this.a=new Nne(e)}function D3(e,t){for(;e.ye(t););}function Upe(e,t){for(;e.sd(t););}function I3(e,t){return e.a+=t,e}function cte(e,t){return e.a+=t,e}function vg(e,t){return e.a+=t,e}function bv(e,t){return e.a+=t,e}function LT(e){return Fp(e),e.a}function vF(e){return e.b!=e.d.c}function Lze(e){return e.l|e.m<<22}function Wpe(e,t){return e.d[t.p]}function Mze(e,t){return ppn(e,t)}function Kpe(e,t,n){e.splice(t,n)}function Dze(e){e.c?bct(e):vct(e)}function wF(e){this.a=0,this.b=e}function Ize(){this.a=new fI(X_e)}function Oze(){this.b=new fI(B_e)}function Nze(){this.b=new fI(Fhe)}function Pze(){this.b=new fI(Fhe)}function Bze(){throw J(new Fr)}function Rze(){throw J(new Fr)}function Fze(){throw J(new Fr)}function jze(){throw J(new Fr)}function $ze(){throw J(new Fr)}function Hze(){throw J(new Fr)}function zze(){throw J(new Fr)}function Gze(){throw J(new Fr)}function qze(){throw J(new Fr)}function Vze(){throw J(new Fr)}function fUt(){throw J(new xc)}function dUt(){throw J(new xc)}function lM(e){this.a=new Uze(e)}function Uze(e){Tin(this,e,Thn())}function hM(e){return!e||dYe(e)}function fM(e){return J1[e]!=-1}function gUt(){BG!=0&&(BG=0),RG=-1}function Wze(){lue==null&&(lue=[])}function pUt(e,t){$se(He(e.a),t)}function bUt(e,t){$se(He(e.a),t)}function dM(e,t){H3.call(this,e,t)}function Zx(e,t){dM.call(this,e,t)}function Ype(e,t){this.b=e,this.c=t}function Kze(e,t){this.b=e,this.a=t}function Yze(e,t){this.a=e,this.b=t}function Xze(e,t){this.a=e,this.b=t}function Qze(e,t){this.a=e,this.b=t}function Zze(e,t){this.a=e,this.b=t}function Jze(e,t){this.a=e,this.b=t}function eGe(e,t){this.a=e,this.b=t}function tGe(e,t){this.a=e,this.b=t}function nGe(e,t){this.a=e,this.b=t}function rGe(e,t){this.b=e,this.a=t}function iGe(e,t){this.b=e,this.a=t}function sGe(e,t){this.b=e,this.a=t}function aGe(e,t){this.b=e,this.a=t}function Kr(e,t){this.f=e,this.g=t}function Jx(e,t){this.e=e,this.d=t}function vv(e,t){this.g=e,this.i=t}function ute(e,t){this.a=e,this.b=t}function oGe(e,t){this.a=e,this.f=t}function cGe(e,t){this.b=e,this.c=t}function vUt(e,t){this.a=e,this.b=t}function uGe(e,t){this.a=e,this.b=t}function lte(e,t){this.a=e,this.b=t}function lGe(e){sbe(e.dc()),this.c=e}function mF(e){this.b=u(Nr(e),83)}function hGe(e){this.a=u(Nr(e),83)}function Em(e){this.a=u(Nr(e),15)}function fGe(e){this.a=u(Nr(e),15)}function yF(e){this.b=u(Nr(e),47)}function kF(){this.q=new b.Date}function Ud(){Ud=pe,Y8e=new Et}function e8(){e8=pe,Y7=new rt}function MT(e){return e.f.c+e.g.c}function gM(e,t){return e.b.Hc(t)}function dGe(e,t){return e.b.Ic(t)}function gGe(e,t){return e.b.Qc(t)}function pGe(e,t){return e.b.Hc(t)}function bGe(e,t){return e.c.uc(t)}function _0(e,t){return e.a._b(t)}function vGe(e,t){return Ci(e.c,t)}function wGe(e,t){return Il(e.b,t)}function mGe(e,t){return e>t&&t0}function fte(e,t){return Mc(e,t)<0}function BT(e,t){return e.a.get(t)}function MUt(e,t){return t.split(e)}function FGe(e,t){return Il(e.e,t)}function r2e(e){return Sn(e),!1}function DF(e){mn.call(this,e,21)}function DUt(e,t){pXe.call(this,e,t)}function IF(e,t){Kr.call(this,e,t)}function dte(e,t){Kr.call(this,e,t)}function i2e(e){Wne(),bWe.call(this,e)}function s2e(e,t){mKe(e,e.length,t)}function mM(e,t){KKe(e,e.length,t)}function IUt(e,t,n){t.ud(e.a.Ge(n))}function OUt(e,t,n){t.we(e.a.Fe(n))}function NUt(e,t,n){t.td(e.a.Kb(n))}function PUt(e,t,n){e.Mb(n)&&t.td(n)}function RT(e,t,n){e.splice(t,0,n)}function BUt(e,t){return Vu(e.e,t)}function OF(e,t){this.d=e,this.e=t}function jGe(e,t){this.b=e,this.a=t}function $Ge(e,t){this.b=e,this.a=t}function a2e(e,t){this.b=e,this.a=t}function HGe(e,t){this.a=e,this.b=t}function zGe(e,t){this.a=e,this.b=t}function GGe(e,t){this.a=e,this.b=t}function qGe(e,t){this.a=e,this.b=t}function y6(e,t){this.a=e,this.b=t}function o2e(e,t){this.b=e,this.a=t}function c2e(e,t){this.b=e,this.a=t}function NF(e,t){Kr.call(this,e,t)}function PF(e,t){Kr.call(this,e,t)}function u2e(e,t){Kr.call(this,e,t)}function l2e(e,t){Kr.call(this,e,t)}function O3(e,t){Kr.call(this,e,t)}function gte(e,t){Kr.call(this,e,t)}function pte(e,t){Kr.call(this,e,t)}function bte(e,t){Kr.call(this,e,t)}function BF(e,t){Kr.call(this,e,t)}function h2e(e,t){Kr.call(this,e,t)}function vte(e,t){Kr.call(this,e,t)}function yM(e,t){Kr.call(this,e,t)}function RF(e,t){Kr.call(this,e,t)}function wte(e,t){Kr.call(this,e,t)}function FT(e,t){Kr.call(this,e,t)}function f2e(e,t){Kr.call(this,e,t)}function Cs(e,t){Kr.call(this,e,t)}function FF(e,t){Kr.call(this,e,t)}function VGe(e,t){this.a=e,this.b=t}function UGe(e,t){this.a=e,this.b=t}function WGe(e,t){this.a=e,this.b=t}function KGe(e,t){this.a=e,this.b=t}function YGe(e,t){this.a=e,this.b=t}function XGe(e,t){this.a=e,this.b=t}function QGe(e,t){this.a=e,this.b=t}function ZGe(e,t){this.a=e,this.b=t}function JGe(e,t){this.a=e,this.b=t}function d2e(e,t){this.b=e,this.a=t}function eqe(e,t){this.b=e,this.a=t}function tqe(e,t){this.b=e,this.a=t}function nqe(e,t){this.b=e,this.a=t}function r8(e,t){this.c=e,this.d=t}function rqe(e,t){this.e=e,this.d=t}function iqe(e,t){this.a=e,this.b=t}function sqe(e,t){this.b=t,this.c=e}function jF(e,t){Kr.call(this,e,t)}function kM(e,t){Kr.call(this,e,t)}function mte(e,t){Kr.call(this,e,t)}function jT(e,t){Kr.call(this,e,t)}function g2e(e,t){Kr.call(this,e,t)}function yte(e,t){Kr.call(this,e,t)}function kte(e,t){Kr.call(this,e,t)}function xM(e,t){Kr.call(this,e,t)}function p2e(e,t){Kr.call(this,e,t)}function xte(e,t){Kr.call(this,e,t)}function $T(e,t){Kr.call(this,e,t)}function b2e(e,t){Kr.call(this,e,t)}function HT(e,t){Kr.call(this,e,t)}function zT(e,t){Kr.call(this,e,t)}function _m(e,t){Kr.call(this,e,t)}function Ete(e,t){Kr.call(this,e,t)}function Tte(e,t){Kr.call(this,e,t)}function v2e(e,t){Kr.call(this,e,t)}function GT(e,t){Kr.call(this,e,t)}function _te(e,t){Kr.call(this,e,t)}function $F(e,t){Kr.call(this,e,t)}function EM(e,t){Kr.call(this,e,t)}function TM(e,t){Kr.call(this,e,t)}function k6(e,t){Kr.call(this,e,t)}function Cte(e,t){Kr.call(this,e,t)}function w2e(e,t){Kr.call(this,e,t)}function Ste(e,t){Kr.call(this,e,t)}function Ate(e,t){Kr.call(this,e,t)}function m2e(e,t){Kr.call(this,e,t)}function Lte(e,t){Kr.call(this,e,t)}function Mte(e,t){Kr.call(this,e,t)}function Dte(e,t){Kr.call(this,e,t)}function Ite(e,t){Kr.call(this,e,t)}function y2e(e,t){Kr.call(this,e,t)}function aqe(e,t){this.b=e,this.a=t}function oqe(e,t){this.a=e,this.b=t}function cqe(e,t){this.a=e,this.b=t}function uqe(e,t){this.a=e,this.b=t}function lqe(e,t){this.a=e,this.b=t}function k2e(e,t){Kr.call(this,e,t)}function x2e(e,t){Kr.call(this,e,t)}function hqe(e,t){this.b=e,this.d=t}function E2e(e,t){Kr.call(this,e,t)}function T2e(e,t){Kr.call(this,e,t)}function fqe(e,t){this.a=e,this.b=t}function dqe(e,t){this.a=e,this.b=t}function HF(e,t){Kr.call(this,e,t)}function qT(e,t){Kr.call(this,e,t)}function _2e(e,t){Kr.call(this,e,t)}function C2e(e,t){Kr.call(this,e,t)}function S2e(e,t){Kr.call(this,e,t)}function Ote(e,t){Kr.call(this,e,t)}function A2e(e,t){Kr.call(this,e,t)}function Nte(e,t){Kr.call(this,e,t)}function zF(e,t){Kr.call(this,e,t)}function Pte(e,t){Kr.call(this,e,t)}function Bte(e,t){Kr.call(this,e,t)}function _M(e,t){Kr.call(this,e,t)}function Rte(e,t){Kr.call(this,e,t)}function L2e(e,t){Kr.call(this,e,t)}function CM(e,t){Kr.call(this,e,t)}function M2e(e,t){Kr.call(this,e,t)}function RUt(e,t){return Vu(e.c,t)}function FUt(e,t){return Vu(t.b,e)}function jUt(e,t){return-e.b.Je(t)}function D2e(e,t){return Vu(e.g,t)}function SM(e,t){Kr.call(this,e,t)}function x6(e,t){Kr.call(this,e,t)}function gqe(e,t){this.a=e,this.b=t}function pqe(e,t){this.a=e,this.b=t}function Pt(e,t){this.a=e,this.b=t}function VT(e,t){Kr.call(this,e,t)}function UT(e,t){Kr.call(this,e,t)}function AM(e,t){Kr.call(this,e,t)}function Fte(e,t){Kr.call(this,e,t)}function GF(e,t){Kr.call(this,e,t)}function WT(e,t){Kr.call(this,e,t)}function jte(e,t){Kr.call(this,e,t)}function qF(e,t){Kr.call(this,e,t)}function N3(e,t){Kr.call(this,e,t)}function LM(e,t){Kr.call(this,e,t)}function KT(e,t){Kr.call(this,e,t)}function YT(e,t){Kr.call(this,e,t)}function MM(e,t){Kr.call(this,e,t)}function VF(e,t){Kr.call(this,e,t)}function P3(e,t){Kr.call(this,e,t)}function UF(e,t){Kr.call(this,e,t)}function bqe(e,t){this.a=e,this.b=t}function vqe(e,t){this.a=e,this.b=t}function wqe(e,t){this.a=e,this.b=t}function mqe(e,t){this.a=e,this.b=t}function yqe(e,t){this.a=e,this.b=t}function kqe(e,t){this.a=e,this.b=t}function xa(e,t){this.a=e,this.b=t}function WF(e,t){Kr.call(this,e,t)}function xqe(e,t){this.a=e,this.b=t}function Eqe(e,t){this.a=e,this.b=t}function Tqe(e,t){this.a=e,this.b=t}function _qe(e,t){this.a=e,this.b=t}function Cqe(e,t){this.a=e,this.b=t}function Sqe(e,t){this.a=e,this.b=t}function Aqe(e,t){this.b=e,this.a=t}function Lqe(e,t){this.b=e,this.a=t}function Mqe(e,t){this.b=e,this.a=t}function Dqe(e,t){this.b=e,this.a=t}function Iqe(e,t){this.a=e,this.b=t}function Oqe(e,t){this.a=e,this.b=t}function $Ut(e,t){bgn(e.a,u(t,56))}function Nqe(e,t){Arn(e.a,u(t,11))}function HUt(e,t){return h8(),t!=e}function Pqe(){return aze(),new $0t}function Bqe(){fre(),this.b=new Ys}function Rqe(){az(),this.a=new Ys}function Fqe(){Ewe(),Ive.call(this)}function E6(e,t){Kr.call(this,e,t)}function jqe(e,t){this.a=e,this.b=t}function $qe(e,t){this.a=e,this.b=t}function KF(e,t){this.a=e,this.b=t}function Hqe(e,t){this.a=e,this.b=t}function zqe(e,t){this.a=e,this.b=t}function Gqe(e,t){this.a=e,this.b=t}function qqe(e,t){this.d=e,this.b=t}function I2e(e,t){this.d=e,this.e=t}function Vqe(e,t){this.f=e,this.c=t}function DM(e,t){this.b=e,this.c=t}function O2e(e,t){this.i=e,this.g=t}function Uqe(e,t){this.e=e,this.a=t}function Wqe(e,t){this.a=e,this.b=t}function N2e(e,t){e.i=null,X$(e,t)}function zUt(e,t){e&&Si(oN,e,t)}function Kqe(e,t){return qie(e.a,t)}function YF(e){return qD(e.c,e.b)}function hc(e){return e?e.dd():null}function je(e){return e??null}function Cm(e){return typeof e===sk}function Sm(e){return typeof e===d6e}function fa(e){return typeof e===Mae}function Mp(e,t){return e.Hd().Xb(t)}function XF(e,t){return isn(e.Kc(),t)}function mv(e,t){return Mc(e,t)==0}function GUt(e,t){return Mc(e,t)>=0}function XT(e,t){return Mc(e,t)!=0}function qUt(e){return""+(Sn(e),e)}function IM(e,t){return e.substr(t)}function Yqe(e){return bl(e),e.d.gc()}function $te(e){return $dn(e,e.c),e}function QF(e){return u_(e==null),e}function QT(e,t){return e.a+=""+t,e}function To(e,t){return e.a+=""+t,e}function ZT(e,t){return e.a+=""+t,e}function Ec(e,t){return e.a+=""+t,e}function Yr(e,t){return e.a+=""+t,e}function P2e(e,t){return e.a+=""+t,e}function Xqe(e,t){ks(e,t,e.a,e.a.a)}function q2(e,t){ks(e,t,e.c.b,e.c)}function VUt(e,t,n){ost(t,Ose(e,n))}function UUt(e,t,n){ost(t,Ose(e,n))}function WUt(e,t){jrn(new rr(e),t)}function Qqe(e,t){e.q.setTime(Bv(t))}function Zqe(e,t){Hve.call(this,e,t)}function Jqe(e,t){Hve.call(this,e,t)}function Hte(e,t){Hve.call(this,e,t)}function eVe(e){sl(this),P_(this,e)}function B2e(e){return xn(e,0),null}function Zf(e){return e.a=0,e.b=0,e}function tVe(e,t){return e.a=t.g+1,e}function KUt(e,t){return e.j[t.p]==2}function R2e(e){return MZt(u(e,79))}function nVe(){nVe=pe,Ngt=Qr(Xie())}function rVe(){rVe=pe,Qpt=Qr(Hot())}function iVe(){this.b=new w6(qm(12))}function sVe(){this.b=0,this.a=!1}function aVe(){this.b=0,this.a=!1}function JT(e){this.a=e,nT.call(this)}function oVe(e){this.a=e,nT.call(this)}function dn(e,t){zs.call(this,e,t)}function zte(e,t){Im.call(this,e,t)}function B3(e,t){O2e.call(this,e,t)}function Gte(e,t){G8.call(this,e,t)}function cVe(e,t){OM.call(this,e,t)}function ui(e,t){LF(),Si(QV,e,t)}function qte(e,t){return jl(e.a,0,t)}function uVe(e,t){return e.a.a.a.cc(t)}function lVe(e,t){return je(e)===je(t)}function YUt(e,t){return Fs(e.a,t.a)}function XUt(e,t){return Tu(e.a,t.a)}function QUt(e,t){return VKe(e.a,t.a)}function pd(e,t){return e.indexOf(t)}function yv(e,t){return e==t?0:e?1:-1}function ZF(e){return e<10?"0"+e:""+e}function ZUt(e){return Nr(e),new JT(e)}function hVe(e){return fu(e.l,e.m,e.h)}function i8(e){return _s((Sn(e),e))}function JUt(e){return _s((Sn(e),e))}function fVe(e,t){return Tu(e.g,t.g)}function Ko(e){return typeof e===d6e}function eWt(e){return e==vw||e==_y}function tWt(e){return e==vw||e==Ty}function F2e(e){return Yo(e.b.b,e,0)}function dVe(e){this.a=Pqe(),this.b=e}function gVe(e){this.a=Pqe(),this.b=e}function nWt(e,t){return it(e.a,t),t}function rWt(e,t){return it(e.c,t),e}function pVe(e,t){return Vl(e.a,t),e}function iWt(e,t){return mf(),t.a+=e}function sWt(e,t){return mf(),t.a+=e}function aWt(e,t){return mf(),t.c+=e}function j2e(e,t){L8(e,0,e.length,t)}function C0(){be.call(this,new Z2)}function bVe(){Dj.call(this,0,0,0,0)}function T6(){fh.call(this,0,0,0,0)}function Io(e){this.a=e.a,this.b=e.b}function Dp(e){return e==Xh||e==Df}function s8(e){return e==X0||e==Y0}function vVe(e){return e==K4||e==W4}function R3(e){return e!=X1&&e!=w2}function Ll(e){return e.Lg()&&e.Mg()}function wVe(e){return Wj(u(e,118))}function JF(e){return Vl(new Xs,e)}function mVe(e,t){return new G8(t,e)}function oWt(e,t){return new G8(t,e)}function $2e(e,t,n){z$(e,t),G$(e,n)}function ej(e,t,n){zv(e,t),Hv(e,n)}function C1(e,t,n){Du(e,t),Iu(e,n)}function tj(e,t,n){O8(e,t),P8(e,n)}function nj(e,t,n){N8(e,t),B8(e,n)}function Vte(e,t){Y8(e,t),R8(e,e.D)}function H2e(e){Vqe.call(this,e,!0)}function yVe(e,t,n){Mbe.call(this,e,t,n)}function Ip(e){Qp(),csn.call(this,e)}function kVe(){IF.call(this,"Head",1)}function xVe(){IF.call(this,"Tail",3)}function Ute(e){e.c=Me(Yn,yt,1,0,5,1)}function EVe(e){e.a=Me(Yn,yt,1,8,5,1)}function TVe(e){Mu(e.xf(),new hr(e))}function F3(e){return e!=null?Xi(e):0}function cWt(e,t){return Vm(t,L1(e))}function uWt(e,t){return Vm(t,L1(e))}function lWt(e,t){return e[e.length]=t}function hWt(e,t){return e[e.length]=t}function z2e(e){return lQt(e.b.Kc(),e.a)}function fWt(e,t){return Y$(Vne(e.d),t)}function dWt(e,t){return Y$(Vne(e.g),t)}function gWt(e,t){return Y$(Vne(e.j),t)}function fo(e,t){zs.call(this,e.b,t)}function kv(e){Dj.call(this,e,e,e,e)}function G2e(e){return e.b&&dae(e),e.a}function q2e(e){return e.b&&dae(e),e.c}function pWt(e,t){V1||(e.b=t)}function Wte(e,t,n){return cs(e,t,n),n}function _Ve(e,t,n){cs(e.c[t.g],t.g,n)}function bWt(e,t,n){u(e.c,69).Xh(t,n)}function vWt(e,t,n){C1(n,n.i+e,n.j+t)}function wWt(e,t){Br(jc(e.a),jXe(t))}function mWt(e,t){Br(gl(e.a),$Xe(t))}function e_(e){yi(),cv.call(this,e)}function yWt(e){return e==null?0:Xi(e)}function CVe(){CVe=pe,vhe=new V_(ffe)}function jr(){jr=pe,new SVe,new st}function SVe(){new Mr,new Mr,new Mr}function V2e(){V2e=pe,upe(),P8e=new Mr}function S1(){S1=pe,b.Math.log(2)}function lh(){lh=pe,b0=(OGe(),q3t)}function kWt(){throw J(new pg(p0t))}function xWt(){throw J(new pg(p0t))}function EWt(){throw J(new pg(b0t))}function TWt(){throw J(new pg(b0t))}function AVe(e){this.a=e,uve.call(this,e)}function Kte(e){this.a=e,mF.call(this,e)}function Yte(e){this.a=e,mF.call(this,e)}function aa(e,t){Cne(e.c,e.c.length,t)}function nc(e){return e.at?1:0}function MVe(e,t){return Mc(e,t)>0?e:t}function fu(e,t,n){return{l:e,m:t,h:n}}function _Wt(e,t){e.a!=null&&Nqe(t,e.a)}function DVe(e){e.a=new wt,e.c=new wt}function rj(e){this.b=e,this.a=new st}function IVe(e){this.b=new ug,this.a=e}function W2e(e){jbe.call(this),this.a=e}function OVe(){IF.call(this,"Range",2)}function NVe(){H3e(),this.a=new fI(uEe)}function CWt(e,t){Nr(t),G3(e).Jc(new ce)}function SWt(e,t){return $l(),t.n.b+=e}function AWt(e,t,n){return Si(e.g,n,t)}function LWt(e,t,n){return Si(e.k,n,t)}function MWt(e,t){return Si(e.a,t.a,t)}function j3(e,t,n){return o3e(t,n,e.c)}function K2e(e){return new Pt(e.c,e.d)}function DWt(e){return new Pt(e.c,e.d)}function fc(e){return new Pt(e.a,e.b)}function PVe(e,t){return emn(e.a,t,null)}function IWt(e){Va(e,null),ba(e,null)}function BVe(e){gre(e,null),pre(e,null)}function RVe(){OM.call(this,null,null)}function FVe(){hj.call(this,null,null)}function Y2e(e){this.a=e,Mr.call(this)}function OWt(e){this.b=(hn(),new H(e))}function ij(e){e.j=Me(K8e,Qe,310,0,0,1)}function NWt(e,t,n){e.c.Vc(t,u(n,133))}function PWt(e,t,n){e.c.ji(t,u(n,133))}function jVe(e,t){_r(e),e.Gc(u(t,15))}function t_(e,t){return bwn(e.c,e.b,t)}function BWt(e,t){return new oUe(e.Kc(),t)}function Xte(e,t){return Psn(e.Kc(),t)!=-1}function X2e(e,t){return e.a.Bc(t)!=null}function sj(e){return e.Ob()?e.Pb():null}function $Ve(e){return jh(e,0,e.length)}function we(e,t){return e!=null&&ese(e,t)}function RWt(e,t){e.q.setHours(t),lC(e,t)}function HVe(e,t){e.c&&(yve(t),dXe(t))}function FWt(e,t,n){u(e.Kb(n),164).Nb(t)}function jWt(e,t,n){return Wwn(e,t,n),n}function zVe(e,t,n){e.a=t^1502,e.b=n^uoe}function Qte(e,t,n){return e.a[t.g][n.g]}function A1(e,t){return e.a[t.c.p][t.p]}function $Wt(e,t){return e.e[t.c.p][t.p]}function HWt(e,t){return e.c[t.c.p][t.p]}function zWt(e,t){return e.j[t.p]=Q0n(t)}function GWt(e,t){return Jwe(e.f,t.tg())}function qWt(e,t){return Jwe(e.b,t.tg())}function VWt(e,t){return e.a0?t*t/e:t*t*100}function bKt(e,t){return e>0?t/(e*e):t*100}function vKt(e,t,n){return it(t,drt(e,n))}function wKt(e,t,n){A$(),e.Xe(t)&&n.td(e)}function c8(e,t,n){var r;r=e.Zc(t),r.Rb(n)}function Lm(e,t,n){return e.a+=t,e.b+=n,e}function mKt(e,t,n){return e.a*=t,e.b*=n,e}function BM(e,t,n){return e.a-=t,e.b-=n,e}function ybe(e,t){return e.a=t.a,e.b=t.b,e}function gj(e){return e.a=-e.a,e.b=-e.b,e}function mUe(e){this.c=e,this.a=1,this.b=1}function yUe(e){this.c=e,Du(e,0),Iu(e,0)}function kUe(e){as.call(this),D_(this,e)}function xUe(e){Aae(),W$e(this),this.mf(e)}function EUe(e,t){PT(),OM.call(this,e,t)}function kbe(e,t){wg(),hj.call(this,e,t)}function TUe(e,t){wg(),hj.call(this,e,t)}function _Ue(e,t){wg(),kbe.call(this,e,t)}function Ml(e,t,n){Nl.call(this,e,t,n,2)}function ine(e,t){lh(),Mj.call(this,e,t)}function CUe(e,t){lh(),ine.call(this,e,t)}function xbe(e,t){lh(),ine.call(this,e,t)}function SUe(e,t){lh(),xbe.call(this,e,t)}function Ebe(e,t){lh(),Mj.call(this,e,t)}function AUe(e,t){lh(),Ebe.call(this,e,t)}function LUe(e,t){lh(),Mj.call(this,e,t)}function yKt(e,t){return e.c.Fc(u(t,133))}function Tbe(e,t,n){return wz(wD(e,t),n)}function kKt(e,t,n){return t.Qk(e.e,e.c,n)}function xKt(e,t,n){return t.Rk(e.e,e.c,n)}function sne(e,t){return Up(e.e,u(t,49))}function EKt(e,t,n){G_(gl(e.a),t,$Xe(n))}function TKt(e,t,n){G_(jc(e.a),t,jXe(n))}function _be(e,t){t.$modCount=e.$modCount}function a_(){a_=pe,MS=new Zi("root")}function u8(){u8=pe,uN=new _He,new CHe}function MUe(){this.a=new Nv,this.b=new Nv}function Cbe(){Qet.call(this),this.Bb|=so}function DUe(){Kr.call(this,"GROW_TREE",0)}function _Kt(e){return e==null?null:Gmn(e)}function CKt(e){return e==null?null:Qfn(e)}function SKt(e){return e==null?null:Qo(e)}function AKt(e){return e==null?null:Qo(e)}function S0(e){e.o==null&&_0n(e)}function Mt(e){return u_(e==null||Cm(e)),e}function ft(e){return u_(e==null||Sm(e)),e}function Hr(e){return u_(e==null||fa(e)),e}function Sbe(e){this.q=new b.Date(Bv(e))}function RM(e,t){this.c=e,Jx.call(this,e,t)}function pj(e,t){this.a=e,RM.call(this,e,t)}function LKt(e,t){this.d=e,Lee(this),this.b=t}function Abe(e,t){Bre.call(this,e),this.a=t}function Lbe(e,t){Bre.call(this,e),this.a=t}function MKt(e){n3e.call(this,0,0),this.f=e}function Mbe(e,t,n){C$.call(this,e,t,n,null)}function IUe(e,t,n){C$.call(this,e,t,n,null)}function DKt(e,t,n){return e.ue(t,n)<=0?n:t}function IKt(e,t,n){return e.ue(t,n)<=0?t:n}function OKt(e,t){return u(Fv(e.b,t),149)}function NKt(e,t){return u(Fv(e.c,t),229)}function ane(e){return u(St(e.a,e.b),287)}function OUe(e){return new Pt(e.c,e.d+e.a)}function NUe(e){return $l(),vVe(u(e,197))}function Mm(){Mm=pe,F7e=rn((Bl(),Hb))}function PKt(e,t){t.a?ypn(e,t):Zte(e.a,t.b)}function PUe(e,t){V1||it(e.a,t)}function BKt(e,t){return bM(),z8(t.d.i,e)}function RKt(e,t){return U6(),new jct(t,e)}function vd(e,t){return JM(t,O6e),e.f=t,e}function Dbe(e,t,n){return n=Kl(e,t,3,n),n}function Ibe(e,t,n){return n=Kl(e,t,6,n),n}function Obe(e,t,n){return n=Kl(e,t,9,n),n}function FM(e,t,n){++e.j,e.Ki(),Nre(e,t,n)}function BUe(e,t,n){++e.j,e.Hi(t,e.oi(t,n))}function RUe(e,t,n){var r;r=e.Zc(t),r.Rb(n)}function FUe(e,t,n){return W5e(e.c,e.b,t,n)}function Nbe(e,t){return(t&Ei)%e.d.length}function zs(e,t){Zi.call(this,e),this.a=t}function Pbe(e,t){npe.call(this,e),this.a=t}function one(e,t){npe.call(this,e),this.a=t}function jUe(e,t){this.c=e,jv.call(this,t)}function $Ue(e,t){this.a=e,H$e.call(this,t)}function jM(e,t){this.a=e,H$e.call(this,t)}function HUe(e){this.a=(ql(e,fy),new su(e))}function zUe(e){this.a=(ql(e,fy),new su(e))}function $M(e){return!e.a&&(e.a=new se),e.a}function GUe(e){return e>8?0:e+1}function FKt(e,t){return Mn(),e==t?0:e?1:-1}function Bbe(e,t,n){return M6(e,u(t,22),n)}function jKt(e,t,n){return e.apply(t,n)}function qUe(e,t,n){return e.a+=jh(t,0,n),e}function Rbe(e,t){var n;return n=e.e,e.e=t,n}function $Kt(e,t){var n;n=e[coe],n.call(e,t)}function HKt(e,t){var n;n=e[coe],n.call(e,t)}function Dm(e,t){e.a.Vc(e.b,t),++e.b,e.c=-1}function VUe(e){sl(e.e),e.d.b=e.d,e.d.a=e.d}function HM(e){e.b?HM(e.b):e.f.c.zc(e.e,e.d)}function zKt(e,t,n){G2(),bee(e,t.Ce(e.a,n))}function GKt(e,t){return ote(Lrt(e.a,t,!0))}function qKt(e,t){return ote(Mrt(e.a,t,!0))}function wf(e,t){return dF(new Array(t),e)}function cne(e){return String.fromCharCode(e)}function VKt(e){return e==null?null:e.message}function UUe(){this.a=new st,this.b=new st}function WUe(){this.a=new m9,this.b=new nHe}function KUe(){this.b=new Fa,this.c=new st}function Fbe(){this.d=new Fa,this.e=new Fa}function jbe(){this.n=new Fa,this.o=new Fa}function bj(){this.n=new g6,this.i=new T6}function YUe(){this.a=new FJ,this.b=new $X}function XUe(){this.a=new st,this.d=new st}function QUe(){this.b=new Ys,this.a=new Ys}function ZUe(){this.b=new Mr,this.a=new Mr}function JUe(){this.b=new Oze,this.a=new OQ}function eWe(){bj.call(this),this.a=new Fa}function o_(e){bsn.call(this,e,(M$(),_ue))}function $be(e,t,n,r){Dj.call(this,e,t,n,r)}function UKt(e,t,n){n!=null&&W$(t,hse(e,n))}function WKt(e,t,n){n!=null&&K$(t,hse(e,n))}function Hbe(e,t,n){return n=Kl(e,t,11,n),n}function Ni(e,t){return e.a+=t.a,e.b+=t.b,e}function da(e,t){return e.a-=t.a,e.b-=t.b,e}function KKt(e,t){return e.n.a=(Sn(t),t+10)}function YKt(e,t){return e.n.a=(Sn(t),t+10)}function XKt(e,t){return t==e||u7(rz(t),e)}function tWe(e,t){return Si(e.a,t,"")==null}function QKt(e,t){return bM(),!z8(t.d.i,e)}function ZKt(e,t){Dp(e.f)?p0n(e,t):Jhn(e,t)}function JKt(e,t){var n;return n=t.Hh(e.a),n}function Im(e,t){Do.call(this,$C+e+Eb+t)}function S6(e,t,n,r){at.call(this,e,t,n,r)}function zbe(e,t,n,r){at.call(this,e,t,n,r)}function nWe(e,t,n,r){zbe.call(this,e,t,n,r)}function rWe(e,t,n,r){Hj.call(this,e,t,n,r)}function une(e,t,n,r){Hj.call(this,e,t,n,r)}function Gbe(e,t,n,r){Hj.call(this,e,t,n,r)}function iWe(e,t,n,r){une.call(this,e,t,n,r)}function qbe(e,t,n,r){une.call(this,e,t,n,r)}function wn(e,t,n,r){Gbe.call(this,e,t,n,r)}function sWe(e,t,n,r){qbe.call(this,e,t,n,r)}function aWe(e,t,n,r){zve.call(this,e,t,n,r)}function oWe(e,t,n){this.a=e,bbe.call(this,t,n)}function cWe(e,t,n){this.c=t,this.b=n,this.a=e}function eYt(e,t,n){return e.d=u(t.Kb(n),164)}function Vbe(e,t){return e.Aj().Nh().Kh(e,t)}function Ube(e,t){return e.Aj().Nh().Ih(e,t)}function uWe(e,t){return Sn(e),je(e)===je(t)}function an(e,t){return Sn(e),je(e)===je(t)}function lne(e,t){return ote(Lrt(e.a,t,!1))}function hne(e,t){return ote(Mrt(e.a,t,!1))}function tYt(e,t){return e.b.sd(new zGe(e,t))}function nYt(e,t){return e.b.sd(new GGe(e,t))}function lWe(e,t){return e.b.sd(new qGe(e,t))}function Wbe(e,t,n){return e.lastIndexOf(t,n)}function rYt(e,t,n){return Fs(e[t.b],e[n.b])}function iYt(e,t){return Ye(t,(pt(),_O),e)}function sYt(e,t){return Tu(t.a.d.p,e.a.d.p)}function aYt(e,t){return Tu(e.a.d.p,t.a.d.p)}function oYt(e,t){return Fs(e.c-e.s,t.c-t.s)}function hWe(e){return e.c?Yo(e.c.a,e,0):-1}function cYt(e){return e<100?null:new _p(e)}function A6(e){return e==$b||e==p0||e==tu}function fWe(e,t){return we(t,15)&&yct(e.c,t)}function uYt(e,t){V1||t&&(e.d=t)}function fne(e,t){var n;return n=t,!!bye(e,n)}function Kbe(e,t){this.c=e,jne.call(this,e,t)}function dWe(e){this.c=e,Hte.call(this,Cz,0)}function gWe(e,t){gQt.call(this,e,e.length,t)}function lYt(e,t,n){return u(e.c,69).lk(t,n)}function vj(e,t,n){return u(e.c,69).mk(t,n)}function hYt(e,t,n){return kKt(e,u(t,332),n)}function Ybe(e,t,n){return xKt(e,u(t,332),n)}function fYt(e,t,n){return gst(e,u(t,332),n)}function pWe(e,t,n){return lfn(e,u(t,332),n)}function c_(e,t){return t==null?null:Ym(e.b,t)}function Xbe(e){return Sm(e)?(Sn(e),e):e.ke()}function wj(e){return!isNaN(e)&&!isFinite(e)}function bWe(e){wd(),this.a=(hn(),new Kx(e))}function zM(e){h8(),this.d=e,this.a=new L3}function hh(e,t,n){this.a=e,this.b=t,this.c=n}function vWe(e,t,n){this.a=e,this.b=t,this.c=n}function wWe(e,t,n){this.d=e,this.b=n,this.a=t}function dne(e){DVe(this),Rh(this),no(this,e)}function Uu(e){Ute(this),hve(this.c,0,e.Pc())}function mWe(e){Ol(e.a),bJe(e.c,e.b),e.b=null}function yWe(e){this.a=e,Ud(),Ou(Date.now())}function kWe(){kWe=pe,p7e=new S,qG=new S}function gne(){gne=pe,a7e=new jt,H0t=new At}function xWe(){xWe=pe,Y3t=Me(Yn,yt,1,0,5,1)}function EWe(){EWe=pe,d4t=Me(Yn,yt,1,0,5,1)}function Qbe(){Qbe=pe,g4t=Me(Yn,yt,1,0,5,1)}function wd(){wd=pe,new spe((hn(),hn(),bo))}function dYt(e){return M$(),Xr((SJe(),q0t),e)}function gYt(e){return F1(),Xr((UZe(),X0t),e)}function pYt(e){return LH(),Xr((JQe(),ngt),e)}function bYt(e){return P$(),Xr((eZe(),rgt),e)}function vYt(e){return uz(),Xr((ztt(),igt),e)}function wYt(e){return n1(),Xr((GZe(),ogt),e)}function mYt(e){return al(),Xr((qZe(),ugt),e)}function yYt(e){return Lu(),Xr((VZe(),hgt),e)}function kYt(e){return Tz(),Xr((nVe(),Ngt),e)}function xYt(e){return Vv(),Xr((LJe(),Bgt),e)}function EYt(e){return Z6(),Xr((MJe(),Fgt),e)}function TYt(e){return Y_(),Xr((DJe(),Hgt),e)}function _Yt(e){return EF(),Xr((DQe(),zgt),e)}function CYt(e){return B$(),Xr((tZe(),spt),e)}function SYt(e){return L_(),Xr((WZe(),Cpt),e)}function AYt(e){return ro(),Xr((oet(),Mpt),e)}function LYt(e){return V8(),Xr((AJe(),Ppt),e)}function MYt(e){return Uv(),Xr((KZe(),Hpt),e)}function Zbe(e,t){if(!e)throw J(new Ln(t))}function DYt(e){return zn(),Xr((Met(),Vpt),e)}function Jbe(e){Dj.call(this,e.d,e.c,e.a,e.b)}function pne(e){Dj.call(this,e.d,e.c,e.a,e.b)}function eve(e,t,n){this.b=e,this.c=t,this.a=n}function mj(e,t,n){this.b=e,this.a=t,this.c=n}function TWe(e,t,n){this.a=e,this.b=t,this.c=n}function tve(e,t,n){this.a=e,this.b=t,this.c=n}function _We(e,t,n){this.a=e,this.b=t,this.c=n}function nve(e,t,n){this.a=e,this.b=t,this.c=n}function CWe(e,t,n){this.b=e,this.a=t,this.c=n}function yj(e,t,n){this.e=t,this.b=e,this.d=n}function IYt(e,t,n){return G2(),e.a.Od(t,n),t}function bne(e){var t;return t=new jn,t.e=e,t}function rve(e){var t;return t=new uHe,t.b=e,t}function GM(){GM=pe,rq=new _Y,iq=new CY}function mf(){mf=pe,s2t=new pX,a2t=new pB}function OYt(e){return cH(),Xr((OJe(),e2t),e)}function NYt(e){return R1(),Xr((PJe(),u2t),e)}function PYt(e){return oz(),Xr((Dtt(),v2t),e)}function BYt(e){return ek(),Xr((Oet(),w2t),e)}function RYt(e){return S$(),Xr((oZe(),m2t),e)}function FYt(e){return V6(),Xr((YZe(),y2t),e)}function jYt(e){return c4(),Xr((net(),h2t),e)}function $Yt(e){return qv(),Xr((ZZe(),b2t),e)}function HYt(e){return V$(),Xr((XZe(),k2t),e)}function zYt(e){return db(),Xr((eet(),x2t),e)}function GYt(e){return ED(),Xr((rZe(),E2t),e)}function qYt(e){return sb(),Xr((QZe(),_2t),e)}function VYt(e){return QH(),Xr((Ret(),C2t),e)}function UYt(e){return pD(),Xr((iZe(),S2t),e)}function WYt(e){return tI(),Xr((Pet(),A2t),e)}function KYt(e){return h7(),Xr((Net(),L2t),e)}function YYt(e){return mo(),Xr((rnt(),M2t),e)}function XYt(e){return q8(),Xr((eJe(),D2t),e)}function QYt(e){return P0(),Xr((JZe(),O2t),e)}function ZYt(e){return b$(),Xr((cZe(),N2t),e)}function JYt(e){return mh(),Xr((ret(),P2t),e)}function eXt(e){return WH(),Xr((Bet(),Xvt),e)}function tXt(e){return j_(),Xr((tJe(),Qvt),e)}function nXt(e){return Zm(),Xr((BJe(),Zvt),e)}function rXt(e){return vo(),Xr((iJe(),iwt),e)}function iXt(e){return f4(),Xr((Mtt(),ewt),e)}function sXt(e){return R0(),Xr((rJe(),twt),e)}function aXt(e){return mD(),Xr((aZe(),nwt),e)}function oXt(e){return iH(),Xr((nJe(),swt),e)}function cXt(e){return X_(),Xr((tet(),Jvt),e)}function uXt(e){return uD(),Xr((sZe(),awt),e)}function lXt(e){return Q8(),Xr((aJe(),owt),e)}function hXt(e){return nH(),Xr((oJe(),cwt),e)}function fXt(e){return uH(),Xr((sJe(),uwt),e)}function dXt(e){return Gv(),Xr((cJe(),xwt),e)}function gXt(e){return S_(),Xr((lZe(),Swt),e)}function pXt(e){return yd(),Xr((hZe(),Nwt),e)}function bXt(e){return M1(),Xr((fZe(),Bwt),e)}function vXt(e){return Jf(),Xr((uZe(),Qwt),e)}function wXt(e){return Ov(),Xr((dZe(),imt),e)}function mXt(e){return a7(),Xr((IJe(),smt),e)}function yXt(e){return nC(),Xr((Fet(),omt),e)}function kXt(e){return c$(),Xr((bZe(),kmt),e)}function xXt(e){return J$(),Xr((pZe(),Smt),e)}function EXt(e){return f$(),Xr((gZe(),xmt),e)}function TXt(e){return yH(),Xr((uJe(),Lmt),e)}function _Xt(e){return L$(),Xr((vZe(),Mmt),e)}function CXt(e){return RD(),Xr((lJe(),Dmt),e)}function SXt(e){return jH(),Xr((NJe(),Umt),e)}function AXt(e){return rH(),Xr((fJe(),Wmt),e)}function LXt(e){return mH(),Xr((hJe(),Kmt),e)}function MXt(e){return v7(),Xr((aet(),gyt),e)}function DXt(e){return GD(),Xr((dJe(),pyt),e)}function IXt(e){return _F(),Xr((LQe(),byt),e)}function OXt(e){return CF(),Xr((AQe(),wyt),e)}function NXt(e){return lD(),Xr((mZe(),myt),e)}function PXt(e){return rI(),Xr((iet(),yyt),e)}function BXt(e){return OT(),Xr((MQe(),Byt),e)}function RXt(e){return OD(),Xr((wZe(),Ryt),e)}function FXt(e){return i1(),Xr((set(),Gyt),e)}function jXt(e){return Ng(),Xr((Itt(),Vyt),e)}function $Xt(e){return t0(),Xr((Iet(),Uyt),e)}function HXt(e){return ty(),Xr((Det(),Zyt),e)}function zXt(e){return po(),Xr((rVe(),Qpt),e)}function GXt(e){return j8(),Xr((nZe(),Xpt),e)}function qXt(e){return wo(),Xr((cet(),d3t),e)}function VXt(e){return P1(),Xr((pJe(),g3t),e)}function UXt(e){return $0(),Xr((jJe(),p3t),e)}function WXt(e){return YH(),Xr(($et(),b3t),e)}function KXt(e){return F0(),Xr((gJe(),w3t),e)}function YXt(e){return Ul(),Xr((FJe(),y3t),e)}function XXt(e){return sy(),Xr((Htt(),k3t),e)}function QXt(e){return n4(),Xr((uet(),x3t),e)}function ZXt(e){return wa(),Xr((_et(),E3t),e)}function JXt(e){return ol(),Xr((jet(),T3t),e)}function eQt(e){return Bl(),Xr((HJe(),M3t),e)}function tQt(e){return wl(),Xr((int(),D3t),e)}function nQt(e){return ht(),Xr((het(),_3t),e)}function rQt(e){return EH(),Xr(($Je(),I3t),e)}function iQt(e){return Pl(),Xr((RJe(),P3t),e)}function sQt(e){return g7(),Xr((Ott(),K3t),e)}function aQt(e,t){return Sn(e),e+(Sn(t),t)}function oQt(e,t){return Ud(),Br(He(e.a),t)}function cQt(e,t){return Ud(),Br(He(e.a),t)}function vne(e,t){this.c=e,this.a=t,this.b=t-e}function SWe(e,t,n){this.a=e,this.b=t,this.c=n}function ive(e,t,n){this.a=e,this.b=t,this.c=n}function sve(e,t,n){this.a=e,this.b=t,this.c=n}function AWe(e,t,n){this.a=e,this.b=t,this.c=n}function LWe(e,t,n){this.a=e,this.b=t,this.c=n}function yg(e,t,n){this.e=e,this.a=t,this.c=n}function MWe(e,t,n){lh(),vwe.call(this,e,t,n)}function wne(e,t,n){lh(),twe.call(this,e,t,n)}function ave(e,t,n){lh(),twe.call(this,e,t,n)}function ove(e,t,n){lh(),twe.call(this,e,t,n)}function DWe(e,t,n){lh(),wne.call(this,e,t,n)}function cve(e,t,n){lh(),wne.call(this,e,t,n)}function IWe(e,t,n){lh(),cve.call(this,e,t,n)}function OWe(e,t,n){lh(),ave.call(this,e,t,n)}function NWe(e,t,n){lh(),ove.call(this,e,t,n)}function qM(e,t){return Nr(e),Nr(t),new tGe(e,t)}function L6(e,t){return Nr(e),Nr(t),new WWe(e,t)}function uQt(e,t){return Nr(e),Nr(t),new KWe(e,t)}function lQt(e,t){return Nr(e),Nr(t),new rGe(e,t)}function u(e,t){return u_(e==null||ese(e,t)),e}function l8(e){var t;return t=new st,Wre(t,e),t}function hQt(e){var t;return t=new Ys,Wre(t,e),t}function PWe(e){var t;return t=new gpe,oie(t,e),t}function VM(e){var t;return t=new as,oie(t,e),t}function fQt(e){return!e.e&&(e.e=new st),e.e}function dQt(e){return!e.c&&(e.c=new gm),e.c}function it(e,t){return e.c[e.c.length]=t,!0}function BWe(e,t){this.c=e,this.b=t,this.a=!1}function uve(e){this.d=e,Lee(this),this.b=sZt(e.d)}function RWe(){this.a=";,;",this.b="",this.c=""}function gQt(e,t,n){FKe.call(this,t,n),this.a=e}function FWe(e,t,n){this.b=e,Zqe.call(this,t,n)}function lve(e,t,n){this.c=e,OF.call(this,t,n)}function hve(e,t,n){O4e(n,0,e,t,n.length,!1)}function Kd(e,t,n,r,s){e.b=t,e.c=n,e.d=r,e.a=s}function pQt(e,t){t&&(e.b=t,e.a=(Fp(t),t.a))}function fve(e,t,n,r,s){e.d=t,e.c=n,e.a=r,e.b=s}function dve(e){var t,n;t=e.b,n=e.c,e.b=n,e.c=t}function gve(e){var t,n;n=e.d,t=e.a,e.d=t,e.a=n}function pve(e){return Gp(kZt(Ko(e)?Fh(e):e))}function bQt(e,t){return Tu(eKe(e.d),eKe(t.d))}function vQt(e,t){return t==(ht(),Dn)?e.c:e.d}function h8(){h8=pe,N_e=(ht(),Dn),uV=$n}function jWe(){this.b=Ue(ft(xt((a1(),zue))))}function $We(e){return G2(),Me(Yn,yt,1,e,5,1)}function wQt(e){return new Pt(e.c+e.b,e.d+e.a)}function mQt(e,t){return TF(),Tu(e.d.p,t.d.p)}function mne(e){return Qn(e.b!=0),bh(e,e.a.a)}function yQt(e){return Qn(e.b!=0),bh(e,e.c.b)}function bve(e,t){if(!e)throw J(new YHe(t))}function kj(e,t){if(!e)throw J(new Ln(t))}function vve(e,t,n){r8.call(this,e,t),this.b=n}function UM(e,t,n){I2e.call(this,e,t),this.c=n}function HWe(e,t,n){met.call(this,t,n),this.d=e}function wve(e){Qbe(),Ex.call(this),this.th(e)}function zWe(e,t,n){this.a=e,B3.call(this,t,n)}function GWe(e,t,n){this.a=e,B3.call(this,t,n)}function xj(e,t,n){I2e.call(this,e,t),this.c=n}function qWe(){C8(),jZt.call(this,(Ap(),rf))}function VWe(e){return e!=null&&!$ie(e,KS,YS)}function kQt(e,t){return(nrt(e)<<4|nrt(t))&Ss}function xQt(e,t){return Uj(),cse(e,t),new wYe(e,t)}function V2(e,t){var n;e.n&&(n=t,it(e.f,n))}function f8(e,t,n){var r;r=new Bm(n),t1(e,t,r)}function EQt(e,t){var n;return n=e.c,Bme(e,t),n}function mve(e,t){return t<0?e.g=-1:e.g=t,e}function Ej(e,t){return oin(e),e.a*=t,e.b*=t,e}function UWe(e,t,n,r,s){e.c=t,e.d=n,e.b=r,e.a=s}function ci(e,t){return ks(e,t,e.c.b,e.c),!0}function yve(e){e.a.b=e.b,e.b.a=e.a,e.a=e.b=null}function yne(e){this.b=e,this.a=Cv(this.b.a).Ed()}function WWe(e,t){this.b=e,this.a=t,nT.call(this)}function KWe(e,t){this.a=e,this.b=t,nT.call(this)}function YWe(e,t){FKe.call(this,t,1040),this.a=e}function WM(e){return e==0||isNaN(e)?e:e<0?-1:1}function TQt(e){return P6(),n0(e)==us(Kp(e))}function _Qt(e){return P6(),Kp(e)==us(n0(e))}function _v(e,t){return eC(e,new r8(t.a,t.b))}function CQt(e){return!to(e)&&e.c.i.c==e.d.i.c}function Tj(e){var t;return t=e.n,e.a.b+t.d+t.a}function XWe(e){var t;return t=e.n,e.e.b+t.d+t.a}function kve(e){var t;return t=e.n,e.e.a+t.b+t.c}function QWe(e){return yi(),new Yd(0,e)}function SQt(e){return e.a?e.a:ere(e)}function u_(e){if(!e)throw J(new Wx(null))}function ZWe(){ZWe=pe,Cfe=(hn(),new D(tue))}function _j(){_j=pe,new w3e((Yee(),due),(Xee(),fue))}function JWe(){JWe=pe,G8e=Me(Za,Qe,19,256,0,1)}function kne(e,t,n,r){Wye.call(this,e,t,n,r,0,0)}function AQt(e,t,n){return Si(e.b,u(n.b,17),t)}function LQt(e,t,n){return Si(e.b,u(n.b,17),t)}function MQt(e,t){return it(e,new Pt(t.a,t.b))}function DQt(e,t){return e.c=t)throw J(new lpe)}function dZt(e,t,n){return cs(t,0,_ve(t[0],n[0])),t}function gZt(e,t,n){t.Ye(n,Ue(ft(er(e.b,n)))*e.a)}function RKe(e,t,n){return g4(),$8(e,t)&&$8(e,n)}function g_(e){return ol(),!e.Hc(Z0)&&!e.Hc(m2)}function jj(e){return new Pt(e.c+e.b/2,e.d+e.a/2)}function One(e,t){return t.kh()?Up(e.b,u(t,49)):t}function Hve(e,t){this.e=e,this.d=t&64?t|Ed:t}function FKe(e,t){this.c=0,this.d=e,this.b=t|64|Ed}function $j(e){this.b=new su(11),this.a=(q3(),e)}function Nne(e){this.b=null,this.a=(q3(),e||r7e)}function jKe(e){this.a=lit(e.a),this.b=new Uu(e.b)}function $Ke(e){this.b=e,_6.call(this,e),GVe(this)}function HKe(e){this.b=e,NM.call(this,e),qVe(this)}function Pm(e,t,n){this.a=e,S6.call(this,t,n,5,6)}function zve(e,t,n,r){this.b=e,Bs.call(this,t,n,r)}function oa(e,t,n,r,s){jre.call(this,e,t,n,r,s,-1)}function p_(e,t,n,r,s){dD.call(this,e,t,n,r,s,-1)}function at(e,t,n,r){Bs.call(this,e,t,n),this.b=r}function Hj(e,t,n,r){UM.call(this,e,t,n),this.b=r}function zKe(e){Vqe.call(this,e,!1),this.a=!1}function GKe(e,t){this.b=e,see.call(this,e.b),this.a=t}function qKe(e,t){Rm(),vUt.call(this,e,pH(new Al(t)))}function zj(e,t){return yi(),new nwe(e,t,0)}function Pne(e,t){return yi(),new nwe(6,e,t)}function pZt(e,t){return an(e.substr(0,t.length),t)}function Il(e,t){return fa(t)?rre(e,t):!!$o(e.f,t)}function La(e,t){for(Sn(t);e.Ob();)t.td(e.Pb())}function z3(e,t,n){Qp(),this.e=e,this.d=t,this.a=n}function kg(e,t,n,r){var s;s=e.i,s.i=t,s.a=n,s.b=r}function Gve(e){var t;for(t=e;t.f;)t=t.f;return t}function I6(e){var t;return t=F_(e),Qn(t!=null),t}function bZt(e){var t;return t=ton(e),Qn(t!=null),t}function g8(e,t){var n;return n=e.a.gc(),eme(t,n),n-t}function qve(e,t){var n;for(n=0;n0?b.Math.log(e/t):-100}function VKe(e,t){return Mc(e,t)<0?-1:Mc(e,t)>0?1:0}function Yve(e,t,n){return Fut(e,u(t,46),u(n,167))}function UKe(e,t){return u(jve(Cv(e.a)).Xb(t),42).cd()}function _Zt(e,t){return Krn(t,e.length),new YWe(e,t)}function jne(e,t){this.d=e,rr.call(this,e),this.e=t}function Sv(e){this.d=(Sn(e),e),this.a=0,this.c=Cz}function Xve(e,t){cv.call(this,1),this.a=e,this.b=t}function WKe(e,t){return e.c?WKe(e.c,t):it(e.b,t),e}function CZt(e,t,n){var r;return r=Gm(e,t),Ere(e,t,n),r}function Qve(e,t){var n;return n=e.slice(0,t),gme(n,e)}function KKe(e,t,n){var r;for(r=0;r=e.g}function Kne(e,t,n){var r;return r=sie(e,t,n),_5e(e,r)}function O6(e,t){var n;n=e.a.length,Gm(e,n),Ere(e,n,t)}function uYe(e,t){var n;n=console[e],n.call(console,t)}function lYe(e,t){var n;++e.j,n=e.Vi(),e.Ii(e.oi(n,t))}function FZt(e,t,n){u(t.b,65),Mu(t.a,new ive(e,n,t))}function twe(e,t,n){nF.call(this,t),this.a=e,this.b=n}function nwe(e,t,n){cv.call(this,e),this.a=t,this.b=n}function rwe(e,t,n){this.a=e,npe.call(this,t),this.b=n}function hYe(e,t,n){this.a=e,Owe.call(this,8,t,null,n)}function jZt(e){this.a=(Sn(Zr),Zr),this.b=e,new Epe}function fYe(e){this.c=e,this.b=this.c.a,this.a=this.c.e}function iwe(e){this.c=e,this.b=e.a.d.a,_be(e.a.e,this)}function Ol(e){Am(e.c!=-1),e.d.$c(e.c),e.b=e.c,e.c=-1}function w_(e){return b.Math.sqrt(e.a*e.a+e.b*e.b)}function Lv(e,t){return d8(t,e.a.c.length),St(e.a,t)}function md(e,t){return je(e)===je(t)||e!=null&&Ci(e,t)}function $Zt(e){return 0>=e?new Xpe:Cin(e-1)}function HZt(e){return Yy?rre(Yy,e):!1}function dYe(e){return e?e.dc():!e.Kc().Ob()}function Ya(e){return!e.a&&e.c?e.c.b:e.a}function zZt(e){return!e.a&&(e.a=new Bs(y2,e,4)),e.a}function Mv(e){return!e.d&&(e.d=new Bs(Eo,e,1)),e.d}function Sn(e){if(e==null)throw J(new mT);return e}function m_(e){e.c?e.c.He():(e.d=!0,Wgn(e))}function Fp(e){e.c?Fp(e.c):(ub(e),e.d=!0)}function gYe(e){cwe(e.a),e.b=Me(Yn,yt,1,e.b.length,5,1)}function GZt(e,t){return Tu(t.j.c.length,e.j.c.length)}function qZt(e,t){e.c<0||e.b.b=0?e.Bh(n):P4e(e,t)}function pYe(e){var t,n;return t=e.c.i.c,n=e.d.i.c,t==n}function UZt(e){if(e.p!=4)throw J(new zu);return e.e}function WZt(e){if(e.p!=3)throw J(new zu);return e.e}function KZt(e){if(e.p!=6)throw J(new zu);return e.f}function YZt(e){if(e.p!=6)throw J(new zu);return e.k}function XZt(e){if(e.p!=3)throw J(new zu);return e.j}function QZt(e){if(e.p!=4)throw J(new zu);return e.j}function swe(e){return!e.b&&(e.b=new rF(new Kee)),e.b}function Dv(e){return e.c==-2&&zx(e,pfn(e.g,e.b)),e.c}function v8(e,t){var n;return n=Gne("",e),n.n=t,n.i=1,n}function ZZt(e,t){Ane(u(t.b,65),e),Mu(t.a,new ni(e))}function JZt(e,t){Br((!e.a&&(e.a=new jM(e,e)),e.a),t)}function bYe(e,t){this.b=e,jne.call(this,e,t),GVe(this)}function vYe(e,t){this.b=e,Kbe.call(this,e,t),qVe(this)}function awe(e,t,n,r){vv.call(this,e,t),this.d=n,this.a=r}function Vj(e,t,n,r){vv.call(this,e,n),this.a=t,this.f=r}function wYe(e,t){OWt.call(this,Sin(Nr(e),Nr(t))),this.a=t}function mYe(){d4e.call(this,_b,(xze(),x4t)),kwn(this)}function yYe(){d4e.call(this,Uh,(Qx(),RAe)),Mvn(this)}function kYe(){Kr.call(this,"DELAUNAY_TRIANGULATION",0)}function eJt(e){return String.fromCharCode.apply(null,e)}function Si(e,t,n){return fa(t)?Oo(e,t,n):gu(e.f,t,n)}function owe(e){return hn(),e?e.ve():(q3(),q3(),s7e)}function tJt(e,t,n){return W6(),n.pg(e,u(t.cd(),146))}function xYe(e,t){return _j(),new w3e(new rUe(e),new nUe(t))}function nJt(e){return ql(e,Nae),R$(Ua(Ua(5,e),e/10|0))}function Uj(){Uj=pe,k0t=new Qee(ie(re(Cb,1),Sz,42,0,[]))}function EYe(e){return!e.d&&(e.d=new T(e.c.Cc())),e.d}function w8(e){return!e.a&&(e.a=new rze(e.c.vc())),e.a}function TYe(e){return!e.b&&(e.b=new Kx(e.c.ec())),e.b}function Qd(e,t){for(;t-- >0;)e=e<<1|(e<0?1:0);return e}function Vc(e,t){return je(e)===je(t)||e!=null&&Ci(e,t)}function rJt(e,t){return Mn(),u(t.b,19).ar&&++r,r}function L0(e){var t,n;return n=(t=new uv,t),I8(n,e),n}function Jne(e){var t,n;return n=(t=new uv,t),b4e(n,e),n}function wJt(e,t){var n;return n=er(e.f,t),Wme(t,n),null}function ere(e){var t;return t=Lin(e),t||null}function NYe(e){return!e.b&&(e.b=new at(ra,e,12,3)),e.b}function mJt(e){return e!=null&&gM(ZV,e.toLowerCase())}function yJt(e,t){return Fs(Wu(e)*Dl(e),Wu(t)*Dl(t))}function kJt(e,t){return Fs(Wu(e)*Dl(e),Wu(t)*Dl(t))}function xJt(e,t){return Fs(e.d.c+e.d.b/2,t.d.c+t.d.b/2)}function EJt(e,t){return Fs(e.g.c+e.g.b/2,t.g.c+t.g.b/2)}function PYe(e,t,n){n.a?Iu(e,t.b-e.f/2):Du(e,t.a-e.g/2)}function BYe(e,t,n,r){this.a=e,this.b=t,this.c=n,this.d=r}function RYe(e,t,n,r){this.a=e,this.b=t,this.c=n,this.d=r}function K2(e,t,n,r){this.e=e,this.a=t,this.c=n,this.d=r}function FYe(e,t,n,r){this.a=e,this.c=t,this.d=n,this.b=r}function jYe(e,t,n,r){lh(),DZe.call(this,t,n,r),this.a=e}function $Ye(e,t,n,r){lh(),DZe.call(this,t,n,r),this.a=e}function HYe(e,t){this.a=e,LKt.call(this,e,u(e.d,15).Zc(t))}function tre(e){this.f=e,this.c=this.f.e,e.f>0&&tst(this)}function zYe(e,t,n,r){this.b=e,this.c=r,Hte.call(this,t,n)}function GYe(e){return Qn(e.b=0&&an(e.substr(n,t.length),t)}function jp(e,t,n,r,s,o,h){return new _re(e.e,t,n,r,s,o,h)}function aXe(e,t,n,r,s,o){this.a=e,Zre.call(this,t,n,r,s,o)}function oXe(e,t,n,r,s,o){this.a=e,Zre.call(this,t,n,r,s,o)}function cXe(e,t){this.g=e,this.d=ie(re(h0,1),Bg,10,0,[t])}function xg(e,t){this.e=e,this.a=Yn,this.b=Oct(t),this.c=t}function uXe(e,t){bj.call(this),xme(this),this.a=e,this.c=t}function eD(e,t,n,r){cs(e.c[t.g],n.g,r),cs(e.c[n.g],t.g,r)}function are(e,t,n,r){cs(e.c[t.g],t.g,n),cs(e.b[t.g],t.g,r)}function VJt(){return uD(),ie(re(__e,1),tt,376,0,[dhe,DO])}function UJt(){return pD(),ie(re(v9e,1),tt,479,0,[b9e,Dq])}function WJt(){return ED(),ie(re(g9e,1),tt,419,0,[Lq,d9e])}function KJt(){return S$(),ie(re(a9e,1),tt,422,0,[s9e,gle])}function YJt(){return b$(),ie(re(M9e,1),tt,420,0,[Lle,L9e])}function XJt(){return mD(),ie(re(k_e,1),tt,421,0,[lhe,hhe])}function QJt(){return S_(),ie(re(Cwt,1),tt,523,0,[TS,ES])}function ZJt(){return Jf(),ie(re(Xwt,1),tt,520,0,[jy,d2])}function JJt(){return yd(),ie(re(Owt,1),tt,516,0,[Lw,Gg])}function een(){return M1(),ie(re(Pwt,1),tt,515,0,[Pb,K1])}function ten(){return Ov(),ie(re(rmt,1),tt,455,0,[g2,Y4])}function nen(){return f$(),ie(re(Y_e,1),tt,425,0,[Ahe,K_e])}function ren(){return c$(),ie(re(W_e,1),tt,480,0,[She,U_e])}function ien(){return J$(),ie(re(X_e,1),tt,495,0,[mV,yE])}function sen(){return L$(),ie(re(Z_e,1),tt,426,0,[Q_e,Ihe])}function aen(){return OD(),ie(re(tSe,1),tt,429,0,[AV,eSe])}function oen(){return lD(),ie(re(OCe,1),tt,430,0,[Hhe,CV])}function cen(){return LH(),ie(re(w7e,1),tt,428,0,[Aue,v7e])}function uen(){return P$(),ie(re(y7e,1),tt,427,0,[m7e,Lue])}function len(){return B$(),ie(re(K7e,1),tt,424,0,[$ue,ZG])}function hen(){return j8(),ie(re(Ypt,1),tt,511,0,[gO,Jue])}function r$(e,t,n,r){return n>=0?e.jh(t,n,r):e.Sg(null,n,r)}function ore(e){return e.b.b==0?e.a.$e():mne(e.b)}function fen(e){if(e.p!=5)throw J(new zu);return Or(e.f)}function den(e){if(e.p!=5)throw J(new zu);return Or(e.k)}function bwe(e){return je(e.a)===je((cie(),Efe))&&gwn(e),e.a}function lXe(e){this.a=u(Nr(e),271),this.b=(hn(),new ube(e))}function hXe(e,t){Yge(this,new Pt(e.a,e.b)),VR(this,VM(t))}function Ov(){Ov=pe,g2=new T2e(uk,0),Y4=new T2e(lk,1)}function yd(){yd=pe,Lw=new x2e(lk,0),Gg=new x2e(uk,1)}function Nv(){EVt.call(this,new w6(qm(12))),sbe(!0),this.a=2}function cre(e,t,n){yi(),cv.call(this,e),this.b=t,this.a=n}function vwe(e,t,n){lh(),nF.call(this,t),this.a=e,this.b=n}function fXe(e){bj.call(this),xme(this),this.a=e,this.c=!0}function dXe(e){var t;t=e.c.d.b,e.b=t,e.a=e.c.d,t.a=e.c.d.b=e}function i$(e){var t;yin(e.a),TVe(e.a),t=new nr(e.a),Uye(t)}function gen(e,t){Tct(e,!0),Mu(e.e.wf(),new eve(e,!0,t))}function s$(e,t){return UQe(t),vin(e,Me(Lr,Jr,25,t,15,1),t)}function pen(e,t){return P6(),e==us(n0(t))||e==us(Kp(t))}function Uc(e,t){return t==null?hc($o(e.f,null)):BT(e.g,t)}function ben(e){return e.b==0?null:(Qn(e.b!=0),bh(e,e.a.a))}function _s(e){return Math.max(Math.min(e,Ei),-2147483648)|0}function ven(e,t){var n=wue[e.charCodeAt(0)];return n??e}function a$(e,t){return Zj(e,"set1"),Zj(t,"set2"),new uGe(e,t)}function wen(e,t){var n;return n=fin(e.f,t),Ni(gj(n),e.f.d)}function k_(e,t){var n,r;return n=t,r=new Nt,flt(e,n,r),r.d}function ure(e,t,n,r){var s;s=new eWe,t.a[n.g]=s,M6(e.b,r,s)}function wwe(e,t,n){var r;r=e.Yg(t),r>=0?e.sh(r,n):o5e(e,t,n)}function V3(e,t,n){u$(),e&&Si(yfe,e,t),e&&Si(oN,e,n)}function gXe(e,t,n){this.i=new st,this.b=e,this.g=t,this.a=n}function o$(e,t,n){this.c=new st,this.e=e,this.f=t,this.b=n}function mwe(e,t,n){this.a=new st,this.e=e,this.f=t,this.c=n}function pXe(e,t){ij(this),this.f=t,this.g=e,Qj(this),this._d()}function tD(e,t){var n;n=e.q.getHours(),e.q.setDate(t),lC(e,n)}function bXe(e,t){var n;for(Nr(t),n=e.a;n;n=n.c)t.Od(n.g,n.i)}function vXe(e){var t;return t=new bF(qm(e.length)),lye(t,e),t}function men(e){function t(){}return t.prototype=e||{},new t}function yen(e,t){return Ktt(e,t)?(Uet(e),!0):!1}function M0(e,t){if(t==null)throw J(new mT);return vcn(e,t)}function ken(e){if(e.qe())return null;var t=e.n;return PG[t]}function nD(e){return e.Db>>16!=3?null:u(e.Cb,33)}function L1(e){return e.Db>>16!=9?null:u(e.Cb,33)}function wXe(e){return e.Db>>16!=6?null:u(e.Cb,79)}function mXe(e){return e.Db>>16!=7?null:u(e.Cb,235)}function yXe(e){return e.Db>>16!=7?null:u(e.Cb,160)}function us(e){return e.Db>>16!=11?null:u(e.Cb,33)}function kXe(e,t){var n;return n=e.Yg(t),n>=0?e.lh(n):Fse(e,t)}function xXe(e,t){var n;return n=new Tve(t),_st(n,e),new Uu(n)}function ywe(e){var t;return t=e.d,t=e.si(e.f),Br(e,t),t.Ob()}function EXe(e,t){return e.b+=t.b,e.c+=t.c,e.d+=t.d,e.a+=t.a,e}function lre(e,t){return b.Math.abs(e)0}function TXe(){this.a=new C0,this.e=new Ys,this.g=0,this.i=0}function _Xe(e){this.a=e,this.b=Me(Ewt,Qe,1944,e.e.length,0,2)}function hre(e,t,n){var r;r=gnt(e,t,n),e.b=new Z$(r.c.length)}function M1(){M1=pe,Pb=new k2e(voe,0),K1=new k2e("UP",1)}function c$(){c$=pe,She=new _2e(Hft,0),U_e=new _2e("FAN",1)}function u$(){u$=pe,yfe=new Mr,oN=new Mr,zUt(j0t,new $9)}function Een(e){if(e.p!=0)throw J(new zu);return XT(e.f,0)}function Ten(e){if(e.p!=0)throw J(new zu);return XT(e.k,0)}function CXe(e){return e.Db>>16!=3?null:u(e.Cb,147)}function x8(e){return e.Db>>16!=6?null:u(e.Cb,235)}function Fm(e){return e.Db>>16!=17?null:u(e.Cb,26)}function SXe(e,t){var n=e.a=e.a||[];return n[t]||(n[t]=e.le(t))}function _en(e,t){var n;return n=e.a.get(t),n??new Array}function Cen(e,t){var n;n=e.q.getHours(),e.q.setMonth(t),lC(e,n)}function Oo(e,t,n){return t==null?gu(e.f,null,n):Wv(e.g,t,n)}function x_(e,t,n,r,s,o){return new N0(e.e,t,e.aj(),n,r,s,o)}function rD(e,t,n){return e.a=jl(e.a,0,t)+(""+n)+IM(e.a,t),e}function Sen(e,t,n){return it(e.a,(Uj(),cse(t,n),new vv(t,n))),e}function kwe(e){return obe(e.c),e.e=e.a=e.c,e.c=e.c.c,++e.d,e.a.f}function AXe(e){return obe(e.e),e.c=e.a=e.e,e.e=e.e.e,--e.d,e.a.f}function ba(e,t){e.d&&Au(e.d.e,e),e.d=t,e.d&&it(e.d.e,e)}function Va(e,t){e.c&&Au(e.c.g,e),e.c=t,e.c&&it(e.c.g,e)}function No(e,t){e.c&&Au(e.c.a,e),e.c=t,e.c&&it(e.c.a,e)}function rc(e,t){e.i&&Au(e.i.j,e),e.i=t,e.i&&it(e.i.j,e)}function LXe(e,t,n){this.a=t,this.c=e,this.b=(Nr(n),new Uu(n))}function MXe(e,t,n){this.a=t,this.c=e,this.b=(Nr(n),new Uu(n))}function DXe(e,t){this.a=e,this.c=fc(this.a),this.b=new n$(t)}function Aen(e){var t;return ub(e),t=new Ys,Vi(e,new $t(t))}function jm(e,t){if(e<0||e>t)throw J(new Do(C6e+e+S6e+t))}function xwe(e,t){return kKe(e.a,t)?Uve(e,u(t,22).g,null):null}function Len(e){return Aie(),Mn(),u(e.a,81).d.e!=0}function IXe(){IXe=pe,T0t=Qr((cF(),ie(re(E0t,1),tt,538,0,[bue])))}function OXe(){OXe=pe,lwt=il(new Xs,(ro(),Go),(po(),pO))}function Ewe(){Ewe=pe,hwt=il(new Xs,(ro(),Go),(po(),pO))}function NXe(){NXe=pe,dwt=il(new Xs,(ro(),Go),(po(),pO))}function PXe(){PXe=pe,Awt=xi(new Xs,(ro(),Go),(po(),nS))}function $l(){$l=pe,Dwt=xi(new Xs,(ro(),Go),(po(),nS))}function BXe(){BXe=pe,Iwt=xi(new Xs,(ro(),Go),(po(),nS))}function fre(){fre=pe,Rwt=xi(new Xs,(ro(),Go),(po(),nS))}function RXe(){RXe=pe,Emt=il(new Xs,(a7(),CS),(nC(),whe))}function X2(e,t,n,r){this.c=e,this.d=r,gre(this,t),pre(this,n)}function R6(e){this.c=new as,this.b=e.b,this.d=e.c,this.a=e.a}function dre(e){this.a=b.Math.cos(e),this.b=b.Math.sin(e)}function gre(e,t){e.a&&Au(e.a.k,e),e.a=t,e.a&&it(e.a.k,e)}function pre(e,t){e.b&&Au(e.b.f,e),e.b=t,e.b&&it(e.b.f,e)}function FXe(e,t){FZt(e,e.b,e.c),u(e.b.b,65),t&&u(t.b,65).b}function Men(e,t){jye(e,t),we(e.Cb,88)&&iy(dl(u(e.Cb,88)),2)}function bre(e,t){we(e.Cb,88)&&iy(dl(u(e.Cb,88)),4),au(e,t)}function l$(e,t){we(e.Cb,179)&&(u(e.Cb,179).tb=null),au(e,t)}function Wc(e,t){return ho(),Ure(t)?new Cj(t,e):new DM(t,e)}function Den(e,t){var n,r;n=t.c,r=n!=null,r&&O6(e,new Bm(t.c))}function jXe(e){var t,n;return n=(Qx(),t=new uv,t),I8(n,e),n}function $Xe(e){var t,n;return n=(Qx(),t=new uv,t),I8(n,e),n}function HXe(e,t){var n;return n=new Bh(e),t.c[t.c.length]=n,n}function zXe(e,t){var n;return n=u(Ym(B6(e.a),t),14),n?n.gc():0}function GXe(e){var t;return ub(e),t=(q3(),q3(),i7e),j$(e,t)}function qXe(e){for(var t;;)if(t=e.Pb(),!e.Ob())return t}function Twe(e,t){kVt.call(this,new w6(qm(e))),ql(t,sht),this.a=t}function Zd(e,t,n){Jnt(t,n,e.gc()),this.c=e,this.a=t,this.b=n-t}function VXe(e,t,n){var r;Jnt(t,n,e.c.length),r=n-t,Kpe(e.c,t,r)}function Ien(e,t){zVe(e,Or(qs(Np(t,24),Mz)),Or(qs(t,Mz)))}function xn(e,t){if(e<0||e>=t)throw J(new Do(C6e+e+S6e+t))}function zr(e,t){if(e<0||e>=t)throw J(new Bpe(C6e+e+S6e+t))}function mn(e,t){this.b=(Sn(e),e),this.a=t&dy?t:t|64|Ed}function UXe(e){EVe(this),rHe(this.a,cye(b.Math.max(8,e))<<1)}function D1(e){return sc(ie(re(na,1),Qe,8,0,[e.i.n,e.n,e.a]))}function Oen(){return F1(),ie(re(yl,1),tt,132,0,[g7e,Ql,xy])}function Nen(){return n1(),ie(re(Ey,1),tt,232,0,[pc,lu,bc])}function Pen(){return al(),ie(re(cgt,1),tt,461,0,[Nd,a2,Af])}function Ben(){return Lu(),ie(re(lgt,1),tt,462,0,[u1,o2,Lf])}function Ren(){return Uv(),ie(re(fEe,1),tt,423,0,[N4,hEe,Xue])}function Fen(){return L_(),ie(re(cEe,1),tt,379,0,[que,Gue,Vue])}function jen(){return j_(),ie(re(h_e,1),tt,378,0,[ihe,l_e,iV])}function $en(){return V6(),ie(re(c9e,1),tt,314,0,[Ek,vO,o9e])}function Hen(){return V$(),ie(re(l9e,1),tt,337,0,[u9e,Aq,ple])}function zen(){return sb(),ie(re(T2t,1),tt,450,0,[wle,aE,F4])}function Gen(){return qv(),ie(re(sle,1),tt,361,0,[mw,u2,ww])}function qen(){return P0(),ie(re(I2t,1),tt,303,0,[mO,$4,Tk])}function Ven(){return q8(),ie(re(Ale,1),tt,292,0,[Cle,Sle,wO])}function Uen(){return vo(),ie(re(rwt,1),tt,452,0,[yS,ul,hu])}function Wen(){return R0(),ie(re(y_e,1),tt,339,0,[f2,m_e,uhe])}function Ken(){return iH(),ie(re(T_e,1),tt,375,0,[x_e,fhe,E_e])}function Yen(){return uH(),ie(re(D_e,1),tt,377,0,[bhe,wE,Fy])}function Xen(){return Q8(),ie(re(S_e,1),tt,336,0,[ghe,C_e,kS])}function Qen(){return nH(),ie(re(M_e,1),tt,338,0,[L_e,phe,A_e])}function Zen(){return Gv(),ie(re(kwt,1),tt,454,0,[IO,xS,cV])}function Jen(){return yH(),ie(re(Amt,1),tt,442,0,[Dhe,Lhe,Mhe])}function etn(){return RD(),ie(re(tCe,1),tt,380,0,[yV,J_e,eCe])}function ttn(){return mH(),ie(re(mCe,1),tt,381,0,[wCe,Rhe,vCe])}function ntn(){return rH(),ie(re(pCe,1),tt,293,0,[Bhe,gCe,dCe])}function rtn(){return GD(),ie(re(Fhe,1),tt,437,0,[EV,TV,_V])}function itn(){return F0(),ie(re(cAe,1),tt,334,0,[FV,Wg,jS])}function stn(){return P1(),ie(re(XSe,1),tt,272,0,[EE,zy,TE])}function atn(e,t){return S0n(e,t,we(t,99)&&(u(t,18).Bb&so)!=0)}function otn(e,t,n){var r;return r=dC(e,t,!1),r.b<=t&&r.a<=n}function WXe(e,t,n){var r;r=new TQ,r.b=t,r.a=n,++t.b,it(e.d,r)}function ctn(e,t){var n;return n=(Sn(e),e).g,mbe(!!n),Sn(t),n(t)}function _we(e,t){var n,r;return r=g8(e,t),n=e.a.Zc(r),new cGe(e,n)}function utn(e){return e.Db>>16!=6?null:u(Hse(e),235)}function ltn(e){if(e.p!=2)throw J(new zu);return Or(e.f)&Ss}function htn(e){if(e.p!=2)throw J(new zu);return Or(e.k)&Ss}function ftn(e){return e.a==(C8(),nU)&&_ee(e,G0n(e.g,e.b)),e.a}function F6(e){return e.d==(C8(),nU)&&dT(e,B2n(e.g,e.b)),e.d}function Y(e){return Qn(e.ar?1:0}function KXe(e,t){var n,r;return n=Hre(t),r=n,u(er(e.c,r),19).a}function YXe(e,t){var n;for(n=e+"";n.length0&&e.a[--e.d]==0;);e.a[e.d++]==0&&(e.e=0)}function gQe(e){return e.a?e.e.length==0?e.a.a:e.a.a+(""+e.e):e.c}function Etn(e){return!!e.a&&gl(e.a.a).i!=0&&!(e.b&&sse(e.b))}function Ttn(e){return!!e.u&&jc(e.u.a).i!=0&&!(e.n&&ise(e.n))}function pQe(e){return Ene(e.e.Hd().gc()*e.c.Hd().gc(),16,new r6(e))}function _tn(e,t){return VKe(Ou(e.q.getTime()),Ou(t.q.getTime()))}function kd(e){return u(j1(e,Me(Que,Ooe,17,e.c.length,0,1)),474)}function iD(e){return u(j1(e,Me(h0,Bg,10,e.c.length,0,1)),193)}function Ctn(e){return $l(),!to(e)&&!(!to(e)&&e.c.i.c==e.d.i.c)}function bQe(e,t,n){var r;r=(Nr(e),new Uu(e)),nln(new LXe(r,t,n))}function sD(e,t,n){var r;r=(Nr(e),new Uu(e)),rln(new MXe(r,t,n))}function vQe(e,t){var n;return n=1-t,e.a[n]=Q$(e.a[n],n),Q$(e,t)}function wQe(e,t){var n;e.e=new Lpe,n=oy(t),aa(n,e.c),dct(e,n,0)}function va(e,t,n,r){var s;s=new zB,s.a=t,s.b=n,s.c=r,ci(e.a,s)}function dt(e,t,n,r){var s;s=new zB,s.a=t,s.b=n,s.c=r,ci(e.b,s)}function kf(e){var t,n,r;return t=new ZKe,n=aae(t,e),hmn(t),r=n,r}function Dwe(){var e,t,n;return t=(n=(e=new uv,e),n),it(WAe,t),t}function d$(e){return e.j.c=Me(Yn,yt,1,0,5,1),cwe(e.c),aJt(e.a),e}function U3(e){return IT(),we(e.g,10)?u(e.g,10):null}function Stn(e){return G3(e).dc()?!1:(CWt(e,new de),!0)}function Atn(e){if(!("stack"in e))try{throw e}catch{}return e}function aD(e,t){if(e<0||e>=t)throw J(new Do(H1n(e,t)));return e}function mQe(e,t,n){if(e<0||tn)throw J(new Do(f1n(e,t,n)))}function yre(e,t){if(Gs(e.a,t),t.d)throw J(new tc(Sht));t.d=e}function kre(e,t){if(t.$modCount!=e.$modCount)throw J(new uh)}function yQe(e,t){return we(t,42)?lse(e.a,u(t,42)):!1}function kQe(e,t){return we(t,42)?lse(e.a,u(t,42)):!1}function xQe(e,t){return we(t,42)?lse(e.a,u(t,42)):!1}function Ltn(e,t){return e.a<=e.b?(t.ud(e.a++),!0):!1}function Bv(e){var t;return Ko(e)?(t=e,t==-0?0:t):Frn(e)}function g$(e){var t;return Fp(e),t=new kt,D3(e.a,new un(t)),t}function EQe(e){var t;return Fp(e),t=new oi,D3(e.a,new lt(t)),t}function Ea(e,t){this.a=e,c6.call(this,e),jm(t,e.gc()),this.b=t}function Iwe(e){this.e=e,this.b=this.e.a.entries(),this.a=new Array}function Mtn(e){return Ene(e.e.Hd().gc()*e.c.Hd().gc(),273,new jR(e))}function p$(e){return new su((ql(e,Nae),R$(Ua(Ua(5,e),e/10|0))))}function TQe(e){return u(j1(e,Me(Upt,ift,11,e.c.length,0,1)),1943)}function Dtn(e,t,n){return n.f.c.length>0?Yve(e.a,t,n):Yve(e.b,t,n)}function Itn(e,t,n){e.d&&Au(e.d.e,e),e.d=t,e.d&&Om(e.d.e,n,e)}function xre(e,t){_yn(t,e),gve(e.d),gve(u(K(e,(pt(),Qq)),207))}function T_(e,t){Tyn(t,e),dve(e.d),dve(u(K(e,(pt(),Qq)),207))}function Rv(e,t){var n,r;return n=M0(e,t),r=null,n&&(r=n.fe()),r}function E8(e,t){var n,r;return n=Gm(e,t),r=null,n&&(r=n.ie()),r}function __(e,t){var n,r;return n=M0(e,t),r=null,n&&(r=n.ie()),r}function D0(e,t){var n,r;return n=M0(e,t),r=null,n&&(r=E4e(n)),r}function Otn(e,t,n){var r;return r=i7(n),fz(e.g,r,t),fz(e.i,t,n),t}function Ntn(e,t,n){var r;r=ccn();try{return jKt(e,t,n)}finally{Vtn(r)}}function _Qe(e){var t;t=e.Wg(),this.a=we(t,69)?u(t,69).Zh():t.Kc()}function Xs(){jHe.call(this),this.j.c=Me(Yn,yt,1,0,5,1),this.a=-1}function Owe(e,t,n,r){this.d=e,this.n=t,this.g=n,this.o=r,this.p=-1}function CQe(e,t,n,r){this.e=r,this.d=null,this.c=e,this.a=t,this.b=n}function Nwe(e,t,n){this.d=new eF(this),this.e=e,this.i=t,this.f=n}function b$(){b$=pe,Lle=new v2e(D7,0),L9e=new v2e("TOP_LEFT",1)}function SQe(){SQe=pe,O_e=xYe(ct(1),ct(4)),I_e=xYe(ct(1),ct(2))}function AQe(){AQe=pe,wyt=Qr((CF(),ie(re(vyt,1),tt,551,0,[$he])))}function LQe(){LQe=pe,byt=Qr((_F(),ie(re(ICe,1),tt,482,0,[jhe])))}function MQe(){MQe=pe,Byt=Qr((OT(),ie(re(JCe,1),tt,530,0,[FO])))}function DQe(){DQe=pe,zgt=Qr((EF(),ie(re(H7e,1),tt,481,0,[Pue])))}function Ptn(){return Vv(),ie(re(Pgt,1),tt,406,0,[sO,iO,Oue,Nue])}function Btn(){return M$(),ie(re(GG,1),tt,297,0,[_ue,l7e,h7e,f7e])}function Rtn(){return Y_(),ie(re($gt,1),tt,394,0,[lO,KG,YG,hO])}function Ftn(){return Z6(),ie(re(Rgt,1),tt,323,0,[oO,aO,cO,uO])}function jtn(){return V8(),ie(re(Npt,1),tt,405,0,[vw,_y,Ty,O4])}function $tn(){return cH(),ie(re(Jpt,1),tt,360,0,[rle,kq,xq,bO])}function IQe(e,t,n,r){return we(n,54)?new wUe(e,t,n,r):new Fve(e,t,n,r)}function Htn(){return R1(),ie(re(c2t,1),tt,411,0,[xk,tE,nE,ile])}function ztn(e){var t;return e.j==(ht(),xr)&&(t=not(e),Vu(t,$n))}function Gtn(e,t){var n;n=t.a,Va(n,t.c.d),ba(n,t.d.d),Um(n.a,e.n)}function OQe(e,t){return u(Tv(Rj(u(Ii(e.k,t),15).Oc(),P4)),113)}function NQe(e,t){return u(Tv(Fj(u(Ii(e.k,t),15).Oc(),P4)),113)}function qtn(e){return new mn(Hin(u(e.a.dd(),14).gc(),e.a.cd()),16)}function T8(e){return we(e,14)?u(e,14).dc():!e.Kc().Ob()}function j6(e){return IT(),we(e.g,145)?u(e.g,145):null}function PQe(e){if(e.e.g!=e.b)throw J(new uh);return!!e.c&&e.d>0}function ri(e){return Qn(e.b!=e.d.c),e.c=e.b,e.b=e.b.a,++e.a,e.c.c}function Pwe(e,t){Sn(t),cs(e.a,e.c,t),e.c=e.c+1&e.a.length-1,Fit(e)}function $p(e,t){Sn(t),e.b=e.b-1&e.a.length-1,cs(e.a,e.b,t),Fit(e)}function BQe(e,t){var n;for(n=e.j.c.length;n0&&Hc(e.g,0,t,0,e.i),t}function $Qe(e,t){LF();var n;return n=u(er(QV,e),55),!n||n.wj(t)}function rnn(e){if(e.p!=1)throw J(new zu);return Or(e.f)<<24>>24}function inn(e){if(e.p!=1)throw J(new zu);return Or(e.k)<<24>>24}function snn(e){if(e.p!=7)throw J(new zu);return Or(e.k)<<16>>16}function ann(e){if(e.p!=7)throw J(new zu);return Or(e.f)<<16>>16}function I0(e){var t;for(t=0;e.Ob();)e.Pb(),t=Ua(t,1);return R$(t)}function HQe(e,t){var n;return n=new xm,e.xd(n),n.a+="..",t.yd(n),n.a}function onn(e,t,n){var r;r=u(er(e.g,n),57),it(e.a.c,new xa(t,r))}function cnn(e,t,n){return Ine(ft(hc($o(e.f,t))),ft(hc($o(e.f,n))))}function v$(e,t,n){return gz(e,t,n,we(t,99)&&(u(t,18).Bb&so)!=0)}function unn(e,t,n){return y7(e,t,n,we(t,99)&&(u(t,18).Bb&so)!=0)}function lnn(e,t,n){return O0n(e,t,n,we(t,99)&&(u(t,18).Bb&so)!=0)}function Fwe(e,t){return e==(zn(),Hs)&&t==Hs?4:e==Hs||t==Hs?8:32}function zQe(e,t){return je(t)===je(e)?"(this Map)":t==null?Pu:Qo(t)}function hnn(e,t){return u(t==null?hc($o(e.f,null)):BT(e.g,t),281)}function GQe(e,t,n){var r;return r=i7(n),Si(e.b,r,t),Si(e.c,t,n),t}function qQe(e,t){var n;for(n=t;n;)Lm(e,n.i,n.j),n=us(n);return e}function jwe(e,t){var n;return n=ZM(l8(new zre(e,t))),Aj(new zre(e,t)),n}function Jd(e,t){ho();var n;return n=u(e,66).Mj(),Vfn(n,t),n.Ok(t)}function fnn(e,t,n,r,s){var o;o=F0n(s,n,r),it(t,B1n(s,o)),Sfn(e,s,t)}function VQe(e,t,n){e.i=0,e.e=0,t!=n&&(wnt(e,t,n),vnt(e,t,n))}function $we(e,t){var n;n=e.q.getHours(),e.q.setFullYear(t+e2),lC(e,n)}function dnn(e,t,n){if(n){var r=n.ee();e.a[t]=r(n)}else delete e.a[t]}function Ere(e,t,n){if(n){var r=n.ee();n=r(n)}else n=void 0;e.a[t]=n}function UQe(e){if(e<0)throw J(new QHe("Negative array size: "+e))}function jc(e){return e.n||(dl(e),e.n=new _Ke(e,Eo,e),jo(e)),e.n}function C_(e){return Qn(e.a=0&&e.a[n]===t[n];n--);return n<0}function QQe(e,t){X8();var n;return n=e.j.g-t.j.g,n!=0?n:0}function ZQe(e,t){return Sn(t),e.a!=null?ZQt(t.Kb(e.a)):zG}function w$(e){var t;return e?new Tve(e):(t=new C0,oie(t,e),t)}function zl(e,t){var n;return t.b.Kb(qJe(e,t.c.Ee(),(n=new Cn(t),n)))}function m$(e){o4e(),zVe(this,Or(qs(Np(e,24),Mz)),Or(qs(e,Mz)))}function JQe(){JQe=pe,ngt=Qr((LH(),ie(re(w7e,1),tt,428,0,[Aue,v7e])))}function eZe(){eZe=pe,rgt=Qr((P$(),ie(re(y7e,1),tt,427,0,[m7e,Lue])))}function tZe(){tZe=pe,spt=Qr((B$(),ie(re(K7e,1),tt,424,0,[$ue,ZG])))}function nZe(){nZe=pe,Xpt=Qr((j8(),ie(re(Ypt,1),tt,511,0,[gO,Jue])))}function rZe(){rZe=pe,E2t=Qr((ED(),ie(re(g9e,1),tt,419,0,[Lq,d9e])))}function iZe(){iZe=pe,S2t=Qr((pD(),ie(re(v9e,1),tt,479,0,[b9e,Dq])))}function sZe(){sZe=pe,awt=Qr((uD(),ie(re(__e,1),tt,376,0,[dhe,DO])))}function aZe(){aZe=pe,nwt=Qr((mD(),ie(re(k_e,1),tt,421,0,[lhe,hhe])))}function oZe(){oZe=pe,m2t=Qr((S$(),ie(re(a9e,1),tt,422,0,[s9e,gle])))}function cZe(){cZe=pe,N2t=Qr((b$(),ie(re(M9e,1),tt,420,0,[Lle,L9e])))}function uZe(){uZe=pe,Qwt=Qr((Jf(),ie(re(Xwt,1),tt,520,0,[jy,d2])))}function lZe(){lZe=pe,Swt=Qr((S_(),ie(re(Cwt,1),tt,523,0,[TS,ES])))}function hZe(){hZe=pe,Nwt=Qr((yd(),ie(re(Owt,1),tt,516,0,[Lw,Gg])))}function fZe(){fZe=pe,Bwt=Qr((M1(),ie(re(Pwt,1),tt,515,0,[Pb,K1])))}function dZe(){dZe=pe,imt=Qr((Ov(),ie(re(rmt,1),tt,455,0,[g2,Y4])))}function gZe(){gZe=pe,xmt=Qr((f$(),ie(re(Y_e,1),tt,425,0,[Ahe,K_e])))}function pZe(){pZe=pe,Smt=Qr((J$(),ie(re(X_e,1),tt,495,0,[mV,yE])))}function bZe(){bZe=pe,kmt=Qr((c$(),ie(re(W_e,1),tt,480,0,[She,U_e])))}function vZe(){vZe=pe,Mmt=Qr((L$(),ie(re(Z_e,1),tt,426,0,[Q_e,Ihe])))}function wZe(){wZe=pe,Ryt=Qr((OD(),ie(re(tSe,1),tt,429,0,[AV,eSe])))}function mZe(){mZe=pe,myt=Qr((lD(),ie(re(OCe,1),tt,430,0,[Hhe,CV])))}function S_(){S_=pe,TS=new y2e("UPPER",0),ES=new y2e("LOWER",1)}function vnn(e,t){var n;n=new p6,Y2(n,"x",t.a),Y2(n,"y",t.b),O6(e,n)}function wnn(e,t){var n;n=new p6,Y2(n,"x",t.a),Y2(n,"y",t.b),O6(e,n)}function mnn(e,t){var n,r;r=!1;do n=unt(e,t),r=r|n;while(n);return r}function Gwe(e,t){var n,r;for(n=t,r=0;n>0;)r+=e.a[n],n-=n&-n;return r}function yZe(e,t){var n;for(n=t;n;)Lm(e,-n.i,-n.j),n=us(n);return e}function Da(e,t){var n,r;for(Sn(t),r=e.Kc();r.Ob();)n=r.Pb(),t.td(n)}function kZe(e,t){var n;return n=t.cd(),new vv(n,e.e.pc(n,u(t.dd(),14)))}function ks(e,t,n,r){var s;s=new wt,s.c=t,s.b=n,s.a=r,r.b=n.a=s,++e.b}function gh(e,t,n){var r;return r=(xn(t,e.c.length),e.c[t]),e.c[t]=n,r}function ynn(e,t,n){return u(t==null?gu(e.f,null,n):Wv(e.g,t,n),281)}function Sre(e){return e.c&&e.d?Cwe(e.c)+"->"+Cwe(e.d):"e_"+xv(e)}function _8(e,t){return(ub(e),LT(new vn(e,new dme(t,e.a)))).sd(X7)}function knn(){return ro(),ie(re(uEe,1),tt,356,0,[Pd,c2,bu,Zc,Go])}function xnn(){return ht(),ie(re(ao,1),Dc,61,0,[uc,An,$n,xr,Dn])}function Enn(e){return fF(),function(){return Ntn(e,this,arguments)}}function Tnn(){return Date.now?Date.now():new Date().getTime()}function to(e){return!e.c||!e.d?!1:!!e.c.i&&e.c.i==e.d.i}function xZe(e){if(!e.c.Sb())throw J(new xc);return e.a=!0,e.c.Ub()}function oD(e){e.i=0,mM(e.b,null),mM(e.c,null),e.a=null,e.e=null,++e.g}function qwe(e){DUt.call(this,e==null?Pu:Qo(e),we(e,78)?u(e,78):null)}function EZe(e){Xlt(),W$e(this),this.a=new as,vye(this,e),ci(this.a,e)}function TZe(){Ute(this),this.b=new Pt(gs,gs),this.a=new Pt(Ds,Ds)}function _Ze(e,t){this.c=0,this.b=t,Jqe.call(this,e,17493),this.a=this.c}function Are(e){y$(),!V1&&(this.c=e,this.e=!0,this.a=new st)}function y$(){y$=pe,V1=!0,U0t=!1,W0t=!1,Y0t=!1,K0t=!1}function Vwe(e,t){return we(t,149)?an(e.c,u(t,149).c):!1}function Uwe(e,t){var n;return n=0,e&&(n+=e.f.a/2),t&&(n+=t.f.a/2),n}function Lre(e,t){var n;return n=u(Fv(e.d,t),23),n||u(Fv(e.e,t),23)}function CZe(e){this.b=e,rr.call(this,e),this.a=u(_n(this.b.a,4),126)}function SZe(e){this.b=e,C6.call(this,e),this.a=u(_n(this.b.a,4),126)}function dl(e){return e.t||(e.t=new R$e(e),G_(new XHe(e),0,e.t)),e.t}function _nn(){return wo(),ie(re(RS,1),tt,103,0,[f0,Df,Xh,Y0,X0])}function Cnn(){return n4(),ie(re(HS,1),tt,249,0,[v2,ZO,uAe,$S,lAe])}function Snn(){return i1(),ie(re(Ug,1),tt,175,0,[Fn,ua,Fd,Bb,Vg])}function Ann(){return rI(),ie(re(RCe,1),tt,316,0,[NCe,zhe,BCe,Ghe,PCe])}function Lnn(){return X_(),ie(re(d_e,1),tt,315,0,[f_e,ohe,che,wS,mS])}function Mnn(){return db(),ie(re(f9e,1),tt,335,0,[ble,h9e,vle,sS,iS])}function Dnn(){return v7(),ie(re(dyt,1),tt,355,0,[X4,Nk,IS,DS,OS])}function Inn(){return c4(),ie(re(l2t,1),tt,363,0,[Tq,Cq,Sq,_q,Eq])}function Onn(){return mh(),ie(re(G9e,1),tt,163,0,[TO,lS,l2,hS,Ly])}function C8(){C8=pe;var e,t;tU=(Qx(),t=new sF,t),nU=(e=new Vee,e)}function AZe(e){var t;return e.c||(t=e.r,we(t,88)&&(e.c=u(t,26))),e.c}function Nnn(e){return e.e=3,e.d=e.Yb(),e.e!=2?(e.e=0,!0):!1}function Mre(e){var t,n,r;return t=e&ml,n=e>>22&ml,r=e<0?V0:0,fu(t,n,r)}function Pnn(e){var t,n,r,s;for(n=e,r=0,s=n.length;r0?Art(e,t):Xot(e,-t)}function Wwe(e,t){return t==0||e.e==0?e:t>0?Xot(e,t):Art(e,-t)}function Pr(e){if(Vr(e))return e.c=e.a,e.a.Pb();throw J(new xc)}function MZe(e){var t,n;return t=e.c.i,n=e.d.i,t.k==(zn(),Ls)&&n.k==Ls}function Dre(e){var t;return t=new Iv,Ho(t,e),Ye(t,(pt(),Fo),null),t}function Ire(e,t,n){var r;return r=e.Yg(t),r>=0?e._g(r,n,!0):tw(e,t,n)}function Kwe(e,t,n,r){var s;for(s=0;st)throw J(new Do(M4e(e,t,"index")));return e}function Ore(e,t,n,r){var s;return s=Me(Lr,Jr,25,t,15,1),Khn(s,e,t,n,r),s}function Rnn(e,t){var n;n=e.q.getHours()+(t/60|0),e.q.setMinutes(t),lC(e,n)}function Fnn(e,t){return b.Math.min(Hp(t.a,e.d.d.c),Hp(t.b,e.d.d.c))}function z6(e,t){return fa(t)?t==null?W4e(e.f,null):Vtt(e.g,t):W4e(e.f,t)}function N1(e){this.c=e,this.a=new C(this.c.a),this.b=new C(this.c.b)}function k$(){this.e=new st,this.c=new st,this.d=new st,this.b=new st}function PZe(){this.g=new fpe,this.b=new fpe,this.a=new st,this.k=new st}function BZe(e,t,n){this.a=e,this.c=t,this.d=n,it(t.e,this),it(n.b,this)}function RZe(e,t){Zqe.call(this,t.rd(),t.qd()&-6),Sn(e),this.a=e,this.b=t}function FZe(e,t){Jqe.call(this,t.rd(),t.qd()&-6),Sn(e),this.a=e,this.b=t}function tme(e,t){Hte.call(this,t.rd(),t.qd()&-6),Sn(e),this.a=e,this.b=t}function x$(e,t,n){this.a=e,this.b=t,this.c=n,it(e.t,this),it(t.i,this)}function E$(){this.b=new as,this.a=new as,this.b=new as,this.a=new as}function T$(){T$=pe,NS=new Zi("org.eclipse.elk.labels.labelManager")}function jZe(){jZe=pe,e9e=new zs("separateLayerConnections",(cH(),rle))}function Jf(){Jf=pe,jy=new E2e("REGULAR",0),d2=new E2e("CRITICAL",1)}function uD(){uD=pe,dhe=new m2e("STACKED",0),DO=new m2e("SEQUENCED",1)}function lD(){lD=pe,Hhe=new L2e("FIXED",0),CV=new L2e("CENTER_NODE",1)}function jnn(e,t){var n;return n=Gwn(e,t),e.b=new Z$(n.c.length),twn(e,n)}function $nn(e,t,n){var r;return++e.e,--e.f,r=u(e.d[t].$c(n),133),r.dd()}function $Ze(e){var t;return e.a||(t=e.r,we(t,148)&&(e.a=u(t,148))),e.a}function nme(e){if(e.a){if(e.e)return nme(e.e)}else return e;return null}function Hnn(e,t){return e.pt.p?-1:0}function _$(e,t){return Sn(t),e.c=0,"Initial capacity must not be negative")}function GZe(){GZe=pe,ogt=Qr((n1(),ie(re(Ey,1),tt,232,0,[pc,lu,bc])))}function qZe(){qZe=pe,ugt=Qr((al(),ie(re(cgt,1),tt,461,0,[Nd,a2,Af])))}function VZe(){VZe=pe,hgt=Qr((Lu(),ie(re(lgt,1),tt,462,0,[u1,o2,Lf])))}function UZe(){UZe=pe,X0t=Qr((F1(),ie(re(yl,1),tt,132,0,[g7e,Ql,xy])))}function WZe(){WZe=pe,Cpt=Qr((L_(),ie(re(cEe,1),tt,379,0,[que,Gue,Vue])))}function KZe(){KZe=pe,Hpt=Qr((Uv(),ie(re(fEe,1),tt,423,0,[N4,hEe,Xue])))}function YZe(){YZe=pe,y2t=Qr((V6(),ie(re(c9e,1),tt,314,0,[Ek,vO,o9e])))}function XZe(){XZe=pe,k2t=Qr((V$(),ie(re(l9e,1),tt,337,0,[u9e,Aq,ple])))}function QZe(){QZe=pe,_2t=Qr((sb(),ie(re(T2t,1),tt,450,0,[wle,aE,F4])))}function ZZe(){ZZe=pe,b2t=Qr((qv(),ie(re(sle,1),tt,361,0,[mw,u2,ww])))}function JZe(){JZe=pe,O2t=Qr((P0(),ie(re(I2t,1),tt,303,0,[mO,$4,Tk])))}function eJe(){eJe=pe,D2t=Qr((q8(),ie(re(Ale,1),tt,292,0,[Cle,Sle,wO])))}function tJe(){tJe=pe,Qvt=Qr((j_(),ie(re(h_e,1),tt,378,0,[ihe,l_e,iV])))}function nJe(){nJe=pe,swt=Qr((iH(),ie(re(T_e,1),tt,375,0,[x_e,fhe,E_e])))}function rJe(){rJe=pe,twt=Qr((R0(),ie(re(y_e,1),tt,339,0,[f2,m_e,uhe])))}function iJe(){iJe=pe,iwt=Qr((vo(),ie(re(rwt,1),tt,452,0,[yS,ul,hu])))}function sJe(){sJe=pe,uwt=Qr((uH(),ie(re(D_e,1),tt,377,0,[bhe,wE,Fy])))}function aJe(){aJe=pe,owt=Qr((Q8(),ie(re(S_e,1),tt,336,0,[ghe,C_e,kS])))}function oJe(){oJe=pe,cwt=Qr((nH(),ie(re(M_e,1),tt,338,0,[L_e,phe,A_e])))}function cJe(){cJe=pe,xwt=Qr((Gv(),ie(re(kwt,1),tt,454,0,[IO,xS,cV])))}function uJe(){uJe=pe,Lmt=Qr((yH(),ie(re(Amt,1),tt,442,0,[Dhe,Lhe,Mhe])))}function lJe(){lJe=pe,Dmt=Qr((RD(),ie(re(tCe,1),tt,380,0,[yV,J_e,eCe])))}function hJe(){hJe=pe,Kmt=Qr((mH(),ie(re(mCe,1),tt,381,0,[wCe,Rhe,vCe])))}function fJe(){fJe=pe,Wmt=Qr((rH(),ie(re(pCe,1),tt,293,0,[Bhe,gCe,dCe])))}function dJe(){dJe=pe,pyt=Qr((GD(),ie(re(Fhe,1),tt,437,0,[EV,TV,_V])))}function gJe(){gJe=pe,w3t=Qr((F0(),ie(re(cAe,1),tt,334,0,[FV,Wg,jS])))}function pJe(){pJe=pe,g3t=Qr((P1(),ie(re(XSe,1),tt,272,0,[EE,zy,TE])))}function Knn(){return wa(),ie(re(hAe,1),tt,98,0,[w2,X1,CE,$b,p0,tu])}function J2(e,t){return!e.o&&(e.o=new Nl((cu(),k2),Dw,e,0)),qie(e.o,t)}function Ynn(e){return!e.g&&(e.g=new kx),!e.g.d&&(e.g.d=new N$e(e)),e.g.d}function Xnn(e){return!e.g&&(e.g=new kx),!e.g.a&&(e.g.a=new P$e(e)),e.g.a}function Qnn(e){return!e.g&&(e.g=new kx),!e.g.b&&(e.g.b=new O$e(e)),e.g.b}function hD(e){return!e.g&&(e.g=new kx),!e.g.c&&(e.g.c=new B$e(e)),e.g.c}function Znn(e,t,n){var r,s;for(s=new G8(t,e),r=0;rn||t=0?e._g(n,!0,!0):tw(e,t,!0)}function prn(e,t){return Fs(Ue(ft(K(e,(et(),Ew)))),Ue(ft(K(t,Ew))))}function xJe(){xJe=pe,Tmt=Qv(Qv(AF(new Xs,(a7(),_S)),(nC(),dV)),mhe)}function brn(e,t,n){var r;return r=gnt(e,t,n),e.b=new Z$(r.c.length),w5e(e,r)}function vrn(e){if(e.b<=0)throw J(new xc);return--e.b,e.a-=e.c.c,ct(e.a)}function wrn(e){var t;if(!e.a)throw J(new CYe);return t=e.a,e.a=us(e.a),t}function mrn(e){for(;!e.a;)if(!lWe(e.c,new Rt(e)))return!1;return!0}function q6(e){var t;return Nr(e),we(e,198)?(t=u(e,198),t):new iee(e)}function yrn(e){A$(),u(e.We((bi(),Hy)),174).Fc((ol(),JO)),e.Ye(cfe,null)}function A$(){A$=pe,$yt=new vZ,zyt=new wZ,Hyt=ian((bi(),cfe),$yt,p2,zyt)}function L$(){L$=pe,Q_e=new A2e("LEAF_NUMBER",0),Ihe=new A2e("NODE_SIZE",1)}function krn(e,t,n){e.a=t,e.c=n,e.b.a.$b(),Rh(e.d),e.e.a.c=Me(Yn,yt,1,0,5,1)}function $re(e){e.a=Me(Lr,Jr,25,e.b+1,15,1),e.c=Me(Lr,Jr,25,e.b,15,1),e.d=0}function xrn(e,t){e.a.ue(t.d,e.b)>0&&(it(e.c,new vve(t.c,t.d,e.d)),e.b=t.d)}function fme(e,t){if(e.g==null||t>=e.i)throw J(new zte(t,e.i));return e.g[t]}function EJe(e,t,n){if(K8(e,n),n!=null&&!e.wj(n))throw J(new zee);return n}function TJe(e){var t;if(e.Ek())for(t=e.i-1;t>=0;--t)Te(e,t);return Rwe(e)}function Ern(e){var t,n;if(!e.b)return null;for(n=e.b;t=n.a[0];)n=t;return n}function Trn(e,t){var n,r;return UQe(t),n=(r=e.slice(0,t),gme(r,e)),n.length=t,n}function L8(e,t,n,r){var s;r=(q3(),r||r7e),s=e.slice(t,n),D4e(s,e,t,n,-t,r)}function ph(e,t,n,r,s){return t<0?tw(e,n,r):u(n,66).Nj().Pj(e,e.yh(),t,r,s)}function _rn(e){return we(e,172)?""+u(e,172).a:e==null?null:Qo(e)}function Crn(e){return we(e,172)?""+u(e,172).a:e==null?null:Qo(e)}function _Je(e,t){if(t.a)throw J(new tc(Sht));Gs(e.a,t),t.a=e,!e.j&&(e.j=t)}function dme(e,t){Hte.call(this,t.rd(),t.qd()&-16449),Sn(e),this.a=e,this.c=t}function CJe(e,t){var n,r;return r=t/e.c.Hd().gc()|0,n=t%e.c.Hd().gc(),G6(e,r,n)}function al(){al=pe,Nd=new pte(uk,0),a2=new pte(D7,1),Af=new pte(lk,2)}function M$(){M$=pe,_ue=new IF("All",0),l7e=new kVe,h7e=new OVe,f7e=new xVe}function SJe(){SJe=pe,q0t=Qr((M$(),ie(re(GG,1),tt,297,0,[_ue,l7e,h7e,f7e])))}function AJe(){AJe=pe,Ppt=Qr((V8(),ie(re(Npt,1),tt,405,0,[vw,_y,Ty,O4])))}function LJe(){LJe=pe,Bgt=Qr((Vv(),ie(re(Pgt,1),tt,406,0,[sO,iO,Oue,Nue])))}function MJe(){MJe=pe,Fgt=Qr((Z6(),ie(re(Rgt,1),tt,323,0,[oO,aO,cO,uO])))}function DJe(){DJe=pe,Hgt=Qr((Y_(),ie(re($gt,1),tt,394,0,[lO,KG,YG,hO])))}function IJe(){IJe=pe,smt=Qr((a7(),ie(re(B_e,1),tt,393,0,[fV,_S,NO,CS])))}function OJe(){OJe=pe,e2t=Qr((cH(),ie(re(Jpt,1),tt,360,0,[rle,kq,xq,bO])))}function NJe(){NJe=pe,Umt=Qr((jH(),ie(re(fCe,1),tt,340,0,[Phe,lCe,hCe,uCe])))}function PJe(){PJe=pe,u2t=Qr((R1(),ie(re(c2t,1),tt,411,0,[xk,tE,nE,ile])))}function BJe(){BJe=pe,Zvt=Qr((Zm(),ie(re(ahe,1),tt,197,0,[sV,she,K4,W4])))}function RJe(){RJe=pe,P3t=Qr((Pl(),ie(re(N3t,1),tt,396,0,[nh,mAe,wAe,yAe])))}function FJe(){FJe=pe,y3t=Qr((Ul(),ie(re(m3t,1),tt,285,0,[QO,d0,b2,XO])))}function jJe(){jJe=pe,p3t=Qr(($0(),ie(re(ffe,1),tt,218,0,[hfe,YO,_E,jk])))}function $Je(){$Je=pe,I3t=Qr((EH(),ie(re(vAe,1),tt,311,0,[pfe,gAe,bAe,pAe])))}function HJe(){HJe=pe,M3t=Qr((Bl(),ie(re(qS,1),tt,374,0,[tN,Hb,eN,Gy])))}function zJe(){zJe=pe,pz(),tLe=gs,R4t=Ds,nLe=new C3(gs),F4t=new C3(Ds)}function pD(){pD=pe,b9e=new b2e(U0,0),Dq=new b2e("IMPROVE_STRAIGHTNESS",1)}function Srn(e,t){return h8(),it(e,new xa(t,ct(t.e.c.length+t.g.c.length)))}function Arn(e,t){return h8(),it(e,new xa(t,ct(t.e.c.length+t.g.c.length)))}function gme(e,t){return yD(t)!=10&&ie(pl(t),t.hm,t.__elementTypeId$,yD(t),e),e}function Au(e,t){var n;return n=Yo(e,t,0),n==-1?!1:(Eg(e,n),!0)}function GJe(e,t){var n;return n=u(z6(e.e,t),387),n?(yve(n),n.e):null}function M8(e){var t;return Ko(e)&&(t=0-e,!isNaN(t))?t:Gp(U8(e))}function Yo(e,t,n){for(;n=0?NH(e,n,!0,!0):tw(e,t,!0)}function mme(e,t){IT();var n,r;return n=j6(e),r=j6(t),!!n&&!!r&&!oit(n.k,r.k)}function Drn(e,t){Du(e,t==null||wj((Sn(t),t))||isNaN((Sn(t),t))?0:(Sn(t),t))}function Irn(e,t){Iu(e,t==null||wj((Sn(t),t))||isNaN((Sn(t),t))?0:(Sn(t),t))}function Orn(e,t){zv(e,t==null||wj((Sn(t),t))||isNaN((Sn(t),t))?0:(Sn(t),t))}function Nrn(e,t){Hv(e,t==null||wj((Sn(t),t))||isNaN((Sn(t),t))?0:(Sn(t),t))}function KJe(e){(this.q?this.q:(hn(),hn(),l0)).Ac(e.q?e.q:(hn(),hn(),l0))}function Prn(e,t){return we(t,99)&&u(t,18).Bb&so?new Gte(t,e):new G8(t,e)}function Brn(e,t){return we(t,99)&&u(t,18).Bb&so?new Gte(t,e):new G8(t,e)}function YJe(e,t){j7e=new rs,jgt=t,ZC=e,u(ZC.b,65),sme(ZC,j7e,null),qut(ZC)}function Vre(e,t,n){var r;return r=e.g[t],n_(e,t,e.oi(t,n)),e.gi(t,n,r),e.ci(),r}function N$(e,t){var n;return n=e.Xc(t),n>=0?(e.$c(n),!0):!1}function Ure(e){var t;return e.d!=e.r&&(t=$h(e),e.e=!!t&&t.Cj()==Idt,e.d=t),e.e}function Wre(e,t){var n;for(Nr(e),Nr(t),n=!1;t.Ob();)n=n|e.Fc(t.Pb());return n}function Fv(e,t){var n;return n=u(er(e.e,t),387),n?(HVe(e,n),n.e):null}function XJe(e){var t,n;return t=e/60|0,n=e%60,n==0?""+t:""+t+":"+(""+n)}function ic(e,t){var n,r;return ub(e),r=new tme(t,e.a),n=new dWe(r),new vn(e,n)}function Gm(e,t){var n=e.a[t],r=(fie(),yue)[typeof n];return r?r(n):Eye(typeof n)}function Rrn(e){switch(e.g){case 0:return Ei;case 1:return-1;default:return 0}}function Frn(e){return $3e(e,(D8(),F8e))<0?-eKt(U8(e)):e.l+e.m*ck+e.h*vb}function yD(e){return e.__elementTypeCategory$==null?10:e.__elementTypeCategory$}function Kre(e){var t;return t=e.b.c.length==0?null:St(e.b,0),t!=null&&iie(e,0),t}function QJe(e,t){for(;t[0]=0;)++t[0]}function kD(e,t){this.e=t,this.a=Utt(e),this.a<54?this.f=Bv(e):this.c=WD(e)}function ZJe(e,t,n,r){yi(),cv.call(this,26),this.c=e,this.a=t,this.d=n,this.b=r}function e0(e,t,n){var r,s;for(r=10,s=0;se.a[r]&&(r=n);return r}function qrn(e,t){var n;return n=Kv(e.e.c,t.e.c),n==0?Fs(e.e.d,t.e.d):n}function W3(e,t){return t.e==0||e.e==0?K7:(d7(),Yse(e,t))}function Vrn(e,t){if(!e)throw J(new Ln(Kgn("Enum constant undefined: %s",t)))}function M_(){M_=pe,Fpt=new ev,jpt=new cd,Bpt=new fx,Rpt=new oh,$pt=new QK}function P$(){P$=pe,m7e=new l2e("BY_SIZE",0),Lue=new l2e("BY_SIZE_AND_SHAPE",1)}function B$(){B$=pe,$ue=new h2e("EADES",0),ZG=new h2e("FRUCHTERMAN_REINGOLD",1)}function ED(){ED=pe,Lq=new p2e("READING_DIRECTION",0),d9e=new p2e("ROTATION",1)}function eet(){eet=pe,x2t=Qr((db(),ie(re(f9e,1),tt,335,0,[ble,h9e,vle,sS,iS])))}function tet(){tet=pe,Jvt=Qr((X_(),ie(re(d_e,1),tt,315,0,[f_e,ohe,che,wS,mS])))}function net(){net=pe,h2t=Qr((c4(),ie(re(l2t,1),tt,363,0,[Tq,Cq,Sq,_q,Eq])))}function ret(){ret=pe,P2t=Qr((mh(),ie(re(G9e,1),tt,163,0,[TO,lS,l2,hS,Ly])))}function iet(){iet=pe,yyt=Qr((rI(),ie(re(RCe,1),tt,316,0,[NCe,zhe,BCe,Ghe,PCe])))}function set(){set=pe,Gyt=Qr((i1(),ie(re(Ug,1),tt,175,0,[Fn,ua,Fd,Bb,Vg])))}function aet(){aet=pe,gyt=Qr((v7(),ie(re(dyt,1),tt,355,0,[X4,Nk,IS,DS,OS])))}function oet(){oet=pe,Mpt=Qr((ro(),ie(re(uEe,1),tt,356,0,[Pd,c2,bu,Zc,Go])))}function cet(){cet=pe,d3t=Qr((wo(),ie(re(RS,1),tt,103,0,[f0,Df,Xh,Y0,X0])))}function uet(){uet=pe,x3t=Qr((n4(),ie(re(HS,1),tt,249,0,[v2,ZO,uAe,$S,lAe])))}function het(){het=pe,_3t=Qr((ht(),ie(re(ao,1),Dc,61,0,[uc,An,$n,xr,Dn])))}function Yre(e,t){var n;return n=u(er(e.a,t),134),n||(n=new b3,Si(e.a,t,n)),n}function fet(e){var t;return t=u(K(e,(et(),yw)),305),t?t.a==e:!1}function det(e){var t;return t=u(K(e,(et(),yw)),305),t?t.i==e:!1}function get(e,t){return Sn(t),$ve(e),e.d.Ob()?(t.td(e.d.Pb()),!0):!1}function R$(e){return Mc(e,Ei)>0?Ei:Mc(e,$a)<0?$a:Or(e)}function qm(e){return e<3?(ql(e,uht),e+1):e=0&&t=-.01&&e.a<=z1&&(e.a=0),e.b>=-.01&&e.b<=z1&&(e.b=0),e}function bet(e,t){return t==(gne(),gne(),H0t)?e.toLocaleLowerCase():e.toLowerCase()}function kme(e){return(e.i&2?"interface ":e.i&1?"":"class ")+(S0(e),e.o)}function Bo(e){var t,n;n=(t=new Uee,t),Br((!e.q&&(e.q=new at(nf,e,11,10)),e.q),n)}function Urn(e,t){var n;return n=t>0?t-1:t,hze(aUt(zet(mve(new Ux,n),e.n),e.j),e.k)}function Wrn(e,t,n,r){var s;e.j=-1,q4e(e,T4e(e,t,n),(ho(),s=u(t,66).Mj(),s.Ok(r)))}function vet(e){this.g=e,this.f=new st,this.a=b.Math.min(this.g.c.c,this.g.d.c)}function wet(e){this.b=new st,this.a=new st,this.c=new st,this.d=new st,this.e=e}function met(e,t){this.a=new Mr,this.e=new Mr,this.b=(j_(),iV),this.c=e,this.b=t}function yet(e,t,n){bj.call(this),xme(this),this.a=e,this.c=n,this.b=t.d,this.f=t.e}function ket(e){this.d=e,this.c=e.c.vc().Kc(),this.b=null,this.a=null,this.e=(cF(),bue)}function jv(e){if(e<0)throw J(new Ln("Illegal Capacity: "+e));this.g=this.ri(e)}function Krn(e,t){if(0>e||e>t)throw J(new Ppe("fromIndex: 0, toIndex: "+e+E6e+t))}function Yrn(e){var t;if(e.a==e.b.a)throw J(new xc);return t=e.a,e.c=t,e.a=e.a.e,t}function F$(e){var t;Am(!!e.c),t=e.c.a,bh(e.d,e.c),e.b==e.c?e.b=t:--e.a,e.c=null}function j$(e,t){var n;return ub(e),n=new zYe(e,e.a.rd(),e.a.qd()|4,t),new vn(e,n)}function Xrn(e,t){var n,r;return n=u(Ym(e.d,t),14),n?(r=t,e.e.pc(r,n)):null}function $$(e,t){var n,r;for(r=e.Kc();r.Ob();)n=u(r.Pb(),70),Ye(n,(et(),Ak),t)}function Qrn(e){var t;return t=Ue(ft(K(e,(pt(),Hg)))),t<0&&(t=0,Ye(e,Hg,t)),t}function Zrn(e,t,n){var r;r=b.Math.max(0,e.b/2-.5),Z_(n,r,1),it(t,new UGe(n,r))}function Jrn(e,t,n){var r;return r=e.a.e[u(t.a,10).p]-e.a.e[u(n.a,10).p],_s(WM(r))}function xet(e,t,n,r,s,o){var h;h=Dre(r),Va(h,s),ba(h,o),sn(e.a,r,new mj(h,t,n.f))}function Eet(e,t){var n;if(n=dI(e.Tg(),t),!n)throw J(new Ln(i2+t+Oce));return n}function Vm(e,t){var n;for(n=e;us(n);)if(n=us(n),n==t)return!0;return!1}function ein(e,t){var n,r,s;for(r=t.a.cd(),n=u(t.a.dd(),14).gc(),s=0;s0&&(e.a/=t,e.b/=t),e}function Gl(e){var t;return e.w?e.w:(t=utn(e),t&&!t.kh()&&(e.w=t),t)}function cin(e){var t;return e==null?null:(t=u(e,190),ufn(t,t.length))}function Te(e,t){if(e.g==null||t>=e.i)throw J(new zte(t,e.i));return e.li(t,e.g[t])}function uin(e){var t,n;for(t=e.a.d.j,n=e.c.d.j;t!=n;)Tf(e.b,t),t=vH(t);Tf(e.b,t)}function lin(e){var t;for(t=0;t=14&&t<=16))),e}function Aet(e,t,n){var r=function(){return e.apply(r,arguments)};return t.apply(r,n),r}function Let(e,t,n){var r,s;r=t;do s=Ue(e.p[r.p])+n,e.p[r.p]=s,r=e.a[r.p];while(r!=t)}function I8(e,t){var n,r;r=e.a,n=qan(e,t,null),r!=t&&!e.e&&(n=E7(e,t,n)),n&&n.Fi()}function Eme(e,t){return S1(),Ef(Jp),b.Math.abs(e-t)<=Jp||e==t||isNaN(e)&&isNaN(t)}function Tme(e,t){return S1(),Ef(Jp),b.Math.abs(e-t)<=Jp||e==t||isNaN(e)&&isNaN(t)}function din(e,t){return Xp(),Tu(e.b.c.length-e.e.c.length,t.b.c.length-t.e.c.length)}function K3(e,t){return hUt(O_(e,t,Or(ja(s0,Qd(Or(ja(t==null?0:Xi(t),a0)),15)))))}function Met(){Met=pe,Vpt=Qr((zn(),ie(re(Zue,1),tt,267,0,[Hs,ca,Ls,Jc,Rl,U1])))}function Det(){Det=pe,Zyt=Qr((ty(),ie(re(Jhe,1),tt,291,0,[Zhe,qO,GO,Qhe,HO,zO])))}function Iet(){Iet=pe,Uyt=Qr((t0(),ie(re(aSe,1),tt,248,0,[Yhe,jO,$O,DV,LV,MV])))}function Oet(){Oet=pe,w2t=Qr((ek(),ie(re(sE,1),tt,227,0,[iE,rS,rE,Cy,R4,B4])))}function Net(){Net=pe,L2t=Qr((h7(),ie(re(A9e,1),tt,275,0,[aS,T9e,S9e,C9e,_9e,E9e])))}function Pet(){Pet=pe,A2t=Qr((tI(),ie(re(x9e,1),tt,274,0,[Iq,m9e,k9e,w9e,y9e,Tle])))}function Bet(){Bet=pe,Xvt=Qr((WH(),ie(re(u_e,1),tt,313,0,[rhe,o_e,nhe,a_e,c_e,rV])))}function Ret(){Ret=pe,C2t=Qr((QH(),ie(re(p9e,1),tt,276,0,[yle,mle,xle,kle,Ele,Mq])))}function Fet(){Fet=pe,omt=Qr((nC(),ie(re(amt,1),tt,327,0,[dV,mhe,khe,yhe,xhe,whe])))}function jet(){jet=pe,T3t=Qr((ol(),ie(re(jV,1),tt,273,0,[m2,Z0,JO,GS,zS,$k])))}function $et(){$et=pe,b3t=Qr((YH(),ie(re(nAe,1),tt,312,0,[dfe,JSe,tAe,QSe,eAe,ZSe])))}function gin(){return sy(),ie(re(xo,1),tt,93,0,[If,Q0,Of,Pf,g0,Zh,Jl,Nf,Qh])}function z$(e,t){var n;n=e.a,e.a=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,0,n,e.a))}function G$(e,t){var n;n=e.b,e.b=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,1,n,e.b))}function O8(e,t){var n;n=e.b,e.b=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,3,n,e.b))}function Hv(e,t){var n;n=e.f,e.f=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,3,n,e.f))}function zv(e,t){var n;n=e.g,e.g=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,4,n,e.g))}function Du(e,t){var n;n=e.i,e.i=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,5,n,e.i))}function Iu(e,t){var n;n=e.j,e.j=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,6,n,e.j))}function N8(e,t){var n;n=e.j,e.j=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,1,n,e.j))}function P8(e,t){var n;n=e.c,e.c=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,4,n,e.c))}function B8(e,t){var n;n=e.k,e.k=t,e.Db&4&&!(e.Db&1)&&_i(e,new Hm(e,2,n,e.k))}function Qre(e,t){var n;n=e.d,e.d=t,e.Db&4&&!(e.Db&1)&&_i(e,new Tre(e,2,n,e.d))}function Cg(e,t){var n;n=e.s,e.s=t,e.Db&4&&!(e.Db&1)&&_i(e,new Tre(e,4,n,e.s))}function Wm(e,t){var n;n=e.t,e.t=t,e.Db&4&&!(e.Db&1)&&_i(e,new Tre(e,5,n,e.t))}function R8(e,t){var n;n=e.F,e.F=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,5,n,t))}function TD(e,t){var n;return n=u(er((LF(),QV),e),55),n?n.xj(t):Me(Yn,yt,1,t,5,1)}function B0(e,t){var n,r;return n=t in e.a,n&&(r=M0(e,t).he(),r)?r.a:null}function pin(e,t){var n,r,s;return n=(r=(pv(),s=new j9,s),t&&f5e(r,t),r),Ome(n,e),n}function Het(e,t,n){if(K8(e,n),!e.Bk()&&n!=null&&!e.wj(n))throw J(new zee);return n}function zet(e,t){return e.n=t,e.n?(e.f=new st,e.e=new st):(e.f=null,e.e=null),e}function Gr(e,t,n,r,s,o){var h;return h=Gne(e,t),qet(n,h),h.i=s?8:0,h.f=r,h.e=s,h.g=o,h}function _me(e,t,n,r,s){this.d=t,this.k=r,this.f=s,this.o=-1,this.p=1,this.c=e,this.a=n}function Cme(e,t,n,r,s){this.d=t,this.k=r,this.f=s,this.o=-1,this.p=2,this.c=e,this.a=n}function Sme(e,t,n,r,s){this.d=t,this.k=r,this.f=s,this.o=-1,this.p=6,this.c=e,this.a=n}function Ame(e,t,n,r,s){this.d=t,this.k=r,this.f=s,this.o=-1,this.p=7,this.c=e,this.a=n}function Lme(e,t,n,r,s){this.d=t,this.j=r,this.e=s,this.o=-1,this.p=4,this.c=e,this.a=n}function Get(e,t){var n,r,s,o;for(r=t,s=0,o=r.length;s=0),pcn(e.d,e.c)<0&&(e.a=e.a-1&e.d.a.length-1,e.b=e.d.c),e.c=-1}function Mme(e){return e.a<54?e.f<0?-1:e.f>0?1:0:(!e.c&&(e.c=FD(e.f)),e.c).e}function Ef(e){if(!(e>=0))throw J(new Ln("tolerance ("+e+") must be >= 0"));return e}function F8(){return Whe||(Whe=new Ict,J3(Whe,ie(re(I4,1),yt,130,0,[new wp]))),Whe}function vo(){vo=pe,yS=new Ste(EC,0),ul=new Ste("INPUT",1),hu=new Ste("OUTPUT",2)}function V$(){V$=pe,u9e=new kte("ARD",0),Aq=new kte("MSD",1),ple=new kte("MANUAL",2)}function Gv(){Gv=pe,IO=new Ite("BARYCENTER",0),xS=new Ite(bft,1),cV=new Ite(vft,2)}function _D(e,t){var n;if(n=e.gc(),t<0||t>n)throw J(new Im(t,n));return new Kbe(e,t)}function Wet(e,t){var n;return we(t,42)?e.c.Mc(t):(n=qie(e,t),CH(e,t),n)}function Co(e,t,n){return cb(e,t),au(e,n),Cg(e,0),Wm(e,1),Mg(e,!0),Lg(e,!0),e}function ql(e,t){if(e<0)throw J(new Ln(t+" cannot be negative but was: "+e));return e}function Ket(e,t){var n,r;for(n=0,r=e.gc();n0?u(St(n.a,r-1),10):null}function I_(e,t){var n;n=e.k,e.k=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,2,n,e.k))}function W$(e,t){var n;n=e.f,e.f=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,8,n,e.f))}function K$(e,t){var n;n=e.i,e.i=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,7,n,e.i))}function Ome(e,t){var n;n=e.a,e.a=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,8,n,e.a))}function Nme(e,t){var n;n=e.b,e.b=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,0,n,e.b))}function Pme(e,t){var n;n=e.b,e.b=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,0,n,e.b))}function Bme(e,t){var n;n=e.c,e.c=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,1,n,e.c))}function Rme(e,t){var n;n=e.c,e.c=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,1,n,e.c))}function Jre(e,t){var n;n=e.c,e.c=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,4,n,e.c))}function Fme(e,t){var n;n=e.d,e.d=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,1,n,e.d))}function eie(e,t){var n;n=e.D,e.D=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,2,n,e.D))}function tie(e,t){e.r>0&&e.c0&&e.g!=0&&tie(e.i,t/e.r*e.i.d))}function Tin(e,t,n){var r;e.b=t,e.a=n,r=(e.a&512)==512?new PHe:new qL,e.c=$pn(r,e.b,e.a)}function rtt(e,t){return G0(e.e,t)?(ho(),Ure(t)?new Cj(t,e):new DM(t,e)):new Wqe(t,e)}function Y$(e,t){return lUt(N_(e.a,t,Or(ja(s0,Qd(Or(ja(t==null?0:Xi(t),a0)),15)))))}function _in(e,t,n){return zm(e,new ot(t),new Zs,new ut(n),ie(re(yl,1),tt,132,0,[]))}function Cin(e){var t,n;return 0>e?new Xpe:(t=e+1,n=new _Ze(t,e),new Lbe(null,n))}function Sin(e,t){hn();var n;return n=new w6(1),fa(e)?Oo(n,e,t):gu(n.f,e,t),new H(n)}function Ain(e,t){var n,r;return n=e.o+e.p,r=t.o+t.p,nt?(t<<=1,t>0?t:wC):t}function nie(e){switch(abe(e.e!=3),e.e){case 2:return!1;case 0:return!0}return Nnn(e)}function stt(e,t){var n;return we(t,8)?(n=u(t,8),e.a==n.a&&e.b==n.b):!1}function rie(e,t,n){var r,s,o;return o=t>>5,s=t&31,r=qs(Nm(e.n[n][o],Or(A0(s,1))),3),r}function Min(e,t){var n,r;for(r=t.vc().Kc();r.Ob();)n=u(r.Pb(),42),qH(e,n.cd(),n.dd())}function Din(e,t){var n;n=new rs,u(t.b,65),u(t.b,65),u(t.b,65),Mu(t.a,new sve(e,n,t))}function jme(e,t){var n;n=e.b,e.b=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,21,n,e.b))}function $me(e,t){var n;n=e.d,e.d=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,11,n,e.d))}function X$(e,t){var n;n=e.j,e.j=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,13,n,e.j))}function att(e,t,n){var r,s,o;for(o=e.a.length-1,s=e.b,r=0;r>>31;r!=0&&(e[n]=r)}function Hin(e,t){hn();var n,r;for(r=new st,n=0;n0&&(this.g=this.ri(this.i+(this.i/8|0)+1),e.Qc(this.g))}function ds(e,t){xj.call(this,b4t,e,t),this.b=this,this.a=pu(e.Tg(),gn(this.e.Tg(),this.c))}function P_(e,t){var n,r;for(Sn(t),r=t.vc().Kc();r.Ob();)n=u(r.Pb(),42),e.zc(n.cd(),n.dd())}function Qin(e,t,n){var r;for(r=n.Kc();r.Ob();)if(!v$(e,t,r.Pb()))return!1;return!0}function Zin(e,t,n,r,s){var o;return n&&(o=Ji(t.Tg(),e.c),s=n.gh(t,-1-(o==-1?r:o),null,s)),s}function Jin(e,t,n,r,s){var o;return n&&(o=Ji(t.Tg(),e.c),s=n.ih(t,-1-(o==-1?r:o),null,s)),s}function _tt(e){var t;if(e.b==-2){if(e.e==0)t=-1;else for(t=0;e.a[t]==0;t++);e.b=t}return e.b}function Ctt(e){switch(e.g){case 2:return ht(),Dn;case 4:return ht(),$n;default:return e}}function Stt(e){switch(e.g){case 1:return ht(),xr;case 3:return ht(),An;default:return e}}function esn(e){var t,n,r;return e.j==(ht(),An)&&(t=not(e),n=Vu(t,$n),r=Vu(t,Dn),r||r&&n)}function tsn(e){var t,n;return t=u(e.e&&e.e(),9),n=u(Qve(t,t.length),9),new hh(t,n,t.length)}function nsn(e,t){kr(t,pft,1),Uye(xUt(new nr((DT(),new Qne(e,!1,!1,new qP))))),ur(t)}function CD(e,t){return Mn(),fa(e)?Jwe(e,Hr(t)):Sm(e)?Ine(e,ft(t)):Cm(e)?aZt(e,Mt(t)):e.wd(t)}function Ume(e,t){t.q=e,e.d=b.Math.max(e.d,t.r),e.b+=t.d+(e.a.c.length==0?0:e.c),it(e.a,t)}function $8(e,t){var n,r,s,o;return s=e.c,n=e.c+e.b,o=e.d,r=e.d+e.a,t.a>s&&t.ao&&t.b1||e.Ob())return++e.a,e.g=0,t=e.i,e.Ob(),t;throw J(new xc)}function gsn(e){CVe();var t;return BGe(vhe,e)||(t=new CQ,t.a=e,Bbe(vhe,e,t)),u(_o(vhe,e),635)}function Fh(e){var t,n,r,s;return s=e,r=0,s<0&&(s+=vb,r=V0),n=_s(s/ck),t=_s(s-n*ck),fu(t,n,r)}function SD(e){var t,n,r;for(r=0,n=new m6(e.a);n.a>22),s=e.h+t.h+(r>>22),fu(n&ml,r&ml,s&V0)}function Wtt(e,t){var n,r,s;return n=e.l-t.l,r=e.m-t.m+(n>>22),s=e.h-t.h+(r>>22),fu(n&ml,r&ml,s&V0)}function DD(e){var t;return e<128?(t=(aKe(),z8e)[e],!t&&(t=z8e[e]=new YR(e)),t):new YR(e)}function ts(e){var t;return we(e,78)?e:(t=e&&e.__java$exception,t||(t=new Bnt(e),Q$e(t)),t)}function ID(e){if(we(e,186))return u(e,118);if(e)return null;throw J(new b6(z1t))}function Ktt(e,t){if(t==null)return!1;for(;e.a!=e.b;)if(Ci(t,gH(e)))return!0;return!1}function Zme(e){return e.a.Ob()?!0:e.a!=e.d?!1:(e.a=new Iwe(e.e.f),e.a.Ob())}function Rs(e,t){var n,r;return n=t.Pc(),r=n.length,r==0?!1:(hve(e.c,e.c.length,n),!0)}function Lsn(e,t,n){var r,s;for(s=t.vc().Kc();s.Ob();)r=u(s.Pb(),42),e.yc(r.cd(),r.dd(),n);return e}function Ytt(e,t){var n,r;for(r=new C(e.b);r.a=0,"Negative initial capacity"),kj(t>=0,"Non-positive load factor"),sl(this)}function die(e,t,n){return e>=128?!1:e<64?XT(qs(A0(1,e),n),0):XT(qs(A0(1,e-64),t),0)}function Fsn(e,t){return!e||!t||e==t?!1:Kv(e.b.c,t.b.c+t.b.b)<0&&Kv(t.b.c,e.b.c+e.b.b)<0}function ont(e){var t,n,r;return n=e.n,r=e.o,t=e.d,new fh(n.a-t.b,n.b-t.d,r.a+(t.b+t.c),r.b+(t.d+t.a))}function jsn(e){var t,n,r,s;for(n=e.a,r=0,s=n.length;rr)throw J(new Im(t,r));return e.hi()&&(n=xXe(e,n)),e.Vh(t,n)}function PD(e,t,n){return n==null?(!e.q&&(e.q=new Mr),z6(e.q,t)):(!e.q&&(e.q=new Mr),Si(e.q,t,n)),e}function Ye(e,t,n){return n==null?(!e.q&&(e.q=new Mr),z6(e.q,t)):(!e.q&&(e.q=new Mr),Si(e.q,t,n)),e}function cnt(e){var t,n;return n=new k$,Ho(n,e),Ye(n,(zp(),kk),e),t=new Mr,Gbn(e,n,t),pmn(e,n,t),n}function zsn(e){g4();var t,n,r;for(n=Me(na,Qe,8,2,0,1),r=0,t=0;t<2;t++)r+=.5,n[t]=Eun(r,e);return n}function unt(e,t){var n,r,s,o;for(n=!1,r=e.a[t].length,o=0;o>=1);return t}function hnt(e){var t,n;return n=uI(e.h),n==32?(t=uI(e.m),t==32?uI(e.l)+32:t+20-10):n-12}function F_(e){var t;return t=e.a[e.b],t==null?null:(cs(e.a,e.b,null),e.b=e.b+1&e.a.length-1,t)}function fnt(e){var t,n;return t=e.t-e.k[e.o.p]*e.d+e.j[e.o.p]>e.f,n=e.u+e.e[e.o.p]*e.d>e.f*e.s*e.d,t||n}function lH(e,t,n){var r,s;return r=new Rre(t,n),s=new Nt,e.b=rct(e,e.b,r,s),s.b||++e.c,e.b.b=!1,s.d}function dnt(e,t,n){var r,s,o,h;for(h=H_(t,n),o=0,s=h.Kc();s.Ob();)r=u(s.Pb(),11),Si(e.c,r,ct(o++))}function qp(e){var t,n;for(n=new C(e.a.b);n.an&&(n=e[t]);return n}function gnt(e,t,n){var r;return r=new st,p5e(e,t,r,(ht(),$n),!0,!1),p5e(e,n,r,Dn,!1,!1),r}function pie(e,t,n){var r,s,o,h;return o=null,h=t,s=Rv(h,"labels"),r=new Iqe(e,n),o=(o0n(r.a,r.b,s),s),o}function qsn(e,t,n,r){var s;return s=n5e(e,t,n,r),!s&&(s=Van(e,n,r),s&&!v4(e,t,s))?null:s}function Vsn(e,t,n,r){var s;return s=r5e(e,t,n,r),!s&&(s=Iie(e,n,r),s&&!v4(e,t,s))?null:s}function pnt(e,t){var n;for(n=0;n1||t>=0&&e.b<3)}function BD(e){var t,n,r;for(t=new Gu,r=ii(e,0);r.b!=r.d.c;)n=u(ri(r),8),c8(t,0,new Io(n));return t}function ab(e){var t,n;for(n=new C(e.a.b);n.ar?1:0}function vye(e,t){return jot(e,t)?(sn(e.b,u(K(t,(et(),Sy)),21),t),ci(e.a,t),!0):!1}function ran(e){var t,n;t=u(K(e,(et(),cl)),10),t&&(n=t.c,Au(n.a,t),n.a.c.length==0&&Au(Ya(t).b,n))}function knt(e){return V1?Me(V0t,Eht,572,0,0,1):u(j1(e.a,Me(V0t,Eht,572,e.a.c.length,0,1)),842)}function ian(e,t,n,r){return Uj(),new Qee(ie(re(Cb,1),Sz,42,0,[(cse(e,t),new vv(e,t)),(cse(n,r),new vv(n,r))]))}function Z3(e,t,n){var r,s;return s=(r=new Uee,r),Co(s,t,n),Br((!e.q&&(e.q=new at(nf,e,11,10)),e.q),s),s}function mie(e){var t,n,r,s;for(s=MUt(V3t,e),n=s.length,r=Me(mt,Qe,2,n,6,1),t=0;t=e.b.c.length||(wye(e,2*t+1),n=2*t+2,n=0&&e[r]===t[r];r--);return r<0?0:fte(qs(e[r],yo),qs(t[r],yo))?-1:1}function san(e,t){var n,r;for(r=ii(e,0);r.b!=r.d.c;)n=u(ri(r),214),n.e.length>0&&(t.td(n),n.i&&Jan(n))}function kie(e,t){var n,r;return r=u(_n(e.a,4),126),n=Me(kfe,Xce,415,t,0,1),r!=null&&Hc(r,0,n,0,r.length),n}function Ent(e,t){var n;return n=new Zse((e.f&256)!=0,e.i,e.a,e.d,(e.f&16)!=0,e.j,e.g,t),e.e!=null||(n.c=e),n}function aan(e,t){var n,r;for(r=e.Zb().Cc().Kc();r.Ob();)if(n=u(r.Pb(),14),n.Hc(t))return!0;return!1}function xie(e,t,n,r,s){var o,h;for(h=n;h<=s;h++)for(o=t;o<=r;o++)if(i4(e,o,h))return!0;return!1}function Tnt(e,t,n){var r,s,o,h;for(Sn(n),h=!1,o=e.Zc(t),s=n.Kc();s.Ob();)r=s.Pb(),o.Rb(r),h=!0;return h}function oan(e,t){var n;return e===t?!0:we(t,83)?(n=u(t,83),y4e(Cv(e),n.vc())):!1}function _nt(e,t,n){var r,s;for(s=n.Kc();s.Ob();)if(r=u(s.Pb(),42),e.re(t,r.dd()))return!0;return!1}function Cnt(e,t,n){return e.d[t.p][n.p]||(run(e,t,n),e.d[t.p][n.p]=!0,e.d[n.p][t.p]=!0),e.a[t.p][n.p]}function K8(e,t){if(!e.ai()&&t==null)throw J(new Ln("The 'no null' constraint is violated"));return t}function Y8(e,t){e.D==null&&e.B!=null&&(e.D=e.B,e.B=null),eie(e,t==null?null:(Sn(t),t)),e.C&&e.yk(null)}function can(e,t){var n;return!e||e==t||!ta(t,(et(),xw))?!1:(n=u(K(t,(et(),xw)),10),n!=e)}function Eie(e){switch(e.i){case 2:return!0;case 1:return!1;case-1:++e.c;default:return e.pl()}}function Snt(e){switch(e.i){case-2:return!0;case-1:return!1;case 1:--e.c;default:return e.ql()}}function Ant(e){pXe.call(this,"The given string does not match the expected format for individual spacings.",e)}function Pl(){Pl=pe,nh=new WF("ELK",0),mAe=new WF("JSON",1),wAe=new WF("DOT",2),yAe=new WF("SVG",3)}function RD(){RD=pe,yV=new Nte(U0,0),J_e=new Nte("RADIAL_COMPACTION",1),eCe=new Nte("WEDGE_COMPACTION",2)}function F1(){F1=pe,g7e=new dte("CONCURRENT",0),Ql=new dte("IDENTITY_FINISH",1),xy=new dte("UNORDERED",2)}function Tie(){Tie=pe,G7e=(EF(),Pue),z7e=new dn(F6e,G7e),Ggt=new Zi(j6e),qgt=new Zi($6e),Vgt=new Zi(H6e)}function X8(){X8=pe,n9e=new z5,r9e=new $Y,r2t=new SL,n2t=new HY,t2t=new zY,t9e=(Sn(t2t),new cn)}function Q8(){Q8=pe,ghe=new Lte("CONSERVATIVE",0),C_e=new Lte("CONSERVATIVE_SOFT",1),kS=new Lte("SLOPPY",2)}function hH(){hH=pe,oAe=new kv(15),v3t=new fo((bi(),Fb),oAe),FS=Rk,rAe=e3t,iAe=Rb,aAe=e5,sAe=NV}function _ie(e,t,n){var r,s,o;for(r=new as,o=ii(n,0);o.b!=o.d.c;)s=u(ri(o),8),ci(r,new Io(s));Tnt(e,t,r)}function uan(e){var t,n,r;for(t=0,r=Me(na,Qe,8,e.b,0,1),n=ii(e,0);n.b!=n.d.c;)r[t++]=u(ri(n),8);return r}function yye(e){var t;return t=(!e.a&&(e.a=new at(J0,e,9,5)),e.a),t.i!=0?SUt(u(Te(t,0),678)):null}function lan(e,t){var n;return n=Ua(e,t),fte(vre(e,t),0)|GUt(vre(e,n),0)?n:Ua(Cz,vre(Nm(n,63),1))}function han(e,t){var n;n=xt((zie(),nV))!=null&&t.wg()!=null?Ue(ft(t.wg()))/Ue(ft(xt(nV))):1,Si(e.b,t,n)}function fan(e,t){var n,r;return n=u(e.d.Bc(t),14),n?(r=e.e.hc(),r.Gc(n),e.e.d-=n.gc(),n.$b(),r):null}function kye(e,t){var n,r;if(r=e.c[t],r!=0)for(e.c[t]=0,e.d-=r,n=t+1;n0)return d8(t-1,e.a.c.length),Eg(e.a,t-1);throw J(new J$e)}function dan(e,t,n){if(t<0)throw J(new Do(Zft+t));tt)throw J(new Ln(Dz+e+Tht+t));if(e<0||t>n)throw J(new Ppe(Dz+e+_6e+t+E6e+n))}function Dnt(e){if(!e.a||!(e.a.i&8))throw J(new Wo("Enumeration class expected for layout option "+e.f))}function Km(e){var t;++e.j,e.i==0?e.g=null:e.iaG?e-n>aG:n-e>aG}function Sie(e,t){return!e||t&&!e.j||we(e,124)&&u(e,124).a.b==0?0:e.Re()}function dH(e,t){return!e||t&&!e.k||we(e,124)&&u(e,124).a.a==0?0:e.Se()}function FD(e){return Qp(),e<0?e!=-1?new b3e(-1,-e):Eue:e<=10?n7e[_s(e)]:new b3e(1,e)}function Eye(e){throw fie(),J(new UHe("Unexpected typeof result '"+e+"'; please report this bug to the GWT team"))}function Bnt(e){ZHe(),ij(this),Qj(this),this.e=e,Yot(this,e),this.g=e==null?Pu:Qo(e),this.a="",this.b=e,this.a=""}function Tye(){this.a=new aZ,this.f=new Hje(this),this.b=new zje(this),this.i=new Gje(this),this.e=new qje(this)}function Rnt(){xVt.call(this,new ome(qm(16))),ql(2,sht),this.b=2,this.a=new awe(null,null,0,null),oM(this.a,this.a)}function j_(){j_=pe,ihe=new _te("DUMMY_NODE_OVER",0),l_e=new _te("DUMMY_NODE_UNDER",1),iV=new _te("EQUAL",2)}function Aie(){Aie=pe,Wue=vXe(ie(re(RS,1),tt,103,0,[(wo(),Xh),Df])),Kue=vXe(ie(re(RS,1),tt,103,0,[X0,Y0]))}function Lie(e){return(ht(),Ru).Hc(e.j)?Ue(ft(K(e,(et(),hE)))):sc(ie(re(na,1),Qe,8,0,[e.i.n,e.n,e.a])).b}function wan(e){var t,n,r,s;for(r=e.b.a,n=r.a.ec().Kc();n.Ob();)t=u(n.Pb(),561),s=new Lot(t,e.e,e.f),it(e.g,s)}function cb(e,t){var n,r,s;r=e.nk(t,null),s=null,t&&(s=(Qx(),n=new uv,n),I8(s,e.r)),r=$1(e,s,r),r&&r.Fi()}function man(e,t){var n,r;for(r=vl(e.d,1)!=0,n=!0;n;)n=!1,n=t.c.Tf(t.e,r),n=n|gI(e,t,r,!1),r=!r;zme(e)}function _ye(e,t){var n,r,s;return r=!1,n=t.q.d,t.ds&&(ust(t.q,s),r=n!=t.q.d)),r}function Fnt(e,t){var n,r,s,o,h,d,v,x;return v=t.i,x=t.j,r=e.f,s=r.i,o=r.j,h=v-s,d=x-o,n=b.Math.sqrt(h*h+d*d),n}function Cye(e,t){var n,r;return r=SH(e),r||(n=(kae(),lat(t)),r=new q$e(n),Br(r.Vk(),e)),r}function jD(e,t){var n,r;return n=u(e.c.Bc(t),14),n?(r=e.hc(),r.Gc(n),e.d-=n.gc(),n.$b(),e.mc(r)):e.jc()}function jnt(e,t){var n;for(n=0;n=e.c.b:e.a<=e.c.b))throw J(new xc);return t=e.a,e.a+=e.c.c,++e.b,ct(t)}function xan(e){var t;return t=new vet(e),sD(e.a,$pt,new Al(ie(re(dO,1),yt,369,0,[t]))),t.d&&it(t.f,t.d),t.f}function Mie(e){var t;return t=new W2e(e.a),Ho(t,e),Ye(t,(et(),Mi),e),t.o.a=e.g,t.o.b=e.f,t.n.a=e.i,t.n.b=e.j,t}function Ean(e,t,n,r){var s,o;for(o=e.Kc();o.Ob();)s=u(o.Pb(),70),s.n.a=t.a+(r.a-s.o.a)/2,s.n.b=t.b,t.b+=s.o.b+n}function Tan(e,t,n){var r,s;for(s=t.a.a.ec().Kc();s.Ob();)if(r=u(s.Pb(),57),XYe(e,r,n))return!0;return!1}function _an(e){var t,n;for(n=new C(e.r);n.a=0?t:-t;r>0;)r%2==0?(n*=n,r=r/2|0):(s*=n,r-=1);return t<0?1/s:s}function Lan(e,t){var n,r,s;for(s=1,n=e,r=t>=0?t:-t;r>0;)r%2==0?(n*=n,r=r/2|0):(s*=n,r-=1);return t<0?1/s:s}function Unt(e){var t,n;if(e!=null)for(n=0;n0&&(n=u(St(e.a,e.a.c.length-1),570),vye(n,t))||it(e.a,new EZe(t))}function Nan(e){mf();var t,n;t=e.d.c-e.e.c,n=u(e.g,145),Mu(n.b,new pT(t)),Mu(n.c,new $2(t)),Da(n.i,new QR(t))}function Xnt(e){var t;return t=new Tp,t.a+="VerticalSegment ",Ec(t,e.e),t.a+=" ",Yr(t,rbe(new ste,new C(e.k))),t.a}function Pan(e){var t;return t=u(Fv(e.c.c,""),229),t||(t=new R6(Xx(Yx(new hm,""),"Other")),hb(e.c.c,"",t)),t}function $_(e){var t;return e.Db&64?_f(e):(t=new Ph(_f(e)),t.a+=" (name: ",To(t,e.zb),t.a+=")",t.a)}function Dye(e,t,n){var r,s;return s=e.sb,e.sb=t,e.Db&4&&!(e.Db&1)&&(r=new oa(e,1,4,s,t),n?n.Ei(r):n=r),n}function Die(e,t){var n,r,s;for(n=0,s=ac(e,t).Kc();s.Ob();)r=u(s.Pb(),11),n+=K(r,(et(),cl))!=null?1:0;return n}function e4(e,t,n){var r,s,o;for(r=0,o=ii(e,0);o.b!=o.d.c&&(s=Ue(ft(ri(o))),!(s>n));)s>=t&&++r;return r}function Ban(e,t,n){var r,s;return r=new N0(e.e,3,13,null,(s=t.c,s||(on(),Z1)),Dg(e,t),!1),n?n.Ei(r):n=r,n}function Ran(e,t,n){var r,s;return r=new N0(e.e,4,13,(s=t.c,s||(on(),Z1)),null,Dg(e,t),!1),n?n.Ei(r):n=r,n}function Iye(e,t,n){var r,s;return s=e.r,e.r=t,e.Db&4&&!(e.Db&1)&&(r=new oa(e,1,8,s,e.r),n?n.Ei(r):n=r),n}function Ag(e,t){var n,r;return n=u(t,676),r=n.vk(),!r&&n.wk(r=we(t,88)?new qqe(e,u(t,26)):new hQe(e,u(t,148))),r}function $D(e,t,n){var r;e.qi(e.i+1),r=e.oi(t,n),t!=e.i&&Hc(e.g,t,e.g,t+1,e.i-t),cs(e.g,t,r),++e.i,e.bi(t,n),e.ci()}function Fan(e,t){var n;return t.a&&(n=t.a.a.length,e.a?Yr(e.a,e.b):e.a=new Fl(e.d),dQe(e.a,t.a,t.d.length,n)),e}function jan(e,t){var n,r,s,o;if(t.vi(e.a),o=u(_n(e.a,8),1936),o!=null)for(n=o,r=0,s=n.length;rn)throw J(new Do(Dz+e+_6e+t+", size: "+n));if(e>t)throw J(new Ln(Dz+e+Tht+t))}function wh(e,t,n){if(t<0)P4e(e,n);else{if(!n.Ij())throw J(new Ln(i2+n.ne()+RC));u(n,66).Nj().Vj(e,e.yh(),t)}}function zan(e,t,n,r,s,o,h,d){var v;for(v=n;o=r||t=65&&e<=70?e-65+10:e>=97&&e<=102?e-97+10:e>=48&&e<=57?e-48:0}function rrt(e){var t;return e.Db&64?_f(e):(t=new Ph(_f(e)),t.a+=" (source: ",To(t,e.d),t.a+=")",t.a)}function qan(e,t,n){var r,s;return s=e.a,e.a=t,e.Db&4&&!(e.Db&1)&&(r=new oa(e,1,5,s,e.a),n?t4e(n,r):n=r),n}function Lg(e,t){var n;n=(e.Bb&256)!=0,t?e.Bb|=256:e.Bb&=-257,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,2,n,t))}function Nye(e,t){var n;n=(e.Bb&256)!=0,t?e.Bb|=256:e.Bb&=-257,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,8,n,t))}function bH(e,t){var n;n=(e.Bb&256)!=0,t?e.Bb|=256:e.Bb&=-257,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,8,n,t))}function Mg(e,t){var n;n=(e.Bb&512)!=0,t?e.Bb|=512:e.Bb&=-513,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,3,n,t))}function Pye(e,t){var n;n=(e.Bb&512)!=0,t?e.Bb|=512:e.Bb&=-513,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,9,n,t))}function z_(e,t){var n;return e.b==-1&&e.a&&(n=e.a.Gj(),e.b=n?e.c.Xg(e.a.aj(),n):Ji(e.c.Tg(),e.a)),e.c.Og(e.b,t)}function ct(e){var t,n;return e>-129&&e<128?(t=e+128,n=(JWe(),G8e)[t],!n&&(n=G8e[t]=new rM(e)),n):new rM(e)}function Z8(e){var t,n;return e>-129&&e<128?(t=e+128,n=(sKe(),W8e)[t],!n&&(n=W8e[t]=new XR(e)),n):new XR(e)}function Bye(e){var t,n;return t=e.k,t==(zn(),Ls)?(n=u(K(e,(et(),vc)),61),n==(ht(),An)||n==xr):!1}function Van(e,t,n){var r,s,o;return o=(s=p7(e.b,t),s),o&&(r=u(wz(wD(e,o),""),26),r)?n5e(e,r,t,n):null}function Iie(e,t,n){var r,s,o;return o=(s=p7(e.b,t),s),o&&(r=u(wz(wD(e,o),""),26),r)?r5e(e,r,t,n):null}function irt(e,t){var n,r;for(r=new rr(e);r.e!=r.i.gc();)if(n=u(pr(r),138),je(t)===je(n))return!0;return!1}function G_(e,t,n){var r;if(r=e.gc(),t>r)throw J(new Im(t,r));if(e.hi()&&e.Hc(n))throw J(new Ln(YI));e.Xh(t,n)}function Uan(e,t){var n;if(n=K3(e.i,t),n==null)throw J(new dd("Node did not exist in input."));return Wme(t,n),null}function Wan(e,t){var n;if(n=dI(e,t),we(n,322))return u(n,34);throw J(new Ln(i2+t+"' is not a valid attribute"))}function Kan(e,t,n){var r,s;for(s=we(t,99)&&u(t,18).Bb&so?new Gte(t,e):new G8(t,e),r=0;rt?1:e==t?e==0?Fs(1/e,1/t):0:isNaN(e)?isNaN(t)?0:1:-1}function ron(e,t){kr(t,"Sort end labels",1),ms(Vi(ic(new vn(null,new mn(e.b,16)),new UP),new F5),new bY),ur(t)}function q_(e,t,n){var r,s;return e.ej()?(s=e.fj(),r=jse(e,t,n),e.$i(e.Zi(7,ct(n),r,t,s)),r):jse(e,t,n)}function Oie(e,t){var n,r,s;e.d==null?(++e.e,--e.f):(s=t.cd(),n=t.Sh(),r=(n&Ei)%e.d.length,$nn(e,r,xot(e,r,n,s)))}function J8(e,t){var n;n=(e.Bb&Sf)!=0,t?e.Bb|=Sf:e.Bb&=-1025,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,10,n,t))}function e7(e,t){var n;n=(e.Bb&dy)!=0,t?e.Bb|=dy:e.Bb&=-4097,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,12,n,t))}function t7(e,t){var n;n=(e.Bb&Zu)!=0,t?e.Bb|=Zu:e.Bb&=-8193,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,15,n,t))}function n7(e,t){var n;n=(e.Bb&ky)!=0,t?e.Bb|=ky:e.Bb&=-2049,e.Db&4&&!(e.Db&1)&&_i(e,new xf(e,1,11,n,t))}function ion(e,t){var n;return n=Fs(e.b.c,t.b.c),n!=0||(n=Fs(e.a.a,t.a.a),n!=0)?n:Fs(e.a.b,t.a.b)}function son(e,t){var n;if(n=er(e.k,t),n==null)throw J(new dd("Port did not exist in input."));return Wme(t,n),null}function aon(e){var t,n;for(n=Sot(Gl(e)).Kc();n.Ob();)if(t=Hr(n.Pb()),uC(e,t))return gnn((NGe(),r4t),t);return null}function oon(e,t){var n,r,s,o,h;for(h=pu(e.e.Tg(),t),o=0,n=u(e.g,119),s=0;s>10)+II&Ss,t[1]=(e&1023)+56320&Ss,jh(t,0,t.length)}function wH(e){var t,n;return n=u(K(e,(pt(),Zl)),103),n==(wo(),f0)?(t=Ue(ft(K(e,Hq))),t>=1?Df:Y0):n}function lon(e){switch(u(K(e,(pt(),K0)),218).g){case 1:return new BX;case 3:return new HX;default:return new PX}}function ub(e){if(e.c)ub(e.c);else if(e.d)throw J(new Wo("Stream already terminated, can't be modified or used"))}function Bie(e){var t;return e.Db&64?_f(e):(t=new Ph(_f(e)),t.a+=" (identifier: ",To(t,e.k),t.a+=")",t.a)}function crt(e,t,n){var r,s;return r=(pv(),s=new pp,s),z$(r,t),G$(r,n),e&&Br((!e.a&&(e.a=new Bs(ef,e,5)),e.a),r),r}function Rie(e,t,n,r){var s,o;return Sn(r),Sn(n),s=e.xc(t),o=s==null?n:kGe(u(s,15),u(n,14)),o==null?e.Bc(t):e.zc(t,o),o}function rn(e){var t,n,r,s;return n=(t=u(Qf((r=e.gm,s=r.f,s==Wr?r:s)),9),new hh(t,u(wf(t,t.length),9),0)),Tf(n,e),n}function hon(e,t,n){var r,s;for(s=e.a.ec().Kc();s.Ob();)if(r=u(s.Pb(),10),MD(n,u(St(t,r.p),14)))return r;return null}function fon(e,t,n){var r;try{Usn(e,t,n)}catch(s){throw s=ts(s),we(s,597)?(r=s,J(new qwe(r))):J(s)}return t}function Wp(e,t){var n;return Ko(e)&&Ko(t)&&(n=e-t,DI>1,e.k=n-1>>1}function Fie(){o4e();var e,t,n;n=c3n+++Date.now(),e=_s(b.Math.floor(n*NI))&Mz,t=_s(n-e*x6e),this.a=e^1502,this.b=t^uoe}function j0(e){var t,n,r;for(t=new st,r=new C(e.j);r.a34028234663852886e22?gs:t<-34028234663852886e22?Ds:t}function urt(e){return e-=e>>1&1431655765,e=(e>>2&858993459)+(e&858993459),e=(e>>4)+e&252645135,e+=e>>8,e+=e>>16,e&63}function lrt(e){var t,n,r,s;for(t=new zUe(e.Hd().gc()),s=0,r=q6(e.Hd().Kc());r.Ob();)n=r.Pb(),Sen(t,n,ct(s++));return Zfn(t.a)}function won(e,t){var n,r,s;for(s=new Mr,r=t.vc().Kc();r.Ob();)n=u(r.Pb(),42),Si(s,n.cd(),usn(e,u(n.dd(),15)));return s}function zye(e,t){e.n.c.length==0&&it(e.n,new o$(e.s,e.t,e.i)),it(e.b,t),T3e(u(St(e.n,e.n.c.length-1),211),t),yut(e,t)}function t4(e){return(e.c!=e.b.b||e.i!=e.g.b)&&(e.a.c=Me(Yn,yt,1,0,5,1),Rs(e.a,e.b),Rs(e.a,e.g),e.c=e.b.b,e.i=e.g.b),e.a}function jie(e,t){var n,r,s;for(s=0,r=u(t.Kb(e),20).Kc();r.Ob();)n=u(r.Pb(),17),It(Mt(K(n,(et(),W1))))||++s;return s}function mon(e,t){var n,r,s;r=U3(t),s=Ue(ft(Qm(r,(pt(),Mf)))),n=b.Math.max(0,s/2-.5),Z_(t,n,1),it(e,new eqe(t,n))}function mh(){mh=pe,TO=new TM(U0,0),lS=new TM("FIRST",1),l2=new TM(wft,2),hS=new TM("LAST",3),Ly=new TM(mft,4)}function $0(){$0=pe,hfe=new GF(EC,0),YO=new GF("POLYLINE",1),_E=new GF("ORTHOGONAL",2),jk=new GF("SPLINES",3)}function mH(){mH=pe,wCe=new Bte("ASPECT_RATIO_DRIVEN",0),Rhe=new Bte("MAX_SCALE_DRIVEN",1),vCe=new Bte("AREA_DRIVEN",2)}function GD(){GD=pe,EV=new Rte("P1_STRUCTURE",0),TV=new Rte("P2_PROCESSING_ORDER",1),_V=new Rte("P3_EXECUTION",2)}function yH(){yH=pe,Dhe=new Ote("OVERLAP_REMOVAL",0),Lhe=new Ote("COMPACTION",1),Mhe=new Ote("GRAPH_SIZE_CALCULATION",2)}function Kv(e,t){return S1(),Ef(Jp),b.Math.abs(e-t)<=Jp||e==t||isNaN(e)&&isNaN(t)?0:et?1:yv(isNaN(e),isNaN(t))}function hrt(e,t){var n,r;for(n=ii(e,0);n.b!=n.d.c;){if(r=uM(ft(ri(n))),r==t)return;if(r>t){mre(n);break}}YM(n,t)}function en(e,t){var n,r,s,o,h;if(n=t.f,hb(e.c.d,n,t),t.g!=null)for(s=t.g,o=0,h=s.length;ot&&r.ue(e[o-1],e[o])>0;--o)h=e[o],cs(e,o,e[o-1]),cs(e,o-1,h)}function yh(e,t,n,r){if(t<0)o5e(e,n,r);else{if(!n.Ij())throw J(new Ln(i2+n.ne()+RC));u(n,66).Nj().Tj(e,e.yh(),t,r)}}function kH(e,t){if(t==e.d)return e.e;if(t==e.e)return e.d;throw J(new Ln("Node "+t+" not part of edge "+e))}function kon(e,t){switch(t.g){case 2:return e.b;case 1:return e.c;case 4:return e.d;case 3:return e.a;default:return!1}}function frt(e,t){switch(t.g){case 2:return e.b;case 1:return e.c;case 4:return e.d;case 3:return e.a;default:return!1}}function Gye(e,t,n,r){switch(t){case 3:return e.f;case 4:return e.g;case 5:return e.i;case 6:return e.j}return Oye(e,t,n,r)}function xon(e){return e.k!=(zn(),Hs)?!1:_8(new vn(null,new Sv(new cr(fr(js(e).a.Kc(),new V)))),new TB)}function Eon(e){return e.e==null?e:(!e.c&&(e.c=new Zse((e.f&256)!=0,e.i,e.a,e.d,(e.f&16)!=0,e.j,e.g,null)),e.c)}function Ton(e,t){return e.h==MI&&e.m==0&&e.l==0?(t&&(s2=fu(0,0,0)),hVe((D8(),R8e))):(t&&(s2=fu(e.l,e.m,e.h)),fu(0,0,0))}function Qo(e){var t;return Array.isArray(e)&&e.im===gt?Cp(pl(e))+"@"+(t=Xi(e)>>>0,t.toString(16)):e.toString()}function V_(e){var t;this.a=(t=u(e.e&&e.e(),9),new hh(t,u(wf(t,t.length),9),0)),this.b=Me(Yn,yt,1,this.a.a.length,5,1)}function _on(e){var t,n,r;for(this.a=new C0,r=new C(e);r.a0&&(zr(t-1,e.length),e.charCodeAt(t-1)==58)&&!$ie(e,KS,YS))}function $ie(e,t,n){var r,s;for(r=0,s=e.length;r=s)return t.c+n;return t.c+t.b.gc()}function Mon(e,t){u8();var n,r,s,o;for(r=TJe(e),s=t,L8(r,0,r.length,s),n=0;n0&&(r+=s,++n);return n>1&&(r+=e.d*(n-1)),r}function Vye(e){var t,n,r;for(r=new bg,r.a+="[",t=0,n=e.gc();t0&&this.b>0&&Cve(this.c,this.b,this.a)}function Kye(e){zie(),this.c=O1(ie(re(C3n,1),yt,831,0,[Kvt])),this.b=new Mr,this.a=e,Si(this.b,nV,1),Mu(Yvt,new Jje(this))}function drt(e,t){var n;return e.d?Il(e.b,t)?u(er(e.b,t),51):(n=t.Kf(),Si(e.b,t,n),n):t.Kf()}function Yye(e,t){var n;return je(e)===je(t)?!0:we(t,91)?(n=u(t,91),e.e==n.e&&e.d==n.d&&bnn(e,n.a)):!1}function Y6(e){switch(ht(),e.g){case 4:return An;case 1:return $n;case 3:return xr;case 2:return Dn;default:return uc}}function Xye(e,t){switch(t){case 3:return e.f!=0;case 4:return e.g!=0;case 5:return e.i!=0;case 6:return e.j!=0}return Yme(e,t)}function Bon(e){switch(e.g){case 0:return new nZ;case 1:return new FB;default:throw J(new Ln(wce+(e.f!=null?e.f:""+e.g)))}}function grt(e){switch(e.g){case 0:return new RB;case 1:return new jB;default:throw J(new Ln(Noe+(e.f!=null?e.f:""+e.g)))}}function prt(e){switch(e.g){case 0:return new Ape;case 1:return new THe;default:throw J(new Ln(lG+(e.f!=null?e.f:""+e.g)))}}function Ron(e){switch(e.g){case 1:return new QQ;case 2:return new MUe;default:throw J(new Ln(wce+(e.f!=null?e.f:""+e.g)))}}function Fon(e){var t,n;if(e.b)return e.b;for(n=V1?null:e.d;n;){if(t=V1?null:n.b,t)return t;n=V1?null:n.d}return n8(),d7e}function jon(e){var t,n,r;return e.e==0?0:(t=e.d<<5,n=e.a[e.d-1],e.e<0&&(r=_tt(e),r==e.d-1&&(--n,n=n|0)),t-=uI(n),t)}function $on(e){var t,n,r;return e<$G.length?$G[e]:(n=e>>5,t=e&31,r=Me(Lr,Jr,25,n+1,15,1),r[n]=1<3;)s*=10,--o;e=(e+(s>>1))/s|0}return r.i=e,!0}function zon(e){return Aie(),Mn(),!!(frt(u(e.a,81).j,u(e.b,103))||u(e.a,81).d.e!=0&&frt(u(e.a,81).j,u(e.b,103)))}function Gon(e){A$(),u(e.We((bi(),p2)),174).Hc((wl(),zV))&&(u(e.We(Hy),174).Fc((ol(),$k)),u(e.We(p2),174).Mc(zV))}function vrt(e,t){var n,r;if(t){for(n=0;n=0;--r)for(t=n[r],s=0;s>1,this.k=t-1>>1}function Yon(e,t){kr(t,"End label post-processing",1),ms(Vi(ic(new vn(null,new mn(e.b,16)),new lY),new hY),new fY),ur(t)}function Xon(e,t,n){var r,s;return r=Ue(e.p[t.i.p])+Ue(e.d[t.i.p])+t.n.b+t.a.b,s=Ue(e.p[n.i.p])+Ue(e.d[n.i.p])+n.n.b+n.a.b,s-r}function Qon(e,t,n){var r,s;for(r=qs(n,yo),s=0;Mc(r,0)!=0&&s0&&(zr(0,t.length),t.charCodeAt(0)==43)?t.substr(1):t))}function Jon(e){var t;return e==null?null:new Ip((t=Xc(e,!0),t.length>0&&(zr(0,t.length),t.charCodeAt(0)==43)?t.substr(1):t))}function r3e(e,t){var n;return e.i>0&&(t.lengthe.i&&cs(t,e.i,null),t}function ou(e,t,n){var r,s,o;return e.ej()?(r=e.i,o=e.fj(),$D(e,r,t),s=e.Zi(3,null,t,r,o),n?n.Ei(s):n=s):$D(e,e.i,t),n}function ecn(e,t,n){var r,s;return r=new N0(e.e,4,10,(s=t.c,we(s,88)?u(s,26):(on(),sf)),null,Dg(e,t),!1),n?n.Ei(r):n=r,n}function tcn(e,t,n){var r,s;return r=new N0(e.e,3,10,null,(s=t.c,we(s,88)?u(s,26):(on(),sf)),Dg(e,t),!1),n?n.Ei(r):n=r,n}function yrt(e){Mm();var t;return t=new Io(u(e.e.We((bi(),e5)),8)),e.B.Hc((wl(),SE))&&(t.a<=0&&(t.a=20),t.b<=0&&(t.b=20)),t}function krt(e){Zm();var t;return(e.q?e.q:(hn(),hn(),l0))._b((pt(),_w))?t=u(K(e,_w),197):t=u(K(Ya(e),pS),197),t}function Qm(e,t){var n,r;return r=null,ta(e,(pt(),eV))&&(n=u(K(e,eV),94),n.Xe(t)&&(r=n.We(t))),r==null&&(r=K(Ya(e),t)),r}function xrt(e,t){var n,r,s;return we(t,42)?(n=u(t,42),r=n.cd(),s=Ym(e.Rc(),r),md(s,n.dd())&&(s!=null||e.Rc()._b(r))):!1}function qie(e,t){var n,r,s;return e.f>0?(e.qj(),r=t==null?0:Xi(t),s=(r&Ei)%e.d.length,n=xot(e,s,r,t),n!=-1):!1}function r1(e,t){var n,r,s;return e.f>0&&(e.qj(),r=t==null?0:Xi(t),s=(r&Ei)%e.d.length,n=H4e(e,s,r,t),n)?n.dd():null}function qD(e,t){var n,r,s,o;for(o=pu(e.e.Tg(),t),n=u(e.g,119),s=0;s1?I1(A0(t.a[1],32),qs(t.a[0],yo)):qs(t.a[0],yo),Bv(ja(t.e,n))))}function VD(e,t){var n;return Ko(e)&&Ko(t)&&(n=e%t,DI>5,t&=31,s=e.d+n+(t==0?0:1),r=Me(Lr,Jr,25,s,15,1),nfn(r,e.a,n,t),o=new z3(e.e,s,r),E_(o),o}function s3e(e,t,n){var r,s;r=u(Uc(ME,t),117),s=u(Uc(tA,t),117),n?(Oo(ME,e,r),Oo(tA,e,s)):(Oo(tA,e,r),Oo(ME,e,s))}function Lrt(e,t,n){var r,s,o;for(s=null,o=e.b;o;){if(r=e.a.ue(t,o.d),n&&r==0)return o;r>=0?o=o.a[1]:(s=o,o=o.a[0])}return s}function Mrt(e,t,n){var r,s,o;for(s=null,o=e.b;o;){if(r=e.a.ue(t,o.d),n&&r==0)return o;r<=0?o=o.a[0]:(s=o,o=o.a[1])}return s}function acn(e,t,n,r){var s,o,h;return s=!1,Hwn(e.f,n,r)&&(Dcn(e.f,e.a[t][n],e.a[t][r]),o=e.a[t],h=o[r],o[r]=o[n],o[n]=h,s=!0),s}function a3e(e,t,n,r,s){var o,h,d;for(h=s;t.b!=t.c;)o=u(I6(t),10),d=u(ac(o,r).Xb(0),11),e.d[d.p]=h++,n.c[n.c.length]=d;return h}function o3e(e,t,n){var r,s,o,h,d;return h=e.k,d=t.k,r=n[h.g][d.g],s=ft(Qm(e,r)),o=ft(Qm(t,r)),b.Math.max((Sn(s),s),(Sn(o),o))}function ocn(e,t,n){var r,s,o,h;for(r=n/e.c.length,s=0,h=new C(e);h.a2e3&&(S0t=e,RG=b.setTimeout(gUt,10))),BG++==0?(zrn((Ope(),N8e)),!0):!1}function ucn(e,t){var n,r,s;for(r=new cr(fr(js(e).a.Kc(),new V));Vr(r);)if(n=u(Pr(r),17),s=n.d.i,s.c==t)return!1;return!0}function c3e(e,t){var n,r;if(we(t,245)){r=u(t,245);try{return n=e.vd(r),n==0}catch(s){if(s=ts(s),!we(s,205))throw J(s)}}return!1}function lcn(){return Error.stackTraceLimit>0?(b.Error.stackTraceLimit=Error.stackTraceLimit=64,!0):"stack"in new Error}function hcn(e,t){return S1(),S1(),Ef(Jp),(b.Math.abs(e-t)<=Jp||e==t||isNaN(e)&&isNaN(t)?0:et?1:yv(isNaN(e),isNaN(t)))>0}function u3e(e,t){return S1(),S1(),Ef(Jp),(b.Math.abs(e-t)<=Jp||e==t||isNaN(e)&&isNaN(t)?0:et?1:yv(isNaN(e),isNaN(t)))<0}function Ort(e,t){return S1(),S1(),Ef(Jp),(b.Math.abs(e-t)<=Jp||e==t||isNaN(e)&&isNaN(t)?0:et?1:yv(isNaN(e),isNaN(t)))<=0}function Uie(e,t){for(var n=0;!t[n]||t[n]=="";)n++;for(var r=t[n++];nioe)return n.fh();if(r=n.Zg(),r||n==e)break}return r}function l3e(e){return u$(),we(e,156)?u(er(oN,j0t),288).vg(e):Il(oN,pl(e))?u(er(oN,pl(e)),288).vg(e):null}function dcn(e){if(AH(j7,e))return Mn(),U7;if(AH(Mce,e))return Mn(),Sb;throw J(new Ln("Expecting true or false"))}function gcn(e,t){if(t.c==e)return t.d;if(t.d==e)return t.c;throw J(new Ln("Input edge is not connected to the input port."))}function jrt(e,t){return e.e>t.e?1:e.et.d?e.e:e.d=48&&e<48+b.Math.min(10,10)?e-48:e>=97&&e<97?e-97+10:e>=65&&e<65?e-65+10:-1}function Hrt(e,t){var n;return je(t)===je(e)?!0:!we(t,21)||(n=u(t,21),n.gc()!=e.gc())?!1:e.Ic(n)}function pcn(e,t){var n,r,s,o;return r=e.a.length-1,n=t-e.b&r,o=e.c-t&r,s=e.c-e.b&r,pUe(n=o?(gan(e,t),-1):(pan(e,t),1)}function bcn(e,t){var n,r;for(n=(zr(t,e.length),e.charCodeAt(t)),r=t+1;rt.e?1:e.ft.f?1:Xi(e)-Xi(t)}function AH(e,t){return Sn(e),t==null?!1:an(e,t)?!0:e.length==t.length&&an(e.toLowerCase(),t.toLowerCase())}function _cn(e,t){var n,r,s,o;for(r=0,s=t.gc();r0&&Mc(e,128)<0?(t=Or(e)+128,n=(iKe(),q8e)[t],!n&&(n=q8e[t]=new wm(e)),n):new wm(e)}function Grt(e,t){var n,r;return n=t.Hh(e.a),n&&(r=Hr(r1((!n.b&&(n.b=new Ml((on(),oo),wc,n)),n.b),gi)),r!=null)?r:t.ne()}function Ccn(e,t){var n,r;return n=t.Hh(e.a),n&&(r=Hr(r1((!n.b&&(n.b=new Ml((on(),oo),wc,n)),n.b),gi)),r!=null)?r:t.ne()}function Scn(e,t){fre();var n,r;for(r=new cr(fr(j0(e).a.Kc(),new V));Vr(r);)if(n=u(Pr(r),17),n.d.i==t||n.c.i==t)return n;return null}function d3e(e,t,n){this.c=e,this.f=new st,this.e=new Fa,this.j=new xve,this.n=new xve,this.b=t,this.g=new fh(t.c,t.d,t.b,t.a),this.a=n}function Wie(e){var t,n,r,s;for(this.a=new C0,this.d=new Ys,this.e=0,n=e,r=0,s=n.length;r0):!1}function Urt(e){var t;je(Ft(e,(bi(),Q4)))===je((F0(),FV))&&(us(e)?(t=u(Ft(us(e),Q4),334),So(e,Q4,t)):So(e,Q4,jS))}function Dcn(e,t,n){var r,s;Ase(e.e,t,n,(ht(),Dn)),Ase(e.i,t,n,$n),e.a&&(s=u(K(t,(et(),Mi)),11),r=u(K(n,Mi),11),wre(e.g,s,r))}function Wrt(e,t,n){var r,s,o;r=t.c.p,o=t.p,e.b[r][o]=new cXe(e,t),n&&(e.a[r][o]=new qx(t),s=u(K(t,(et(),xw)),10),s&&sn(e.d,s,t))}function Krt(e,t){var n,r,s;if(it(QG,e),t.Fc(e),n=u(er(jue,e),21),n)for(s=n.Kc();s.Ob();)r=u(s.Pb(),33),Yo(QG,r,0)!=-1||Krt(r,t)}function Icn(e,t,n){var r;(U0t?(Fon(e),!0):W0t||Y0t?(n8(),!0):K0t&&(n8(),!1))&&(r=new yWe(t),r.b=n,Pfn(e,r))}function Kie(e,t){var n;n=!e.A.Hc((Bl(),Hb))||e.q==(wa(),tu),e.u.Hc((ol(),Z0))?n?eyn(e,t):Tlt(e,t):e.u.Hc(m2)&&(n?mmn(e,t):Flt(e,t))}function s7(e,t){var n,r;if(++e.j,t!=null&&(n=(r=e.a.Cb,we(r,97)?u(r,97).Jg():null),Sdn(t,n))){X6(e.a,4,n);return}X6(e.a,4,u(t,126))}function Yrt(e,t,n){return new fh(b.Math.min(e.a,t.a)-n/2,b.Math.min(e.b,t.b)-n/2,b.Math.abs(e.a-t.a)+n,b.Math.abs(e.b-t.b)+n)}function Ocn(e,t){var n,r;return n=Tu(e.a.c.p,t.a.c.p),n!=0?n:(r=Tu(e.a.d.i.p,t.a.d.i.p),r!=0?r:Tu(t.a.d.p,e.a.d.p))}function Ncn(e,t,n){var r,s,o,h;return o=t.j,h=n.j,o!=h?o.g-h.g:(r=e.f[t.p],s=e.f[n.p],r==0&&s==0?0:r==0?-1:s==0?1:Fs(r,s))}function Xrt(e,t,n){var r,s,o;if(!n[t.d])for(n[t.d]=!0,s=new C(t4(t));s.a=s)return s;for(t=t>0?t:0;tr&&cs(t,r,null),t}function Zrt(e,t){var n,r;for(r=e.a.length,t.lengthr&&cs(t,r,null),t}function hb(e,t,n){var r,s,o;return s=u(er(e.e,t),387),s?(o=Rbe(s,n),HVe(e,s),o):(r=new lve(e,t,n),Si(e.e,t,r),dXe(r),null)}function Rcn(e){var t;if(e==null)return null;if(t=D0n(Xc(e,!0)),t==null)throw J(new nte("Invalid hexBinary value: '"+e+"'"));return t}function WD(e){return Qp(),Mc(e,0)<0?Mc(e,-1)!=0?new Z3e(-1,M8(e)):Eue:Mc(e,10)<=0?n7e[Or(e)]:new Z3e(1,e)}function Xie(){return Tz(),ie(re(Ogt,1),tt,159,0,[Dgt,Mgt,Igt,xgt,kgt,Egt,Cgt,_gt,Tgt,Lgt,Agt,Sgt,mgt,wgt,ygt,bgt,pgt,vgt,dgt,fgt,ggt,Iue])}function Jrt(e){var t;this.d=new st,this.j=new Fa,this.g=new Fa,t=e.g.b,this.f=u(K(Ya(t),(pt(),Zl)),103),this.e=Ue(ft(DH(t,Ry)))}function eit(e){this.b=new st,this.e=new st,this.d=e,this.a=!LT(Vi(new vn(null,new Sv(new N1(e.b))),new Ke(new _B))).sd((G2(),X7))}function i1(){i1=pe,Fn=new SM("PARENTS",0),ua=new SM("NODES",1),Fd=new SM("EDGES",2),Bb=new SM("PORTS",3),Vg=new SM("LABELS",4)}function n4(){n4=pe,v2=new LM("DISTRIBUTED",0),ZO=new LM("JUSTIFIED",1),uAe=new LM("BEGIN",2),$S=new LM(D7,3),lAe=new LM("END",4)}function Fcn(e){var t;switch(t=e.yi(null),t){case 10:return 0;case 15:return 1;case 14:return 2;case 11:return 3;case 21:return 4}return-1}function Qie(e){switch(e.g){case 1:return wo(),X0;case 4:return wo(),Xh;case 2:return wo(),Df;case 3:return wo(),Y0}return wo(),f0}function jcn(e,t,n){var r;switch(r=n.q.getFullYear()-e2+e2,r<0&&(r=-r),t){case 1:e.a+=r;break;case 2:e0(e,r%100,2);break;default:e0(e,r,t)}}function ii(e,t){var n,r;if(jm(t,e.b),t>=e.b>>1)for(r=e.c,n=e.b;n>t;--n)r=r.b;else for(r=e.a.a,n=0;n=64&&t<128&&(s=I1(s,A0(1,t-64)));return s}function DH(e,t){var n,r;return r=null,ta(e,(bi(),Fk))&&(n=u(K(e,Fk),94),n.Xe(t)&&(r=n.We(t))),r==null&&Ya(e)&&(r=K(Ya(e),t)),r}function rit(e,t){var n,r,s;s=t.d.i,r=s.k,!(r==(zn(),Hs)||r==U1)&&(n=new cr(fr(js(s).a.Kc(),new V)),Vr(n)&&Si(e.k,t,u(Pr(n),17)))}function Zie(e,t){var n,r,s;return r=gn(e.Tg(),t),n=t-e.Ah(),n<0?(s=e.Yg(r),s>=0?e.lh(s):Fse(e,r)):n<0?Fse(e,r):u(r,66).Nj().Sj(e,e.yh(),n)}function xt(e){var t;if(we(e.a,4)){if(t=l3e(e.a),t==null)throw J(new Wo(e1t+e.b+"'. "+Jft+(S0(cN),cN.k)+qxe));return t}else return e.a}function zcn(e){var t;if(e==null)return null;if(t=cyn(Xc(e,!0)),t==null)throw J(new nte("Invalid base64Binary value: '"+e+"'"));return t}function pr(e){var t;try{return t=e.i.Xb(e.e),e.mj(),e.g=e.e++,t}catch(n){throw n=ts(n),we(n,73)?(e.mj(),J(new xc)):J(n)}}function Jie(e){var t;try{return t=e.c.ki(e.e),e.mj(),e.g=e.e++,t}catch(n){throw n=ts(n),we(n,73)?(e.mj(),J(new xc)):J(n)}}function K_(){K_=pe,U7e=(bi(),zSe),Rue=ySe,Ugt=Bk,V7e=Fb,Xgt=(GH(),T7e),Ygt=x7e,Qgt=C7e,Kgt=k7e,Wgt=(Tie(),z7e),Bue=Ggt,q7e=qgt,XG=Vgt}function IH(e){switch(Jpe(),this.c=new st,this.d=e,e.g){case 0:case 2:this.a=owe(lEe),this.b=gs;break;case 3:case 1:this.a=lEe,this.b=Ds}}function iit(e,t,n){var r,s;if(e.c)Du(e.c,e.c.i+t),Iu(e.c,e.c.j+n);else for(s=new C(e.b);s.a0&&(it(e.b,new BWe(t.a,n)),r=t.a.length,0r&&(t.a+=$Ve(Me(Sh,Td,25,-r,15,1))))}function sit(e,t){var n,r,s;for(n=e.o,s=u(u(Ii(e.r,t),21),84).Kc();s.Ob();)r=u(s.Pb(),111),r.e.a=Vun(r,n.a),r.e.b=n.b*Ue(ft(r.b.We(WG)))}function qcn(e,t){var n,r,s,o;return s=e.k,n=Ue(ft(K(e,(et(),Ew)))),o=t.k,r=Ue(ft(K(t,Ew))),o!=(zn(),Ls)?-1:s!=Ls?1:n==r?0:n=0?e.hh(t,n,r):(e.eh()&&(r=(s=e.Vg(),s>=0?e.Qg(r):e.eh().ih(e,-1-s,null,r))),e.Sg(t,n,r))}function p3e(e,t){switch(t){case 7:!e.e&&(e.e=new wn(ra,e,7,4)),_r(e.e);return;case 8:!e.d&&(e.d=new wn(ra,e,8,5)),_r(e.d);return}t3e(e,t)}function s1(e,t){var n;n=e.Zc(t);try{return n.Pb()}catch(r){throw r=ts(r),we(r,109)?J(new Do("Can't get element "+t)):J(r)}}function b3e(e,t){this.e=e,t=0&&(n.d=e.t);break;case 3:e.t>=0&&(n.a=e.t)}e.C&&(n.b=e.C.b,n.c=e.C.c)}function Z6(){Z6=pe,oO=new PF(Oz,0),aO=new PF(woe,1),cO=new PF(moe,2),uO=new PF(yoe,3),oO.a=!1,aO.a=!0,cO.a=!1,uO.a=!0}function Y_(){Y_=pe,lO=new NF(Oz,0),KG=new NF(woe,1),YG=new NF(moe,2),hO=new NF(yoe,3),lO.a=!1,KG.a=!0,YG.a=!1,hO.a=!0}function Ycn(e){var t;t=e.a;do t=u(Pr(new cr(fr(Xo(t).a.Kc(),new V))),17).c.i,t.k==(zn(),ca)&&e.b.Fc(t);while(t.k==(zn(),ca));e.b=nb(e.b)}function Xcn(e){var t,n,r;for(r=e.c.a,e.p=(Nr(r),new Uu(r)),n=new C(r);n.an.b)return!0}return!1}function ese(e,t){return fa(e)?!!y0t[t]:e.hm?!!e.hm[t]:Sm(e)?!!m0t[t]:Cm(e)?!!w0t[t]:!1}function So(e,t,n){return n==null?(!e.o&&(e.o=new Nl((cu(),k2),Dw,e,0)),CH(e.o,t)):(!e.o&&(e.o=new Nl((cu(),k2),Dw,e,0)),qH(e.o,t,n)),e}function eun(e,t,n,r){var s,o;o=t.Xe((bi(),J4))?u(t.We(J4),21):e.j,s=Gan(o),s!=(Tz(),Iue)&&(n&&!h3e(s)||k4e(I0n(e,s,r),t))}function NH(e,t,n,r){var s,o,h;return o=gn(e.Tg(),t),s=t-e.Ah(),s<0?(h=e.Yg(o),h>=0?e._g(h,n,!0):tw(e,o,n)):u(o,66).Nj().Pj(e,e.yh(),s,n,r)}function tun(e,t,n,r){var s,o,h;n.mh(t)&&(ho(),Ure(t)?(s=u(n.ah(t),153),_cn(e,s)):(o=(h=t,h?u(r,49).xh(h):null),o&&rVt(n.ah(t),o)))}function nun(e){switch(e.g){case 1:return Vv(),sO;case 3:return Vv(),iO;case 2:return Vv(),Nue;case 4:return Vv(),Oue;default:return null}}function v3e(e){switch(typeof e){case Mae:return Ig(e);case d6e:return _s(e);case sk:return Mn(),e?1231:1237;default:return e==null?0:xv(e)}}function run(e,t,n){if(e.e)switch(e.b){case 1:IJt(e.c,t,n);break;case 0:OJt(e.c,t,n)}else VQe(e.c,t,n);e.a[t.p][n.p]=e.c.i,e.a[n.p][t.p]=e.c.e}function lit(e){var t,n;if(e==null)return null;for(n=Me(h0,Qe,193,e.length,0,2),t=0;t=0)return s;if(e.Fk()){for(r=0;r=s)throw J(new Im(t,s));if(e.hi()&&(r=e.Xc(n),r>=0&&r!=t))throw J(new Ln(YI));return e.mi(t,n)}function w3e(e,t){if(this.a=u(Nr(e),245),this.b=u(Nr(t),245),e.vd(t)>0||e==(Xee(),fue)||t==(Yee(),due))throw J(new Ln("Invalid range: "+HQe(e,t)))}function hit(e){var t,n;for(this.b=new st,this.c=e,this.a=!1,n=new C(e.a);n.a0),(t&-t)==t)return _s(t*vl(e,31)*4656612873077393e-25);do n=vl(e,31),r=n%t;while(n-r+(t-1)<0);return _s(r)}function Ig(e){kWe();var t,n,r;return n=":"+e,r=qG[n],r!=null?_s((Sn(r),r)):(r=p7e[n],t=r==null?Ygn(e):_s((Sn(r),r)),TJt(),qG[n]=t,t)}function dit(e,t,n){kr(n,"Compound graph preprocessor",1),e.a=new Nv,mlt(e,t,null),Bvn(e,t),wgn(e),Ye(t,(et(),N9e),e.a),e.a=null,sl(e.b),ur(n)}function aun(e,t,n){switch(n.g){case 1:e.a=t.a/2,e.b=0;break;case 2:e.a=t.a,e.b=t.b/2;break;case 3:e.a=t.a/2,e.b=t.b;break;case 4:e.a=0,e.b=t.b/2}}function oun(e){var t,n,r;for(r=u(Ii(e.a,(c4(),Cq)),15).Kc();r.Ob();)n=u(r.Pb(),101),t=D3e(n),p8(e,n,t[0],(qv(),ww),0),p8(e,n,t[1],mw,1)}function cun(e){var t,n,r;for(r=u(Ii(e.a,(c4(),Sq)),15).Kc();r.Ob();)n=u(r.Pb(),101),t=D3e(n),p8(e,n,t[0],(qv(),ww),0),p8(e,n,t[1],mw,1)}function tse(e){switch(e.g){case 0:return null;case 1:return new dtt;case 2:return new Lpe;default:throw J(new Ln(wce+(e.f!=null?e.f:""+e.g)))}}function KD(e,t,n){var r,s;for(Msn(e,t-e.s,n-e.t),s=new C(e.n);s.a1&&(o=sun(e,t)),o}function nse(e){var t;return e.f&&e.f.kh()&&(t=u(e.f,49),e.f=u(Up(e,t),82),e.f!=t&&e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,9,8,t,e.f))),e.f}function rse(e){var t;return e.i&&e.i.kh()&&(t=u(e.i,49),e.i=u(Up(e,t),82),e.i!=t&&e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,9,7,t,e.i))),e.i}function go(e){var t;return e.b&&e.b.Db&64&&(t=e.b,e.b=u(Up(e,t),18),e.b!=t&&e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,9,21,t,e.b))),e.b}function RH(e,t){var n,r,s;e.d==null?(++e.e,++e.f):(r=t.Sh(),_gn(e,e.f+1),s=(r&Ei)%e.d.length,n=e.d[s],!n&&(n=e.d[s]=e.uj()),n.Fc(t),++e.f)}function k3e(e,t,n){var r;return t.Kj()?!1:t.Zj()!=-2?(r=t.zj(),r==null?n==null:Ci(r,n)):t.Hj()==e.e.Tg()&&n==null}function FH(){var e;ql(16,uht),e=itt(16),this.b=Me(pue,AI,317,e,0,1),this.c=Me(pue,AI,317,e,0,1),this.a=null,this.e=null,this.i=0,this.f=e-1,this.g=0}function H0(e){jbe.call(this),this.k=(zn(),Hs),this.j=(ql(6,fy),new su(6)),this.b=(ql(2,fy),new su(2)),this.d=new qee,this.f=new ype,this.a=e}function lun(e){var t,n;e.c.length<=1||(t=hct(e,(ht(),xr)),Jst(e,u(t.a,19).a,u(t.b,19).a),n=hct(e,Dn),Jst(e,u(n.a,19).a,u(n.b,19).a))}function X_(){X_=pe,f_e=new EM("SIMPLE",0),ohe=new EM(Boe,1),che=new EM("LINEAR_SEGMENTS",2),wS=new EM("BRANDES_KOEPF",3),mS=new EM(Pft,4)}function x3e(e,t,n){A6(u(K(t,(pt(),bs)),98))||(bme(e,t,Og(t,n)),bme(e,t,Og(t,(ht(),xr))),bme(e,t,Og(t,An)),hn(),aa(t.j,new sM(e)))}function git(e,t,n,r){var s,o,h;for(s=u(Ii(r?e.a:e.b,t),21),h=s.Kc();h.Ob();)if(o=u(h.Pb(),33),cz(e,n,o))return!0;return!1}function ise(e){var t,n;for(n=new rr(e);n.e!=n.i.gc();)if(t=u(pr(n),87),t.e||(!t.d&&(t.d=new Bs(Eo,t,1)),t.d).i!=0)return!0;return!1}function sse(e){var t,n;for(n=new rr(e);n.e!=n.i.gc();)if(t=u(pr(n),87),t.e||(!t.d&&(t.d=new Bs(Eo,t,1)),t.d).i!=0)return!0;return!1}function hun(e){var t,n,r;for(t=0,r=new C(e.c.a);r.a102?-1:e<=57?e-48:e<65?-1:e<=70?e-65+10:e<97?-1:e-97+10}function cse(e,t){if(e==null)throw J(new b6("null key in entry: null="+t));if(t==null)throw J(new b6("null value in entry: "+e+"=null"))}function fun(e,t){for(var n,r;e.Ob();)if(!t.Ob()||(n=e.Pb(),r=t.Pb(),!(je(n)===je(r)||n!=null&&Ci(n,r))))return!1;return!t.Ob()}function bit(e,t){var n;return n=ie(re(pa,1),Ao,25,15,[Sie(e.a[0],t),Sie(e.a[1],t),Sie(e.a[2],t)]),e.d&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function vit(e,t){var n;return n=ie(re(pa,1),Ao,25,15,[dH(e.a[0],t),dH(e.a[1],t),dH(e.a[2],t)]),e.d&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function db(){db=pe,ble=new xM("GREEDY",0),h9e=new xM(kft,1),vle=new xM(Boe,2),sS=new xM("MODEL_ORDER",3),iS=new xM("GREEDY_MODEL_ORDER",4)}function wit(e,t){var n,r,s;for(e.b[t.g]=1,r=ii(t.d,0);r.b!=r.d.c;)n=u(ri(r),188),s=n.c,e.b[s.g]==1?ci(e.a,n):e.b[s.g]==2?e.b[s.g]=1:wit(e,s)}function dun(e,t){var n,r,s;for(s=new su(t.gc()),r=t.Kc();r.Ob();)n=u(r.Pb(),286),n.c==n.f?f7(e,n,n.c):h1n(e,n)||(s.c[s.c.length]=n);return s}function gun(e,t,n){var r,s,o,h,d;for(d=e.r+t,e.r+=t,e.d+=n,r=n/e.n.c.length,s=0,h=new C(e.n);h.ao&&cs(t,o,null),t}function Aun(e,t){var n,r;if(r=e.gc(),t==null){for(n=0;n0&&(v+=s),x[_]=h,h+=d*(v+r)}function Cit(e){var t,n,r;for(r=e.f,e.n=Me(pa,Ao,25,r,15,1),e.d=Me(pa,Ao,25,r,15,1),t=0;t0?e.c:0),++s;e.b=r,e.d=o}function Pun(e,t){var n,r,s,o,h;for(r=0,s=0,n=0,h=new C(t);h.a0?e.g:0),++n;e.c=s,e.d=r}function Dit(e,t){var n;return n=ie(re(pa,1),Ao,25,15,[y3e(e,(n1(),pc),t),y3e(e,lu,t),y3e(e,bc,t)]),e.f&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function Bun(e,t,n){var r;try{hz(e,t+e.j,n+e.k,!1,!0)}catch(s){throw s=ts(s),we(s,73)?(r=s,J(new Do(r.g+Pz+t+io+n+")."))):J(s)}}function Run(e,t,n){var r;try{hz(e,t+e.j,n+e.k,!0,!1)}catch(s){throw s=ts(s),we(s,73)?(r=s,J(new Do(r.g+Pz+t+io+n+")."))):J(s)}}function Iit(e){var t;ta(e,(pt(),Tw))&&(t=u(K(e,Tw),21),t.Hc((sy(),If))?(t.Mc(If),t.Fc(Of)):t.Hc(Of)&&(t.Mc(Of),t.Fc(If)))}function Oit(e){var t;ta(e,(pt(),Tw))&&(t=u(K(e,Tw),21),t.Hc((sy(),Pf))?(t.Mc(Pf),t.Fc(Zh)):t.Hc(Zh)&&(t.Mc(Zh),t.Fc(Pf)))}function Fun(e,t,n){kr(n,"Self-Loop ordering",1),ms(Cu(Vi(Vi(ic(new vn(null,new mn(t.b,16)),new rB),new VY),new UY),new WY),new mm(e)),ur(n)}function XD(e,t,n,r){var s,o;for(s=t;s0&&(s.b+=t),s}function HH(e,t){var n,r,s;for(s=new Fa,r=e.Kc();r.Ob();)n=u(r.Pb(),37),cC(n,0,s.b),s.b+=n.f.b+t,s.a=b.Math.max(s.a,n.f.a);return s.a>0&&(s.a+=t),s}function Pit(e){var t,n,r;for(r=Ei,n=new C(e.a);n.a>16==6?e.Cb.ih(e,5,h1,t):(r=go(u(gn((n=u(_n(e,16),26),n||e.zh()),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function Gun(e){k8();var t=e.e;if(t&&t.stack){var n=t.stack,r=t+` +`;return n.substring(0,r.length)==r&&(n=n.substring(r.length)),n.split(` +`)}return[]}function qun(e){var t;return t=(Zet(),I0t),t[e>>>28]|t[e>>24&15]<<4|t[e>>20&15]<<8|t[e>>16&15]<<12|t[e>>12&15]<<16|t[e>>8&15]<<20|t[e>>4&15]<<24|t[e&15]<<28}function Fit(e){var t,n,r;e.b==e.c&&(r=e.a.length,n=cye(b.Math.max(8,r))<<1,e.b!=0?(t=wf(e.a,n),att(e,t,r),e.a=t,e.b=0):rHe(e.a,n),e.c=r)}function Vun(e,t){var n;return n=e.b,n.Xe((bi(),kl))?n.Hf()==(ht(),Dn)?-n.rf().a-Ue(ft(n.We(kl))):t+Ue(ft(n.We(kl))):n.Hf()==(ht(),Dn)?-n.rf().a:t}function QD(e){var t;return e.b.c.length!=0&&u(St(e.b,0),70).a?u(St(e.b,0),70).a:(t=ere(e),t??""+(e.c?Yo(e.c.a,e,0):-1))}function zH(e){var t;return e.f.c.length!=0&&u(St(e.f,0),70).a?u(St(e.f,0),70).a:(t=ere(e),t??""+(e.i?Yo(e.i.j,e,0):-1))}function Uun(e,t){var n,r;if(t<0||t>=e.gc())return null;for(n=t;n0?e.c:0),s=b.Math.max(s,t.d),++r;e.e=o,e.b=s}function Kun(e){var t,n;if(!e.b)for(e.b=p$(u(e.f,118).Ag().i),n=new rr(u(e.f,118).Ag());n.e!=n.i.gc();)t=u(pr(n),137),it(e.b,new tte(t));return e.b}function Yun(e,t){var n,r,s;if(t.dc())return u8(),u8(),uN;for(n=new jUe(e,t.gc()),s=new rr(e);s.e!=s.i.gc();)r=pr(s),t.Hc(r)&&Br(n,r);return n}function L3e(e,t,n,r){return t==0?r?(!e.o&&(e.o=new Nl((cu(),k2),Dw,e,0)),e.o):(!e.o&&(e.o=new Nl((cu(),k2),Dw,e,0)),hD(e.o)):NH(e,t,n,r)}function bse(e){var t,n;if(e.rb)for(t=0,n=e.rb.i;t>22),s+=r>>22,s<0)?!1:(e.l=n&ml,e.m=r&ml,e.h=s&V0,!0)}function Jun(e,t,n,r,s,o,h){var d,v;return!(t.Ae()&&(v=e.a.ue(n,r),v<0||!s&&v==0)||t.Be()&&(d=e.a.ue(n,o),d>0||!h&&d==0))}function eln(e,t){X8();var n;if(n=e.j.g-t.j.g,n!=0)return 0;switch(e.j.g){case 2:return jie(t,r9e)-jie(e,r9e);case 4:return jie(e,n9e)-jie(t,n9e)}return 0}function tln(e){switch(e.g){case 0:return mle;case 1:return yle;case 2:return kle;case 3:return xle;case 4:return Mq;case 5:return Ele;default:return null}}function Ro(e,t,n){var r,s;return r=(s=new Wee,cb(s,t),au(s,n),Br((!e.c&&(e.c=new at(Iw,e,12,10)),e.c),s),s),Cg(r,0),Wm(r,1),Mg(r,!0),Lg(r,!0),r}function J6(e,t){var n,r;if(t>=e.i)throw J(new zte(t,e.i));return++e.j,n=e.g[t],r=e.i-t-1,r>0&&Hc(e.g,t+1,e.g,t,r),cs(e.g,--e.i,null),e.fi(t,n),e.ci(),n}function jit(e,t){var n,r;return e.Db>>16==17?e.Cb.ih(e,21,tf,t):(r=go(u(gn((n=u(_n(e,16),26),n||e.zh()),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function nln(e){var t,n,r,s;for(hn(),aa(e.c,e.a),s=new C(e.c);s.an.a.c.length))throw J(new Ln("index must be >= 0 and <= layer node count"));e.c&&Au(e.c.a,e),e.c=n,n&&Om(n.a,t,e)}function qit(e,t){var n,r,s;for(r=new cr(fr(j0(e).a.Kc(),new V));Vr(r);)return n=u(Pr(r),17),s=u(t.Kb(n),10),new Bx(Nr(s.n.b+s.o.b/2));return kT(),kT(),hue}function Vit(e,t){this.c=new Mr,this.a=e,this.b=t,this.d=u(K(e,(et(),G4)),304),je(K(e,(pt(),zTe)))===je((pD(),Dq))?this.e=new yHe:this.e=new mHe}function cln(e,t){var n,r,s,o;for(o=0,r=new C(e);r.a>16==6?e.Cb.ih(e,6,ra,t):(r=go(u(gn((n=u(_n(e,16),26),n||(cu(),qV)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function P3e(e,t){var n,r;return e.Db>>16==7?e.Cb.ih(e,1,iN,t):(r=go(u(gn((n=u(_n(e,16),26),n||(cu(),xAe)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function B3e(e,t){var n,r;return e.Db>>16==9?e.Cb.ih(e,9,hs,t):(r=go(u(gn((n=u(_n(e,16),26),n||(cu(),TAe)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function Wit(e,t){var n,r;return e.Db>>16==5?e.Cb.ih(e,9,JV,t):(r=go(u(gn((n=u(_n(e,16),26),n||(on(),Yg)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function R3e(e,t){var n,r;return e.Db>>16==3?e.Cb.ih(e,0,aN,t):(r=go(u(gn((n=u(_n(e,16),26),n||(on(),Kg)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function Kit(e,t){var n,r;return e.Db>>16==7?e.Cb.ih(e,6,h1,t):(r=go(u(gn((n=u(_n(e,16),26),n||(on(),Qg)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function Yit(){this.a=new VB,this.g=new FH,this.j=new FH,this.b=new Mr,this.d=new FH,this.i=new FH,this.k=new Mr,this.c=new Mr,this.e=new Mr,this.f=new Mr}function fln(e,t,n){var r,s,o;for(n<0&&(n=0),o=e.i,s=n;sioe)return o7(e,r);if(r==e)return!0}}return!1}function gln(e){switch(uj(),e.q.g){case 5:Oat(e,(ht(),An)),Oat(e,xr);break;case 4:Aot(e,(ht(),An)),Aot(e,xr);break;default:Alt(e,(ht(),An)),Alt(e,xr)}}function pln(e){switch(uj(),e.q.g){case 5:Kat(e,(ht(),$n)),Kat(e,Dn);break;case 4:sit(e,(ht(),$n)),sit(e,Dn);break;default:Llt(e,(ht(),$n)),Llt(e,Dn)}}function bln(e){var t,n;t=u(K(e,(a1(),dpt)),19),t?(n=t.a,n==0?Ye(e,(zp(),tq),new Fie):Ye(e,(zp(),tq),new m$(n))):Ye(e,(zp(),tq),new m$(1))}function vln(e,t){var n;switch(n=e.i,t.g){case 1:return-(e.n.b+e.o.b);case 2:return e.n.a-n.o.a;case 3:return e.n.b-n.o.b;case 4:return-(e.n.a+e.o.a)}return 0}function wln(e,t){switch(e.g){case 0:return t==(mh(),l2)?kq:xq;case 1:return t==(mh(),l2)?kq:bO;case 2:return t==(mh(),l2)?bO:xq;default:return bO}}function JD(e,t){var n,r,s;for(Au(e.a,t),e.e-=t.r+(e.a.c.length==0?0:e.c),s=Exe,r=new C(e.a);r.a>16==3?e.Cb.ih(e,12,hs,t):(r=go(u(gn((n=u(_n(e,16),26),n||(cu(),kAe)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function j3e(e,t){var n,r;return e.Db>>16==11?e.Cb.ih(e,10,hs,t):(r=go(u(gn((n=u(_n(e,16),26),n||(cu(),EAe)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function Xit(e,t){var n,r;return e.Db>>16==10?e.Cb.ih(e,11,tf,t):(r=go(u(gn((n=u(_n(e,16),26),n||(on(),Xg)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function Qit(e,t){var n,r;return e.Db>>16==10?e.Cb.ih(e,12,nf,t):(r=go(u(gn((n=u(_n(e,16),26),n||(on(),Ky)),e.Db>>16),18)),e.Cb.ih(e,r.n,r.f,t))}function $h(e){var t;return!(e.Bb&1)&&e.r&&e.r.kh()&&(t=u(e.r,49),e.r=u(Up(e,t),138),e.r!=t&&e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,9,8,t,e.r))),e.r}function wse(e,t,n){var r;return r=ie(re(pa,1),Ao,25,15,[l4e(e,(n1(),pc),t,n),l4e(e,lu,t,n),l4e(e,bc,t,n)]),e.f&&(r[0]=b.Math.max(r[0],r[2]),r[2]=r[0]),r}function mln(e,t){var n,r,s;if(s=dun(e,t),s.c.length!=0)for(aa(s,new PY),n=s.c.length,r=0;r>19,x=t.h>>19,v!=x?x-v:(s=e.h,d=t.h,s!=d?s-d:(r=e.m,h=t.m,r!=h?r-h:(n=e.l,o=t.l,n-o)))}function GH(){GH=pe,S7e=(uz(),Mue),C7e=new dn(A6e,S7e),_7e=(P$(),Lue),T7e=new dn(L6e,_7e),E7e=(LH(),Aue),x7e=new dn(M6e,E7e),k7e=new dn(D6e,(Mn(),!0))}function Z_(e,t,n){var r,s;r=t*n,we(e.g,145)?(s=j6(e),s.f.d?s.f.a||(e.d.a+=r+z1):(e.d.d-=r+z1,e.d.a+=r+z1)):we(e.g,10)&&(e.d.d-=r,e.d.a+=2*r)}function Zit(e,t,n){var r,s,o,h,d;for(s=e[n.g],d=new C(t.d);d.a0?e.g:0),++n;t.b=r,t.e=s}function Jit(e){var t,n,r;if(r=e.b,mGe(e.i,r.length)){for(n=r.length*2,e.b=Me(pue,AI,317,n,0,1),e.c=Me(pue,AI,317,n,0,1),e.f=n-1,e.i=0,t=e.a;t;t=t.c)aI(e,t,t);++e.g}}function Sln(e,t,n,r){var s,o,h,d;for(s=0;sh&&(d=h/r),s>o&&(v=o/s),bd(e,b.Math.min(d,v)),e}function Lln(){pz();var e,t;try{if(t=u(X3e((Ap(),rf),H7),2014),t)return t}catch(n){if(n=ts(n),we(n,102))e=n,Rve((jr(),e));else throw J(n)}return new Y5}function Mln(){zJe();var e,t;try{if(t=u(X3e((Ap(),rf),_b),2024),t)return t}catch(n){if(n=ts(n),we(n,102))e=n,Rve((jr(),e));else throw J(n)}return new bm}function Dln(){pz();var e,t;try{if(t=u(X3e((Ap(),rf),Uh),1941),t)return t}catch(n){if(n=ts(n),we(n,102))e=n,Rve((jr(),e));else throw J(n)}return new KZ}function Iln(e,t,n){var r,s;return s=e.e,e.e=t,e.Db&4&&!(e.Db&1)&&(r=new oa(e,1,4,s,t),n?n.Ei(r):n=r),s!=t&&(t?n=E7(e,nz(e,t),n):n=E7(e,e.a,n)),n}function est(){kF.call(this),this.e=-1,this.a=!1,this.p=$a,this.k=-1,this.c=-1,this.b=-1,this.g=!1,this.f=-1,this.j=-1,this.n=-1,this.i=-1,this.d=-1,this.o=$a}function Oln(e,t){var n,r,s;if(r=e.b.d.d,e.a||(r+=e.b.d.a),s=t.b.d.d,t.a||(s+=t.b.d.a),n=Fs(r,s),n==0){if(!e.a&&t.a)return-1;if(!t.a&&e.a)return 1}return n}function Nln(e,t){var n,r,s;if(r=e.b.b.d,e.a||(r+=e.b.b.a),s=t.b.b.d,t.a||(s+=t.b.b.a),n=Fs(r,s),n==0){if(!e.a&&t.a)return-1;if(!t.a&&e.a)return 1}return n}function Pln(e,t){var n,r,s;if(r=e.b.g.d,e.a||(r+=e.b.g.a),s=t.b.g.d,t.a||(s+=t.b.g.a),n=Fs(r,s),n==0){if(!e.a&&t.a)return-1;if(!t.a&&e.a)return 1}return n}function H3e(){H3e=pe,Spt=il(xi(xi(xi(new Xs,(ro(),Zc),(po(),zEe)),Zc,GEe),Go,qEe),Go,DEe),Lpt=xi(xi(new Xs,Zc,TEe),Zc,IEe),Apt=il(new Xs,Go,NEe)}function Bln(e){var t,n,r,s,o;for(t=u(K(e,(et(),uS)),83),o=e.n,r=t.Cc().Kc();r.Ob();)n=u(r.Pb(),306),s=n.i,s.c+=o.a,s.d+=o.b,n.c?bct(n):vct(n);Ye(e,uS,null)}function Rln(e,t,n){var r,s;switch(s=e.b,r=s.d,t.g){case 1:return-r.d-n;case 2:return s.o.a+r.c+n;case 3:return s.o.b+r.a+n;case 4:return-r.b-n;default:return-1}}function Fln(e){var t,n,r,s,o;if(r=0,s=O7,e.b)for(t=0;t<360;t++)n=t*.017453292519943295,D5e(e,e.d,0,0,_4,n),o=e.b.ig(e.d),o0&&(h=(o&Ei)%e.d.length,s=H4e(e,h,o,t),s)?(d=s.ed(n),d):(r=e.tj(o,t,n),e.c.Fc(r),null)}function q3e(e,t){var n,r,s,o;switch(Ag(e,t)._k()){case 3:case 2:{for(n=b4(t),s=0,o=n.i;s=0;r--)if(an(e[r].d,t)||an(e[r].d,n)){e.length>=r+1&&e.splice(0,r+1);break}return e}function eI(e,t){var n;return Ko(e)&&Ko(t)&&(n=e/t,DI0&&(e.b+=2,e.a+=r):(e.b+=1,e.a+=b.Math.min(r,s))}function ost(e,t){var n,r;if(r=!1,fa(t)&&(r=!0,O6(e,new Bm(Hr(t)))),r||we(t,236)&&(r=!0,O6(e,(n=Xbe(u(t,236)),new lT(n)))),!r)throw J(new Jee(s8e))}function nhn(e,t,n,r){var s,o,h;return s=new N0(e.e,1,10,(h=t.c,we(h,88)?u(h,26):(on(),sf)),(o=n.c,we(o,88)?u(o,26):(on(),sf)),Dg(e,t),!1),r?r.Ei(s):r=s,r}function W3e(e){var t,n;switch(u(K(Ya(e),(pt(),NTe)),420).g){case 0:return t=e.n,n=e.o,new Pt(t.a+n.a/2,t.b+n.b/2);case 1:return new Io(e.n);default:return null}}function tI(){tI=pe,Iq=new HT(U0,0),m9e=new HT("LEFTUP",1),k9e=new HT("RIGHTUP",2),w9e=new HT("LEFTDOWN",3),y9e=new HT("RIGHTDOWN",4),Tle=new HT("BALANCED",5)}function rhn(e,t,n){var r,s,o;if(r=Fs(e.a[t.p],e.a[n.p]),r==0){if(s=u(K(t,(et(),Sk)),15),o=u(K(n,Sk),15),s.Hc(n))return-1;if(o.Hc(t))return 1}return r}function ihn(e){switch(e.g){case 1:return new JQ;case 2:return new eZ;case 3:return new ZQ;case 0:return null;default:throw J(new Ln(wce+(e.f!=null?e.f:""+e.g)))}}function K3e(e,t,n){switch(t){case 1:!e.n&&(e.n=new at(Jo,e,1,7)),_r(e.n),!e.n&&(e.n=new at(Jo,e,1,7)),fs(e.n,u(n,14));return;case 2:I_(e,Hr(n));return}gye(e,t,n)}function Y3e(e,t,n){switch(t){case 3:Hv(e,Ue(ft(n)));return;case 4:zv(e,Ue(ft(n)));return;case 5:Du(e,Ue(ft(n)));return;case 6:Iu(e,Ue(ft(n)));return}K3e(e,t,n)}function VH(e,t,n){var r,s,o;o=(r=new Wee,r),s=$1(o,t,null),s&&s.Fi(),au(o,n),Br((!e.c&&(e.c=new at(Iw,e,12,10)),e.c),o),Cg(o,0),Wm(o,1),Mg(o,!0),Lg(o,!0)}function X3e(e,t){var n,r,s;return n=BT(e.g,t),we(n,235)?(s=u(n,235),s.Qh()==null,s.Nh()):we(n,498)?(r=u(n,1938),s=r.b,s):null}function shn(e,t,n,r){var s,o;return Nr(t),Nr(n),o=u(c_(e.d,t),19),WJe(!!o,"Row %s not in %s",t,e.e),s=u(c_(e.b,n),19),WJe(!!s,"Column %s not in %s",n,e.c),ent(e,o.a,s.a,r)}function cst(e,t,n,r,s,o,h){var d,v,x,_,L;if(_=s[o],x=o==h-1,d=x?r:0,L=Lit(d,_),r!=10&&ie(re(e,h-o),t[o],n[o],d,L),!x)for(++o,v=0;v<_;++v)L[v]=cst(e,t,n,r,s,o,h);return L}function J_(e){if(e.g==-1)throw J(new zu);e.mj();try{e.i.$c(e.g),e.f=e.i.j,e.g1||d==-1?(o=u(v,15),s.Wb(fcn(e,o))):s.Wb(aae(e,u(v,56)))))}function fhn(e,t,n,r){Wze();var s=lue;function o(){for(var h=0;hpce)return n;s>-1e-6&&++n}return n}function J3e(e,t){var n;t!=e.b?(n=null,e.b&&(n=r$(e.b,e,-4,n)),t&&(n=Q6(t,e,-4,n)),n=qnt(e,t,n),n&&n.Fi()):e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,3,t,t))}function hst(e,t){var n;t!=e.f?(n=null,e.f&&(n=r$(e.f,e,-1,n)),t&&(n=Q6(t,e,-1,n)),n=Vnt(e,t,n),n&&n.Fi()):e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,0,t,t))}function fst(e){var t,n,r;if(e==null)return null;if(n=u(e,15),n.dc())return"";for(r=new bg,t=n.Kc();t.Ob();)To(r,(Fi(),Hr(t.Pb()))),r.a+=" ";return qte(r,r.a.length-1)}function dst(e){var t,n,r;if(e==null)return null;if(n=u(e,15),n.dc())return"";for(r=new bg,t=n.Kc();t.Ob();)To(r,(Fi(),Hr(t.Pb()))),r.a+=" ";return qte(r,r.a.length-1)}function yhn(e,t,n){var r,s;return r=e.c[t.c.p][t.p],s=e.c[n.c.p][n.p],r.a!=null&&s.a!=null?Ine(r.a,s.a):r.a!=null?-1:s.a!=null?1:0}function khn(e,t){var n,r,s,o,h,d;if(t)for(o=t.a.length,n=new W2(o),d=(n.b-n.a)*n.c<0?(Lp(),C2):new Op(n);d.Ob();)h=u(d.Pb(),19),s=E8(t,h.a),r=new f$e(e),lJt(r.a,s)}function xhn(e,t){var n,r,s,o,h,d;if(t)for(o=t.a.length,n=new W2(o),d=(n.b-n.a)*n.c<0?(Lp(),C2):new Op(n);d.Ob();)h=u(d.Pb(),19),s=E8(t,h.a),r=new r$e(e),uJt(r.a,s)}function Ehn(e){var t;if(e!=null&&e.length>0&&Ma(e,e.length-1)==33)try{return t=lat(jl(e,0,e.length-1)),t.e==null}catch(n){if(n=ts(n),!we(n,32))throw J(n)}return!1}function gst(e,t,n){var r,s,o;return r=t.ak(),o=t.dd(),s=r.$j()?jp(e,3,r,null,o,y7(e,r,o,we(r,99)&&(u(r,18).Bb&so)!=0),!0):jp(e,1,r,r.zj(),o,-1,!0),n?n.Ei(s):n=s,n}function Thn(){var e,t,n;for(t=0,e=0;e<1;e++){if(n=V4e((zr(e,1),"X".charCodeAt(e))),n==0)throw J(new $r("Unknown Option: "+"X".substr(e)));t|=n}return t}function _hn(e,t,n){var r,s,o;switch(r=Ya(t),s=wH(r),o=new $c,rc(o,t),n.g){case 1:Vs(o,zD(Y6(s)));break;case 2:Vs(o,Y6(s))}return Ye(o,(pt(),Ny),ft(K(e,Ny))),o}function e4e(e){var t,n;return t=u(Pr(new cr(fr(Xo(e.a).a.Kc(),new V))),17),n=u(Pr(new cr(fr(js(e.a).a.Kc(),new V))),17),It(Mt(K(t,(et(),W1))))||It(Mt(K(n,W1)))}function c4(){c4=pe,Tq=new kM("ONE_SIDE",0),Cq=new kM("TWO_SIDES_CORNER",1),Sq=new kM("TWO_SIDES_OPPOSING",2),_q=new kM("THREE_SIDES",3),Eq=new kM("FOUR_SIDES",4)}function xse(e,t,n,r,s){var o,h;o=u(zl(Vi(t.Oc(),new IX),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[(F1(),Ql)]))),15),h=u(rb(e.b,n,r),15),s==0?h.Wc(0,o):h.Gc(o)}function Chn(e,t){var n,r,s,o,h;for(o=new C(t.a);o.a0&&$it(this,this.c-1,(ht(),$n)),this.c0&&e[0].length>0&&(this.c=It(Mt(K(Ya(e[0][0]),(et(),B9e))))),this.a=Me(vwt,Qe,2018,e.length,0,2),this.b=Me(wwt,Qe,2019,e.length,0,2),this.d=new Rnt}function Dhn(e){return e.c.length==0?!1:(xn(0,e.c.length),u(e.c[0],17)).c.i.k==(zn(),ca)?!0:_8(Cu(new vn(null,new mn(e,16)),new oQ),new cQ)}function Ihn(e,t,n){return kr(n,"Tree layout",1),d$(e.b),Xd(e.b,(a7(),fV),fV),Xd(e.b,_S,_S),Xd(e.b,NO,NO),Xd(e.b,CS,CS),e.a=mz(e.b,t),opn(e,t,Kc(n,1)),ur(n),t}function bst(e,t){var n,r,s,o,h,d,v;for(d=oy(t),o=t.f,v=t.g,h=b.Math.sqrt(o*o+v*v),s=0,r=new C(d);r.a=0?(n=eI(e,Lz),r=VD(e,Lz)):(t=Nm(e,1),n=eI(t,5e8),r=VD(t,5e8),r=Ua(A0(r,1),qs(e,1))),I1(A0(r,32),qs(n,yo))}function mst(e,t,n){var r,s;switch(r=(Qn(t.b!=0),u(bh(t,t.a.a),8)),n.g){case 0:r.b=0;break;case 2:r.b=e.f;break;case 3:r.a=0;break;default:r.a=e.g}return s=ii(t,0),YM(s,r),t}function yst(e,t,n,r){var s,o,h,d,v;switch(v=e.b,o=t.d,h=o.j,d=g3e(h,v.d[h.g],n),s=Ni(fc(o.n),o.a),o.j.g){case 1:case 3:d.a+=s.a;break;case 2:case 4:d.b+=s.b}ks(r,d,r.c.b,r.c)}function qhn(e,t,n){var r,s,o,h;for(h=Yo(e.e,t,0),o=new wpe,o.b=n,r=new Ea(e.e,h);r.b1;t>>=1)t&1&&(r=W3(r,n)),n.d==1?n=W3(n,n):n=new qrt(Jct(n.a,n.d,Me(Lr,Jr,25,n.d<<1,15,1)));return r=W3(r,n),r}function o4e(){o4e=pe;var e,t,n,r;for(c7e=Me(pa,Ao,25,25,15,1),u7e=Me(pa,Ao,25,33,15,1),r=152587890625e-16,t=32;t>=0;t--)u7e[t]=r,r*=.5;for(n=1,e=24;e>=0;e--)c7e[e]=n,n*=.5}function Xhn(e){var t,n;if(It(Mt(Ft(e,(pt(),Oy))))){for(n=new cr(fr(z0(e).a.Kc(),new V));Vr(n);)if(t=u(Pr(n),79),ew(t)&&It(Mt(Ft(t,Db))))return!0}return!1}function kst(e,t){var n,r,s;Gs(e.f,t)&&(t.b=e,r=t.c,Yo(e.j,r,0)!=-1||it(e.j,r),s=t.d,Yo(e.j,s,0)!=-1||it(e.j,s),n=t.a.b,n.c.length!=0&&(!e.i&&(e.i=new Jrt(e)),fsn(e.i,n)))}function Qhn(e){var t,n,r,s,o;return n=e.c.d,r=n.j,s=e.d.d,o=s.j,r==o?n.p=0&&an(e.substr(t,3),"GMT")||t>=0&&an(e.substr(t,3),"UTC"))&&(n[0]=t+3),N5e(e,n,r)}function Jhn(e,t){var n,r,s,o,h;for(o=e.g.a,h=e.g.b,r=new C(e.d);r.an;o--)e[o]|=t[o-n-1]>>>h,e[o-1]=t[o-n-1]<=e.f)break;o.c[o.c.length]=n}return o}function u4e(e){var t,n,r,s;for(t=null,s=new C(e.wf());s.a0&&Hc(e.g,t,e.g,t+r,d),h=n.Kc(),e.i+=r,s=0;so&&pZt(x,bet(n[d],a7e))&&(s=d,o=v);return s>=0&&(r[0]=t+o),s}function afn(e,t){var n;if(n=fVe(e.b.Hf(),t.b.Hf()),n!=0)return n;switch(e.b.Hf().g){case 1:case 2:return Tu(e.b.sf(),t.b.sf());case 3:case 4:return Tu(t.b.sf(),e.b.sf())}return 0}function ofn(e){var t,n,r;for(r=e.e.c.length,e.a=U2(Lr,[Qe,Jr],[48,25],15,[r,r],2),n=new C(e.c);n.a>4&15,o=e[r]&15,h[s++]=_Ae[n],h[s++]=_Ae[o];return jh(h,0,h.length)}function lfn(e,t,n){var r,s,o;return r=t.ak(),o=t.dd(),s=r.$j()?jp(e,4,r,o,null,y7(e,r,o,we(r,99)&&(u(r,18).Bb&so)!=0),!0):jp(e,r.Kj()?2:1,r,o,r.zj(),-1,!0),n?n.Ei(s):n=s,n}function Nu(e){var t,n;return e>=so?(t=II+(e-so>>10&1023)&Ss,n=56320+(e-so&1023)&Ss,String.fromCharCode(t)+(""+String.fromCharCode(n))):String.fromCharCode(e&Ss)}function hfn(e,t){Mm();var n,r,s,o;return s=u(u(Ii(e.r,t),21),84),s.gc()>=2?(r=u(s.Kc().Pb(),111),n=e.u.Hc((ol(),GS)),o=e.u.Hc($k),!r.a&&!n&&(s.gc()==2||o)):!1}function Tst(e,t,n,r,s){var o,h,d;for(o=oct(e,t,n,r,s),d=!1;!o;)ez(e,s,!0),d=!0,o=oct(e,t,n,r,s);d&&ez(e,s,!1),h=hie(s),h.c.length!=0&&(e.d&&e.d.lg(h),Tst(e,s,n,r,h))}function YH(){YH=pe,dfe=new WT(U0,0),JSe=new WT("DIRECTED",1),tAe=new WT("UNDIRECTED",2),QSe=new WT("ASSOCIATION",3),eAe=new WT("GENERALIZATION",4),ZSe=new WT("DEPENDENCY",5)}function ffn(e,t){var n;if(!L1(e))throw J(new Wo(m1t));switch(n=L1(e),t.g){case 1:return-(e.j+e.f);case 2:return e.i-n.g;case 3:return e.j-n.f;case 4:return-(e.i+e.g)}return 0}function l7(e,t){var n,r;for(Sn(t),r=e.b.c.length,it(e.b,t);r>0;){if(n=r,r=(r-1)/2|0,e.a.ue(St(e.b,r),t)<=0)return gh(e.b,n,t),!0;gh(e.b,n,St(e.b,r))}return gh(e.b,r,t),!0}function l4e(e,t,n,r){var s,o;if(s=0,n)s=dH(e.a[n.g][t.g],r);else for(o=0;o=d)}function h4e(e,t,n,r){var s;if(s=!1,fa(r)&&(s=!0,f8(t,n,Hr(r))),s||Cm(r)&&(s=!0,h4e(e,t,n,r)),s||we(r,236)&&(s=!0,Y2(t,n,u(r,236))),!s)throw J(new Jee(s8e))}function gfn(e,t){var n,r,s;if(n=t.Hh(e.a),n&&(s=r1((!n.b&&(n.b=new Ml((on(),oo),wc,n)),n.b),Vh),s!=null)){for(r=1;r<(Yu(),YAe).length;++r)if(an(YAe[r],s))return r}return 0}function pfn(e,t){var n,r,s;if(n=t.Hh(e.a),n&&(s=r1((!n.b&&(n.b=new Ml((on(),oo),wc,n)),n.b),Vh),s!=null)){for(r=1;r<(Yu(),XAe).length;++r)if(an(XAe[r],s))return r}return 0}function _st(e,t){var n,r,s,o;if(Sn(t),o=e.a.gc(),o0?1:0;o.a[s]!=n;)o=o.a[s],s=e.a.ue(n.d,o.d)>0?1:0;o.a[s]=r,r.b=n.b,r.a[0]=n.a[0],r.a[1]=n.a[1],n.a[0]=null,n.a[1]=null}function wfn(e){ol();var t,n;return t=Ui(Z0,ie(re(jV,1),tt,273,0,[m2])),!(SD(a$(t,e))>1||(n=Ui(GS,ie(re(jV,1),tt,273,0,[zS,$k])),SD(a$(n,e))>1))}function d4e(e,t){var n;n=Uc((Ap(),rf),e),we(n,498)?Oo(rf,e,new zqe(this,t)):Oo(rf,e,this),Lse(this,t),t==(Qx(),RAe)?(this.wb=u(this,1939),u(t,1941)):this.wb=(Rp(),En)}function mfn(e){var t,n,r;if(e==null)return null;for(t=null,n=0;n=Pg?"error":r>=900?"warn":r>=800?"info":"log"),uYe(n,e.a),e.b&&d5e(t,n,e.b,"Exception: ",!0))}function K(e,t){var n,r;return r=(!e.q&&(e.q=new Mr),er(e.q,t)),r??(n=t.wg(),we(n,4)&&(n==null?(!e.q&&(e.q=new Mr),z6(e.q,t)):(!e.q&&(e.q=new Mr),Si(e.q,t,n))),n)}function ro(){ro=pe,Pd=new yM("P1_CYCLE_BREAKING",0),c2=new yM("P2_LAYERING",1),bu=new yM("P3_NODE_ORDERING",2),Zc=new yM("P4_NODE_PLACEMENT",3),Go=new yM("P5_EDGE_ROUTING",4)}function Lst(e,t){var n,r,s,o,h;for(s=t==1?Kue:Wue,r=s.a.ec().Kc();r.Ob();)for(n=u(r.Pb(),103),h=u(Ii(e.f.c,n),21).Kc();h.Ob();)o=u(h.Pb(),46),Au(e.b.b,o.b),Au(e.b.a,u(o.b,81).d)}function yfn(e,t){M_();var n;if(e.c==t.c){if(e.b==t.b||Vin(e.b,t.b)){if(n=eWt(e.b)?1:-1,e.a&&!t.a)return n;if(!e.a&&t.a)return-n}return Tu(e.b.g,t.b.g)}else return Fs(e.c,t.c)}function kfn(e,t){var n;kr(t,"Hierarchical port position processing",1),n=e.b,n.c.length>0&&Kct((xn(0,n.c.length),u(n.c[0],29)),e),n.c.length>1&&Kct(u(St(n,n.c.length-1),29),e),ur(t)}function Mst(e,t){var n,r,s;if(p4e(e,t))return!0;for(r=new C(t);r.a=s||t<0)throw J(new Do(qce+t+Eb+s));if(n>=s||n<0)throw J(new Do(Vce+n+Eb+s));return t!=n?r=(o=e.Ti(n),e.Hi(t,o),o):r=e.Oi(n),r}function Ost(e){var t,n,r;if(r=e,e)for(t=0,n=e.Ug();n;n=n.Ug()){if(++t>ioe)return Ost(n);if(r=n,n==e)throw J(new Wo("There is a cycle in the containment hierarchy of "+e))}return r}function Yp(e){var t,n,r;for(r=new ib(io,"[","]"),n=e.Kc();n.Ob();)t=n.Pb(),O0(r,je(t)===je(e)?"(this Collection)":t==null?Pu:Qo(t));return r.a?r.e.length==0?r.a.a:r.a.a+(""+r.e):r.c}function p4e(e,t){var n,r;if(r=!1,t.gc()<2)return!1;for(n=0;nr&&(zr(t-1,e.length),e.charCodeAt(t-1)<=32);)--t;return r>0||t1&&(e.j.b+=e.e)):(e.j.a+=n.a,e.j.b=b.Math.max(e.j.b,n.b),e.d.c.length>1&&(e.j.a+=e.e))}function Xp(){Xp=pe,d2t=ie(re(ao,1),Dc,61,0,[(ht(),An),$n,xr]),f2t=ie(re(ao,1),Dc,61,0,[$n,xr,Dn]),g2t=ie(re(ao,1),Dc,61,0,[xr,Dn,An]),p2t=ie(re(ao,1),Dc,61,0,[Dn,An,$n])}function Efn(e,t,n,r){var s,o,h,d,v,x,_;if(h=e.c.d,d=e.d.d,h.j!=d.j)for(_=e.b,s=h.j,v=null;s!=d.j;)v=t==0?vH(s):Fye(s),o=g3e(s,_.d[s.g],n),x=g3e(v,_.d[v.g],n),ci(r,Ni(o,x)),s=v}function Tfn(e,t,n,r){var s,o,h,d,v;return h=Hit(e.a,t,n),d=u(h.a,19).a,o=u(h.b,19).a,r&&(v=u(K(t,(et(),cl)),10),s=u(K(n,cl),10),v&&s&&(VQe(e.b,v,s),d+=e.b.i,o+=e.b.e)),d>o}function Pst(e){var t,n,r,s,o,h,d,v,x;for(this.a=lit(e),this.b=new st,n=e,r=0,s=n.length;rane(e.d).c?(e.i+=e.g.c,Vie(e.d)):ane(e.d).c>ane(e.g).c?(e.e+=e.d.c,Vie(e.g)):(e.i+=lKe(e.g),e.e+=lKe(e.d),Vie(e.g),Vie(e.d))}function Sfn(e,t,n){var r,s,o,h;for(o=t.q,h=t.r,new X2((Jf(),d2),t,o,1),new X2(d2,o,h,1),s=new C(n);s.ad&&(v=d/r),s>o&&(x=o/s),h=b.Math.min(v,x),e.a+=h*(t.a-e.a),e.b+=h*(t.b-e.b)}function Dfn(e,t,n,r,s){var o,h;for(h=!1,o=u(St(n.b,0),33);Ubn(e,t,o,r,s)&&(h=!0,lhn(n,o),n.b.c.length!=0);)o=u(St(n.b,0),33);return n.b.c.length==0&&JD(n.j,n),h&&$H(t.q),h}function Ifn(e,t){g4();var n,r,s,o;if(t.b<2)return!1;for(o=ii(t,0),n=u(ri(o),8),r=n;o.b!=o.d.c;){if(s=u(ri(o),8),Kse(e,r,s))return!0;r=s}return!!Kse(e,r,n)}function v4e(e,t,n,r){var s,o;return n==0?(!e.o&&(e.o=new Nl((cu(),k2),Dw,e,0)),vj(e.o,t,r)):(o=u(gn((s=u(_n(e,16),26),s||e.zh()),n),66),o.Nj().Rj(e,du(e),n-Jn(e.zh()),t,r))}function Lse(e,t){var n;t!=e.sb?(n=null,e.sb&&(n=u(e.sb,49).ih(e,1,US,n)),t&&(n=u(t,49).gh(e,1,US,n)),n=Dye(e,t,n),n&&n.Fi()):e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,4,t,t))}function Ofn(e,t){var n,r,s,o;if(t)s=B0(t,"x"),n=new u$e(e),O8(n.a,(Sn(s),s)),o=B0(t,"y"),r=new l$e(e),P8(r.a,(Sn(o),o));else throw J(new dd("All edge sections need an end point."))}function Nfn(e,t){var n,r,s,o;if(t)s=B0(t,"x"),n=new a$e(e),N8(n.a,(Sn(s),s)),o=B0(t,"y"),r=new o$e(e),B8(r.a,(Sn(o),o));else throw J(new dd("All edge sections need a start point."))}function Pfn(e,t){var n,r,s,o,h,d,v;for(r=knt(e),o=0,d=r.length;o>22-t,s=e.h<>22-t):t<44?(n=0,r=e.l<>44-t):(n=0,r=0,s=e.l<e)throw J(new Ln("k must be smaller than n"));return t==0||t==e?1:e==0?0:V3e(e)/(V3e(t)*V3e(e-t))}function w4e(e,t){var n,r,s,o;for(n=new H2e(e);n.g==null&&!n.c?ywe(n):n.g==null||n.i!=0&&u(n.g[n.i-1],47).Ob();)if(o=u(tz(n),56),we(o,160))for(r=u(o,160),s=0;s>4],t[n*2+1]=iU[o&15];return jh(t,0,t.length)}function Zfn(e){Uj();var t,n,r;switch(r=e.c.length,r){case 0:return k0t;case 1:return t=u(_at(new C(e)),42),xQt(t.cd(),t.dd());default:return n=u(j1(e,Me(Cb,Sz,42,e.c.length,0,1)),165),new Qee(n)}}function Jfn(e){var t,n,r,s,o,h;for(t=new L3,n=new L3,$p(t,e),$p(n,e);n.b!=n.c;)for(s=u(I6(n),37),h=new C(s.a);h.a0&&bI(e,n,t),s):Pdn(e,t,n)}function Gst(e,t,n){var r,s,o,h;if(t.b!=0){for(r=new as,h=ii(t,0);h.b!=h.d.c;)o=u(ri(h),86),no(r,eye(o)),s=o.e,s.a=u(K(o,(Tc(),Che)),19).a,s.b=u(K(o,F_e),19).a;Gst(e,r,Kc(n,r.b/e.a|0))}}function qst(e,t){var n,r,s,o,h;if(e.e<=t||otn(e,e.g,t))return e.g;for(o=e.r,r=e.g,h=e.r,s=(o-r)/2+r;r+11&&(e.e.b+=e.a)):(e.e.a+=n.a,e.e.b=b.Math.max(e.e.b,n.b),e.d.c.length>1&&(e.e.a+=e.a))}function i1n(e){var t,n,r,s;switch(s=e.i,t=s.b,r=s.j,n=s.g,s.a.g){case 0:n.a=(e.g.b.o.a-r.a)/2;break;case 1:n.a=t.d.n.a+t.d.a.a;break;case 2:n.a=t.d.n.a+t.d.a.a-r.a;break;case 3:n.b=t.d.n.b+t.d.a.b}}function Vst(e,t,n,r,s){if(rr&&(e.a=r),e.bs&&(e.b=s),e}function s1n(e){if(we(e,149))return Ngn(u(e,149));if(we(e,229))return Don(u(e,229));if(we(e,23))return Ffn(u(e,23));throw J(new Ln(a8e+Yp(new Al(ie(re(Yn,1),yt,1,5,[e])))))}function a1n(e,t,n,r,s){var o,h,d;for(o=!0,h=0;h>>s|n[h+r+1]<>>s,++h}return o}function x4e(e,t,n,r){var s,o,h;if(t.k==(zn(),ca)){for(o=new cr(fr(Xo(t).a.Kc(),new V));Vr(o);)if(s=u(Pr(o),17),h=s.c.i.k,h==ca&&e.c.a[s.c.i.c.p]==r&&e.c.a[t.c.p]==n)return!0}return!1}function o1n(e,t){var n,r,s,o;return t&=63,n=e.h&V0,t<22?(o=n>>>t,s=e.m>>t|n<<22-t,r=e.l>>t|e.m<<22-t):t<44?(o=0,s=n>>>t-22,r=e.m>>t-22|e.h<<44-t):(o=0,s=0,r=n>>>t-44),fu(r&ml,s&ml,o&V0)}function Ust(e,t,n,r){var s;this.b=r,this.e=e==(Gv(),xS),s=t[n],this.d=U2(El,[Qe,c0],[177,25],16,[s.length,s.length],2),this.a=U2(Lr,[Qe,Jr],[48,25],15,[s.length,s.length],2),this.c=new i4e(t,n)}function c1n(e){var t,n,r;for(e.k=new Twe((ht(),ie(re(ao,1),Dc,61,0,[uc,An,$n,xr,Dn])).length,e.j.c.length),r=new C(e.j);r.a=n)return f7(e,t,r.p),!0;return!1}function Kst(e){var t;return e.Db&64?Mse(e):(t=new Fl(Yxe),!e.a||Yr(Yr((t.a+=' "',t),e.a),'"'),Yr(bv(Yr(bv(Yr(bv(Yr(bv((t.a+=" (",t),e.i),","),e.j)," | "),e.g),","),e.f),")"),t.a)}function Yst(e,t,n){var r,s,o,h,d;for(d=pu(e.e.Tg(),t),s=u(e.g,119),r=0,h=0;hn?M4e(e,n,"start index"):t<0||t>n?M4e(t,n,"end index"):oC("end index (%s) must not be less than start index (%s)",ie(re(Yn,1),yt,1,5,[ct(t),ct(e)]))}function Qst(e,t){var n,r,s,o;for(r=0,s=e.length;r0&&Zst(e,o,n));t.p=0}function Vt(e){var t;this.c=new as,this.f=e.e,this.e=e.d,this.i=e.g,this.d=e.c,this.b=e.b,this.k=e.j,this.a=e.a,e.i?this.j=e.i:this.j=(t=u(Qf(Ug),9),new hh(t,u(wf(t,t.length),9),0)),this.g=e.f}function g1n(e){var t,n,r,s;for(t=Bp(Yr(new Fl("Predicates."),"and"),40),n=!0,s=new c6(e);s.b0?d[h-1]:Me(h0,Bg,10,0,0,1),s=d[h],x=h=0?e.Bh(s):P4e(e,r);else throw J(new Ln(i2+r.ne()+RC));else throw J(new Ln(M1t+t+D1t));else wh(e,n,r)}function E4e(e){var t,n;if(n=null,t=!1,we(e,204)&&(t=!0,n=u(e,204).a),t||we(e,258)&&(t=!0,n=""+u(e,258).a),t||we(e,483)&&(t=!0,n=""+u(e,483).a),!t)throw J(new Jee(s8e));return n}function nat(e,t){var n,r;if(e.f){for(;t.Ob();)if(n=u(t.Pb(),72),r=n.ak(),we(r,99)&&u(r,18).Bb&_c&&(!e.e||r.Gj()!=AE||r.aj()!=0)&&n.dd()!=null)return t.Ub(),!0;return!1}else return t.Ob()}function rat(e,t){var n,r;if(e.f){for(;t.Sb();)if(n=u(t.Ub(),72),r=n.ak(),we(r,99)&&u(r,18).Bb&_c&&(!e.e||r.Gj()!=AE||r.aj()!=0)&&n.dd()!=null)return t.Pb(),!0;return!1}else return t.Sb()}function T4e(e,t,n){var r,s,o,h,d,v;for(v=pu(e.e.Tg(),t),r=0,d=e.i,s=u(e.g,119),h=0;h1&&(t.c[t.c.length]=o))}function w1n(e){var t,n,r,s;for(n=new as,no(n,e.o),r=new mpe;n.b!=0;)t=u(n.b==0?null:(Qn(n.b!=0),bh(n,n.a.a)),508),s=Blt(e,t,!0),s&&it(r.a,t);for(;r.a.c.length!=0;)t=u(Lnt(r),508),Blt(e,t,!1)}function Ng(){Ng=pe,rSe=new x6(EC,0),za=new x6("BOOLEAN",1),Cc=new x6("INT",2),kE=new x6("STRING",3),qo=new x6("DOUBLE",4),vs=new x6("ENUM",5),Pk=new x6("ENUMSET",6),Y1=new x6("OBJECT",7)}function tC(e,t){var n,r,s,o,h;r=b.Math.min(e.c,t.c),o=b.Math.min(e.d,t.d),s=b.Math.max(e.c+e.b,t.c+t.b),h=b.Math.max(e.d+e.a,t.d+t.a),s=(s/2|0))for(this.e=r?r.c:null,this.d=s;n++0;)kwe(this);this.b=t,this.a=null}function k1n(e,t){var n,r;t.a?qgn(e,t):(n=u(hne(e.b,t.b),57),n&&n==e.a[t.b.f]&&n.a&&n.a!=t.b.a&&n.c.Fc(t.b),r=u(lne(e.b,t.b),57),r&&e.a[r.f]==t.b&&r.a&&r.a!=t.b.a&&t.b.c.Fc(r),Zte(e.b,t.b))}function sat(e,t){var n,r;if(n=u(_o(e.b,t),124),u(u(Ii(e.r,t),21),84).dc()){n.n.b=0,n.n.c=0;return}n.n.b=e.C.b,n.n.c=e.C.c,e.A.Hc((Bl(),Hb))&&Lct(e,t),r=Qcn(e,t),Xse(e,t)==(n4(),v2)&&(r+=2*e.w),n.a.a=r}function aat(e,t){var n,r;if(n=u(_o(e.b,t),124),u(u(Ii(e.r,t),21),84).dc()){n.n.d=0,n.n.a=0;return}n.n.d=e.C.d,n.n.a=e.C.a,e.A.Hc((Bl(),Hb))&&Mct(e,t),r=Zcn(e,t),Xse(e,t)==(n4(),v2)&&(r+=2*e.w),n.a.b=r}function x1n(e,t){var n,r,s,o;for(o=new st,r=new C(t);r.an.a&&(r.Hc((ty(),HO))?s=(t.a-n.a)/2:r.Hc(zO)&&(s=t.a-n.a)),t.b>n.b&&(r.Hc((ty(),qO))?o=(t.b-n.b)/2:r.Hc(GO)&&(o=t.b-n.b)),f4e(e,s,o)}function gat(e,t,n,r,s,o,h,d,v,x,_,L,P){we(e.Cb,88)&&iy(dl(u(e.Cb,88)),4),au(e,n),e.f=h,e7(e,d),n7(e,v),J8(e,x),t7(e,_),Mg(e,L),r7(e,P),Lg(e,!0),Cg(e,s),e.ok(o),cb(e,t),r!=null&&(e.i=null,X$(e,r))}function pat(e){var t,n;if(e.f){for(;e.n>0;){if(t=u(e.k.Xb(e.n-1),72),n=t.ak(),we(n,99)&&u(n,18).Bb&_c&&(!e.e||n.Gj()!=AE||n.aj()!=0)&&t.dd()!=null)return!0;--e.n}return!1}else return e.n>0}function M4e(e,t,n){if(e<0)return oC(Jlt,ie(re(Yn,1),yt,1,5,[n,ct(e)]));if(t<0)throw J(new Ln(eht+t));return oC("%s (%s) must not be greater than size (%s)",ie(re(Yn,1),yt,1,5,[n,ct(e),ct(t)]))}function D4e(e,t,n,r,s,o){var h,d,v,x;if(h=r-n,h<7){yon(t,n,r,o);return}if(v=n+s,d=r+s,x=v+(d-v>>1),D4e(t,e,v,x,-s,o),D4e(t,e,x,d,-s,o),o.ue(e[x-1],e[x])<=0){for(;n=0?e.sh(o,n):o5e(e,s,n);else throw J(new Ln(i2+s.ne()+RC));else throw J(new Ln(M1t+t+D1t));else yh(e,r,s,n)}function bat(e){var t,n,r,s;if(n=u(e,49).qh(),n)try{if(r=null,t=p7((Ap(),rf),Zct(Eon(n))),t&&(s=t.rh(),s&&(r=s.Wk(DVt(n.e)))),r&&r!=e)return bat(r)}catch(o){if(o=ts(o),!we(o,60))throw J(o)}return e}function gu(e,t,n){var r,s,o,h;if(h=t==null?0:e.b.se(t),s=(r=e.a.get(h),r??new Array),s.length==0)e.a.set(h,s);else if(o=Int(e,t,s),o)return o.ed(n);return cs(s,s.length,new OF(t,n)),++e.c,t$(e.b),null}function vat(e,t){var n,r;return d$(e.a),Xd(e.a,(J$(),mV),mV),Xd(e.a,yE,yE),r=new Xs,xi(r,yE,(yH(),Dhe)),je(Ft(t,(Jm(),Nhe)))!==je((RD(),yV))&&xi(r,yE,Lhe),xi(r,yE,Mhe),pVe(e.a,r),n=mz(e.a,t),n}function wat(e){if(!e)return JHe(),M0t;var t=e.valueOf?e.valueOf():e;if(t!==e){var n=yue[typeof t];return n?n(t):Eye(typeof t)}else return e instanceof Array||e instanceof b.Array?new a6(e):new $x(e)}function mat(e,t,n){var r,s,o;switch(o=e.o,r=u(_o(e.p,n),244),s=r.i,s.b=cI(r),s.a=oI(r),s.b=b.Math.max(s.b,o.a),s.b>o.a&&!t&&(s.b=o.a),s.c=-(s.b-o.a)/2,n.g){case 1:s.d=-s.a;break;case 3:s.d=o.b}uae(r),lae(r)}function yat(e,t,n){var r,s,o;switch(o=e.o,r=u(_o(e.p,n),244),s=r.i,s.b=cI(r),s.a=oI(r),s.a=b.Math.max(s.a,o.b),s.a>o.b&&!t&&(s.a=o.b),s.d=-(s.a-o.b)/2,n.g){case 4:s.c=-s.b;break;case 2:s.c=o.a}uae(r),lae(r)}function R1n(e,t){var n,r,s,o,h;if(!t.dc()){if(s=u(t.Xb(0),128),t.gc()==1){Wot(e,s,s,1,0,t);return}for(n=1;n0)try{s=Wl(t,$a,Ei)}catch(o){throw o=ts(o),we(o,127)?(r=o,J(new D$(r))):J(o)}return n=(!e.a&&(e.a=new $ee(e)),e.a),s=0?u(Te(n,s),56):null}function H1n(e,t){if(e<0)return oC(Jlt,ie(re(Yn,1),yt,1,5,["index",ct(e)]));if(t<0)throw J(new Ln(eht+t));return oC("%s (%s) must be less than size (%s)",ie(re(Yn,1),yt,1,5,["index",ct(e),ct(t)]))}function z1n(e){var t,n,r,s,o;if(e==null)return Pu;for(o=new ib(io,"[","]"),n=e,r=0,s=n.length;r0)for(h=e.c.d,d=e.d.d,s=bd(da(new Pt(d.a,d.b),h),1/(r+1)),o=new Pt(h.a,h.b),n=new C(e.a);n.a=0?e._g(n,!0,!0):tw(e,s,!0),153)),u(r,215).ol(t);else throw J(new Ln(i2+t.ne()+RC))}function B4e(e){var t,n;return e>-0x800000000000&&e<0x800000000000?e==0?0:(t=e<0,t&&(e=-e),n=_s(b.Math.floor(b.Math.log(e)/.6931471805599453)),(!t||e!=b.Math.pow(2,n))&&++n,n):Utt(Ou(e))}function tdn(e){var t,n,r,s,o,h,d;for(o=new C0,n=new C(e);n.a2&&d.e.b+d.j.b<=2&&(s=d,r=h),o.a.zc(s,o),s.q=r);return o}function Aat(e,t){var n,r,s;return r=new H0(e),Ho(r,t),Ye(r,(et(),jq),t),Ye(r,(pt(),bs),(wa(),tu)),Ye(r,Bd,(t0(),MV)),T0(r,(zn(),Ls)),n=new $c,rc(n,r),Vs(n,(ht(),Dn)),s=new $c,rc(s,r),Vs(s,$n),r}function Lat(e){switch(e.g){case 0:return new ete((Gv(),IO));case 1:return new AR;case 2:return new ZJ;default:throw J(new Ln("No implementation is available for the crossing minimizer "+(e.f!=null?e.f:""+e.g)))}}function Mat(e,t){var n,r,s,o,h;for(e.c[t.p]=!0,it(e.a,t),h=new C(t.j);h.a=o)h.$b();else for(s=h.Kc(),r=0;r0?Npe():h<0&&Nat(e,t,-h),!0):!1}function oI(e){var t,n,r,s,o,h,d;if(d=0,e.b==0){for(h=bit(e,!0),t=0,r=h,s=0,o=r.length;s0&&(d+=n,++t);t>1&&(d+=e.c*(t-1))}else d=oze(ytt(Kj(Vi(Rne(e.a),new Ta),new _a)));return d>0?d+e.n.d+e.n.a:0}function cI(e){var t,n,r,s,o,h,d;if(d=0,e.b==0)d=oze(ytt(Kj(Vi(Rne(e.a),new Ms),new Pa)));else{for(h=vit(e,!0),t=0,r=h,s=0,o=r.length;s0&&(d+=n,++t);t>1&&(d+=e.c*(t-1))}return d>0?d+e.n.b+e.n.c:0}function udn(e,t){var n,r,s,o;for(o=u(_o(e.b,t),124),n=o.a,s=u(u(Ii(e.r,t),21),84).Kc();s.Ob();)r=u(s.Pb(),111),r.c&&(n.a=b.Math.max(n.a,kve(r.c)));if(n.a>0)switch(t.g){case 2:o.n.c=e.s;break;case 4:o.n.b=e.s}}function ldn(e,t){var n,r,s;return n=u(K(t,(a1(),Q7)),19).a-u(K(e,Q7),19).a,n==0?(r=da(fc(u(K(e,(zp(),fO)),8)),u(K(e,eS),8)),s=da(fc(u(K(t,fO),8)),u(K(t,eS),8)),Fs(r.a*r.b,s.a*s.b)):n}function hdn(e,t){var n,r,s;return n=u(K(t,(nw(),wV)),19).a-u(K(e,wV),19).a,n==0?(r=da(fc(u(K(e,(Tc(),PO)),8)),u(K(e,SS),8)),s=da(fc(u(K(t,PO),8)),u(K(t,SS),8)),Fs(r.a*r.b,s.a*s.b)):n}function Pat(e){var t,n;return n=new Tp,n.a+="e_",t=ysn(e),t!=null&&(n.a+=""+t),e.c&&e.d&&(Yr((n.a+=" ",n),zH(e.c)),Yr(Ec((n.a+="[",n),e.c.i),"]"),Yr((n.a+=Ioe,n),zH(e.d)),Yr(Ec((n.a+="[",n),e.d.i),"]")),n.a}function Bat(e){switch(e.g){case 0:return new UL;case 1:return new XJ;case 2:return new YJ;case 3:return new LR;default:throw J(new Ln("No implementation is available for the layout phase "+(e.f!=null?e.f:""+e.g)))}}function F4e(e,t,n,r,s){var o;switch(o=0,s.g){case 1:o=b.Math.max(0,t.b+e.b-(n.b+r));break;case 3:o=b.Math.max(0,-e.b-r);break;case 2:o=b.Math.max(0,-e.a-r);break;case 4:o=b.Math.max(0,t.a+e.a-(n.a+r))}return o}function fdn(e,t,n){var r,s,o,h,d;if(n)for(s=n.a.length,r=new W2(s),d=(r.b-r.a)*r.c<0?(Lp(),C2):new Op(r);d.Ob();)h=u(d.Pb(),19),o=E8(n,h.a),Jxe in o.a||zce in o.a?E2n(e,o,t):Lyn(e,o,t),XWt(u(er(e.b,i7(o)),79))}function j4e(e){var t,n;switch(e.b){case-1:return!0;case 0:return n=e.t,n>1||n==-1?(e.b=-1,!0):(t=$h(e),t&&(ho(),t.Cj()==Idt)?(e.b=-1,!0):(e.b=1,!1));default:case 1:return!1}}function ddn(e,t){var n,r,s,o,h;for(r=(!t.s&&(t.s=new at(ju,t,21,17)),t.s),o=null,s=0,h=r.i;s=0&&r=0?e._g(n,!0,!0):tw(e,s,!0),153)),u(r,215).ll(t);throw J(new Ln(i2+t.ne()+Oce))}function wdn(){t2e();var e;return v4t?u(p7((Ap(),rf),Uh),1939):(ui(Cb,new Uf),Jwn(),e=u(we(Uc((Ap(),rf),Uh),547)?Uc(rf,Uh):new yYe,547),v4t=!0,Yyn(e),e3n(e),Si((e2e(),BAe),e,new YZ),Oo(rf,Uh,e),e)}function mdn(e,t){var n,r,s,o;e.j=-1,Ll(e.e)?(n=e.i,o=e.i!=0,cD(e,t),r=new N0(e.e,3,e.c,null,t,n,o),s=t.Qk(e.e,e.c,null),s=gst(e,t,s),s?(s.Ei(r),s.Fi()):_i(e.e,r)):(cD(e,t),s=t.Qk(e.e,e.c,null),s&&s.Fi())}function ZH(e,t){var n,r,s;if(s=0,r=t[0],r>=e.length)return-1;for(n=(zr(r,e.length),e.charCodeAt(r));n>=48&&n<=57&&(s=s*10+(n-48),++r,!(r>=e.length));)n=(zr(r,e.length),e.charCodeAt(r));return r>t[0]?t[0]=r:s=-1,s}function ydn(e){var t,n,r,s,o;return s=u(e.a,19).a,o=u(e.b,19).a,n=s,r=o,t=b.Math.max(b.Math.abs(s),b.Math.abs(o)),s<=0&&s==o?(n=0,r=o-1):s==-t&&o!=t?(n=o,r=s,o>=0&&++n):(n=-o,r=s),new xa(ct(n),ct(r))}function kdn(e,t,n,r){var s,o,h,d,v,x;for(s=0;s=0&&x>=0&&v=e.i)throw J(new Do(qce+t+Eb+e.i));if(n>=e.i)throw J(new Do(Vce+n+Eb+e.i));return r=e.g[n],t!=n&&(t>16),t=r>>16&16,n=16-t,e=e>>t,r=e-256,t=r>>16&8,n+=t,e<<=t,r=e-dy,t=r>>16&4,n+=t,e<<=t,r=e-Ed,t=r>>16&2,n+=t,e<<=t,r=e>>14,t=r&~(r>>1),n+2-t)}function Edn(e){P6();var t,n,r,s;for(QG=new st,jue=new Mr,Fue=new st,t=(!e.a&&(e.a=new at(hs,e,10,11)),e.a),tyn(t),s=new rr(t);s.e!=s.i.gc();)r=u(pr(s),33),Yo(QG,r,0)==-1&&(n=new st,it(Fue,n),Krt(r,n));return Fue}function Tdn(e,t,n){var r,s,o,h;e.a=n.b.d,we(t,352)?(s=d4(u(t,79),!1,!1),o=iI(s),r=new Ba(e),Da(o,r),mI(o,s),t.We((bi(),Z4))!=null&&Da(u(t.We(Z4),74),r)):(h=u(t,470),h.Hg(h.Dg()+e.a.a),h.Ig(h.Eg()+e.a.b))}function Fat(e,t){var n,r,s,o,h,d,v,x;for(x=Ue(ft(K(t,(pt(),bS)))),v=e[0].n.a+e[0].o.a+e[0].d.c+x,d=1;d=0?n:(d=w_(da(new Pt(h.c+h.b/2,h.d+h.a/2),new Pt(o.c+o.b/2,o.d+o.a/2))),-(aut(o,h)-1)*d)}function Cdn(e,t,n){var r;ms(new vn(null,(!n.a&&(n.a=new at(os,n,6,6)),new mn(n.a,16))),new yqe(e,t)),ms(new vn(null,(!n.n&&(n.n=new at(Jo,n,1,7)),new mn(n.n,16))),new kqe(e,t)),r=u(Ft(n,(bi(),Z4)),74),r&&qme(r,e,t)}function tw(e,t,n){var r,s,o;if(o=v4((Yu(),Oa),e.Tg(),t),o)return ho(),u(o,66).Oj()||(o=F6(Po(Oa,o))),s=(r=e.Yg(o),u(r>=0?e._g(r,!0,!0):tw(e,o,!0),153)),u(s,215).hl(t,n);throw J(new Ln(i2+t.ne()+Oce))}function H4e(e,t,n,r){var s,o,h,d,v;if(s=e.d[t],s){if(o=s.g,v=s.i,r!=null){for(d=0;d=n&&(r=t,x=(v.c+v.a)/2,h=x-n,v.c<=x-n&&(s=new vne(v.c,h),Om(e,r++,s)),d=x+n,d<=v.a&&(o=new vne(d,v.a),jm(r,e.c.length),RT(e.c,r,o)))}function z4e(e){var t;if(!e.c&&e.g==null)e.d=e.si(e.f),Br(e,e.d),t=e.d;else{if(e.g==null)return!0;if(e.i==0)return!1;t=u(e.g[e.i-1],47)}return t==e.b&&null.km>=null.jm()?(tz(e),z4e(e)):t.Ob()}function Mdn(e,t,n){var r,s,o,h,d;if(d=n,!d&&(d=mve(new Ux,0)),kr(d,tft,1),alt(e.c,t),h=qwn(e.a,t),h.gc()==1)zut(u(h.Xb(0),37),d);else for(o=1/h.gc(),s=h.Kc();s.Ob();)r=u(s.Pb(),37),zut(r,Kc(d,o));FVt(e.a,h,t),qpn(t),ur(d)}function Hat(e){if(this.a=e,e.c.i.k==(zn(),Ls))this.c=e.c,this.d=u(K(e.c.i,(et(),vc)),61);else if(e.d.i.k==Ls)this.c=e.d,this.d=u(K(e.d.i,(et(),vc)),61);else throw J(new Ln("Edge "+e+" is not an external edge."))}function zat(e,t){var n,r,s;s=e.b,e.b=t,e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,3,s,e.b)),t?t!=e&&(au(e,t.zb),Qre(e,t.d),n=(r=t.c,r??t.zb),Jre(e,n==null||an(n,t.zb)?null:n)):(au(e,null),Qre(e,0),Jre(e,null))}function Gat(e){var t,n;if(e.f){for(;e.n=h)throw J(new Im(t,h));return s=n[t],h==1?r=null:(r=Me(kfe,Xce,415,h-1,0,1),Hc(n,0,r,0,t),o=h-t-1,o>0&&Hc(n,t+1,r,t,o)),s7(e,r),fat(e,t,s),s}function nk(){nk=pe,Gk=u(Te(He((Gpe(),Sc).qb),6),34),zk=u(Te(He(Sc.qb),3),34),Sfe=u(Te(He(Sc.qb),4),34),Afe=u(Te(He(Sc.qb),5),18),UH(Gk),UH(zk),UH(Sfe),UH(Afe),k4t=new Al(ie(re(ju,1),L4,170,0,[Gk,zk]))}function Wat(e,t){var n;this.d=new yT,this.b=t,this.e=new Io(t.qf()),n=e.u.Hc((ol(),JO)),e.u.Hc(Z0)?e.D?this.a=n&&!t.If():this.a=!0:e.u.Hc(m2)?n?this.a=!(t.zf().Kc().Ob()||t.Bf().Kc().Ob()):this.a=!1:this.a=!1}function Kat(e,t){var n,r,s,o;for(n=e.o.a,o=u(u(Ii(e.r,t),21),84).Kc();o.Ob();)s=u(o.Pb(),111),s.e.a=(r=s.b,r.Xe((bi(),kl))?r.Hf()==(ht(),Dn)?-r.rf().a-Ue(ft(r.We(kl))):n+Ue(ft(r.We(kl))):r.Hf()==(ht(),Dn)?-r.rf().a:n)}function Yat(e,t){var n,r,s,o;n=u(K(e,(pt(),Zl)),103),o=u(Ft(t,gE),61),s=u(K(e,bs),98),s!=(wa(),X1)&&s!=w2?o==(ht(),uc)&&(o=$5e(t,n),o==uc&&(o=Y6(n))):(r=Hut(t),r>0?o=Y6(n):o=zD(Y6(n))),So(t,gE,o)}function Ndn(e,t){var n,r,s,o,h;for(h=e.j,t.a!=t.b&&aa(h,new q5),s=h.c.length/2|0,r=0;r0&&bI(e,n,t),o):r.a!=null?(bI(e,t,n),-1):s.a!=null?(bI(e,n,t),1):0}function Xat(e,t){var n,r,s,o;e.ej()?(n=e.Vi(),o=e.fj(),++e.j,e.Hi(n,e.oi(n,t)),r=e.Zi(3,null,t,n,o),e.bj()?(s=e.cj(t,null),s?(s.Ei(r),s.Fi()):e.$i(r)):e.$i(r)):(lYe(e,t),e.bj()&&(s=e.cj(t,null),s&&s.Fi()))}function JH(e,t){var n,r,s,o,h;for(h=pu(e.e.Tg(),t),s=new X5,n=u(e.g,119),o=e.i;--o>=0;)r=n[o],h.rl(r.ak())&&Br(s,r);!jlt(e,s)&&Ll(e.e)&&Vx(e,t.$j()?jp(e,6,t,(hn(),bo),null,-1,!1):jp(e,t.Kj()?2:1,t,null,null,-1,!1))}function d7(){d7=pe;var e,t;for(yk=Me(D4,Qe,91,32,0,1),QC=Me(D4,Qe,91,32,0,1),e=1,t=0;t<=18;t++)yk[t]=WD(e),QC[t]=WD(A0(e,t)),e=ja(e,5);for(;th)||t.q&&(r=t.C,h=r.c.c.a-r.o.a/2,s=r.n.a-n,s>h)))}function Rdn(e,t){var n;kr(t,"Partition preprocessing",1),n=u(zl(Vi(ic(Vi(new vn(null,new mn(e.a,16)),new jY),new tB),new H5),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[(F1(),Ql)]))),15),ms(n.Oc(),new nB),ur(t)}function Qat(e){fre();var t,n,r,s,o,h,d;for(n=new Z2,s=new C(e.e.b);s.a1?e.e*=Ue(e.a):e.f/=Ue(e.a),wan(e),Ecn(e),s2n(e),Ye(e.b,(K_(),XG),e.g)}function tot(e,t,n){var r,s,o,h,d,v;for(r=0,v=n,t||(r=n*(e.c.length-1),v*=-1),o=new C(e);o.a=0?(t||(t=new ST,r>0&&To(t,e.substr(0,r))),t.a+="\\",b8(t,n&Ss)):t&&b8(t,n&Ss);return t?t.a:e}function Udn(e){var t;if(!e.a)throw J(new Wo("IDataType class expected for layout option "+e.f));if(t=enn(e.a),t==null)throw J(new Wo("Couldn't create new instance of property '"+e.f+"'. "+Jft+(S0(cN),cN.k)+qxe));return u(t,414)}function Hse(e){var t,n,r,s,o;return o=e.eh(),o&&o.kh()&&(s=Up(e,o),s!=o)?(n=e.Vg(),r=(t=e.Vg(),t>=0?e.Qg(null):e.eh().ih(e,-1-t,null,null)),e.Rg(u(s,49),n),r&&r.Fi(),e.Lg()&&e.Mg()&&n>-1&&_i(e,new oa(e,9,n,o,s)),s):o}function aot(e){var t,n,r,s,o,h,d,v;for(h=0,o=e.f.e,r=0;r>5,s>=e.d)return e.e<0;if(n=e.a[s],t=1<<(t&31),e.e<0){if(r=_tt(e),s>16)),15).Xc(o),d0&&(!(Dp(e.a.c)&&t.n.d)&&!(s8(e.a.c)&&t.n.b)&&(t.g.d+=b.Math.max(0,r/2-.5)),!(Dp(e.a.c)&&t.n.a)&&!(s8(e.a.c)&&t.n.c)&&(t.g.a-=r-1))}function uot(e){var t,n,r,s,o;if(s=new st,o=nut(e,s),t=u(K(e,(et(),cl)),10),t)for(r=new C(t.j);r.a>t,o=e.m>>t|n<<22-t,s=e.l>>t|e.m<<22-t):t<44?(h=r?V0:0,o=n>>t-22,s=e.m>>t-22|n<<44-t):(h=r?V0:0,o=r?ml:0,s=n>>t-44),fu(s&ml,o&ml,h&V0)}function zse(e){var t,n,r,s,o,h;for(this.c=new st,this.d=e,r=gs,s=gs,t=Ds,n=Ds,h=ii(e,0);h.b!=h.d.c;)o=u(ri(h),8),r=b.Math.min(r,o.a),s=b.Math.min(s,o.b),t=b.Math.max(t,o.a),n=b.Math.max(n,o.b);this.a=new fh(r,s,t-r,n-s)}function fot(e,t){var n,r,s,o,h,d;for(o=new C(e.b);o.a0&&we(t,42)&&(e.a.qj(),x=u(t,42),v=x.cd(),o=v==null?0:Xi(v),h=Nbe(e.a,o),n=e.a.d[h],n)){for(r=u(n.g,367),_=n.i,d=0;d<_;++d)if(s=r[d],s.Sh()==o&&s.Fb(x))return dot(e,x),!0}return!1}function Jdn(e){var t,n,r,s;for(s=u(Ii(e.a,(c4(),_q)),15).Kc();s.Ob();)r=u(s.Pb(),101),n=(t=D6(r.k),t.Hc((ht(),An))?t.Hc($n)?t.Hc(xr)?t.Hc(Dn)?null:d2t:p2t:g2t:f2t),p8(e,r,n[0],(qv(),ww),0),p8(e,r,n[1],u2,1),p8(e,r,n[2],mw,1)}function e0n(e,t){var n,r;n=A2n(t),Cpn(e,t,n),wst(e.a,u(K(Ya(t.b),(et(),Lk)),230)),J2n(e),Shn(e,t),r=Me(Lr,Jr,25,t.b.j.c.length,15,1),Tae(e,t,(ht(),An),r,n),Tae(e,t,$n,r,n),Tae(e,t,xr,r,n),Tae(e,t,Dn,r,n),e.a=null,e.c=null,e.b=null}function Q4e(){Q4e=pe,yCe=(mH(),Rhe),eyt=new dn(Dxe,yCe),Zmt=new dn(Ixe,(Mn(),!0)),ct(-1),Ymt=new dn(Oxe,ct(-1)),ct(-1),Xmt=new dn(Nxe,ct(-1)),Jmt=new dn(Pxe,!1),tyt=new dn(Bxe,!0),Qmt=new dn(xce,!1),nyt=new dn(Rxe,-1)}function Z4e(e,t,n){switch(t){case 7:!e.e&&(e.e=new wn(ra,e,7,4)),_r(e.e),!e.e&&(e.e=new wn(ra,e,7,4)),fs(e.e,u(n,14));return;case 8:!e.d&&(e.d=new wn(ra,e,8,5)),_r(e.d),!e.d&&(e.d=new wn(ra,e,8,5)),fs(e.d,u(n,14));return}Y3e(e,t,n)}function J4e(e,t){var n,r,s,o,h;if(je(t)===je(e))return!0;if(!we(t,15)||(h=u(t,15),e.gc()!=h.gc()))return!1;for(o=h.Kc(),r=e.Kc();r.Ob();)if(n=r.Pb(),s=o.Pb(),!(je(n)===je(s)||n!=null&&Ci(n,s)))return!1;return!0}function t0n(e,t){var n,r,s,o;for(o=u(zl(ic(ic(new vn(null,new mn(t.b,16)),new kL),new KP),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[(F1(),Ql)]))),15),o.Jc(new xL),n=0,s=o.Kc();s.Ob();)r=u(s.Pb(),11),r.p==-1&&t5e(e,r,n++)}function got(e){switch(e.g){case 0:return new sT;case 1:return new WJ;case 2:return new UJ;case 3:return new Bqe;case 4:return new EKe;default:throw J(new Ln("No implementation is available for the node placer "+(e.f!=null?e.f:""+e.g)))}}function pot(e){switch(e.g){case 0:return new Ive;case 1:return new KJ;case 2:return new $J;case 3:return new HJ;case 4:return new Fqe;default:throw J(new Ln("No implementation is available for the cycle breaker "+(e.f!=null?e.f:""+e.g)))}}function e5e(){e5e=pe,Pmt=new dn(_xe,ct(0)),Bmt=new dn(Cxe,0),nCe=(RD(),yV),Omt=new dn(mce,nCe),ct(0),Imt=new dn(yce,ct(1)),iCe=(rH(),Bhe),Rmt=new dn(Sxe,iCe),sCe=(L$(),Ihe),Fmt=new dn(Axe,sCe),rCe=(jH(),Phe),Nmt=new dn(Lxe,rCe)}function n0n(e,t,n){var r;r=null,t&&(r=t.d),eC(e,new r8(t.n.a-r.b+n.a,t.n.b-r.d+n.b)),eC(e,new r8(t.n.a-r.b+n.a,t.n.b+t.o.b+r.a+n.b)),eC(e,new r8(t.n.a+t.o.a+r.c+n.a,t.n.b-r.d+n.b)),eC(e,new r8(t.n.a+t.o.a+r.c+n.a,t.n.b+t.o.b+r.a+n.b))}function t5e(e,t,n){var r,s,o;for(t.p=n,o=Pp(B1(ie(re(q1,1),yt,20,0,[new sa(t),new Ar(t)])));Vr(o);)r=u(Pr(o),11),r.p==-1&&t5e(e,r,n);if(t.i.k==(zn(),ca))for(s=new C(t.i.j);s.a=2)for(n=s.Kc(),t=ft(n.Pb());n.Ob();)o=t,t=ft(n.Pb()),r=b.Math.min(r,(Sn(t),t-(Sn(o),o)));return r}function r0n(e,t){var n,r,s,o,h;r=new as,ks(r,t,r.c.b,r.c);do for(n=(Qn(r.b!=0),u(bh(r,r.a.a),86)),e.b[n.g]=1,o=ii(n.d,0);o.b!=o.d.c;)s=u(ri(o),188),h=s.c,e.b[h.g]==1?ci(e.a,s):e.b[h.g]==2?e.b[h.g]=1:ks(r,h,r.c.b,r.c);while(r.b!=0)}function i0n(e,t){var n,r,s;if(je(t)===je(Nr(e)))return!0;if(!we(t,15)||(r=u(t,15),s=e.gc(),s!=r.gc()))return!1;if(we(r,54)){for(n=0;n0&&(s=n),h=new C(e.f.e);h.a0?(t-=1,n-=1):r>=0&&s<0?(t+=1,n+=1):r>0&&s>=0?(t-=1,n+=1):(t+=1,n-=1),new xa(ct(t),ct(n))}function x0n(e,t){return e.ct.c?1:e.bt.b?1:e.a!=t.a?Xi(e.a)-Xi(t.a):e.d==(S_(),TS)&&t.d==ES?-1:e.d==ES&&t.d==TS?1:0}function mot(e,t){var n,r,s,o,h;return o=t.a,o.c.i==t.b?h=o.d:h=o.c,o.c.i==t.b?r=o.c:r=o.d,s=Xon(e.a,h,r),s>0&&s0):s<0&&-s0):!1}function E0n(e,t,n,r){var s,o,h,d,v,x,_,L;for(s=(t-e.d)/e.c.c.length,o=0,e.a+=n,e.d=t,L=new C(e.c);L.a>24;return h}function _0n(e){if(e.pe()){var t=e.c;t.qe()?e.o="["+t.n:t.pe()?e.o="["+t.ne():e.o="[L"+t.ne()+";",e.b=t.me()+"[]",e.k=t.oe()+"[]";return}var n=e.j,r=e.d;r=r.split("/"),e.o=Uie(".",[n,Uie("$",r)]),e.b=Uie(".",[n,Uie(".",r)]),e.k=r[r.length-1]}function C0n(e,t){var n,r,s,o,h;for(h=null,o=new C(e.e.a);o.a=0;t-=2)for(n=0;n<=t;n+=2)(e.b[n]>e.b[n+2]||e.b[n]===e.b[n+2]&&e.b[n+1]>e.b[n+3])&&(r=e.b[n+2],e.b[n+2]=e.b[n],e.b[n]=r,r=e.b[n+3],e.b[n+3]=e.b[n+1],e.b[n+1]=r);e.c=!0}}function yot(e,t){var n,r,s,o,h,d,v,x;for(h=t==1?Kue:Wue,o=h.a.ec().Kc();o.Ob();)for(s=u(o.Pb(),103),v=u(Ii(e.f.c,s),21).Kc();v.Ob();)switch(d=u(v.Pb(),46),r=u(d.b,81),x=u(d.a,189),n=x.c,s.g){case 2:case 1:r.g.d+=n;break;case 4:case 3:r.g.c+=n}}function L0n(e,t){var n,r,s,o,h,d,v,x,_;for(x=-1,_=0,h=e,d=0,v=h.length;d0&&++_;++x}return _}function _f(e){var t,n;return n=new Fl(Cp(e.gm)),n.a+="@",Yr(n,(t=Xi(e)>>>0,t.toString(16))),e.kh()?(n.a+=" (eProxyURI: ",Ec(n,e.qh()),e.$g()&&(n.a+=" eClass: ",Ec(n,e.$g())),n.a+=")"):e.$g()&&(n.a+=" (eClass: ",Ec(n,e.$g()),n.a+=")"),n.a}function sC(e){var t,n,r,s;if(e.e)throw J(new Wo((S0(Sue),doe+Sue.k+goe)));for(e.d==(wo(),f0)&&kz(e,Xh),n=new C(e.a.a);n.a>24}return n}function I0n(e,t,n){var r,s,o;if(s=u(_o(e.i,t),306),!s)if(s=new yet(e.d,t,n),M6(e.i,t,s),h3e(t))KWt(e.a,t.c,t.b,s);else switch(o=m1n(t),r=u(_o(e.p,o),244),o.g){case 1:case 3:s.j=!0,Zee(r,t.b,s);break;case 4:case 2:s.k=!0,Zee(r,t.c,s)}return s}function O0n(e,t,n,r){var s,o,h,d,v,x;if(d=new X5,v=pu(e.e.Tg(),t),s=u(e.g,119),ho(),u(t,66).Oj())for(h=0;h=0)return s;for(o=1,d=new C(t.j);d.a0&&t.ue((xn(s-1,e.c.length),u(e.c[s-1],10)),o)>0;)gh(e,s,(xn(s-1,e.c.length),u(e.c[s-1],10))),--s;xn(s,e.c.length),e.c[s]=o}n.a=new Mr,n.b=new Mr}function N0n(e,t,n){var r,s,o,h,d,v,x,_;for(_=(r=u(t.e&&t.e(),9),new hh(r,u(wf(r,r.length),9),0)),v=cy(n,"[\\[\\]\\s,]+"),o=v,h=0,d=o.length;h0&&(!(Dp(e.a.c)&&t.n.d)&&!(s8(e.a.c)&&t.n.b)&&(t.g.d-=b.Math.max(0,r/2-.5)),!(Dp(e.a.c)&&t.n.a)&&!(s8(e.a.c)&&t.n.c)&&(t.g.a+=b.Math.max(0,r-1)))}function _ot(e,t,n){var r,s;if((e.c-e.b&e.a.length-1)==2)t==(ht(),An)||t==$n?($$(u(F_(e),15),(Ul(),d0)),$$(u(F_(e),15),b2)):($$(u(F_(e),15),(Ul(),b2)),$$(u(F_(e),15),d0));else for(s=new y_(e);s.a!=s.b;)r=u(gH(s),15),$$(r,n)}function B0n(e,t){var n,r,s,o,h,d,v;for(s=l8(new tpe(e)),d=new Ea(s,s.c.length),o=l8(new tpe(t)),v=new Ea(o,o.c.length),h=null;d.b>0&&v.b>0&&(n=(Qn(d.b>0),u(d.a.Xb(d.c=--d.b),33)),r=(Qn(v.b>0),u(v.a.Xb(v.c=--v.b),33)),n==r);)h=n;return h}function vl(e,t){var n,r,s,o,h,d;return o=e.a*uoe+e.b*1502,d=e.b*uoe+11,n=b.Math.floor(d*NI),o+=n,d-=n*x6e,o%=x6e,e.a=o,e.b=d,t<=24?b.Math.floor(e.a*c7e[t]):(s=e.a*(1<=2147483648&&(r-=soe),r)}function Cot(e,t,n){var r,s,o,h;KXe(e,t)>KXe(e,n)?(r=ac(n,(ht(),$n)),e.d=r.dc()?0:xne(u(r.Xb(0),11)),h=ac(t,Dn),e.b=h.dc()?0:xne(u(h.Xb(0),11))):(s=ac(n,(ht(),Dn)),e.d=s.dc()?0:xne(u(s.Xb(0),11)),o=ac(t,$n),e.b=o.dc()?0:xne(u(o.Xb(0),11)))}function Sot(e){var t,n,r,s,o,h,d;if(e&&(t=e.Hh(Uh),t&&(h=Hr(r1((!t.b&&(t.b=new Ml((on(),oo),wc,t)),t.b),"conversionDelegates")),h!=null))){for(d=new st,r=cy(h,"\\w+"),s=0,o=r.length;se.c));h++)s.a>=e.s&&(o<0&&(o=h),d=h);return v=(e.s+e.c)/2,o>=0&&(r=m2n(e,t,o,d),v=AUt((xn(r,t.c.length),u(t.c[r],329))),Ldn(t,r,n)),v}function Vse(){Vse=pe,ryt=new fo((bi(),Bk),1.3),xCe=xSe,LCe=new kv(15),lyt=new fo(Fb,LCe),fyt=new fo(jb,15),iyt=IV,oyt=Rb,cyt=e5,uyt=p2,ayt=J4,CCe=KO,hyt=Hy,ACe=(Q4e(),eyt),_Ce=Zmt,SCe=Jmt,MCe=tyt,ECe=Qmt,TCe=OV,syt=TSe,RO=Xmt,kCe=Ymt,DCe=nyt}function Rr(e,t,n){var r,s,o,h,d,v,x;for(h=(o=new KB,o),Fme(h,(Sn(t),t)),x=(!h.b&&(h.b=new Ml((on(),oo),wc,h)),h.b),v=1;v0&&fwn(this,s)}function i5e(e,t,n,r,s,o){var h,d,v;if(!s[t.b]){for(s[t.b]=!0,h=r,!h&&(h=new k$),it(h.e,t),v=o[t.b].Kc();v.Ob();)d=u(v.Pb(),282),!(d.d==n||d.c==n)&&(d.c!=t&&i5e(e,d.c,t,h,s,o),d.d!=t&&i5e(e,d.d,t,h,s,o),it(h.c,d),Rs(h.d,d.b));return h}return null}function j0n(e){var t,n,r,s,o,h,d;for(t=0,s=new C(e.e);s.a=2}function $0n(e,t){var n,r,s,o;for(kr(t,"Self-Loop pre-processing",1),r=new C(e.a);r.a1||(t=Ui(If,ie(re(xo,1),tt,93,0,[Q0,Of])),SD(a$(t,e))>1)||(r=Ui(Pf,ie(re(xo,1),tt,93,0,[g0,Zh])),SD(a$(r,e))>1))}function G0n(e,t){var n,r,s;return n=t.Hh(e.a),n&&(s=Hr(r1((!n.b&&(n.b=new Ml((on(),oo),wc,n)),n.b),"affiliation")),s!=null)?(r=cj(s,Nu(35)),r==-1?Iie(e,f_(e,Gl(t.Hj())),s):r==0?Iie(e,null,s.substr(1)):Iie(e,s.substr(0,r),s.substr(r+1))):null}function q0n(e){var t,n,r;try{return e==null?Pu:Qo(e)}catch(s){if(s=ts(s),we(s,102))return t=s,r=Cp(pl(e))+"@"+(n=(Ud(),v3e(e)>>>0),n.toString(16)),Icn(Dsn(),(n8(),"Exception during lenientFormat for "+r),t),"<"+r+" threw "+Cp(t.gm)+">";throw J(s)}}function Mot(e){switch(e.g){case 0:return new GJ;case 1:return new CR;case 2:return new MGe;case 3:return new DL;case 4:return new QUe;case 5:return new qJ;default:throw J(new Ln("No implementation is available for the layerer "+(e.f!=null?e.f:""+e.g)))}}function s5e(e,t,n){var r,s,o;for(o=new C(e.t);o.a0&&(r.b.n-=r.c,r.b.n<=0&&r.b.u>0&&ci(t,r.b));for(s=new C(e.i);s.a0&&(r.a.u-=r.c,r.a.u<=0&&r.a.n>0&&ci(n,r.a))}function tz(e){var t,n,r,s,o;if(e.g==null&&(e.d=e.si(e.f),Br(e,e.d),e.c))return o=e.f,o;if(t=u(e.g[e.i-1],47),s=t.Pb(),e.e=t,n=e.si(s),n.Ob())e.d=n,Br(e,n);else for(e.d=null;!t.Ob()&&(cs(e.g,--e.i,null),e.i!=0);)r=u(e.g[e.i-1],47),t=r;return s}function V0n(e,t){var n,r,s,o,h,d;if(r=t,s=r.ak(),G0(e.e,s)){if(s.hi()&&v$(e,s,r.dd()))return!1}else for(d=pu(e.e.Tg(),s),n=u(e.g,119),o=0;o1||n>1)return 2;return t+n==1?2:0}function Iot(e,t,n){var r,s,o,h,d;for(kr(n,"ELK Force",1),It(Mt(Ft(t,(a1(),Q7e))))||i$((r=new sr((Tm(),new ym(t))),r)),d=cnt(t),bln(d),Ysn(e,u(K(d,X7e),424)),h=kut(e.a,d),o=h.Kc();o.Ob();)s=u(o.Pb(),231),D2n(e.b,s,Kc(n,1/h.gc()));d=Nlt(h),Dlt(d),ur(n)}function Z0n(e,t){var n,r,s,o,h;if(kr(t,"Breaking Point Processor",1),wmn(e),It(Mt(K(e,(pt(),i_e))))){for(s=new C(e.b);s.a=0?e._g(r,!0,!0):tw(e,o,!0),153)),u(s,215).ml(t,n)}else throw J(new Ln(i2+t.ne()+RC))}function ngn(e,t){var n,r,s,o,h;for(n=new st,s=ic(new vn(null,new mn(e,16)),new $Q),o=ic(new vn(null,new mn(e,16)),new HQ),h=Lrn(qnn(Kj(Pgn(ie(re(h3n,1),yt,833,0,[s,o])),new zQ))),r=1;r=2*t&&it(n,new vne(h[r-1]+t,h[r]-t));return n}function rgn(e,t,n){kr(n,"Eades radial",1),n.n&&t&&yf(n,kf(t),(Pl(),nh)),e.d=u(Ft(t,(a_(),MS)),33),e.c=Ue(ft(Ft(t,(Jm(),xV)))),e.e=tse(u(Ft(t,BO),293)),e.a=Bon(u(Ft(t,cCe),426)),e.b=ihn(u(Ft(t,oCe),340)),Fln(e),n.n&&t&&yf(n,kf(t),(Pl(),nh))}function ign(e,t,n){var r,s,o,h,d,v,x,_;if(n)for(o=n.a.length,r=new W2(o),d=(r.b-r.a)*r.c<0?(Lp(),C2):new Op(r);d.Ob();)h=u(d.Pb(),19),s=E8(n,h.a),s&&(v=nnn(e,(x=(pv(),_=new xpe,_),t&&c5e(x,t),x),s),I_(v,D0(s,Id)),KH(s,v),I4e(s,v),pie(e,s,v))}function rz(e){var t,n,r,s,o,h;if(!e.j){if(h=new H9,t=XS,o=t.a.zc(e,t),o==null){for(r=new rr(jo(e));r.e!=r.i.gc();)n=u(pr(r),26),s=rz(n),fs(h,s),Br(h,n);t.a.Bc(e)!=null}Km(h),e.j=new B3((u(Te(He((Rp(),En).o),11),18),h.i),h.g),dl(e).b&=-33}return e.j}function sgn(e){var t,n,r,s;if(e==null)return null;if(r=Xc(e,!0),s=tO.length,an(r.substr(r.length-s,s),tO)){if(n=r.length,n==4){if(t=(zr(0,r.length),r.charCodeAt(0)),t==43)return nLe;if(t==45)return F4t}else if(n==3)return nLe}return new hpe(r)}function agn(e){var t,n,r;return n=e.l,n&n-1||(r=e.m,r&r-1)||(t=e.h,t&t-1)||t==0&&r==0&&n==0?-1:t==0&&r==0&&n!=0?Dme(n):t==0&&r!=0&&n==0?Dme(r)+22:t!=0&&r==0&&n==0?Dme(t)+44:-1}function ogn(e,t){var n,r,s,o,h;for(kr(t,"Edge joining",1),n=It(Mt(K(e,(pt(),Jle)))),s=new C(e.b);s.a1)for(s=new C(e.a);s.a0),o.a.Xb(o.c=--o.b),Dm(o,s),Qn(o.b3&&e0(e,0,t-3))}function hgn(e){var t,n,r,s;return je(K(e,(pt(),Iy)))===je((F0(),Wg))?!e.e&&je(K(e,_O))!==je((q8(),wO)):(r=u(K(e,Hle),292),s=It(Mt(K(e,zle)))||je(K(e,dS))===je((V6(),vO)),t=u(K(e,kTe),19).a,n=e.a.c.length,!s&&r!=(q8(),wO)&&(t==0||t>n))}function fgn(e){var t,n;for(n=0;n0);n++);if(n>0&&n0);t++);return t>0&&n>16!=6&&t){if(o7(e,t))throw J(new Ln(FC+Zat(e)));r=null,e.Cb&&(r=(n=e.Db>>16,n>=0?N3e(e,r):e.Cb.ih(e,-1-n,null,r))),t&&(r=Q6(t,e,6,r)),r=Ibe(e,t,r),r&&r.Fi()}else e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,6,t,t))}function c5e(e,t){var n,r;if(t!=e.Cb||e.Db>>16!=9&&t){if(o7(e,t))throw J(new Ln(FC+Nct(e)));r=null,e.Cb&&(r=(n=e.Db>>16,n>=0?B3e(e,r):e.Cb.ih(e,-1-n,null,r))),t&&(r=Q6(t,e,9,r)),r=Obe(e,t,r),r&&r.Fi()}else e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,9,t,t))}function Wse(e,t){var n,r;if(t!=e.Cb||e.Db>>16!=3&&t){if(o7(e,t))throw J(new Ln(FC+Out(e)));r=null,e.Cb&&(r=(n=e.Db>>16,n>=0?F3e(e,r):e.Cb.ih(e,-1-n,null,r))),t&&(r=Q6(t,e,12,r)),r=Dbe(e,t,r),r&&r.Fi()}else e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,3,t,t))}function b7(e){var t,n,r,s,o;if(r=$h(e),o=e.j,o==null&&r)return e.$j()?null:r.zj();if(we(r,148)){if(n=r.Aj(),n&&(s=n.Nh(),s!=e.i)){if(t=u(r,148),t.Ej())try{e.g=s.Kh(t,o)}catch(h){if(h=ts(h),we(h,78))e.g=null;else throw J(h)}e.i=s}return e.g}return null}function Pot(e){var t;return t=new st,it(t,new y6(new Pt(e.c,e.d),new Pt(e.c+e.b,e.d))),it(t,new y6(new Pt(e.c,e.d),new Pt(e.c,e.d+e.a))),it(t,new y6(new Pt(e.c+e.b,e.d+e.a),new Pt(e.c+e.b,e.d))),it(t,new y6(new Pt(e.c+e.b,e.d+e.a),new Pt(e.c,e.d+e.a))),t}function Bot(e,t,n,r){var s,o,h;if(h=U3e(t,n),r.c[r.c.length]=t,e.j[h.p]==-1||e.j[h.p]==2||e.a[t.p])return r;for(e.j[h.p]=-1,o=new cr(fr(j0(h).a.Kc(),new V));Vr(o);)if(s=u(Pr(o),17),!(!(!to(s)&&!(!to(s)&&s.c.i.c==s.d.i.c))||s==t))return Bot(e,s,h,r);return r}function dgn(e,t,n){var r,s,o;for(o=t.a.ec().Kc();o.Ob();)s=u(o.Pb(),79),r=u(er(e.b,s),266),!r&&(us(n0(s))==us(Kp(s))?Apn(e,s,n):n0(s)==us(Kp(s))?er(e.c,s)==null&&er(e.b,Kp(s))!=null&&plt(e,s,n,!1):er(e.d,s)==null&&er(e.b,n0(s))!=null&&plt(e,s,n,!0))}function ggn(e,t){var n,r,s,o,h,d,v;for(s=e.Kc();s.Ob();)for(r=u(s.Pb(),10),d=new $c,rc(d,r),Vs(d,(ht(),$n)),Ye(d,(et(),$q),(Mn(),!0)),h=t.Kc();h.Ob();)o=u(h.Pb(),10),v=new $c,rc(v,o),Vs(v,Dn),Ye(v,$q,!0),n=new Iv,Ye(n,$q,!0),Va(n,d),ba(n,v)}function pgn(e,t,n,r){var s,o,h,d;s=Drt(e,t,n),o=Drt(e,n,t),h=u(er(e.c,t),112),d=u(er(e.c,n),112),sr.b.g&&(o.c[o.c.length]=r);return o}function v7(){v7=pe,X4=new _M("CANDIDATE_POSITION_LAST_PLACED_RIGHT",0),Nk=new _M("CANDIDATE_POSITION_LAST_PLACED_BELOW",1),IS=new _M("CANDIDATE_POSITION_WHOLE_DRAWING_RIGHT",2),DS=new _M("CANDIDATE_POSITION_WHOLE_DRAWING_BELOW",3),OS=new _M("WHOLE_DRAWING",4)}function bgn(e,t){if(we(t,239))return Uan(e,u(t,33));if(we(t,186))return son(e,u(t,118));if(we(t,354))return wJt(e,u(t,137));if(we(t,352))return zbn(e,u(t,79));if(t)return null;throw J(new Ln(a8e+Yp(new Al(ie(re(Yn,1),yt,1,5,[t])))))}function vgn(e){var t,n,r,s,o,h,d;for(o=new as,s=new C(e.d.a);s.a1)for(t=Ev((n=new z2,++e.b,n),e.d),d=ii(o,0);d.b!=d.d.c;)h=u(ri(d),121),Cf(bf(pf(vf(gf(new Nh,1),0),t),h))}function u5e(e,t){var n,r;if(t!=e.Cb||e.Db>>16!=11&&t){if(o7(e,t))throw J(new Ln(FC+S5e(e)));r=null,e.Cb&&(r=(n=e.Db>>16,n>=0?j3e(e,r):e.Cb.ih(e,-1-n,null,r))),t&&(r=Q6(t,e,10,r)),r=Hbe(e,t,r),r&&r.Fi()}else e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,11,t,t))}function wgn(e){var t,n,r,s;for(r=new ob(new dg(e.b).a);r.b;)n=$v(r),s=u(n.cd(),11),t=u(n.dd(),10),Ye(t,(et(),Mi),s),Ye(s,cl,t),Ye(s,kO,(Mn(),!0)),Vs(s,u(K(t,vc),61)),K(t,vc),Ye(s.i,(pt(),bs),(wa(),CE)),u(K(Ya(s.i),eu),21).Fc((mo(),uE))}function mgn(e,t,n){var r,s,o,h,d,v;if(o=0,h=0,e.c)for(v=new C(e.d.i.j);v.ao.a?-1:s.av){for(_=e.d,e.d=Me(SAe,p8e,63,2*v+4,0,1),o=0;o=9223372036854776e3?(D8(),B8e):(s=!1,e<0&&(s=!0,e=-e),r=0,e>=vb&&(r=_s(e/vb),e-=r*vb),n=0,e>=ck&&(n=_s(e/ck),e-=n*ck),t=_s(e),o=fu(t,n,r),s&&gie(o),o)}function Lgn(e,t){var n,r,s,o;for(n=!t||!e.u.Hc((ol(),Z0)),o=0,s=new C(e.e.Cf());s.a=-t&&r==t?new xa(ct(n-1),ct(r)):new xa(ct(n),ct(r-1))}function Hot(){return po(),ie(re(m3n,1),tt,77,0,[MEe,SEe,tS,ele,YEe,uq,mq,eE,WEe,FEe,VEe,J7,KEe,PEe,XEe,kEe,dq,tle,oq,bq,ZEe,pq,xEe,UEe,JEe,vq,QEe,cq,IEe,GEe,zEe,yq,_Ee,aq,hq,TEe,Z7,$Ee,BEe,qEe,nS,AEe,CEe,HEe,REe,fq,wq,EEe,gq,jEe,lq,OEe,DEe,pO,sq,NEe,LEe])}function Ogn(e,t,n){e.d=0,e.b=0,t.k==(zn(),Jc)&&n.k==Jc&&u(K(t,(et(),Mi)),10)==u(K(n,Mi),10)&&(Hre(t).j==(ht(),An)?Cot(e,t,n):Cot(e,n,t)),t.k==Jc&&n.k==ca?Hre(t).j==(ht(),An)?e.d=1:e.b=1:n.k==Jc&&t.k==ca&&(Hre(n).j==(ht(),An)?e.b=1:e.d=1),yun(e,t,n)}function Ngn(e){var t,n,r,s,o,h,d,v,x,_,L;return L=c4e(e),t=e.a,v=t!=null,v&&f8(L,"category",e.a),s=hM(new vm(e.d)),h=!s,h&&(x=new hg,t1(L,"knownOptions",x),n=new S$e(x),Da(new vm(e.d),n)),o=hM(e.g),d=!o,d&&(_=new hg,t1(L,"supportedFeatures",_),r=new A$e(_),Da(e.g,r)),L}function Pgn(e){var t,n,r,s,o,h,d,v,x;for(r=!1,t=336,n=0,o=new HUe(e.length),d=e,v=0,x=d.length;v>16!=7&&t){if(o7(e,t))throw J(new Ln(FC+Kst(e)));r=null,e.Cb&&(r=(n=e.Db>>16,n>=0?P3e(e,r):e.Cb.ih(e,-1-n,null,r))),t&&(r=u(t,49).gh(e,1,iN,r)),r=Ove(e,t,r),r&&r.Fi()}else e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,7,t,t))}function zot(e,t){var n,r;if(t!=e.Cb||e.Db>>16!=3&&t){if(o7(e,t))throw J(new Ln(FC+rrt(e)));r=null,e.Cb&&(r=(n=e.Db>>16,n>=0?R3e(e,r):e.Cb.ih(e,-1-n,null,r))),t&&(r=u(t,49).gh(e,0,aN,r)),r=Nve(e,t,r),r&&r.Fi()}else e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,3,t,t))}function Yse(e,t){d7();var n,r,s,o,h,d,v,x,_;return t.d>e.d&&(d=e,e=t,t=d),t.d<63?_pn(e,t):(h=(e.d&-2)<<4,x=Wwe(e,h),_=Wwe(t,h),r=hae(e,$6(x,h)),s=hae(t,$6(_,h)),v=Yse(x,_),n=Yse(r,s),o=Yse(hae(x,r),hae(s,_)),o=mae(mae(o,v),n),o=$6(o,h),v=$6(v,h<<1),mae(mae(v,o),n))}function Rgn(e,t,n){var r,s,o,h,d;for(h=H_(e,n),d=Me(h0,Bg,10,t.length,0,1),r=0,o=h.Kc();o.Ob();)s=u(o.Pb(),11),It(Mt(K(s,(et(),kO))))&&(d[r++]=u(K(s,cl),10));if(r=0;o+=n?1:-1)h=h|t.c.Sf(v,o,n,r&&!It(Mt(K(t.j,(et(),kw))))&&!It(Mt(K(t.j,(et(),z4))))),h=h|t.q._f(v,o,n),h=h|Sct(e,v[o],n,r);return Gs(e.c,t),h}function sz(e,t,n){var r,s,o,h,d,v,x,_,L,P;for(_=TQe(e.j),L=0,P=_.length;L1&&(e.a=!0),JQt(u(n.b,65),Ni(fc(u(t.b,65).c),bd(da(fc(u(n.b,65).a),u(t.b,65).a),s))),FXe(e,t),Got(e,n)}function qot(e){var t,n,r,s,o,h,d;for(o=new C(e.a.a);o.a0&&o>0?h.p=t++:r>0?h.p=n++:o>0?h.p=s++:h.p=n++}hn(),aa(e.j,new _L)}function zgn(e){var t,n;n=null,t=u(St(e.g,0),17);do{if(n=t.d.i,ta(n,(et(),Yh)))return u(K(n,Yh),11).i;if(n.k!=(zn(),Hs)&&Vr(new cr(fr(js(n).a.Kc(),new V))))t=u(Pr(new cr(fr(js(n).a.Kc(),new V))),17);else if(n.k!=Hs)return null}while(n&&n.k!=(zn(),Hs));return n}function Ggn(e,t){var n,r,s,o,h,d,v,x,_;for(d=t.j,h=t.g,v=u(St(d,d.c.length-1),113),_=(xn(0,d.c.length),u(d.c[0],113)),x=gse(e,h,v,_),o=1;ox&&(v=n,_=s,x=r);t.a=_,t.c=v}function qgn(e,t){var n,r;if(r=KM(e.b,t.b),!r)throw J(new Wo("Invalid hitboxes for scanline constraint calculation."));(Qtt(t.b,u(qKt(e.b,t.b),57))||Qtt(t.b,u(GKt(e.b,t.b),57)))&&(Ud(),t.b+""),e.a[t.b.f]=u(hne(e.b,t.b),57),n=u(lne(e.b,t.b),57),n&&(e.a[n.f]=t.b)}function Cf(e){if(!e.a.d||!e.a.e)throw J(new Wo((S0(sgt),sgt.k+" must have a source and target "+(S0(R7e),R7e.k)+" specified.")));if(e.a.d==e.a.e)throw J(new Wo("Network simplex does not support self-loops: "+e.a+" "+e.a.d+" "+e.a.e));return lj(e.a.d.g,e.a),lj(e.a.e.b,e.a),e.a}function Vgn(e,t,n){var r,s,o,h,d,v,x;for(x=new Sp(new Cje(e)),h=ie(re(Upt,1),ift,11,0,[t,n]),d=0,v=h.length;dv-e.b&&dv-e.a&&d0&&++z;++P}return z}function tpn(e,t){var n,r,s,o,h;for(h=u(K(t,(nw(),q_e)),425),o=ii(t.b,0);o.b!=o.d.c;)if(s=u(ri(o),86),e.b[s.g]==0){switch(h.g){case 0:wit(e,s);break;case 1:r0n(e,s)}e.b[s.g]=2}for(r=ii(e.a,0);r.b!=r.d.c;)n=u(ri(r),188),Xm(n.b.d,n,!0),Xm(n.c.b,n,!0);Ye(t,(Tc(),R_e),e.a)}function pu(e,t){ho();var n,r,s,o;return t?t==(Fi(),B4t)||(t==T4t||t==zb||t==E4t)&&e!=eLe?new s6e(e,t):(r=u(t,677),n=r.pk(),n||(m8(Po((Yu(),Oa),t)),n=r.pk()),o=(!n.i&&(n.i=new Mr),n.i),s=u(hc($o(o.f,e)),1942),!s&&Si(o,e,s=new s6e(e,t)),s):y4t}function npn(e,t){var n,r,s,o,h,d,v,x,_;for(v=u(K(e,(et(),Mi)),11),x=sc(ie(re(na,1),Qe,8,0,[v.i.n,v.n,v.a])).a,_=e.i.n.b,n=kd(e.e),s=n,o=0,h=s.length;o0?o.a?(d=o.b.rf().a,n>d&&(s=(n-d)/2,o.d.b=s,o.d.c=s)):o.d.c=e.s+n:g_(e.u)&&(r=u4e(o.b),r.c<0&&(o.d.b=-r.c),r.c+r.b>o.b.rf().a&&(o.d.c=r.c+r.b-o.b.rf().a))}function apn(e,t){var n,r,s,o;for(kr(t,"Semi-Interactive Crossing Minimization Processor",1),n=!1,s=new C(e.b);s.a=0){if(t==n)return new xa(ct(-t-1),ct(-t-1));if(t==-n)return new xa(ct(-t),ct(n+1))}return b.Math.abs(t)>b.Math.abs(n)?t<0?new xa(ct(-t),ct(n)):new xa(ct(-t),ct(n+1)):new xa(ct(t+1),ct(n))}function upn(e){var t,n;n=u(K(e,(pt(),vu)),163),t=u(K(e,(et(),Lb)),303),n==(mh(),l2)?(Ye(e,vu,TO),Ye(e,Lb,(P0(),$4))):n==Ly?(Ye(e,vu,TO),Ye(e,Lb,(P0(),Tk))):t==(P0(),$4)?(Ye(e,vu,l2),Ye(e,Lb,mO)):t==Tk&&(Ye(e,vu,Ly),Ye(e,Lb,mO))}function az(){az=pe,OO=new SQ,Vwt=xi(new Xs,(ro(),bu),(po(),oq)),Kwt=il(xi(new Xs,bu,pq),Go,gq),Ywt=Qv(Qv(AF(il(xi(new Xs,Pd,mq),Go,wq),Zc),vq),yq),Uwt=il(xi(xi(xi(new Xs,c2,uq),Zc,hq),Zc,Z7),Go,lq),Wwt=il(xi(xi(new Xs,Zc,Z7),Zc,aq),Go,sq)}function aC(){aC=pe,Zwt=xi(il(new Xs,(ro(),Go),(po(),OEe)),bu,oq),nmt=Qv(Qv(AF(il(xi(new Xs,Pd,mq),Go,wq),Zc),vq),yq),Jwt=il(xi(xi(xi(new Xs,c2,uq),Zc,hq),Zc,Z7),Go,lq),tmt=xi(xi(new Xs,bu,pq),Go,gq),emt=il(xi(xi(new Xs,Zc,Z7),Zc,aq),Go,sq)}function lpn(e,t,n,r,s){var o,h;(!to(t)&&t.c.i.c==t.d.i.c||!stt(sc(ie(re(na,1),Qe,8,0,[s.i.n,s.n,s.a])),n))&&!to(t)&&(t.c==s?c8(t.a,0,new Io(n)):ci(t.a,new Io(n)),r&&!_0(e.a,n)&&(h=u(K(t,(pt(),Fo)),74),h||(h=new Gu,Ye(t,Fo,h)),o=new Io(n),ks(h,o,h.c.b,h.c),Gs(e.a,o)))}function hpn(e){var t,n;for(n=new cr(fr(Xo(e).a.Kc(),new V));Vr(n);)if(t=u(Pr(n),17),t.c.i.k!=(zn(),Rl))throw J(new M3(Poe+QD(e)+"' has its layer constraint set to FIRST, but has at least one incoming edge that does not come from a FIRST_SEPARATE node. That must not happen."))}function fpn(e,t,n){var r,s,o,h,d,v,x;if(s=urt(e.Db&254),s==0)e.Eb=n;else{if(s==1)d=Me(Yn,yt,1,2,5,1),o=dse(e,t),o==0?(d[0]=n,d[1]=e.Eb):(d[0]=e.Eb,d[1]=n);else for(d=Me(Yn,yt,1,s+1,5,1),h=tb(e.Eb),r=2,v=0,x=0;r<=128;r<<=1)r==t?d[x++]=n:e.Db&r&&(d[x++]=h[v++]);e.Eb=d}e.Db|=t}function Uot(e,t,n){var r,s,o,h;for(this.b=new st,s=0,r=0,h=new C(e);h.a0&&(o=u(St(this.b,0),167),s+=o.o,r+=o.p),s*=2,r*=2,t>1?s=_s(b.Math.ceil(s*t)):r=_s(b.Math.ceil(r/t)),this.a=new n3e(s,r)}function Wot(e,t,n,r,s,o){var h,d,v,x,_,L,P,z,q,W,X,le;for(_=r,t.j&&t.o?(z=u(er(e.f,t.A),57),W=z.d.c+z.d.b,--_):W=t.a.c+t.a.b,L=s,n.q&&n.o?(z=u(er(e.f,n.C),57),x=z.d.c,++L):x=n.a.c,X=x-W,v=b.Math.max(2,L-_),d=X/v,q=W+d,P=_;P=0;h+=s?1:-1){for(d=t[h],v=r==(ht(),$n)?s?ac(d,r):nb(ac(d,r)):s?nb(ac(d,r)):ac(d,r),o&&(e.c[d.p]=v.gc()),L=v.Kc();L.Ob();)_=u(L.Pb(),11),e.d[_.p]=x++;Rs(n,v)}}function Kot(e,t,n){var r,s,o,h,d,v,x,_;for(o=Ue(ft(e.b.Kc().Pb())),x=Ue(ft(ksn(t.b))),r=bd(fc(e.a),x-n),s=bd(fc(t.a),n-o),_=Ni(r,s),bd(_,1/(x-o)),this.a=_,this.b=new st,d=!0,h=e.b.Kc(),h.Pb();h.Ob();)v=Ue(ft(h.Pb())),d&&v-n>pce&&(this.b.Fc(n),d=!1),this.b.Fc(v);d&&this.b.Fc(n)}function dpn(e){var t,n,r,s;if(T2n(e,e.n),e.d.c.length>0){for(_T(e.c);K4e(e,u(Y(new C(e.e.a)),121))>5,t&=31,r>=e.d)return e.e<0?(Qp(),Eue):(Qp(),K7);if(o=e.d-r,s=Me(Lr,Jr,25,o+1,15,1),a1n(s,o,e.a,r,t),e.e<0){for(n=0;n0&&e.a[n]<<32-t){for(n=0;n=0?!1:(n=v4((Yu(),Oa),s,t),n?(r=n.Zj(),(r>1||r==-1)&&Dv(Po(Oa,n))!=3):!0)):!1}function vpn(e,t,n,r){var s,o,h,d,v;return d=zo(u(Te((!t.b&&(t.b=new wn(mr,t,4,7)),t.b),0),82)),v=zo(u(Te((!t.c&&(t.c=new wn(mr,t,5,8)),t.c),0),82)),us(d)==us(v)||Vm(v,d)?null:(h=nD(t),h==n?r:(o=u(er(e.a,h),10),o&&(s=o.e,s)?s:null))}function wpn(e,t){var n;switch(n=u(K(e,(pt(),Wq)),276),kr(t,"Label side selection ("+n+")",1),n.g){case 0:fot(e,(Ul(),d0));break;case 1:fot(e,(Ul(),b2));break;case 2:Sut(e,(Ul(),d0));break;case 3:Sut(e,(Ul(),b2));break;case 4:cct(e,(Ul(),d0));break;case 5:cct(e,(Ul(),b2))}ur(t)}function b5e(e,t,n){var r,s,o,h,d,v;if(r=rUt(n,e.length),h=e[r],h[0].k==(zn(),Ls))for(o=lze(n,h.length),v=t.j,s=0;s0&&(n[0]+=e.d,h-=n[0]),n[2]>0&&(n[2]+=e.d,h-=n[2]),o=b.Math.max(0,h),n[1]=b.Math.max(n[1],h),Ywe(e,lu,s.c+r.b+n[0]-(n[1]-h)/2,n),t==lu&&(e.c.b=o,e.c.c=s.c+r.b+(o-h)/2)}function sct(){this.c=Me(pa,Ao,25,(ht(),ie(re(ao,1),Dc,61,0,[uc,An,$n,xr,Dn])).length,15,1),this.b=Me(pa,Ao,25,ie(re(ao,1),Dc,61,0,[uc,An,$n,xr,Dn]).length,15,1),this.a=Me(pa,Ao,25,ie(re(ao,1),Dc,61,0,[uc,An,$n,xr,Dn]).length,15,1),s2e(this.c,gs),s2e(this.b,Ds),s2e(this.a,Ds)}function Yc(e,t,n){var r,s,o,h;if(t<=n?(s=t,o=n):(s=n,o=t),r=0,e.b==null)e.b=Me(Lr,Jr,25,2,15,1),e.b[0]=s,e.b[1]=o,e.c=!0;else{if(r=e.b.length,e.b[r-1]+1==s){e.b[r-1]=o;return}h=Me(Lr,Jr,25,r+2,15,1),Hc(e.b,0,h,0,r),e.b=h,e.b[r-1]>=s&&(e.c=!1,e.a=!1),e.b[r++]=s,e.b[r]=o,e.c||l4(e)}}function Cpn(e,t,n){var r,s,o,h,d,v,x;for(x=t.d,e.a=new su(x.c.length),e.c=new Mr,d=new C(x);d.a=0?e._g(x,!1,!0):tw(e,n,!1),58));e:for(o=L.Kc();o.Ob();){for(s=u(o.Pb(),56),_=0;_1;)ay(s,s.i-1);return r}function Dpn(e,t){var n,r,s,o,h,d,v;for(kr(t,"Comment post-processing",1),o=new C(e.b);o.ae.d[h.p]&&(n+=Gwe(e.b,o),$p(e.a,ct(o)));for(;!TT(e.a);)yme(e.b,u(I6(e.a),19).a)}return n}function uct(e,t,n){var r,s,o,h;for(o=(!t.a&&(t.a=new at(hs,t,10,11)),t.a).i,s=new rr((!t.a&&(t.a=new at(hs,t,10,11)),t.a));s.e!=s.i.gc();)r=u(pr(s),33),(!r.a&&(r.a=new at(hs,r,10,11)),r.a).i==0||(o+=uct(e,r,!1));if(n)for(h=us(t);h;)o+=(!h.a&&(h.a=new at(hs,h,10,11)),h.a).i,h=us(h);return o}function ay(e,t){var n,r,s,o;return e.ej()?(r=null,s=e.fj(),e.ij()&&(r=e.kj(e.pi(t),null)),n=e.Zi(4,o=J6(e,t),null,t,s),e.bj()&&o!=null&&(r=e.dj(o,r)),r?(r.Ei(n),r.Fi()):e.$i(n),o):(o=J6(e,t),e.bj()&&o!=null&&(r=e.dj(o,null),r&&r.Fi()),o)}function Opn(e){var t,n,r,s,o,h,d,v,x,_;for(x=e.a,t=new Ys,v=0,r=new C(e.d);r.ad.d&&(_=d.d+d.a+x));n.c.d=_,t.a.zc(n,t),v=b.Math.max(v,n.c.d+n.c.a)}return v}function mo(){mo=pe,Oq=new _m("COMMENTS",0),Th=new _m("EXTERNAL_PORTS",1),oS=new _m("HYPEREDGES",2),Nq=new _m("HYPERNODES",3),uE=new _m("NON_FREE_PORTS",4),j4=new _m("NORTH_SOUTH_PORTS",5),cS=new _m(Eft,6),oE=new _m("CENTER_LABELS",7),cE=new _m("END_LABELS",8),Pq=new _m("PARTITIONS",9)}function oy(e){var t,n,r,s,o;for(s=new st,t=new l_((!e.a&&(e.a=new at(hs,e,10,11)),e.a)),r=new cr(fr(z0(e).a.Kc(),new V));Vr(r);)n=u(Pr(r),79),we(Te((!n.b&&(n.b=new wn(mr,n,4,7)),n.b),0),186)||(o=zo(u(Te((!n.c&&(n.c=new wn(mr,n,5,8)),n.c),0),82)),t.a._b(o)||(s.c[s.c.length]=o));return s}function Npn(e){var t,n,r,s,o,h;for(o=new Ys,t=new l_((!e.a&&(e.a=new at(hs,e,10,11)),e.a)),s=new cr(fr(z0(e).a.Kc(),new V));Vr(s);)r=u(Pr(s),79),we(Te((!r.b&&(r.b=new wn(mr,r,4,7)),r.b),0),186)||(h=zo(u(Te((!r.c&&(r.c=new wn(mr,r,5,8)),r.c),0),82)),t.a._b(h)||(n=o.a.zc(h,o),n==null));return o}function Ppn(e,t,n,r,s){return r<0?(r=u4(e,s,ie(re(mt,1),Qe,2,6,[Rae,Fae,jae,$ae,ak,Hae,zae,Gae,qae,Vae,Uae,Wae]),t),r<0&&(r=u4(e,s,ie(re(mt,1),Qe,2,6,["Jan","Feb","Mar","Apr",ak,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),t)),r<0?!1:(n.k=r,!0)):r>0?(n.k=r-1,!0):!1}function Bpn(e,t,n,r,s){return r<0?(r=u4(e,s,ie(re(mt,1),Qe,2,6,[Rae,Fae,jae,$ae,ak,Hae,zae,Gae,qae,Vae,Uae,Wae]),t),r<0&&(r=u4(e,s,ie(re(mt,1),Qe,2,6,["Jan","Feb","Mar","Apr",ak,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),t)),r<0?!1:(n.k=r,!0)):r>0?(n.k=r-1,!0):!1}function Rpn(e,t,n,r,s,o){var h,d,v,x;if(d=32,r<0){if(t[0]>=e.length||(d=Ma(e,t[0]),d!=43&&d!=45)||(++t[0],r=ZH(e,t),r<0))return!1;d==45&&(r=-r)}return d==32&&t[0]-n==2&&s.b==2&&(v=new kF,x=v.q.getFullYear()-e2+e2-80,h=x%100,o.a=r==h,r+=(x/100|0)*100+(r=x&&(v=r);v&&(_=b.Math.max(_,v.a.o.a)),_>P&&(L=x,P=_)}return L}function $pn(e,t,n){var r,s,o;if(e.e=n,e.d=0,e.b=0,e.f=1,e.i=t,(e.e&16)==16&&(e.i=C2n(e.i)),e.j=e.i.length,mi(e),o=Xv(e),e.d!=e.j)throw J(new $r(Ur((jr(),V1t))));if(e.g){for(r=0;rUft?aa(v,e.b):r<=Uft&&r>Wft?aa(v,e.d):r<=Wft&&r>Kft?aa(v,e.c):r<=Kft&&aa(v,e.a),o=dct(e,v,o);return s}function Qp(){Qp=pe;var e;for(jG=new Tg(1,1),Tue=new Tg(1,10),K7=new Tg(0,0),Eue=new Tg(-1,1),n7e=ie(re(D4,1),Qe,91,0,[K7,jG,new Tg(1,2),new Tg(1,3),new Tg(1,4),new Tg(1,5),new Tg(1,6),new Tg(1,7),new Tg(1,8),new Tg(1,9),Tue]),$G=Me(D4,Qe,91,32,0,1),e=0;e<$G.length;e++)$G[e]=WD(A0(1,e))}function zpn(e,t,n,r,s,o){var h,d,v,x;for(d=!LT(Vi(e.Oc(),new Ke(new NY))).sd((G2(),X7)),h=e,o==(wo(),X0)&&(h=we(h,152)?H6(u(h,152)):we(h,131)?u(h,131).a:we(h,54)?new lv(h):new Em(h)),x=h.Kc();x.Ob();)v=u(x.Pb(),70),v.n.a=t.a,d?v.n.b=t.b+(r.b-v.o.b)/2:s?v.n.b=t.b:v.n.b=t.b+r.b-v.o.b,t.a+=v.o.a+n}function gct(e,t,n,r){var s,o,h,d,v,x;for(s=(r.c+r.a)/2,Rh(t.j),ci(t.j,s),Rh(n.e),ci(n.e,s),x=new vze,d=new C(e.f);d.a1,d&&(r=new Pt(s,n.b),ci(t.a,r)),D_(t.a,ie(re(na,1),Qe,8,0,[P,L]))}function wct(e){wv(e,new gb(gv(hv(dv(fv(new lg,fG),"ELK Randomizer"),'Distributes the nodes randomly on the plane, leading to very obfuscating layouts. Can be useful to demonstrate the power of "real" layout algorithms.'),new $Z))),dt(e,fG,uw,fAe),dt(e,fG,py,15),dt(e,fG,Fz,ct(0)),dt(e,fG,fk,N7)}function m5e(){m5e=pe;var e,t,n,r,s,o;for(eA=Me(el,A4,25,255,15,1),iU=Me(Sh,Td,25,16,15,1),t=0;t<255;t++)eA[t]=-1;for(n=57;n>=48;n--)eA[n]=n-48<<24>>24;for(r=70;r>=65;r--)eA[r]=r-65+10<<24>>24;for(s=102;s>=97;s--)eA[s]=s-97+10<<24>>24;for(o=0;o<10;o++)iU[o]=48+o&Ss;for(e=10;e<=15;e++)iU[e]=65+e-10&Ss}function cz(e,t,n){var r,s,o,h,d,v,x,_;return d=t.i-e.g/2,v=n.i-e.g/2,x=t.j-e.g/2,_=n.j-e.g/2,o=t.g+e.g/2,h=n.g+e.g/2,r=t.f+e.g/2,s=n.f+e.g/2,d>19)return"-"+mct(U8(e));for(n=e,r="";!(n.l==0&&n.m==0&&n.h==0);){if(s=Mre(Lz),n=Q5e(n,s,!0),t=""+Lze(s2),!(n.l==0&&n.m==0&&n.h==0))for(o=9-t.length;o>0;o--)t="0"+t;r=t+r}return r}function Upn(){if(!Object.create||!Object.getOwnPropertyNames)return!1;var e="__proto__",t=Object.create(null);if(t[e]!==void 0)return!1;var n=Object.getOwnPropertyNames(t);return!(n.length!=0||(t[e]=42,t[e]!==42)||Object.getOwnPropertyNames(t).length==0)}function Wpn(e){var t,n,r,s,o,h,d;for(t=!1,n=0,s=new C(e.d.b);s.a=e.a||!a4e(t,n))return-1;if(T8(u(r.Kb(t),20)))return 1;for(s=0,h=u(r.Kb(t),20).Kc();h.Ob();)if(o=u(h.Pb(),17),v=o.c.i==t?o.d.i:o.c.i,d=k5e(e,v,n,r),d==-1||(s=b.Math.max(s,d),s>e.c-1))return-1;return s+1}function yct(e,t){var n,r,s,o,h,d;if(je(t)===je(e))return!0;if(!we(t,15)||(r=u(t,15),d=e.gc(),r.gc()!=d))return!1;if(h=r.Kc(),e.ni()){for(n=0;n0){if(e.qj(),t!=null){for(o=0;o>24;case 97:case 98:case 99:case 100:case 101:case 102:return e-97+10<<24>>24;case 65:case 66:case 67:case 68:case 69:case 70:return e-65+10<<24>>24;default:throw J(new gd("Invalid hexadecimal"))}}function Qpn(e,t,n){var r,s,o,h;for(kr(n,"Processor order nodes",2),e.a=Ue(ft(K(t,(nw(),V_e)))),s=new as,h=ii(t.b,0);h.b!=h.d.c;)o=u(ri(h),86),It(Mt(K(o,(Tc(),$y))))&&ks(s,o,s.c.b,s.c);r=(Qn(s.b!=0),u(s.a.a.c,86)),$ut(e,r),!n.b&&tie(n,1),C5e(e,r,0-Ue(ft(K(r,(Tc(),bV))))/2,0),!n.b&&tie(n,1),ur(n)}function uz(){uz=pe,P7e=new O3("SPIRAL",0),D7e=new O3("LINE_BY_LINE",1),I7e=new O3("MANHATTAN",2),M7e=new O3("JITTER",3),Mue=new O3("QUADRANTS_LINE_BY_LINE",4),N7e=new O3("QUADRANTS_MANHATTAN",5),O7e=new O3("QUADRANTS_JITTER",6),L7e=new O3("COMBINE_LINE_BY_LINE_MANHATTAN",7),A7e=new O3("COMBINE_JITTER_MANHATTAN",8)}function xct(e,t,n,r){var s,o,h,d,v,x;for(v=mse(e,n),x=mse(t,n),s=!1;v&&x&&(r||Wun(v,x,n));)h=mse(v,n),d=mse(x,n),bD(t),bD(e),o=v.c,Eae(v,!1),Eae(x,!1),n?(ey(t,x.p,o),t.p=x.p,ey(e,v.p+1,o),e.p=v.p):(ey(e,v.p,o),e.p=v.p,ey(t,x.p+1,o),t.p=x.p),No(v,null),No(x,null),v=h,x=d,s=!0;return s}function Zpn(e,t,n,r){var s,o,h,d,v;for(s=!1,o=!1,d=new C(r.j);d.a=t.length)throw J(new Do("Greedy SwitchDecider: Free layer not in graph."));this.c=t[e],this.e=new zM(r),sie(this.e,this.c,(ht(),Dn)),this.i=new zM(r),sie(this.i,this.c,$n),this.f=new wKe(this.c),this.a=!o&&s.i&&!s.s&&this.c[0].k==(zn(),Ls),this.a&&p1n(this,e,t.length)}function Tct(e,t){var n,r,s,o,h,d;o=!e.B.Hc((wl(),nN)),h=e.B.Hc(gfe),e.a=new mrt(h,o,e.c),e.n&&hwe(e.a.n,e.n),Zee(e.g,(n1(),lu),e.a),t||(r=new W_(1,o,e.c),r.n.a=e.k,M6(e.p,(ht(),An),r),s=new W_(1,o,e.c),s.n.d=e.k,M6(e.p,xr,s),d=new W_(0,o,e.c),d.n.c=e.k,M6(e.p,Dn,d),n=new W_(0,o,e.c),n.n.b=e.k,M6(e.p,$n,n))}function e2n(e){var t,n,r;switch(t=u(K(e.d,(pt(),K0)),218),t.g){case 2:n=Myn(e);break;case 3:n=(r=new st,ms(Vi(Cu(ic(ic(new vn(null,new mn(e.d.b,16)),new TX),new _X),new M9),new gX),new Nee(r)),r);break;default:throw J(new Wo("Compaction not supported for "+t+" edges."))}Zvn(e,n),Da(new vm(e.g),new Iee(e))}function t2n(e,t){var n;return n=new b3,t&&Ho(n,u(er(e.a,iN),94)),we(t,470)&&Ho(n,u(er(e.a,sN),94)),we(t,354)?(Ho(n,u(er(e.a,Jo),94)),n):(we(t,82)&&Ho(n,u(er(e.a,mr),94)),we(t,239)?(Ho(n,u(er(e.a,hs),94)),n):we(t,186)?(Ho(n,u(er(e.a,xl),94)),n):(we(t,352)&&Ho(n,u(er(e.a,ra),94)),n))}function a1(){a1=pe,Q7=new fo((bi(),BV),ct(1)),eq=new fo(jb,80),ppt=new fo(GSe,5),apt=new fo(Bk,N7),dpt=new fo(ufe,ct(1)),gpt=new fo(lfe,(Mn(),!0)),Z7e=new kv(50),hpt=new fo(Fb,Z7e),Y7e=OV,J7e=BS,opt=new fo(efe,!1),Q7e=KO,lpt=p2,upt=Rb,cpt=J4,fpt=Hy,X7e=(m4e(),Jgt),zue=rpt,JG=Zgt,Hue=ept,eEe=npt}function n2n(e){var t,n,r,s,o,h,d,v;for(v=new TZe,d=new C(e.a);d.a0&&t=0)return!1;if(t.p=n.b,it(n.e,t),s==(zn(),ca)||s==Jc){for(h=new C(t.j);h.a1||h==-1)&&(o|=16),s.Bb&_c&&(o|=64)),n.Bb&so&&(o|=ky),o|=Sf):we(t,457)?o|=512:(r=t.Bj(),r&&r.i&1&&(o|=256)),e.Bb&512&&(o|=128),o}function oC(e,t){var n,r,s,o,h;for(e=e==null?Pu:(Sn(e),e),s=0;se.d[d.p]&&(n+=Gwe(e.b,o),$p(e.a,ct(o)))):++h;for(n+=e.b.d*h;!TT(e.a);)yme(e.b,u(I6(e.a),19).a)}return n}function h2n(e,t){var n;return e.f==Cfe?(n=Dv(Po((Yu(),Oa),t)),e.e?n==4&&t!=(nk(),Gk)&&t!=(nk(),zk)&&t!=(nk(),Sfe)&&t!=(nk(),Afe):n==2):e.d&&(e.d.Hc(t)||e.d.Hc(F6(Po((Yu(),Oa),t)))||e.d.Hc(v4((Yu(),Oa),e.b,t)))?!0:e.f&&l5e((Yu(),e.f),QM(Po(Oa,t)))?(n=Dv(Po(Oa,t)),e.e?n==4:n==2):!1}function f2n(e,t,n,r){var s,o,h,d,v,x,_,L;return h=u(Ft(n,(bi(),Rk)),8),v=h.a,_=h.b+e,s=b.Math.atan2(_,v),s<0&&(s+=_4),s+=t,s>_4&&(s-=_4),d=u(Ft(r,Rk),8),x=d.a,L=d.b+e,o=b.Math.atan2(L,x),o<0&&(o+=_4),o+=t,o>_4&&(o-=_4),S1(),Ef(1e-10),b.Math.abs(s-o)<=1e-10||s==o||isNaN(s)&&isNaN(o)?0:so?1:yv(isNaN(s),isNaN(o))}function eae(e){var t,n,r,s,o,h,d;for(d=new Mr,r=new C(e.a.b);r.a=e.o)throw J(new lpe);d=t>>5,h=t&31,o=A0(1,Or(A0(h,1))),s?e.n[n][d]=I1(e.n[n][d],o):e.n[n][d]=qs(e.n[n][d],pve(o)),o=A0(o,1),r?e.n[n][d]=I1(e.n[n][d],o):e.n[n][d]=qs(e.n[n][d],pve(o))}catch(v){throw v=ts(v),we(v,320)?J(new Do(koe+e.o+"*"+e.p+xoe+t+io+n+Eoe)):J(v)}}function C5e(e,t,n,r){var s,o,h;t&&(o=Ue(ft(K(t,(Tc(),qg))))+r,h=n+Ue(ft(K(t,bV)))/2,Ye(t,Che,ct(Or(Ou(b.Math.round(o))))),Ye(t,F_e,ct(Or(Ou(b.Math.round(h))))),t.d.b==0||C5e(e,u(sj((s=ii(new Ep(t).a.d,0),new f6(s))),86),n+Ue(ft(K(t,bV)))+e.a,r+Ue(ft(K(t,mE)))),K(t,_he)!=null&&C5e(e,u(K(t,_he),86),n,r))}function g2n(e,t){var n,r,s,o,h,d,v,x,_,L,P;for(v=Ya(t.a),s=Ue(ft(K(v,(pt(),Nb))))*2,_=Ue(ft(K(v,U4))),x=b.Math.max(s,_),o=Me(pa,Ao,25,t.f-t.c+1,15,1),r=-x,n=0,d=t.b.Kc();d.Ob();)h=u(d.Pb(),10),r+=e.a[h.c.p]+x,o[n++]=r;for(r+=e.a[t.a.c.p]+x,o[n++]=r,P=new C(t.e);P.a0&&(r=(!e.n&&(e.n=new at(Jo,e,1,7)),u(Te(e.n,0),137)).a,!r||Yr(Yr((t.a+=' "',t),r),'"'))),Yr(bv(Yr(bv(Yr(bv(Yr(bv((t.a+=" (",t),e.i),","),e.j)," | "),e.g),","),e.f),")"),t.a)}function Nct(e){var t,n,r;return e.Db&64?Mse(e):(t=new Fl(Qxe),n=e.k,n?Yr(Yr((t.a+=' "',t),n),'"'):(!e.n&&(e.n=new at(Jo,e,1,7)),e.n.i>0&&(r=(!e.n&&(e.n=new at(Jo,e,1,7)),u(Te(e.n,0),137)).a,!r||Yr(Yr((t.a+=' "',t),r),'"'))),Yr(bv(Yr(bv(Yr(bv(Yr(bv((t.a+=" (",t),e.i),","),e.j)," | "),e.g),","),e.f),")"),t.a)}function nae(e,t){var n,r,s,o,h,d,v;if(t==null||t.length==0)return null;if(s=u(Uc(e.a,t),149),!s){for(r=(d=new E1(e.b).a.vc().Kc(),new T1(d));r.a.Ob();)if(n=(o=u(r.a.Pb(),42),u(o.dd(),149)),h=n.c,v=t.length,an(h.substr(h.length-v,v),t)&&(t.length==h.length||Ma(h,h.length-t.length-1)==46)){if(s)return null;s=n}s&&Oo(e.a,t,s)}return s}function v2n(e,t){var n,r,s,o;return n=new Dh,r=u(zl(Cu(new vn(null,new mn(e.f,16)),n),zm(new Ri,new tn,new tr,new ha,ie(re(yl,1),tt,132,0,[(F1(),xy),Ql]))),21),s=r.gc(),r=u(zl(Cu(new vn(null,new mn(t.f,16)),n),zm(new Ri,new tn,new tr,new ha,ie(re(yl,1),tt,132,0,[xy,Ql]))),21),o=r.gc(),ss.p?(Vs(o,xr),o.d&&(d=o.o.b,t=o.a.b,o.a.b=d-t)):o.j==xr&&s.p>e.p&&(Vs(o,An),o.d&&(d=o.o.b,t=o.a.b,o.a.b=-(d-t)));break}return s}function m2n(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q;if(o=n,n1,d&&(r=new Pt(s,n.b),ci(t.a,r)),D_(t.a,ie(re(na,1),Qe,8,0,[P,L]))}function rae(e,t,n){var r,s,o,h,d,v;if(t)if(n<=-1){if(r=gn(t.Tg(),-1-n),we(r,99))return u(r,18);for(h=u(t.ah(r),153),d=0,v=h.gc();d0){for(s=v.length;s>0&&v[s-1]=="";)--s;s=40,h&&Mbn(e),Nvn(e),dpn(e),n=srt(e),r=0;n&&r0&&ci(e.f,o)):(e.c[h]-=x+1,e.c[h]<=0&&e.a[h]>0&&ci(e.e,o))))}function V2n(e){var t,n,r,s,o,h,d,v,x;for(d=new Sp(u(Nr(new lp),62)),x=Ds,n=new C(e.d);n.a=0&&vn?t:n;x<=L;++x)x==n?d=r++:(o=s[x],_=q.rl(o.ak()),x==t&&(v=x==L&&!_?r-1:r),_&&++r);return P=u(q_(e,t,n),72),d!=v&&Vx(e,new dD(e.e,7,h,ct(d),z.dd(),v)),P}}else return u(jse(e,t,n),72);return u(q_(e,t,n),72)}function Y2n(e,t){var n,r,s,o,h,d,v;for(kr(t,"Port order processing",1),v=u(K(e,(pt(),YTe)),421),r=new C(e.b);r.a=0&&(d=Zun(e,h),!(d&&(x<22?v.l|=1<>>1,h.m=_>>>1|(L&1)<<21,h.l=P>>>1|(_&1)<<21,--x;return n&&gie(v),o&&(r?(s2=U8(e),s&&(s2=Wtt(s2,(D8(),R8e)))):s2=fu(e.l,e.m,e.h)),v}function Z2n(e,t){var n,r,s,o,h,d,v,x,_,L;for(x=e.e[t.c.p][t.p]+1,v=t.c.a.c.length+1,d=new C(e.a);d.a0&&(zr(0,e.length),e.charCodeAt(0)==45||(zr(0,e.length),e.charCodeAt(0)==43))?1:0,r=h;rn)throw J(new gd(cw+e+'"'));return d}function J2n(e){var t,n,r,s,o,h,d;for(h=new as,o=new C(e.a);o.a1)&&t==1&&u(e.a[e.b],10).k==(zn(),Rl)?ik(u(e.a[e.b],10),(Ul(),d0)):r&&(!n||(e.c-e.b&e.a.length-1)>1)&&t==1&&u(e.a[e.c-1&e.a.length-1],10).k==(zn(),Rl)?ik(u(e.a[e.c-1&e.a.length-1],10),(Ul(),b2)):(e.c-e.b&e.a.length-1)==2?(ik(u(F_(e),10),(Ul(),d0)),ik(u(F_(e),10),b2)):W0n(e,s),Hwe(e)}function nbn(e,t,n){var r,s,o,h,d;for(o=0,s=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));s.e!=s.i.gc();)r=u(pr(s),33),h="",(!r.n&&(r.n=new at(Jo,r,1,7)),r.n).i==0||(h=u(Te((!r.n&&(r.n=new at(Jo,r,1,7)),r.n),0),137).a),d=new vie(o++,t,h),Ho(d,r),Ye(d,(Tc(),LS),r),d.e.b=r.j+r.f/2,d.f.a=b.Math.max(r.g,1),d.e.a=r.i+r.g/2,d.f.b=b.Math.max(r.f,1),ci(t.b,d),gu(n.f,r,d)}function rbn(e){var t,n,r,s,o;r=u(K(e,(et(),Mi)),33),o=u(Ft(r,(pt(),Ib)),174).Hc((Bl(),Hb)),e.e||(s=u(K(e,eu),21),t=new Pt(e.f.a+e.d.b+e.d.c,e.f.b+e.d.d+e.d.a),s.Hc((mo(),Th))?(So(r,bs,(wa(),tu)),sw(r,t.a,t.b,!1,!0)):It(Mt(Ft(r,Yle)))||sw(r,t.a,t.b,!0,!0)),o?So(r,Ib,rn(Hb)):So(r,Ib,(n=u(Qf(qS),9),new hh(n,u(wf(n,n.length),9),0)))}function N5e(e,t,n){var r,s,o,h;if(t[0]>=e.length)return n.o=0,!0;switch(Ma(e,t[0])){case 43:s=1;break;case 45:s=-1;break;default:return n.o=0,!0}if(++t[0],o=t[0],h=ZH(e,t),h==0&&t[0]==o)return!1;if(t[0]=0&&d!=n&&(o=new oa(e,1,d,h,null),r?r.Ei(o):r=o),n>=0&&(o=new oa(e,1,n,d==n?h:null,t),r?r.Ei(o):r=o)),r}function Zct(e){var t,n,r;if(e.b==null){if(r=new bg,e.i!=null&&(To(r,e.i),r.a+=":"),e.f&256){for(e.f&256&&e.a!=null&&(mJt(e.i)||(r.a+="//"),To(r,e.a)),e.d!=null&&(r.a+="/",To(r,e.d)),e.f&16&&(r.a+="/"),t=0,n=e.j.length;tP?!1:(L=(v=dC(r,P,!1),v.a),_+d+L<=t.b&&(fD(n,o-n.s),n.c=!0,fD(r,o-n.s),KD(r,n.s,n.t+n.d+d),r.k=!0,Ume(n.q,r),z=!0,s&&(q$(t,r),r.j=t,e.c.length>h&&(JD((xn(h,e.c.length),u(e.c[h],200)),r),(xn(h,e.c.length),u(e.c[h],200)).a.c.length==0&&Eg(e,h)))),z)}function hbn(e,t){var n,r,s,o,h,d;if(kr(t,"Partition midprocessing",1),s=new Nv,ms(Vi(new vn(null,new mn(e.a,16)),new RY),new ov(s)),s.d!=0){for(d=u(zl(GXe((o=s.i,new vn(null,(o||(s.i=new H3(s,s.c))).Nc()))),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[(F1(),Ql)]))),15),r=d.Kc(),n=u(r.Pb(),19);r.Ob();)h=u(r.Pb(),19),ggn(u(Ii(s,n),21),u(Ii(s,h),21)),n=h;ur(t)}}function tut(e,t,n){var r,s,o,h,d,v,x,_;if(t.p==0){for(t.p=1,h=n,h||(s=new st,o=(r=u(Qf(ao),9),new hh(r,u(wf(r,r.length),9),0)),h=new xa(s,o)),u(h.a,15).Fc(t),t.k==(zn(),Ls)&&u(h.b,21).Fc(u(K(t,(et(),vc)),61)),v=new C(t.j);v.a0){if(s=u(e.Ab.g,1934),t==null){for(o=0;o1)for(r=new C(s);r.an.s&&dd&&(d=s,_.c=Me(Yn,yt,1,0,5,1)),s==d&&it(_,new xa(n.c.i,n)));hn(),aa(_,e.c),Om(e.b,v.p,_)}}function vbn(e,t){var n,r,s,o,h,d,v,x,_;for(h=new C(t.b);h.ad&&(d=s,_.c=Me(Yn,yt,1,0,5,1)),s==d&&it(_,new xa(n.d.i,n)));hn(),aa(_,e.c),Om(e.f,v.p,_)}}function rut(e){wv(e,new gb(gv(hv(dv(fv(new lg,fw),"ELK Box"),"Algorithm for packing of unconnected boxes, i.e. graphs without edges."),new MZ))),dt(e,fw,uw,hSe),dt(e,fw,py,15),dt(e,fw,FI,ct(0)),dt(e,fw,uG,xt(cSe)),dt(e,fw,E4,xt(Kyt)),dt(e,fw,dk,xt(Yyt)),dt(e,fw,fk,t1t),dt(e,fw,jI,xt(uSe)),dt(e,fw,gk,xt(lSe)),dt(e,fw,Vxe,xt(Xhe)),dt(e,fw,rG,xt(Wyt))}function iut(e,t){var n,r,s,o,h,d,v,x,_;if(s=e.i,h=s.o.a,o=s.o.b,h<=0&&o<=0)return ht(),uc;switch(x=e.n.a,_=e.n.b,d=e.o.a,n=e.o.b,t.g){case 2:case 1:if(x<0)return ht(),Dn;if(x+d>h)return ht(),$n;break;case 4:case 3:if(_<0)return ht(),An;if(_+n>o)return ht(),xr}return v=(x+d/2)/h,r=(_+n/2)/o,v+r<=1&&v-r<=0?(ht(),Dn):v+r>=1&&v-r>=0?(ht(),$n):r<.5?(ht(),An):(ht(),xr)}function wbn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W;for(n=!1,_=Ue(ft(K(t,(pt(),Aw)))),q=Jp*_,s=new C(t.b);s.av+q&&(W=L.g+P.g,P.a=(P.g*P.a+L.g*L.a)/W,P.g=W,L.f=P,n=!0)),o=d,L=P;return n}function sut(e,t,n,r,s,o,h){var d,v,x,_,L,P;for(P=new T6,x=t.Kc();x.Ob();)for(d=u(x.Pb(),839),L=new C(d.wf());L.a0?d.a?(x=d.b.rf().b,s>x&&(e.v||d.c.d.c.length==1?(h=(s-x)/2,d.d.d=h,d.d.a=h):(n=u(St(d.c.d,0),181).rf().b,r=(n-x)/2,d.d.d=b.Math.max(0,r),d.d.a=s-r-x))):d.d.a=e.t+s:g_(e.u)&&(o=u4e(d.b),o.d<0&&(d.d.d=-o.d),o.d+o.a>d.b.rf().b&&(d.d.a=o.d+o.a-d.b.rf().b))}function kbn(e,t){var n;switch(yD(e)){case 6:return fa(t);case 7:return Sm(t);case 8:return Cm(t);case 3:return Array.isArray(t)&&(n=yD(t),!(n>=14&&n<=16));case 11:return t!=null&&typeof t===Dae;case 12:return t!=null&&(typeof t===TI||typeof t==Dae);case 0:return ese(t,e.__elementTypeId$);case 2:return Fne(t)&&t.im!==gt;case 1:return Fne(t)&&t.im!==gt||ese(t,e.__elementTypeId$);default:return!0}}function aut(e,t){var n,r,s,o;return r=b.Math.min(b.Math.abs(e.c-(t.c+t.b)),b.Math.abs(e.c+e.b-t.c)),o=b.Math.min(b.Math.abs(e.d-(t.d+t.a)),b.Math.abs(e.d+e.a-t.d)),n=b.Math.abs(e.c+e.b/2-(t.c+t.b/2)),n>e.b/2+t.b/2||(s=b.Math.abs(e.d+e.a/2-(t.d+t.a/2)),s>e.a/2+t.a/2)?1:n==0&&s==0?0:n==0?o/s+1:s==0?r/n+1:b.Math.min(r/n,o/s)+1}function out(e,t){var n,r,s,o,h,d;return s=Mme(e),d=Mme(t),s==d?e.e==t.e&&e.a<54&&t.a<54?e.ft.f?1:0:(r=e.e-t.e,n=(e.d>0?e.d:b.Math.floor((e.a-1)*wht)+1)-(t.d>0?t.d:b.Math.floor((t.a-1)*wht)+1),n>r+1?s:n0&&(h=W3(h,Lut(r))),jrt(o,h))):s0&&e.d!=(L_(),Vue)&&(d+=h*(r.d.a+e.a[t.b][r.b]*(t.d.a-r.d.a)/n)),n>0&&e.d!=(L_(),Gue)&&(v+=h*(r.d.b+e.a[t.b][r.b]*(t.d.b-r.d.b)/n)));switch(e.d.g){case 1:return new Pt(d/o,t.d.b);case 2:return new Pt(t.d.a,v/o);default:return new Pt(d/o,v/o)}}function cut(e,t){X8();var n,r,s,o,h;if(h=u(K(e.i,(pt(),bs)),98),o=e.j.g-t.j.g,o!=0||!(h==(wa(),$b)||h==p0||h==tu))return 0;if(h==(wa(),$b)&&(n=u(K(e,zg),19),r=u(K(t,zg),19),n&&r&&(s=n.a-r.a,s!=0)))return s;switch(e.j.g){case 1:return Fs(e.n.a,t.n.a);case 2:return Fs(e.n.b,t.n.b);case 3:return Fs(t.n.a,e.n.a);case 4:return Fs(t.n.b,e.n.b);default:throw J(new Wo(eke))}}function uut(e){var t,n,r,s,o,h;for(n=(!e.a&&(e.a=new Bs(ef,e,5)),e.a).i+2,h=new su(n),it(h,new Pt(e.j,e.k)),ms(new vn(null,(!e.a&&(e.a=new Bs(ef,e,5)),new mn(e.a,16))),new t$e(h)),it(h,new Pt(e.b,e.c)),t=1;t0&&(ND(v,!1,(wo(),Xh)),ND(v,!0,Df)),Mu(t.g,new ZGe(e,n)),Si(e.g,t,n)}function hut(){hut=pe;var e;for(V8e=ie(re(Lr,1),Jr,25,15,[-1,-1,30,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5]),kue=Me(Lr,Jr,25,37,15,1),O0t=ie(re(Lr,1),Jr,25,15,[-1,-1,63,40,32,28,25,23,21,20,19,19,18,18,17,17,16,16,16,15,15,15,15,14,14,14,14,14,14,13,13,13,13,13,13,13,13]),U8e=Me(S2,roe,25,37,14,1),e=2;e<=36;e++)kue[e]=_s(b.Math.pow(e,V8e[e])),U8e[e]=eI(Cz,kue[e])}function Ebn(e){var t;if((!e.a&&(e.a=new at(os,e,6,6)),e.a).i!=1)throw J(new Ln(y1t+(!e.a&&(e.a=new at(os,e,6,6)),e.a).i));return t=new Gu,ID(u(Te((!e.b&&(e.b=new wn(mr,e,4,7)),e.b),0),82))&&no(t,Wlt(e,ID(u(Te((!e.b&&(e.b=new wn(mr,e,4,7)),e.b),0),82)),!1)),ID(u(Te((!e.c&&(e.c=new wn(mr,e,5,8)),e.c),0),82))&&no(t,Wlt(e,ID(u(Te((!e.c&&(e.c=new wn(mr,e,5,8)),e.c),0),82)),!0)),t}function fut(e,t){var n,r,s,o,h;for(t.d?s=e.a.c==(yd(),Lw)?Xo(t.b):js(t.b):s=e.a.c==(yd(),Gg)?Xo(t.b):js(t.b),o=!1,r=new cr(fr(s.a.Kc(),new V));Vr(r);)if(n=u(Pr(r),17),h=It(e.a.f[e.a.g[t.b.p].p]),!(!h&&!to(n)&&n.c.i.c==n.d.i.c)&&!(It(e.a.n[e.a.g[t.b.p].p])||It(e.a.n[e.a.g[t.b.p].p]))&&(o=!0,_0(e.b,e.a.g[Oun(n,t.b).p])))return t.c=!0,t.a=n,t;return t.c=o,t.a=null,t}function Tbn(e,t,n,r,s){var o,h,d,v,x,_,L;for(hn(),aa(e,new FZ),d=new Ea(e,0),L=new st,o=0;d.bo*2?(_=new H$(L),x=Wu(h)/Dl(h),v=Sae(_,t,new g6,n,r,s,x),Ni(Zf(_.e),v),L.c=Me(Yn,yt,1,0,5,1),o=0,L.c[L.c.length]=_,L.c[L.c.length]=h,o=Wu(_)*Dl(_)+Wu(h)*Dl(h)):(L.c[L.c.length]=h,o+=Wu(h)*Dl(h));return L}function B5e(e,t,n){var r,s,o,h,d,v,x;if(r=n.gc(),r==0)return!1;if(e.ej())if(v=e.fj(),Qye(e,t,n),h=r==1?e.Zi(3,null,n.Kc().Pb(),t,v):e.Zi(5,null,n,t,v),e.bj()){for(d=r<100?null:new _p(r),o=t+r,s=t;s0){for(h=0;h>16==-15&&e.Cb.nh()&&Gre(new jre(e.Cb,9,13,n,e.c,Dg(gl(u(e.Cb,59)),e))):we(e.Cb,88)&&e.Db>>16==-23&&e.Cb.nh()&&(t=e.c,we(t,88)||(t=(on(),sf)),we(n,88)||(n=(on(),sf)),Gre(new jre(e.Cb,9,10,n,t,Dg(jc(u(e.Cb,26)),e)))))),e.c}function _bn(e,t){var n,r,s,o,h,d,v,x,_,L;for(kr(t,"Hypernodes processing",1),s=new C(e.b);s.an);return s}function gut(e,t){var n,r,s;r=vl(e.d,1)!=0,!It(Mt(K(t.j,(et(),kw))))&&!It(Mt(K(t.j,z4)))||je(K(t.j,(pt(),h2)))===je((R0(),f2))?t.c.Tf(t.e,r):r=It(Mt(K(t.j,kw))),gI(e,t,r,!0),It(Mt(K(t.j,z4)))&&Ye(t.j,z4,(Mn(),!1)),It(Mt(K(t.j,kw)))&&(Ye(t.j,kw,(Mn(),!1)),Ye(t.j,z4,!0)),n=Pse(e,t);do{if(zme(e),n==0)return 0;r=!r,s=n,gI(e,t,r,!1),n=Pse(e,t)}while(s>n);return s}function put(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q;if(t==n)return!0;if(t=U4e(e,t),n=U4e(e,n),r=ose(t),r){if(_=ose(n),_!=r)return _?(v=r.Dj(),q=_.Dj(),v==q&&v!=null):!1;if(h=(!t.d&&(t.d=new Bs(Eo,t,1)),t.d),o=h.i,P=(!n.d&&(n.d=new Bs(Eo,n,1)),n.d),o==P.i){for(x=0;x0,d=kH(t,o),dbe(n?d.b:d.g,t),t4(d).c.length==1&&ks(r,d,r.c.b,r.c),s=new xa(o,t),$p(e.o,s),Au(e.e.a,o))}function mut(e,t){var n,r,s,o,h,d,v;return r=b.Math.abs(jj(e.b).a-jj(t.b).a),d=b.Math.abs(jj(e.b).b-jj(t.b).b),s=0,v=0,n=1,h=1,r>e.b.b/2+t.b.b/2&&(s=b.Math.min(b.Math.abs(e.b.c-(t.b.c+t.b.b)),b.Math.abs(e.b.c+e.b.b-t.b.c)),n=1-s/r),d>e.b.a/2+t.b.a/2&&(v=b.Math.min(b.Math.abs(e.b.d-(t.b.d+t.b.a)),b.Math.abs(e.b.d+e.b.a-t.b.d)),h=1-v/d),o=b.Math.min(n,h),(1-o)*b.Math.sqrt(r*r+d*d)}function Dbn(e){var t,n,r,s;for(Cae(e,e.e,e.f,(Ov(),g2),!0,e.c,e.i),Cae(e,e.e,e.f,g2,!1,e.c,e.i),Cae(e,e.e,e.f,Y4,!0,e.c,e.i),Cae(e,e.e,e.f,Y4,!1,e.c,e.i),Obn(e,e.c,e.e,e.f,e.i),r=new Ea(e.i,0);r.b=65;n--)J1[n]=n-65<<24>>24;for(r=122;r>=97;r--)J1[r]=r-97+26<<24>>24;for(s=57;s>=48;s--)J1[s]=s-48+52<<24>>24;for(J1[43]=62,J1[47]=63,o=0;o<=25;o++)Zg[o]=65+o&Ss;for(h=26,v=0;h<=51;++h,v++)Zg[h]=97+v&Ss;for(e=52,d=0;e<=61;++e,d++)Zg[e]=48+d&Ss;Zg[62]=43,Zg[63]=47}function Ibn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z;if(e.dc())return new Fa;for(x=0,L=0,s=e.Kc();s.Ob();)r=u(s.Pb(),37),o=r.f,x=b.Math.max(x,o.a),L+=o.a*o.b;for(x=b.Math.max(x,b.Math.sqrt(L)*Ue(ft(K(u(e.Kc().Pb(),37),(pt(),Hq))))),P=0,z=0,v=0,n=t,d=e.Kc();d.Ob();)h=u(d.Pb(),37),_=h.f,P+_.a>x&&(P=0,z+=v+t,v=0),cC(h,P,z),n=b.Math.max(n,P+_.a),v=b.Math.max(v,_.b),P+=_.a+t;return new Pt(n+t,z+v+t)}function Obn(e,t,n,r,s){var o,h,d,v,x,_,L;for(h=new C(t);h.ao)return ht(),$n;break;case 4:case 3:if(v<0)return ht(),An;if(v+e.f>s)return ht(),xr}return h=(d+e.g/2)/o,n=(v+e.f/2)/s,h+n<=1&&h-n<=0?(ht(),Dn):h+n>=1&&h-n>=0?(ht(),$n):n<.5?(ht(),An):(ht(),xr)}function Nbn(e,t,n,r,s){var o,h;if(o=Ua(qs(t[0],yo),qs(r[0],yo)),e[0]=Or(o),o=Np(o,32),n>=s){for(h=1;h0&&(s.b[h++]=0,s.b[h++]=o.b[0]-1),t=1;t0&&(tM(v,v.d-s.d),s.c==(Jf(),d2)&&Wge(v,v.a-s.d),v.d<=0&&v.i>0&&ks(t,v,t.c.b,t.c)));for(o=new C(e.f);o.a0&&(hT(d,d.i-s.d),s.c==(Jf(),d2)&&sv(d,d.b-s.d),d.i<=0&&d.d>0&&ks(n,d,n.c.b,n.c)))}function Pbn(e,t,n){var r,s,o,h,d,v,x,_;for(kr(n,"Processor compute fanout",1),sl(e.b),sl(e.a),d=null,o=ii(t.b,0);!d&&o.b!=o.d.c;)x=u(ri(o),86),It(Mt(K(x,(Tc(),$y))))&&(d=x);for(v=new as,ks(v,d,v.c.b,v.c),Mlt(e,v),_=ii(t.b,0);_.b!=_.d.c;)x=u(ri(_),86),h=Hr(K(x,(Tc(),AS))),s=Uc(e.b,h)!=null?u(Uc(e.b,h),19).a:0,Ye(x,gV,ct(s)),r=1+(Uc(e.a,h)!=null?u(Uc(e.a,h),19).a:0),Ye(x,cmt,ct(r));ur(n)}function Bbn(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q;for(P=mhn(e,n),v=0;v0),r.a.Xb(r.c=--r.b),L>P+v&&Ol(r);for(h=new C(z);h.a0),r.a.Xb(r.c=--r.b)}}function Rbn(){yi();var e,t,n,r,s,o;if(Mfe)return Mfe;for(e=new Hl(4),ly(e,Zp(cue,!0)),bC(e,Zp("M",!0)),bC(e,Zp("C",!0)),o=new Hl(4),r=0;r<11;r++)Yc(o,r,r);return t=new Hl(4),ly(t,Zp("M",!0)),Yc(t,4448,4607),Yc(t,65438,65439),s=new e_(2),pb(s,e),pb(s,nA),n=new e_(2),n.$l(Ij(o,Zp("L",!0))),n.$l(t),n=new $m(3,n),n=new Xve(s,n),Mfe=n,Mfe}function Fbn(e){var t,n;if(t=Hr(Ft(e,(bi(),PS))),!Ptt(t,e)&&!J2(e,xE)&&((!e.a&&(e.a=new at(hs,e,10,11)),e.a).i!=0||It(Mt(Ft(e,UO)))))if(t==null||ny(t).length==0){if(!Ptt(qn,e))throw n=Yr(Yr(new Fl("Unable to load default layout algorithm "),qn)," for unconfigured node "),yz(e,n),J(new M3(n.a))}else throw n=Yr(Yr(new Fl("Layout algorithm '"),t),"' not found for "),yz(e,n),J(new M3(n.a))}function uae(e){var t,n,r,s,o,h,d,v,x,_,L,P,z;if(n=e.i,t=e.n,e.b==0)for(z=n.c+t.b,P=n.b-t.b-t.c,h=e.a,v=0,_=h.length;v<_;++v)s=h[v],Nj(s,z,P);else r=vit(e,!1),Nj(e.a[0],n.c+t.b,r[0]),Nj(e.a[2],n.c+n.b-t.c-r[2],r[2]),L=n.b-t.b-t.c,r[0]>0&&(L-=r[0]+e.c,r[0]+=e.c),r[2]>0&&(L-=r[2]+e.c),r[1]=b.Math.max(r[1],L),Nj(e.a[1],n.c+t.b+r[0]-(r[1]-L)/2,r[1]);for(o=e.a,d=0,x=o.length;d0?(e.n.c.length-1)*e.i:0,r=new C(e.n);r.a1)for(r=ii(s,0);r.b!=r.d.c;)for(n=u(ri(r),231),o=0,v=new C(n.e);v.a0&&(t[0]+=e.c,L-=t[0]),t[2]>0&&(L-=t[2]+e.c),t[1]=b.Math.max(t[1],L),Pj(e.a[1],r.d+n.d+t[0]-(t[1]-L)/2,t[1]);else for(q=r.d+n.d,z=r.a-n.d-n.a,h=e.a,v=0,_=h.length;v<_;++v)s=h[v],Pj(s,q,z);for(o=e.a,d=0,x=o.length;d=0&&o!=n))throw J(new Ln(YI));for(s=0,v=0;v0||Kv(s.b.d,e.b.d+e.b.a)==0&&r.b<0||Kv(s.b.d+s.b.a,e.b.d)==0&&r.b>0){d=0;break}}else d=b.Math.min(d,Eat(e,s,r));d=b.Math.min(d,Eut(e,o,d,r))}return d}function mI(e,t){var n,r,s,o,h,d,v;if(e.b<2)throw J(new Ln("The vector chain must contain at least a source and a target point."));for(s=(Qn(e.b!=0),u(e.a.a.c,8)),nj(t,s.a,s.b),v=new _6((!t.a&&(t.a=new Bs(ef,t,5)),t.a)),h=ii(e,1);h.aUe(A1(h.g,h.d[0]).a)?(Qn(v.b>0),v.a.Xb(v.c=--v.b),Dm(v,h),s=!0):d.e&&d.e.gc()>0&&(o=(!d.e&&(d.e=new st),d.e).Mc(t),x=(!d.e&&(d.e=new st),d.e).Mc(n),(o||x)&&((!d.e&&(d.e=new st),d.e).Fc(h),++h.c));s||(r.c[r.c.length]=h)}function Cut(e){var t,n,r;if(R3(u(K(e,(pt(),bs)),98)))for(n=new C(e.j);n.a>>0,"0"+t.toString(16)),r="\\x"+jl(n,n.length-2,n.length)):e>=so?(n=(t=e>>>0,"0"+t.toString(16)),r="\\v"+jl(n,n.length-6,n.length)):r=""+String.fromCharCode(e&Ss)}return r}function hae(e,t){var n,r,s,o,h,d,v,x,_,L;if(h=e.e,v=t.e,v==0)return e;if(h==0)return t.e==0?t:new z3(-t.e,t.d,t.a);if(o=e.d,d=t.d,o+d==2)return n=qs(e.a[0],yo),r=qs(t.a[0],yo),h<0&&(n=M8(n)),v<0&&(r=M8(r)),WD(Wp(n,r));if(s=o!=d?o>d?1:-1:mye(e.a,t.a,o),s==-1)L=-v,_=h==v?Ore(t.a,d,e.a,o):Pre(t.a,d,e.a,o);else if(L=h,h==v){if(s==0)return Qp(),K7;_=Ore(e.a,o,t.a,d)}else _=Pre(e.a,o,t.a,d);return x=new z3(L,_.length,_),E_(x),x}function G5e(e){var t,n,r,s,o,h;for(this.e=new st,this.a=new st,n=e.b-1;n<3;n++)c8(e,0,u(s1(e,0),8));if(e.b<4)throw J(new Ln("At (least dimension + 1) control points are necessary!"));for(this.b=3,this.d=!0,this.c=!1,M0n(this,e.b+this.b-1),h=new st,o=new C(this.e),t=0;t=t.o&&n.f<=t.f||t.a*.5<=n.f&&t.a*1.5>=n.f){if(h=u(St(t.n,t.n.c.length-1),211),h.e+h.d+n.g+s<=r&&(o=u(St(t.n,t.n.c.length-1),211),o.f-e.f+n.f<=e.b||e.a.c.length==1))return zye(t,n),!0;if(t.s+n.g<=r&&(t.t+t.d+n.f+s<=e.b||e.a.c.length==1))return it(t.b,n),d=u(St(t.n,t.n.c.length-1),211),it(t.n,new o$(t.s,d.f+d.a+t.i,t.i)),T3e(u(St(t.n,t.n.c.length-1),211),n),yut(t,n),!0}return!1}function Aut(e,t,n){var r,s,o,h;return e.ej()?(s=null,o=e.fj(),r=e.Zi(1,h=Vre(e,t,n),n,t,o),e.bj()&&!(e.ni()&&h!=null?Ci(h,n):je(h)===je(n))?(h!=null&&(s=e.dj(h,s)),s=e.cj(n,s),e.ij()&&(s=e.lj(h,n,s)),s?(s.Ei(r),s.Fi()):e.$i(r)):(e.ij()&&(s=e.lj(h,n,s)),s?(s.Ei(r),s.Fi()):e.$i(r)),h):(h=Vre(e,t,n),e.bj()&&!(e.ni()&&h!=null?Ci(h,n):je(h)===je(n))&&(s=null,h!=null&&(s=e.dj(h,null)),s=e.cj(n,s),s&&s.Fi()),h)}function lC(e,t){var n,r,s,o,h,d,v,x;t%=24,e.q.getHours()!=t&&(r=new b.Date(e.q.getTime()),r.setDate(r.getDate()+1),d=e.q.getTimezoneOffset()-r.getTimezoneOffset(),d>0&&(v=d/60|0,x=d%60,s=e.q.getDate(),n=e.q.getHours(),n+v>=24&&++s,o=new b.Date(e.q.getFullYear(),e.q.getMonth(),s,t+v,e.q.getMinutes()+x,e.q.getSeconds(),e.q.getMilliseconds()),e.q.setTime(o.getTime()))),h=e.q.getTime(),e.q.setTime(h+36e5),e.q.getHours()!=t&&e.q.setTime(h)}function Wbn(e,t){var n,r,s,o,h;if(kr(t,"Path-Like Graph Wrapping",1),e.b.c.length==0){ur(t);return}if(s=new X4e(e),h=(s.i==null&&(s.i=Gme(s,new AB)),Ue(s.i)*s.f),n=h/(s.i==null&&(s.i=Gme(s,new AB)),Ue(s.i)),s.b>n){ur(t);return}switch(u(K(e,(pt(),ehe)),337).g){case 2:o=new MB;break;case 0:o=new SB;break;default:o=new DB}if(r=o.Vf(e,s),!o.Wf())switch(u(K(e,tV),338).g){case 2:r=Tat(s,r);break;case 1:r=Est(s,r)}qvn(e,s,r),ur(t)}function Kbn(e,t){var n,r,s,o;if(Ien(e.d,e.e),e.c.a.$b(),Ue(ft(K(t.j,(pt(),qq))))!=0||Ue(ft(K(t.j,qq)))!=0)for(n=O7,je(K(t.j,h2))!==je((R0(),f2))&&Ye(t.j,(et(),kw),(Mn(),!0)),o=u(K(t.j,vS),19).a,s=0;ss&&++x,it(h,(xn(d+x,t.c.length),u(t.c[d+x],19))),v+=(xn(d+x,t.c.length),u(t.c[d+x],19)).a-r,++n;n1&&(v>Wu(d)*Dl(d)/2||h.b==0)&&(L=new H$(P),_=Wu(d)/Dl(d),x=Sae(L,t,new g6,n,r,s,_),Ni(Zf(L.e),x),d=L,z.c[z.c.length]=L,v=0,P.c=Me(Yn,yt,1,0,5,1)));return Rs(z,P),z}function Qbn(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W;if(n.mh(t)&&(_=(z=t,z?u(r,49).xh(z):null),_))if(W=n.bh(t,e.a),q=t.t,q>1||q==-1)if(L=u(W,69),P=u(_,69),L.dc())P.$b();else for(h=!!go(t),o=0,d=e.a?L.Kc():L.Zh();d.Ob();)x=u(d.Pb(),56),s=u(Fv(e,x),56),s?(h?(v=P.Xc(s),v==-1?P.Xh(o,s):o!=v&&P.ji(o,s)):P.Xh(o,s),++o):e.b&&!h&&(P.Xh(o,x),++o);else W==null?_.Wb(null):(s=Fv(e,W),s==null?e.b&&!go(t)&&_.Wb(W):_.Wb(s))}function Zbn(e,t){var n,r,s,o,h,d,v,x;for(n=new TY,s=new cr(fr(Xo(t).a.Kc(),new V));Vr(s);)if(r=u(Pr(s),17),!to(r)&&(d=r.c.i,a4e(d,iq))){if(x=k5e(e,d,iq,rq),x==-1)continue;n.b=b.Math.max(n.b,x),!n.a&&(n.a=new st),it(n.a,d)}for(h=new cr(fr(js(t).a.Kc(),new V));Vr(h);)if(o=u(Pr(h),17),!to(o)&&(v=o.d.i,a4e(v,rq))){if(x=k5e(e,v,rq,iq),x==-1)continue;n.d=b.Math.max(n.d,x),!n.c&&(n.c=new st),it(n.c,v)}return n}function Lut(e){d7();var t,n,r,s;if(t=_s(e),e1e6)throw J(new lF("power of ten too big"));if(e<=Ei)return $6(lI(yk[1],t),t);for(r=lI(yk[1],Ei),s=r,n=Ou(e-Ei),t=_s(e%Ei);Mc(n,Ei)>0;)s=W3(s,r),n=Wp(n,Ei);for(s=W3(s,lI(yk[1],t)),s=$6(s,Ei),n=Ou(e-Ei);Mc(n,Ei)>0;)s=$6(s,Ei),n=Wp(n,Ei);return s=$6(s,t),s}function Jbn(e,t){var n,r,s,o,h,d,v,x,_;for(kr(t,"Hierarchical port dummy size processing",1),v=new st,_=new st,r=Ue(ft(K(e,(pt(),V4)))),n=r*2,o=new C(e.b);o.ax&&r>x)_=d,x=Ue(t.p[d.p])+Ue(t.d[d.p])+d.o.b+d.d.a;else{s=!1,n.n&&V2(n,"bk node placement breaks on "+d+" which should have been after "+_);break}if(!s)break}return n.n&&V2(n,t+" is feasible: "+s),s}function ivn(e,t,n,r){var s,o,h,d,v,x,_;for(d=-1,_=new C(e);_.a<_.c.c.length;)x=u(Y(_),112),x.g=d--,s=Or(g$(Yj(Vi(new vn(null,new mn(x.f,16)),new AQ),new LQ)).d),o=Or(g$(Yj(Vi(new vn(null,new mn(x.k,16)),new MQ),new U5)).d),h=s,v=o,r||(h=Or(g$(Yj(new vn(null,new mn(x.f,16)),new DQ)).d),v=Or(g$(Yj(new vn(null,new mn(x.k,16)),new IQ)).d)),x.d=h,x.a=s,x.i=v,x.b=o,v==0?ks(n,x,n.c.b,n.c):h==0&&ks(t,x,t.c.b,t.c)}function svn(e,t,n,r){var s,o,h,d,v,x,_;if(n.d.i!=t.i){for(s=new H0(e),T0(s,(zn(),ca)),Ye(s,(et(),Mi),n),Ye(s,(pt(),bs),(wa(),tu)),r.c[r.c.length]=s,h=new $c,rc(h,s),Vs(h,(ht(),Dn)),d=new $c,rc(d,s),Vs(d,$n),_=n.d,ba(n,h),o=new Iv,Ho(o,n),Ye(o,Fo,null),Va(o,d),ba(o,_),x=new Ea(n.b,0);x.b=X&&e.e[v.p]>q*e.b||Ee>=n*X)&&(P.c[P.c.length]=d,d=new st,no(h,o),o.a.$b(),x-=_,z=b.Math.max(z,x*e.b+W),x+=Ee,Ce=Ee,Ee=0,_=0,W=0);return new xa(z,P)}function cvn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z;for(n=(x=new E1(e.c.b).a.vc().Kc(),new T1(x));n.a.Ob();)t=(d=u(n.a.Pb(),42),u(d.dd(),149)),s=t.a,s==null&&(s=""),r=NKt(e.c,s),!r&&s.length==0&&(r=Pan(e)),r&&!Xm(r.c,t,!1)&&ci(r.c,t);for(h=ii(e.a,0);h.b!=h.d.c;)o=u(ri(h),478),_=Lre(e.c,o.a),z=Lre(e.c,o.b),_&&z&&ci(_.c,new xa(z,o.c));for(Rh(e.a),P=ii(e.b,0);P.b!=P.d.c;)L=u(ri(P),478),t=OKt(e.c,L.a),v=Lre(e.c,L.b),t&&v&&EUt(t,v,L.c);Rh(e.b)}function uvn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z;o=new $x(e),h=new Yit,s=(oD(h.g),oD(h.j),sl(h.b),oD(h.d),oD(h.i),sl(h.k),sl(h.c),sl(h.e),z=Iat(h,o,null),kot(h,o),z),t&&(x=new $x(t),d=mvn(x),w4e(s,ie(re(nSe,1),yt,527,0,[d]))),P=!1,L=!1,n&&(x=new $x(n),bG in x.a&&(P=M0(x,bG).ge().a),q1t in x.a&&(L=M0(x,q1t).ge().a)),_=hze(zet(new Ux,P),L),n1n(new dZ,s,_),bG in o.a&&t1(o,bG,null),(P||L)&&(v=new p6,_ut(_,v,P,L),t1(o,bG,v)),r=new w$e(h),Xsn(new H2e(s),r)}function lvn(e,t,n){var r,s,o,h,d,v,x,_,L;for(h=new est,x=ie(re(Lr,1),Jr,25,15,[0]),s=-1,o=0,r=0,v=0;v0){if(s<0&&_.a&&(s=v,o=x[0],r=0),s>=0){if(d=_.b,v==s&&(d-=r++,d==0))return 0;if(!Ilt(t,x,_,d,h)){v=s-1,x[0]=o;continue}}else if(s=-1,!Ilt(t,x,_,0,h))return 0}else{if(s=-1,Ma(_.c,0)==32){if(L=x[0],QJe(t,x),x[0]>L)continue}else if(qJt(t,_.c,x[0])){x[0]+=_.c.length;continue}return 0}return qmn(h,n)?x[0]:0}function fC(e){var t,n,r,s,o,h,d,v;if(!e.f){if(v=new E0,d=new E0,t=XS,h=t.a.zc(e,t),h==null){for(o=new rr(jo(e));o.e!=o.i.gc();)s=u(pr(o),26),fs(v,fC(s));t.a.Bc(e)!=null,t.a.gc()==0}for(r=(!e.s&&(e.s=new at(ju,e,21,17)),new rr(e.s));r.e!=r.i.gc();)n=u(pr(r),170),we(n,99)&&Br(d,u(n,18));Km(d),e.r=new GWe(e,(u(Te(He((Rp(),En).o),6),18),d.i),d.g),fs(v,e.r),Km(v),e.f=new B3((u(Te(He(En.o),5),18),v.i),v.g),dl(e).b&=-3}return e.f}function hvn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q;for(h=e.o,r=Me(Lr,Jr,25,h,15,1),s=Me(Lr,Jr,25,h,15,1),n=e.p,t=Me(Lr,Jr,25,n,15,1),o=Me(Lr,Jr,25,n,15,1),x=0;x=0&&!i4(e,_,L);)--L;s[_]=L}for(z=0;z=0&&!i4(e,d,q);)--d;o[q]=d}for(v=0;vt[P]&&Pr[v]&&hz(e,v,P,!1,!0)}function q5e(e){var t,n,r,s,o,h,d,v;n=It(Mt(K(e,(a1(),opt)))),o=e.a.c.d,d=e.a.d.d,n?(h=bd(da(new Pt(d.a,d.b),o),.5),v=bd(fc(e.e),.5),t=da(Ni(new Pt(o.a,o.b),h),v),ybe(e.d,t)):(s=Ue(ft(K(e.a,ppt))),r=e.d,o.a>=d.a?o.b>=d.b?(r.a=d.a+(o.a-d.a)/2+s,r.b=d.b+(o.b-d.b)/2-s-e.e.b):(r.a=d.a+(o.a-d.a)/2+s,r.b=o.b+(d.b-o.b)/2+s):o.b>=d.b?(r.a=o.a+(d.a-o.a)/2+s,r.b=d.b+(o.b-d.b)/2+s):(r.a=o.a+(d.a-o.a)/2+s,r.b=o.b+(d.b-o.b)/2-s-e.e.b))}function Xc(e,t){var n,r,s,o,h,d,v;if(e==null)return null;if(o=e.length,o==0)return"";for(v=Me(Sh,Td,25,o,15,1),ame(0,o,e.length),ame(0,o,v.length),YKe(e,0,o,v,0),n=null,d=t,s=0,h=0;s0?jl(n.a,0,o-1):""):e.substr(0,o-1):n?n.a:e}function Iut(e){wv(e,new gb(gv(hv(dv(fv(new lg,yb),"ELK DisCo"),"Layouter for arranging unconnected subgraphs. The subgraphs themselves are, by default, not laid out."),new pi))),dt(e,yb,_oe,xt(U7e)),dt(e,yb,Coe,xt(Rue)),dt(e,yb,fk,xt(Ugt)),dt(e,yb,uw,xt(V7e)),dt(e,yb,L6e,xt(Xgt)),dt(e,yb,M6e,xt(Ygt)),dt(e,yb,A6e,xt(Qgt)),dt(e,yb,D6e,xt(Kgt)),dt(e,yb,F6e,xt(Wgt)),dt(e,yb,j6e,xt(Bue)),dt(e,yb,$6e,xt(q7e)),dt(e,yb,H6e,xt(XG))}function V5e(e,t,n,r){var s,o,h,d,v,x,_,L,P;if(o=new H0(e),T0(o,(zn(),Jc)),Ye(o,(pt(),bs),(wa(),tu)),s=0,t){for(h=new $c,Ye(h,(et(),Mi),t),Ye(o,Mi,t.i),Vs(h,(ht(),Dn)),rc(h,o),P=kd(t.e),x=P,_=0,L=x.length;_0)if(n-=r.length-t,n>=0){for(s.a+="0.";n>Ab.length;n-=Ab.length)cKe(s,Ab);qUe(s,Ab,_s(n)),Yr(s,r.substr(t))}else n=t-n,Yr(s,jl(r,t,_s(n))),s.a+=".",Yr(s,IM(r,_s(n)));else{for(Yr(s,r.substr(t));n<-Ab.length;n+=Ab.length)cKe(s,Ab);qUe(s,Ab,_s(-n))}return s.a}function U5e(e,t,n,r){var s,o,h,d,v,x,_,L,P;return v=da(new Pt(n.a,n.b),e),x=v.a*t.b-v.b*t.a,_=t.a*r.b-t.b*r.a,L=(v.a*r.b-v.b*r.a)/_,P=x/_,_==0?x==0?(s=Ni(new Pt(n.a,n.b),bd(new Pt(r.a,r.b),.5)),o=Hp(e,s),h=Hp(Ni(new Pt(e.a,e.b),t),s),d=b.Math.sqrt(r.a*r.a+r.b*r.b)*.5,o=0&&L<=1&&P>=0&&P<=1?Ni(new Pt(e.a,e.b),bd(new Pt(t.a,t.b),L)):null}function dvn(e,t,n){var r,s,o,h,d;if(r=u(K(e,(pt(),$le)),21),n.a>t.a&&(r.Hc((ty(),HO))?e.c.a+=(n.a-t.a)/2:r.Hc(zO)&&(e.c.a+=n.a-t.a)),n.b>t.b&&(r.Hc((ty(),qO))?e.c.b+=(n.b-t.b)/2:r.Hc(GO)&&(e.c.b+=n.b-t.b)),u(K(e,(et(),eu)),21).Hc((mo(),Th))&&(n.a>t.a||n.b>t.b))for(d=new C(e.a);d.at.a&&(r.Hc((ty(),HO))?e.c.a+=(n.a-t.a)/2:r.Hc(zO)&&(e.c.a+=n.a-t.a)),n.b>t.b&&(r.Hc((ty(),qO))?e.c.b+=(n.b-t.b)/2:r.Hc(GO)&&(e.c.b+=n.b-t.b)),u(K(e,(et(),eu)),21).Hc((mo(),Th))&&(n.a>t.a||n.b>t.b))for(h=new C(e.a);h.at&&(s=0,o+=_.b+n,L.c[L.c.length]=_,_=new Lwe(o,n),r=new wie(0,_.f,_,n),q$(_,r),s=0),r.b.c.length==0||v.f>=r.o&&v.f<=r.f||r.a*.5<=v.f&&r.a*1.5>=v.f?zye(r,v):(h=new wie(r.s+r.r+n,_.f,_,n),q$(_,h),zye(h,v)),s=v.i+v.g;return L.c[L.c.length]=_,L}function b4(e){var t,n,r,s,o,h,d,v;if(!e.a){if(e.o=null,v=new F$e(e),t=new vp,n=XS,d=n.a.zc(e,n),d==null){for(h=new rr(jo(e));h.e!=h.i.gc();)o=u(pr(h),26),fs(v,b4(o));n.a.Bc(e)!=null,n.a.gc()==0}for(s=(!e.s&&(e.s=new at(ju,e,21,17)),new rr(e.s));s.e!=s.i.gc();)r=u(pr(s),170),we(r,322)&&Br(t,u(r,34));Km(t),e.k=new zWe(e,(u(Te(He((Rp(),En).o),7),18),t.i),t.g),fs(v,e.k),Km(v),e.a=new B3((u(Te(He(En.o),4),18),v.i),v.g),dl(e).b&=-2}return e.a}function vvn(e,t,n,r,s,o,h){var d,v,x,_,L,P;return L=!1,v=$ot(n.q,t.f+t.b-n.q.f),P=s-(n.q.e+v-h),P=(xn(o,e.c.length),u(e.c[o],200)).e,_=(d=dC(r,P,!1),d.a),_>t.b&&!x)?!1:((x||_<=t.b)&&(x&&_>t.b?(n.d=_,fD(n,qst(n,_))):(ust(n.q,v),n.c=!0),fD(r,s-(n.s+n.r)),KD(r,n.q.e+n.q.d,t.f),q$(t,r),e.c.length>o&&(JD((xn(o,e.c.length),u(e.c[o],200)),r),(xn(o,e.c.length),u(e.c[o],200)).a.c.length==0&&Eg(e,o)),L=!0),L)}function W5e(e,t,n,r){var s,o,h,d,v,x,_;if(_=pu(e.e.Tg(),t),s=0,o=u(e.g,119),v=null,ho(),u(t,66).Oj()){for(d=0;de.o.a&&(_=(v-e.o.a)/2,d.b=b.Math.max(d.b,_),d.c=b.Math.max(d.c,_))}}function mvn(e){var t,n,r,s,o,h,d,v;for(o=new uQe,rWt(o,(W6(),Fyt)),r=(s=aie(e,Me(mt,Qe,2,0,6,1)),new c6(new Al(new lte(e,s).b)));r.b0?e.i:0)>t&&v>0&&(o=0,h+=v+e.i,s=b.Math.max(s,P),r+=v+e.i,v=0,P=0,n&&(++L,it(e.n,new o$(e.s,h,e.i))),d=0),P+=x.g+(d>0?e.i:0),v=b.Math.max(v,x.f),n&&T3e(u(St(e.n,L),211),x),o+=x.g+(d>0?e.i:0),++d;return s=b.Math.max(s,P),r+=v,n&&(e.r=s,e.d=r,A3e(e.j)),new fh(e.s,e.t,s,r)}function Hc(e,t,n,r,s){Ud();var o,h,d,v,x,_,L,P,z;if(Wve(e,"src"),Wve(n,"dest"),P=pl(e),v=pl(n),bve((P.i&4)!=0,"srcType is not an array"),bve((v.i&4)!=0,"destType is not an array"),L=P.c,h=v.c,bve(L.i&1?L==h:(h.i&1)==0,"Array types don't match"),z=e.length,x=n.length,t<0||r<0||s<0||t+s>z||r+s>x)throw J(new cpe);if(!(L.i&1)&&P!=v)if(_=tb(e),o=tb(n),je(e)===je(n)&&tr;)cs(o,d,_[--t]);else for(d=r+s;r0&&O4e(e,t,n,r,s,!0)}function pae(){pae=pe,P0t=ie(re(Lr,1),Jr,25,15,[$a,1162261467,wC,1220703125,362797056,1977326743,wC,387420489,Lz,214358881,429981696,815730721,1475789056,170859375,268435456,410338673,612220032,893871739,128e7,1801088541,113379904,148035889,191102976,244140625,308915776,387420489,481890304,594823321,729e6,887503681,wC,1291467969,1544804416,1838265625,60466176]),B0t=ie(re(Lr,1),Jr,25,15,[-1,-1,31,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5])}function yvn(e){var t,n,r,s,o,h,d,v;for(s=new C(e.b);s.a=e.b.length?(o[s++]=h.b[r++],o[s++]=h.b[r++]):r>=h.b.length?(o[s++]=e.b[n++],o[s++]=e.b[n++]):h.b[r]0?e.i:0)),++t;for(Ion(e.n,v),e.d=n,e.r=r,e.g=0,e.f=0,e.e=0,e.o=gs,e.p=gs,o=new C(e.b);o.a0&&(s=(!e.n&&(e.n=new at(Jo,e,1,7)),u(Te(e.n,0),137)).a,!s||Yr(Yr((t.a+=' "',t),s),'"'))),n=(!e.b&&(e.b=new wn(mr,e,4,7)),!(e.b.i<=1&&(!e.c&&(e.c=new wn(mr,e,5,8)),e.c.i<=1))),n?t.a+=" [":t.a+=" ",Yr(t,rbe(new ste,new rr(e.b))),n&&(t.a+="]"),t.a+=Ioe,n&&(t.a+="["),Yr(t,rbe(new ste,new rr(e.c))),n&&(t.a+="]"),t.a)}function bae(e,t){var n,r,s,o,h,d,v;if(e.a){if(d=e.a.ne(),v=null,d!=null?t.a+=""+d:(h=e.a.Dj(),h!=null&&(o=pd(h,Nu(91)),o!=-1?(v=h.substr(o),t.a+=""+jl(h==null?Pu:(Sn(h),h),0,o)):t.a+=""+h)),e.d&&e.d.i!=0){for(s=!0,t.a+="<",r=new rr(e.d);r.e!=r.i.gc();)n=u(pr(r),87),s?s=!1:t.a+=io,bae(n,t);t.a+=">"}v!=null&&(t.a+=""+v)}else e.e?(d=e.e.zb,d!=null&&(t.a+=""+d)):(t.a+="?",e.b?(t.a+=" super ",bae(e.b,t)):e.f&&(t.a+=" extends ",bae(e.f,t)))}function Evn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In;for(Ve=e.c,nt=t.c,n=Yo(Ve.a,e,0),r=Yo(nt.a,t,0),Ee=u(Yv(e,(vo(),ul)).Kc().Pb(),11),Ut=u(Yv(e,hu).Kc().Pb(),11),Ne=u(Yv(t,ul).Kc().Pb(),11),In=u(Yv(t,hu).Kc().Pb(),11),le=kd(Ee.e),bt=kd(Ut.g),Ce=kd(Ne.e),zt=kd(In.g),ey(e,r,nt),h=Ce,_=0,q=h.length;__?new X2((Jf(),jy),n,t,x-_):x>0&&_>0&&(new X2((Jf(),jy),t,n,0),new X2(jy,n,t,0))),h)}function Put(e,t){var n,r,s,o,h,d;for(h=new ob(new dg(e.f.b).a);h.b;){if(o=$v(h),s=u(o.cd(),594),t==1){if(s.gf()!=(wo(),X0)&&s.gf()!=Y0)continue}else if(s.gf()!=(wo(),Xh)&&s.gf()!=Df)continue;switch(r=u(u(o.dd(),46).b,81),d=u(u(o.dd(),46).a,189),n=d.c,s.gf().g){case 2:r.g.c=e.e.a,r.g.b=b.Math.max(1,r.g.b+n);break;case 1:r.g.c=r.g.c+n,r.g.b=b.Math.max(1,r.g.b-n);break;case 4:r.g.d=e.e.b,r.g.a=b.Math.max(1,r.g.a+n);break;case 3:r.g.d=r.g.d+n,r.g.a=b.Math.max(1,r.g.a-n)}}}function Tvn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W;for(d=Me(Lr,Jr,25,t.b.c.length,15,1),x=Me(Zue,tt,267,t.b.c.length,0,1),v=Me(h0,Bg,10,t.b.c.length,0,1),L=e.a,P=0,z=L.length;P0&&v[r]&&(q=j3(e.b,v[r],s)),W=b.Math.max(W,s.c.c.b+q);for(o=new C(_.e);o.a1)throw J(new Ln(eO));v||(o=Jd(t,r.Kc().Pb()),h.Fc(o))}return iye(e,T4e(e,t,n),h)}function Svn(e,t){var n,r,s,o;for(lin(t.b.j),ms(Cu(new vn(null,new mn(t.d,16)),new FX),new jX),o=new C(t.d);o.ae.o.b||(n=ac(e,$n),d=t.d+t.a+(n.gc()-1)*h,d>e.o.b)))}function mae(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q;if(h=e.e,v=t.e,h==0)return t;if(v==0)return e;if(o=e.d,d=t.d,o+d==2)return n=qs(e.a[0],yo),r=qs(t.a[0],yo),h==v?(_=Ua(n,r),q=Or(_),z=Or(Nm(_,32)),z==0?new Tg(h,q):new z3(h,2,ie(re(Lr,1),Jr,25,15,[q,z]))):WD(h<0?Wp(r,n):Wp(n,r));if(h==v)P=h,L=o>=d?Pre(e.a,o,t.a,d):Pre(t.a,d,e.a,o);else{if(s=o!=d?o>d?1:-1:mye(e.a,t.a,o),s==0)return Qp(),K7;s==1?(P=h,L=Ore(e.a,o,t.a,d)):(P=v,L=Ore(t.a,d,e.a,o))}return x=new z3(P,L.length,L),E_(x),x}function yae(e,t,n,r,s,o,h){var d,v,x,_,L,P,z;return L=It(Mt(K(t,(pt(),HTe)))),P=null,o==(vo(),ul)&&r.c.i==n?P=r.c:o==hu&&r.d.i==n&&(P=r.d),x=h,!x||!L||P?(_=(ht(),uc),P?_=P.j:R3(u(K(n,bs),98))&&(_=o==ul?Dn:$n),v=Dvn(e,t,n,o,_,r),d=Dre((Ya(n),r)),o==ul?(Va(d,u(St(v.j,0),11)),ba(d,s)):(Va(d,s),ba(d,u(St(v.j,0),11))),x=new ert(r,d,v,u(K(v,(et(),Mi)),11),o,!P)):(it(x.e,r),z=b.Math.max(Ue(ft(K(x.d,Hg))),Ue(ft(K(r,Hg)))),Ye(x.d,Hg,z)),sn(e.a,r,new mj(x.d,t,o)),x}function wz(e,t){var n,r,s,o,h,d,v,x,_,L;if(_=null,e.d&&(_=u(Uc(e.d,t),138)),!_){if(o=e.a.Mh(),L=o.i,!e.d||MT(e.d)!=L){for(v=new Mr,e.d&&P_(v,e.d),x=v.f.c+v.g.c,d=x;d0?(z=(q-1)*n,d&&(z+=r),_&&(z+=r),z=e.b[s+1])s+=2;else if(n0)for(r=new Uu(u(Ii(e.a,o),21)),hn(),aa(r,new Di(t)),s=new Ea(o.b,0);s.bVe)?(v=2,h=Ei):v==0?(v=1,h=bt):(v=0,h=bt)):(z=bt>=h||h-bt0?1:yv(isNaN(r),isNaN(0)))>=0^(Ef(Md),(b.Math.abs(d)<=Md||d==0||isNaN(d)&&isNaN(0)?0:d<0?-1:d>0?1:yv(isNaN(d),isNaN(0)))>=0)?b.Math.max(d,r):(Ef(Md),(b.Math.abs(r)<=Md||r==0||isNaN(r)&&isNaN(0)?0:r<0?-1:r>0?1:yv(isNaN(r),isNaN(0)))>0?b.Math.sqrt(d*d+r*r):-b.Math.sqrt(d*d+r*r))}function pb(e,t){var n,r,s,o,h,d;if(t){if(!e.a&&(e.a=new oF),e.e==2){aF(e.a,t);return}if(t.e==1){for(s=0;s=so?To(n,Hye(r)):b8(n,r&Ss),h=new cre(10,null,0),wZt(e.a,h,d-1)):(n=(h.bm().length+o,new ST),To(n,h.bm())),t.e==0?(r=t._l(),r>=so?To(n,Hye(r)):b8(n,r&Ss)):To(n,t.bm()),u(h,521).b=n.a}}function Gut(e){var t,n,r,s,o;return e.g!=null?e.g:e.a<32?(e.g=nyn(Ou(e.f),_s(e.e)),e.g):(s=Lae((!e.c&&(e.c=FD(e.f)),e.c),0),e.e==0?s:(t=(!e.c&&(e.c=FD(e.f)),e.c).e<0?2:1,n=s.length,r=-e.e+n-t,o=new Tp,o.a+=""+s,e.e>0&&r>=-6?r>=0?rD(o,n-_s(e.e),String.fromCharCode(46)):(o.a=jl(o.a,0,t-1)+"0."+IM(o.a,t-1),rD(o,t+1,jh(Ab,0,-_s(r)-1))):(n-t>=1&&(rD(o,t,String.fromCharCode(46)),++n),rD(o,n,String.fromCharCode(69)),r>0&&rD(o,++n,String.fromCharCode(43)),rD(o,++n,""+d_(Ou(r)))),e.g=o.a,e.g))}function qvn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X;if(!n.dc()){for(d=0,P=0,r=n.Kc(),q=u(r.Pb(),19).a;d1&&(v=x.mg(v,e.a,d));return v.c.length==1?u(St(v,v.c.length-1),220):v.c.length==2?Ovn((xn(0,v.c.length),u(v.c[0],220)),(xn(1,v.c.length),u(v.c[1],220)),h,o):null}function qut(e){var t,n,r,s,o,h;for(Mu(e.a,new bL),n=new C(e.a);n.a=b.Math.abs(r.b)?(r.b=0,o.d+o.a>h.d&&o.dh.c&&o.c0){if(t=new O2e(e.i,e.g),n=e.i,o=n<100?null:new _p(n),e.ij())for(r=0;r0){for(d=e.g,x=e.i,A_(e),o=x<100?null:new _p(x),r=0;r>13|(e.m&15)<<9,s=e.m>>4&8191,o=e.m>>17|(e.h&255)<<5,h=(e.h&1048320)>>8,d=t.l&8191,v=t.l>>13|(t.m&15)<<9,x=t.m>>4&8191,_=t.m>>17|(t.h&255)<<5,L=(t.h&1048320)>>8,zt=n*d,Ut=r*d,In=s*d,Rn=o*d,dr=h*d,v!=0&&(Ut+=n*v,In+=r*v,Rn+=s*v,dr+=o*v),x!=0&&(In+=n*x,Rn+=r*x,dr+=s*x),_!=0&&(Rn+=n*_,dr+=r*_),L!=0&&(dr+=n*L),z=zt&ml,q=(Ut&511)<<13,P=z+q,X=zt>>22,le=Ut>>9,Ce=(In&262143)<<4,Ee=(Rn&31)<<17,W=X+le+Ce+Ee,Ve=In>>18,nt=Rn>>5,bt=(dr&4095)<<8,Ne=Ve+nt+bt,W+=P>>22,P&=ml,Ne+=W>>22,W&=ml,Ne&=V0,fu(P,W,Ne)}function Vut(e){var t,n,r,s,o,h,d;if(d=u(St(e.j,0),11),d.g.c.length!=0&&d.e.c.length!=0)throw J(new Wo("Interactive layout does not support NORTH/SOUTH ports with incoming _and_ outgoing edges."));if(d.g.c.length!=0){for(o=gs,n=new C(d.g);n.a4)if(e.wj(t)){if(e.rk()){if(s=u(t,49),r=s.Ug(),v=r==e.e&&(e.Dk()?s.Og(s.Vg(),e.zk())==e.Ak():-1-s.Vg()==e.aj()),e.Ek()&&!v&&!r&&s.Zg()){for(o=0;o0&&(x=e.n.a/o);break;case 2:case 4:s=e.i.o.b,s>0&&(x=e.n.b/s)}Ye(e,(et(),Ew),x)}if(v=e.o,h=e.a,r)h.a=r.a,h.b=r.b,e.d=!0;else if(t!=X1&&t!=w2&&d!=uc)switch(d.g){case 1:h.a=v.a/2;break;case 2:h.a=v.a,h.b=v.b/2;break;case 3:h.a=v.a/2,h.b=v.b;break;case 4:h.b=v.b/2}else h.a=v.a/2,h.b=v.b/2}function pC(e){var t,n,r,s,o,h,d,v,x,_;if(e.ej())if(_=e.Vi(),v=e.fj(),_>0)if(t=new Vme(e.Gi()),n=_,o=n<100?null:new _p(n),FM(e,n,t.g),s=n==1?e.Zi(4,Te(t,0),null,0,v):e.Zi(6,t,null,-1,v),e.bj()){for(r=new rr(t);r.e!=r.i.gc();)o=e.dj(pr(r),o);o?(o.Ei(s),o.Fi()):e.$i(s)}else o?(o.Ei(s),o.Fi()):e.$i(s);else FM(e,e.Vi(),e.Wi()),e.$i(e.Zi(6,(hn(),bo),null,-1,v));else if(e.bj())if(_=e.Vi(),_>0){for(d=e.Wi(),x=_,FM(e,_,d),o=x<100?null:new _p(x),r=0;re.d[h.p]&&(n+=Gwe(e.b,o)*u(v.b,19).a,$p(e.a,ct(o)));for(;!TT(e.a);)yme(e.b,u(I6(e.a),19).a)}return n}function nwn(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X;for(L=new Io(u(Ft(e,(XH(),lSe)),8)),L.a=b.Math.max(L.a-n.b-n.c,0),L.b=b.Math.max(L.b-n.d-n.a,0),s=ft(Ft(e,oSe)),(s==null||(Sn(s),s<=0))&&(s=1.3),d=new st,q=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));q.e!=q.i.gc();)z=u(pr(q),33),h=new yUe(z),d.c[d.c.length]=h;switch(P=u(Ft(e,Xhe),311),P.g){case 3:X=Tbn(d,t,L.a,L.b,(x=r,Sn(s),x));break;case 1:X=Xbn(d,t,L.a,L.b,(_=r,Sn(s),_));break;default:X=swn(d,t,L.a,L.b,(v=r,Sn(s),v))}o=new H$(X),W=Sae(o,t,n,L.a,L.b,r,(Sn(s),s)),sw(e,W.a,W.b,!1,!0)}function rwn(e,t){var n,r,s,o;n=t.b,o=new Uu(n.j),s=0,r=n.j,r.c=Me(Yn,yt,1,0,5,1),Av(u(rb(e.b,(ht(),An),(qv(),mw)),15),n),s=XD(o,s,new SX,r),Av(u(rb(e.b,An,u2),15),n),s=XD(o,s,new D9,r),Av(u(rb(e.b,An,ww),15),n),Av(u(rb(e.b,$n,mw),15),n),Av(u(rb(e.b,$n,u2),15),n),s=XD(o,s,new wB,r),Av(u(rb(e.b,$n,ww),15),n),Av(u(rb(e.b,xr,mw),15),n),s=XD(o,s,new mB,r),Av(u(rb(e.b,xr,u2),15),n),s=XD(o,s,new yB,r),Av(u(rb(e.b,xr,ww),15),n),Av(u(rb(e.b,Dn,mw),15),n),s=XD(o,s,new MX,r),Av(u(rb(e.b,Dn,u2),15),n),Av(u(rb(e.b,Dn,ww),15),n)}function iwn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W;for(kr(t,"Layer size calculation",1),_=gs,x=Ds,s=!1,d=new C(e.b);d.a.5?le-=h*2*(q-.5):q<.5&&(le+=o*2*(.5-q)),s=d.d.b,leX.a-W-_&&(le=X.a-W-_),d.n.a=t+le}}function swn(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q,W,X;for(d=Me(pa,Ao,25,e.c.length,15,1),P=new $j(new GB),I3e(P,e),x=0,W=new st;P.b.c.length!=0;)if(h=u(P.b.c.length==0?null:St(P.b,0),157),x>1&&Wu(h)*Dl(h)/2>d[0]){for(o=0;od[o];)++o;q=new Zd(W,0,o+1),L=new H$(q),_=Wu(h)/Dl(h),v=Sae(L,t,new g6,n,r,s,_),Ni(Zf(L.e),v),S8(l7(P,L)),z=new Zd(W,o+1,W.c.length),I3e(P,z),W.c=Me(Yn,yt,1,0,5,1),x=0,mKe(d,d.length,0)}else X=P.b.c.length==0?null:St(P.b,0),X!=null&&iie(P,0),x>0&&(d[x]=d[x-1]),d[x]+=Wu(h)*Dl(h),++x,W.c[W.c.length]=h;return W}function awn(e){var t,n,r,s,o;if(r=u(K(e,(pt(),vu)),163),r==(mh(),l2)){for(n=new cr(fr(Xo(e).a.Kc(),new V));Vr(n);)if(t=u(Pr(n),17),!MZe(t))throw J(new M3(Poe+QD(e)+"' has its layer constraint set to FIRST_SEPARATE, but has at least one incoming edge. FIRST_SEPARATE nodes must not have incoming edges."))}else if(r==Ly){for(o=new cr(fr(js(e).a.Kc(),new V));Vr(o);)if(s=u(Pr(o),17),!MZe(s))throw J(new M3(Poe+QD(e)+"' has its layer constraint set to LAST_SEPARATE, but has at least one outgoing edge. LAST_SEPARATE nodes must not have outgoing edges."))}}function own(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q;for(kr(t,"Label dummy removal",1),r=Ue(ft(K(e,(pt(),Ok)))),s=Ue(ft(K(e,Ry))),x=u(K(e,Zl),103),v=new C(e.b);v.a0&&Zst(e,d,L);for(s=new C(L);s.a>19&&(t=U8(t),v=!v),h=agn(t),o=!1,s=!1,r=!1,e.h==MI&&e.m==0&&e.l==0)if(s=!0,o=!0,h==-1)e=hVe((D8(),B8e)),r=!0,v=!v;else return d=Y4e(e,h),v&&gie(d),n&&(s2=fu(0,0,0)),d;else e.h>>19&&(o=!0,e=U8(e),r=!0,v=!v);return h!=-1?Wsn(e,h,v,o,n):$3e(e,t)<0?(n&&(o?s2=U8(e):s2=fu(e.l,e.m,e.h)),fu(0,0,0)):Q2n(r?e:fu(e.l,e.m,e.h),t,v,o,s,n)}function mz(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q;if(e.e&&e.c.ct.f||t.g>e.f)){for(n=0,r=0,h=e.w.a.ec().Kc();h.Ob();)s=u(h.Pb(),11),Cie(sc(ie(re(na,1),Qe,8,0,[s.i.n,s.n,s.a])).b,t.g,t.f)&&++n;for(d=e.r.a.ec().Kc();d.Ob();)s=u(d.Pb(),11),Cie(sc(ie(re(na,1),Qe,8,0,[s.i.n,s.n,s.a])).b,t.g,t.f)&&--n;for(v=t.w.a.ec().Kc();v.Ob();)s=u(v.Pb(),11),Cie(sc(ie(re(na,1),Qe,8,0,[s.i.n,s.n,s.a])).b,e.g,e.f)&&++r;for(o=t.r.a.ec().Kc();o.Ob();)s=u(o.Pb(),11),Cie(sc(ie(re(na,1),Qe,8,0,[s.i.n,s.n,s.a])).b,e.g,e.f)&&--r;n=0)return s=bon(e,t.substr(1,h-1)),_=t.substr(h+1,v-(h+1)),hyn(e,_,s)}else{if(n=-1,H8e==null&&(H8e=new RegExp("\\d")),H8e.test(String.fromCharCode(d))&&(n=Wbe(t,Nu(46),v-1),n>=0)){r=u(Ire(e,Eet(e,t.substr(1,n-1)),!1),58),x=0;try{x=Wl(t.substr(n+1),$a,Ei)}catch(P){throw P=ts(P),we(P,127)?(o=P,J(new D$(o))):J(P)}if(x=0)return n;switch(Dv(Po(e,n))){case 2:{if(an("",Ag(e,n.Hj()).ne())){if(v=QM(Po(e,n)),d=m8(Po(e,n)),_=n5e(e,t,v,d),_)return _;for(s=L5e(e,t),h=0,L=s.gc();h1)throw J(new Ln(eO));for(_=pu(e.e.Tg(),t),r=u(e.g,119),h=0;h1,x=new N1(P.b);nc(x.a)||nc(x.b);)v=u(nc(x.a)?Y(x.a):Y(x.b),17),L=v.c==P?v.d:v.c,b.Math.abs(sc(ie(re(na,1),Qe,8,0,[L.i.n,L.n,L.a])).b-h.b)>1&&lpn(e,v,h,o,P)}}function mwn(e){var t,n,r,s,o,h;if(s=new Ea(e.e,0),r=new Ea(e.a,0),e.d)for(n=0;npce;){for(o=t,h=0;b.Math.abs(t-o)0),s.a.Xb(s.c=--s.b),Bbn(e,e.b-h,o,r,s),Qn(s.b0),r.a.Xb(r.c=--r.b)}if(!e.d)for(n=0;n0?(e.f[_.p]=z/(_.e.c.length+_.g.c.length),e.c=b.Math.min(e.c,e.f[_.p]),e.b=b.Math.max(e.b,e.f[_.p])):d&&(e.f[_.p]=z)}}function kwn(e){e.b=null,e.bb=null,e.fb=null,e.qb=null,e.a=null,e.c=null,e.d=null,e.e=null,e.f=null,e.n=null,e.M=null,e.L=null,e.Q=null,e.R=null,e.K=null,e.db=null,e.eb=null,e.g=null,e.i=null,e.j=null,e.k=null,e.gb=null,e.o=null,e.p=null,e.q=null,e.r=null,e.$=null,e.ib=null,e.S=null,e.T=null,e.t=null,e.s=null,e.u=null,e.v=null,e.w=null,e.B=null,e.A=null,e.C=null,e.D=null,e.F=null,e.G=null,e.H=null,e.I=null,e.J=null,e.P=null,e.Z=null,e.U=null,e.V=null,e.W=null,e.X=null,e.Y=null,e._=null,e.ab=null,e.cb=null,e.hb=null,e.nb=null,e.lb=null,e.mb=null,e.ob=null,e.pb=null,e.jb=null,e.kb=null,e.N=!1,e.O=!1}function xwn(e,t,n){var r,s,o,h;for(kr(n,"Graph transformation ("+e.a+")",1),h=Pv(t.a),o=new C(t.b);o.a0&&(e.a=v+(z-1)*o,t.c.b+=e.a,t.f.b+=e.a)),q.a.gc()!=0&&(P=new Hne(1,o),z=t6e(P,t,q,W,t.f.b+v-t.c.b),z>0&&(t.f.b+=v+(z-1)*o))}function x7(e,t){var n,r,s,o;o=e.F,t==null?(e.F=null,Y8(e,null)):(e.F=(Sn(t),t),r=pd(t,Nu(60)),r!=-1?(s=t.substr(0,r),pd(t,Nu(46))==-1&&!an(s,sk)&&!an(s,HC)&&!an(s,mG)&&!an(s,zC)&&!an(s,GC)&&!an(s,qC)&&!an(s,VC)&&!an(s,UC)&&(s=Odt),n=cj(t,Nu(62)),n!=-1&&(s+=""+t.substr(n+1)),Y8(e,s)):(s=t,pd(t,Nu(46))==-1&&(r=pd(t,Nu(91)),r!=-1&&(s=t.substr(0,r)),!an(s,sk)&&!an(s,HC)&&!an(s,mG)&&!an(s,zC)&&!an(s,GC)&&!an(s,qC)&&!an(s,VC)&&!an(s,UC)?(s=Odt,r!=-1&&(s+=""+t.substr(r))):s=t),Y8(e,s),s==t&&(e.F=e.D))),e.Db&4&&!(e.Db&1)&&_i(e,new oa(e,1,5,o,t))}function Twn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee;if(W=t.b.c.length,!(W<3)){for(z=Me(Lr,Jr,25,W,15,1),L=0,_=new C(t.b);_.a<_.c.c.length;)x=u(Y(_),29),z[L++]=x.a.c.length;for(P=new Ea(t.b,2),r=1;rh)&&Gs(e.b,u(X.b,17));++d}o=h}}}function Z5e(e,t){var n;if(t==null||an(t,Pu)||t.length==0&&e.k!=(Ng(),Pk))return null;switch(e.k.g){case 1:return AH(t,j7)?(Mn(),U7):AH(t,Mce)?(Mn(),Sb):null;case 2:try{return ct(Wl(t,$a,Ei))}catch(r){if(r=ts(r),we(r,127))return null;throw J(r)}case 4:try{return ry(t)}catch(r){if(r=ts(r),we(r,127))return null;throw J(r)}case 3:return t;case 5:return Dnt(e),Rat(e,t);case 6:return Dnt(e),N0n(e,e.a,t);case 7:try{return n=Udn(e),n.Jf(t),n}catch(r){if(r=ts(r),we(r,32))return null;throw J(r)}default:throw J(new Wo("Invalid type set for this layout option."))}}function _wn(e){M_();var t,n,r,s,o,h,d;for(d=new aHe,n=new C(e);n.a=d.b.c)&&(d.b=t),(!d.c||t.c<=d.c.c)&&(d.d=d.c,d.c=t),(!d.e||t.d>=d.e.d)&&(d.e=t),(!d.f||t.d<=d.f.d)&&(d.f=t);return r=new IH((V8(),vw)),sD(e,jpt,new Al(ie(re(dO,1),yt,369,0,[r]))),h=new IH(_y),sD(e,Fpt,new Al(ie(re(dO,1),yt,369,0,[h]))),s=new IH(Ty),sD(e,Rpt,new Al(ie(re(dO,1),yt,369,0,[s]))),o=new IH(O4),sD(e,Bpt,new Al(ie(re(dO,1),yt,369,0,[o]))),Use(r.c,vw),Use(s.c,Ty),Use(o.c,O4),Use(h.c,_y),d.a.c=Me(Yn,yt,1,0,5,1),Rs(d.a,r.c),Rs(d.a,nb(s.c)),Rs(d.a,o.c),Rs(d.a,nb(h.c)),d}function J5e(e){var t;switch(e.d){case 1:{if(e.hj())return e.o!=-2;break}case 2:{if(e.hj())return e.o==-2;break}case 3:case 5:case 4:case 6:case 7:return e.o>-2;default:return!1}switch(t=e.gj(),e.p){case 0:return t!=null&&It(Mt(t))!=XT(e.k,0);case 1:return t!=null&&u(t,217).a!=Or(e.k)<<24>>24;case 2:return t!=null&&u(t,172).a!=(Or(e.k)&Ss);case 6:return t!=null&&XT(u(t,162).a,e.k);case 5:return t!=null&&u(t,19).a!=Or(e.k);case 7:return t!=null&&u(t,184).a!=Or(e.k)<<16>>16;case 3:return t!=null&&Ue(ft(t))!=e.j;case 4:return t!=null&&u(t,155).a!=e.j;default:return t==null?e.n!=null:!Ci(t,e.n)}}function xI(e,t,n){var r,s,o,h;return e.Fk()&&e.Ek()&&(h=One(e,u(n,56)),je(h)!==je(n))?(e.Oi(t),e.Ui(t,EJe(e,t,h)),e.rk()&&(o=(s=u(n,49),e.Dk()?e.Bk()?s.ih(e.b,go(u(gn(Su(e.b),e.aj()),18)).n,u(gn(Su(e.b),e.aj()).Yj(),26).Bj(),null):s.ih(e.b,Ji(s.Tg(),go(u(gn(Su(e.b),e.aj()),18))),null,null):s.ih(e.b,-1-e.aj(),null,null)),!u(h,49).eh()&&(o=(r=u(h,49),e.Dk()?e.Bk()?r.gh(e.b,go(u(gn(Su(e.b),e.aj()),18)).n,u(gn(Su(e.b),e.aj()).Yj(),26).Bj(),o):r.gh(e.b,Ji(r.Tg(),go(u(gn(Su(e.b),e.aj()),18))),null,o):r.gh(e.b,-1-e.aj(),null,o))),o&&o.Fi()),Ll(e.b)&&e.$i(e.Zi(9,n,h,t,!1)),h):n}function Yut(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne;for(_=Ue(ft(K(e,(pt(),Sw)))),r=Ue(ft(K(e,ZTe))),P=new rl,Ye(P,Sw,_+r),x=t,le=x.d,W=x.c.i,Ce=x.d.i,X=F2e(W.c),Ee=F2e(Ce.c),s=new st,L=X;L<=Ee;L++)d=new H0(e),T0(d,(zn(),ca)),Ye(d,(et(),Mi),x),Ye(d,bs,(wa(),tu)),Ye(d,eV,P),z=u(St(e.b,L),29),L==X?ey(d,z.a.c.length-n,z):No(d,z),Ne=Ue(ft(K(x,Hg))),Ne<0&&(Ne=0,Ye(x,Hg,Ne)),d.o.b=Ne,q=b.Math.floor(Ne/2),h=new $c,Vs(h,(ht(),Dn)),rc(h,d),h.n.b=q,v=new $c,Vs(v,$n),rc(v,d),v.n.b=q,ba(x,h),o=new Iv,Ho(o,x),Ye(o,Fo,null),Va(o,v),ba(o,le),Aln(d,x,o),s.c[s.c.length]=o,x=o;return s}function Eae(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee;for(v=u(Og(e,(ht(),Dn)).Kc().Pb(),11).e,z=u(Og(e,$n).Kc().Pb(),11).g,d=v.c.length,Ee=D1(u(St(e.j,0),11));d-- >0;){for(W=(xn(0,v.c.length),u(v.c[0],17)),s=(xn(0,z.c.length),u(z.c[0],17)),Ce=s.d.e,o=Yo(Ce,s,0),Itn(W,s.d,o),Va(s,null),ba(s,null),q=W.a,t&&ci(q,new Io(Ee)),r=ii(s.a,0);r.b!=r.d.c;)n=u(ri(r),8),ci(q,new Io(n));for(le=W.b,P=new C(s.b);P.a0&&(h=b.Math.max(h,Ett(e.C.b+r.d.b,s))),_=r,L=s,P=o;e.C&&e.C.c>0&&(z=P+e.C.c,x&&(z+=_.d.c),h=b.Math.max(h,(S1(),Ef(z1),b.Math.abs(L-1)<=z1||L==1||isNaN(L)&&isNaN(1)?0:z/(1-L)))),n.n.b=0,n.a.a=h}function Qut(e,t){var n,r,s,o,h,d,v,x,_,L,P,z;if(n=u(_o(e.b,t),124),v=u(u(Ii(e.r,t),21),84),v.dc()){n.n.d=0,n.n.a=0;return}for(x=e.u.Hc((ol(),Z0)),h=0,e.A.Hc((Bl(),Hb))&&Mct(e,t),d=v.Kc(),_=null,P=0,L=0;d.Ob();)r=u(d.Pb(),111),o=Ue(ft(r.b.We((uj(),WG)))),s=r.b.rf().b,_?(z=L+_.d.a+e.w+r.d.d,h=b.Math.max(h,(S1(),Ef(z1),b.Math.abs(P-o)<=z1||P==o||isNaN(P)&&isNaN(o)?0:z/(o-P)))):e.C&&e.C.d>0&&(h=b.Math.max(h,Ett(e.C.d+r.d.d,o))),_=r,P=o,L=s;e.C&&e.C.a>0&&(z=L+e.C.a,x&&(z+=_.d.a),h=b.Math.max(h,(S1(),Ef(z1),b.Math.abs(P-1)<=z1||P==1||isNaN(P)&&isNaN(1)?0:z/(1-P)))),n.n.d=0,n.a.b=h}function Zut(e,t,n){var r,s,o,h,d,v;for(this.g=e,d=t.d.length,v=n.d.length,this.d=Me(h0,Bg,10,d+v,0,1),h=0;h0?Xre(this,this.f/this.a):A1(t.g,t.d[0]).a!=null&&A1(n.g,n.d[0]).a!=null?Xre(this,(Ue(A1(t.g,t.d[0]).a)+Ue(A1(n.g,n.d[0]).a))/2):A1(t.g,t.d[0]).a!=null?Xre(this,A1(t.g,t.d[0]).a):A1(n.g,n.d[0]).a!=null&&Xre(this,A1(n.g,n.d[0]).a)}function Cwn(e,t){var n,r,s,o,h,d,v,x,_,L;for(e.a=new iYe(tsn(RS)),r=new C(t.a);r.a=1&&(X-h>0&&L>=0?(v.n.a+=W,v.n.b+=o*h):X-h<0&&_>=0&&(v.n.a+=W*X,v.n.b+=o));e.o.a=t.a,e.o.b=t.b,Ye(e,(pt(),Ib),(Bl(),r=u(Qf(qS),9),new hh(r,u(wf(r,r.length),9),0)))}function Mwn(e,t,n,r,s,o){var h;if(!(t==null||!$ie(t,OAe,NAe)))throw J(new Ln("invalid scheme: "+t));if(!e&&!(n!=null&&pd(n,Nu(35))==-1&&n.length>0&&(zr(0,n.length),n.charCodeAt(0)!=47)))throw J(new Ln("invalid opaquePart: "+n));if(e&&!(t!=null&&gM(ZV,t.toLowerCase()))&&!(n==null||!$ie(n,KS,YS)))throw J(new Ln(ydt+n));if(e&&t!=null&&gM(ZV,t.toLowerCase())&&!Ehn(n))throw J(new Ln(ydt+n));if(!Son(r))throw J(new Ln("invalid device: "+r));if(!yan(s))throw h=s==null?"invalid segments: null":"invalid segment: "+ban(s),J(new Ln(h));if(!(o==null||pd(o,Nu(35))==-1))throw J(new Ln("invalid query: "+o))}function Dwn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le;for(kr(t,"Calculate Graph Size",1),t.n&&e&&yf(t,kf(e),(Pl(),nh)),d=O7,v=O7,o=Exe,h=Exe,L=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));L.e!=L.i.gc();)x=u(pr(L),33),q=x.i,W=x.j,le=x.g,r=x.f,s=u(Ft(x,(bi(),WO)),142),d=b.Math.min(d,q-s.b),v=b.Math.min(v,W-s.d),o=b.Math.max(o,q+le+s.c),h=b.Math.max(h,W+r+s.a);for(z=u(Ft(e,(bi(),Fb)),116),P=new Pt(d-z.b,v-z.d),_=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));_.e!=_.i.gc();)x=u(pr(_),33),Du(x,x.i-P.a),Iu(x,x.j-P.b);X=o-d+(z.b+z.c),n=h-v+(z.d+z.a),zv(e,X),Hv(e,n),t.n&&e&&yf(t,kf(e),(Pl(),nh))}function tlt(e){var t,n,r,s,o,h,d,v,x,_;for(r=new st,h=new C(e.e.a);h.a0){OH(e,n,0),n.a+=String.fromCharCode(r),s=bcn(t,o),OH(e,n,s),o+=s-1;continue}r==39?o+11)for(W=Me(Lr,Jr,25,e.b.b.c.length,15,1),L=0,x=new C(e.b.b);x.a=d&&s<=v)d<=s&&o<=v?(n[_++]=s,n[_++]=o,r+=2):d<=s?(n[_++]=s,n[_++]=v,e.b[r]=v+1,h+=2):o<=v?(n[_++]=d,n[_++]=o,r+=2):(n[_++]=d,n[_++]=v,e.b[r]=v+1);else if(vJp)&&d<10);$pe(e.c,new dp),nlt(e),yZt(e.c),Awn(e.f)}function Pwn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X;if(It(Mt(K(n,(pt(),Oy)))))for(d=new C(n.j);d.a=2){for(v=ii(n,0),h=u(ri(v),8),d=u(ri(v),8);d.a0&&ND(x,!0,(wo(),Df)),d.k==(zn(),Ls)&&SYe(x),Si(e.f,d,t)}}function jwn(e,t,n){var r,s,o,h,d,v,x,_,L,P;switch(kr(n,"Node promotion heuristic",1),e.g=t,Vmn(e),e.q=u(K(t,(pt(),Wle)),260),_=u(K(e.g,FTe),19).a,o=new JP,e.q.g){case 2:case 1:k7(e,o);break;case 3:for(e.q=(f4(),oV),k7(e,o),v=0,d=new C(e.a);d.ae.j&&(e.q=LO,k7(e,o));break;case 4:for(e.q=(f4(),oV),k7(e,o),x=0,s=new C(e.b);s.ae.k&&(e.q=MO,k7(e,o));break;case 6:P=_s(b.Math.ceil(e.f.length*_/100)),k7(e,new yp(P));break;case 5:L=_s(b.Math.ceil(e.d*_/100)),k7(e,new Xf(L));break;default:k7(e,o)}Ipn(e,t),ur(n)}function ilt(e,t,n){var r,s,o,h;this.j=e,this.e=r4e(e),this.o=this.j.e,this.i=!!this.o,this.p=this.i?u(St(n,Ya(this.o).p),214):null,s=u(K(e,(et(),eu)),21),this.g=s.Hc((mo(),Th)),this.b=new st,this.d=new Crt(this.e),h=u(K(this.j,Lk),230),this.q=vsn(t,h,this.e),this.k=new _Xe(this),o=O1(ie(re(o2t,1),yt,225,0,[this,this.d,this.k,this.q])),t==(Gv(),IO)&&!It(Mt(K(e,(pt(),My))))?(r=new s4e(this.e),o.c[o.c.length]=r,this.c=new Nwe(r,h,u(this.q,402))):t==IO&&It(Mt(K(e,(pt(),My))))?(r=new s4e(this.e),o.c[o.c.length]=r,this.c=new utt(r,h,u(this.q,402))):this.c=new sqe(t,this),it(o,this.c),jut(o,this.e),this.s=kyn(this.k)}function $wn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne;for(L=u(sj((h=ii(new Ep(t).a.d,0),new f6(h))),86),q=L?u(K(L,(Tc(),The)),86):null,s=1;L&&q;){for(v=0,Ne=0,n=L,r=q,d=0;d=e.i?(++e.i,it(e.a,ct(1)),it(e.b,_)):(r=e.c[t.p][1],gh(e.a,x,ct(u(St(e.a,x),19).a+1-r)),gh(e.b,x,Ue(ft(St(e.b,x)))+_-r*e.e)),(e.q==(f4(),LO)&&(u(St(e.a,x),19).a>e.j||u(St(e.a,x-1),19).a>e.j)||e.q==MO&&(Ue(ft(St(e.b,x)))>e.k||Ue(ft(St(e.b,x-1)))>e.k))&&(v=!1),h=new cr(fr(Xo(t).a.Kc(),new V));Vr(h);)o=u(Pr(h),17),d=o.c.i,e.f[d.p]==x&&(L=slt(e,d),s=s+u(L.a,19).a,v=v&&It(Mt(L.b)));return e.f[t.p]=x,s=s+e.c[t.p][0],new xa(ct(s),(Mn(),!!v))}function t6e(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q,W,X,le;for(L=new Mr,h=new st,Sat(e,n,e.d.fg(),h,L),Sat(e,r,e.d.gg(),h,L),e.b=.2*(W=bot(ic(new vn(null,new mn(h,16)),new GQ)),X=bot(ic(new vn(null,new mn(h,16)),new qQ)),b.Math.min(W,X)),o=0,d=0;d=2&&(le=Fot(h,!0,P),!e.e&&(e.e=new $je(e)),wcn(e.e,le,h,e.b)),wst(h,P),nmn(h),z=-1,_=new C(h);_.a<_.c.c.length;)x=u(Y(_),112),!(b.Math.abs(x.s-x.c)d)}function zwn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W;for(n=u(K(e,(pt(),bs)),98),h=e.f,o=e.d,d=h.a+o.b+o.c,v=0-o.d-e.c.b,_=h.b+o.d+o.a-e.c.b,x=new st,L=new st,s=new C(t);s.a0),u(_.a.Xb(_.c=--_.b),17));o!=r&&_.b>0;)e.a[o.p]=!0,e.a[r.p]=!0,o=(Qn(_.b>0),u(_.a.Xb(_.c=--_.b),17));_.b>0&&Ol(_)}}function ult(e,t,n){var r,s,o,h,d,v,x,_,L;if(e.a!=t.Aj())throw J(new Ln($7+t.ne()+dw));if(r=Ag((Yu(),Oa),t).$k(),r)return r.Aj().Nh().Ih(r,n);if(h=Ag(Oa,t).al(),h){if(n==null)return null;if(d=u(n,15),d.dc())return"";for(L=new bg,o=d.Kc();o.Ob();)s=o.Pb(),To(L,h.Aj().Nh().Ih(h,s)),L.a+=" ";return qte(L,L.a.length-1)}if(_=Ag(Oa,t).bl(),!_.dc()){for(x=_.Kc();x.Ob();)if(v=u(x.Pb(),148),v.wj(n))try{if(L=v.Aj().Nh().Ih(v,n),L!=null)return L}catch(P){if(P=ts(P),!we(P,102))throw J(P)}throw J(new Ln("Invalid value: '"+n+"' for datatype :"+t.ne()))}return u(t,834).Fj(),n==null?null:we(n,172)?""+u(n,172).a:pl(n)==FG?PVe(WS[0],u(n,199)):Qo(n)}function Kwn(e){var t,n,r,s,o,h,d,v,x,_;for(x=new as,d=new as,o=new C(e);o.a-1){for(s=ii(d,0);s.b!=s.d.c;)r=u(ri(s),128),r.v=h;for(;d.b!=0;)for(r=u(vse(d,0),128),n=new C(r.i);n.a0&&(n+=v.n.a+v.o.a/2,++L),q=new C(v.j);q.a0&&(n/=L),le=Me(pa,Ao,25,r.a.c.length,15,1),d=0,x=new C(r.a);x.a=d&&s<=v)d<=s&&o<=v?r+=2:d<=s?(e.b[r]=v+1,h+=2):o<=v?(n[_++]=s,n[_++]=d-1,r+=2):(n[_++]=s,n[_++]=d-1,e.b[r]=v+1,h+=2);else if(v0?s-=864e5:s+=864e5,v=new Sbe(Ua(Ou(t.q.getTime()),s))),_=new xm,x=e.a.length,o=0;o=97&&r<=122||r>=65&&r<=90){for(h=o+1;h=x)throw J(new Ln("Missing trailing '"));h+10&&n.c==0&&(!t&&(t=new st),t.c[t.c.length]=n);if(t)for(;t.c.length!=0;){if(n=u(Eg(t,0),233),n.b&&n.b.c.length>0){for(o=(!n.b&&(n.b=new st),new C(n.b));o.aYo(e,n,0))return new xa(s,n)}else if(Ue(A1(s.g,s.d[0]).a)>Ue(A1(n.g,n.d[0]).a))return new xa(s,n)}for(d=(!n.e&&(n.e=new st),n.e).Kc();d.Ob();)h=u(d.Pb(),233),v=(!h.b&&(h.b=new st),h.b),jm(0,v.c.length),RT(v.c,0,n),h.c==v.c.length&&(t.c[t.c.length]=h)}return null}function glt(e,t){var n,r,s,o,h,d,v,x,_;if(e==null)return Pu;if(v=t.a.zc(e,t),v!=null)return"[...]";for(n=new ib(io,"[","]"),s=e,o=0,h=s.length;o=14&&_<=16))?t.a._b(r)?(n.a?Yr(n.a,n.b):n.a=new Fl(n.d),ZT(n.a,"[...]")):(d=tb(r),x=new l_(t),O0(n,glt(d,x))):we(r,177)?O0(n,V1n(u(r,177))):we(r,190)?O0(n,Nhn(u(r,190))):we(r,195)?O0(n,qfn(u(r,195))):we(r,2012)?O0(n,Phn(u(r,2012))):we(r,48)?O0(n,q1n(u(r,48))):we(r,364)?O0(n,idn(u(r,364))):we(r,832)?O0(n,G1n(u(r,832))):we(r,104)&&O0(n,z1n(u(r,104))):O0(n,r==null?Pu:Qo(r));return n.a?n.e.length==0?n.a.a:n.a.a+(""+n.e):n.c}function plt(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee;for(d=d4(t,!1,!1),le=iI(d),r&&(le=BD(le)),Ee=Ue(ft(Ft(t,(K_(),Rue)))),X=(Qn(le.b!=0),u(le.a.a.c,8)),L=u(s1(le,1),8),le.b>2?(_=new st,Rs(_,new Zd(le,1,le.b)),o=Klt(_,Ee+e.a),Ce=new zse(o),Ho(Ce,t),n.c[n.c.length]=Ce):r?Ce=u(er(e.b,n0(t)),266):Ce=u(er(e.b,Kp(t)),266),v=n0(t),r&&(v=Kp(t)),h=l1n(X,v),x=Ee+e.a,h.a?(x+=b.Math.abs(X.b-L.b),W=new Pt(L.a,(L.b+X.b)/2)):(x+=b.Math.abs(X.a-L.a),W=new Pt((L.a+X.a)/2,L.b)),r?Si(e.d,t,new C3e(Ce,h,W,x)):Si(e.c,t,new C3e(Ce,h,W,x)),Si(e.b,t,Ce),q=(!t.n&&(t.n=new at(Jo,t,1,7)),t.n),z=new rr(q);z.e!=z.i.gc();)P=u(pr(z),137),s=pI(e,P,!0,0,0),n.c[n.c.length]=s}function nmn(e){var t,n,r,s,o,h,d,v,x,_;for(x=new st,d=new st,h=new C(e);h.a-1){for(o=new C(d);o.a0)&&(qR(v,b.Math.min(v.o,s.o-1)),hT(v,v.i-1),v.i==0&&(d.c[d.c.length]=v))}}function E7(e,t,n){var r,s,o,h,d,v,x;if(x=e.c,!t&&(t=FAe),e.c=t,e.Db&4&&!(e.Db&1)&&(v=new oa(e,1,2,x,e.c),n?n.Ei(v):n=v),x!=t){if(we(e.Cb,284))e.Db>>16==-10?n=u(e.Cb,284).nk(t,n):e.Db>>16==-15&&(!t&&(t=(on(),Z1)),!x&&(x=(on(),Z1)),e.Cb.nh()&&(v=new N0(e.Cb,1,13,x,t,Dg(gl(u(e.Cb,59)),e),!1),n?n.Ei(v):n=v));else if(we(e.Cb,88))e.Db>>16==-23&&(we(t,88)||(t=(on(),sf)),we(x,88)||(x=(on(),sf)),e.Cb.nh()&&(v=new N0(e.Cb,1,10,x,t,Dg(jc(u(e.Cb,26)),e),!1),n?n.Ei(v):n=v));else if(we(e.Cb,444))for(d=u(e.Cb,836),h=(!d.b&&(d.b=new rF(new Kee)),d.b),o=(r=new ob(new dg(h.a).a),new iF(r));o.a.b;)s=u($v(o.a).cd(),87),n=E7(s,nz(s,d),n)}return n}function rmn(e,t){var n,r,s,o,h,d,v,x,_,L,P;for(h=It(Mt(Ft(e,(pt(),Oy)))),P=u(Ft(e,Py),21),v=!1,x=!1,L=new rr((!e.c&&(e.c=new at(xl,e,9,9)),e.c));L.e!=L.i.gc()&&(!v||!x);){for(o=u(pr(L),118),d=0,s=Pp(B1(ie(re(q1,1),yt,20,0,[(!o.d&&(o.d=new wn(ra,o,8,5)),o.d),(!o.e&&(o.e=new wn(ra,o,7,4)),o.e)])));Vr(s)&&(r=u(Pr(s),79),_=h&&ew(r)&&It(Mt(Ft(r,Db))),n=Uut((!r.b&&(r.b=new wn(mr,r,4,7)),r.b),o)?e==us(zo(u(Te((!r.c&&(r.c=new wn(mr,r,5,8)),r.c),0),82))):e==us(zo(u(Te((!r.b&&(r.b=new wn(mr,r,4,7)),r.b),0),82))),!((_||n)&&(++d,d>1))););(d>0||P.Hc((ol(),Z0))&&(!o.n&&(o.n=new at(Jo,o,1,7)),o.n).i>0)&&(v=!0),d>1&&(x=!0)}v&&t.Fc((mo(),Th)),x&&t.Fc((mo(),oS))}function blt(e){var t,n,r,s,o,h,d,v,x,_,L,P;if(P=u(Ft(e,(bi(),Rb)),21),P.dc())return null;if(d=0,h=0,P.Hc((Bl(),tN))){for(_=u(Ft(e,BS),98),r=2,n=2,s=2,o=2,t=us(e)?u(Ft(us(e),Mw),103):u(Ft(e,Mw),103),x=new rr((!e.c&&(e.c=new at(xl,e,9,9)),e.c));x.e!=x.i.gc();)if(v=u(pr(x),118),L=u(Ft(v,t5),61),L==(ht(),uc)&&(L=$5e(v,t),So(v,t5,L)),_==(wa(),tu))switch(L.g){case 1:r=b.Math.max(r,v.i+v.g);break;case 2:n=b.Math.max(n,v.j+v.f);break;case 3:s=b.Math.max(s,v.i+v.g);break;case 4:o=b.Math.max(o,v.j+v.f)}else switch(L.g){case 1:r+=v.g+2;break;case 2:n+=v.f+2;break;case 3:s+=v.g+2;break;case 4:o+=v.f+2}d=b.Math.max(r,s),h=b.Math.max(n,o)}return sw(e,d,h,!0,!0)}function Tae(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne;for(Ce=u(zl(j$(Vi(new vn(null,new mn(t.d,16)),new Gx(n)),new iM(n)),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[(F1(),Ql)]))),15),L=Ei,_=$a,v=new C(t.b.j);v.a0,x?x&&(P=le.p,h?++P:--P,L=u(St(le.c.a,P),10),r=ont(L),z=!(Kse(r,nt,n[0])||RKe(r,nt,n[0]))):z=!0),q=!1,Ve=t.D.i,Ve&&Ve.c&&d.e&&(_=h&&Ve.p>0||!h&&Ve.p0&&(t.a+=io),yz(u(pr(d),160),t);for(t.a+=Ioe,v=new _6((!r.c&&(r.c=new wn(mr,r,5,8)),r.c));v.e!=v.i.gc();)v.e>0&&(t.a+=io),yz(u(pr(v),160),t);t.a+=")"}}function umn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z;if(o=u(K(e,(et(),Mi)),79),!!o){for(r=e.a,s=new Io(n),Ni(s,Jln(e)),z8(e.d.i,e.c.i)?(P=e.c,L=sc(ie(re(na,1),Qe,8,0,[P.n,P.a])),da(L,n)):L=D1(e.c),ks(r,L,r.a,r.a.a),z=D1(e.d),K(e,Rle)!=null&&Ni(z,u(K(e,Rle),8)),ks(r,z,r.c.b,r.c),Um(r,s),h=d4(o,!0,!0),W$(h,u(Te((!o.b&&(o.b=new wn(mr,o,4,7)),o.b),0),82)),K$(h,u(Te((!o.c&&(o.c=new wn(mr,o,5,8)),o.c),0),82)),mI(r,h),_=new C(e.b);_.a<_.c.c.length;)x=u(Y(_),70),d=u(K(x,Mi),137),zv(d,x.o.a),Hv(d,x.o.b),C1(d,x.n.a+s.a,x.n.b+s.b),So(d,(U6(),nle),Mt(K(x,nle)));v=u(K(e,(pt(),Fo)),74),v?(Um(v,s),So(o,Fo,v)):So(o,Fo,null),t==($0(),jk)?So(o,K0,jk):So(o,K0,null)}}function lmn(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce;for(z=t.c.length,P=0,L=new C(e.b);L.a=0){for(v=null,d=new Ea(_.a,x+1);d.bh?1:yv(isNaN(0),isNaN(h)))<0&&(Ef(Md),(b.Math.abs(h-1)<=Md||h==1||isNaN(h)&&isNaN(1)?0:h<1?-1:h>1?1:yv(isNaN(h),isNaN(1)))<0)&&(Ef(Md),(b.Math.abs(0-d)<=Md||d==0||isNaN(0)&&isNaN(d)?0:0d?1:yv(isNaN(0),isNaN(d)))<0)&&(Ef(Md),(b.Math.abs(d-1)<=Md||d==1||isNaN(d)&&isNaN(1)?0:d<1?-1:d>1?1:yv(isNaN(d),isNaN(1)))<0)),o)}function hmn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt;for(L=new iwe(new Se(e));L.b!=L.c.a.d;)for(_=mJe(L),d=u(_.d,56),t=u(_.e,56),h=d.Tg(),W=0,Ne=(h.i==null&&xd(h),h.i).length;W=0&&W=x.c.c.length?_=Fwe((zn(),Hs),ca):_=Fwe((zn(),ca),ca),_*=2,o=n.a.g,n.a.g=b.Math.max(o,o+(_-o)),h=n.b.g,n.b.g=b.Math.max(h,h+(_-h)),s=t}}function gmn(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve;for(Ve=PWe(e),_=new st,d=e.c.length,L=d-1,P=d+1;Ve.a.c!=0;){for(;n.b!=0;)Ee=(Qn(n.b!=0),u(bh(n,n.a.a),112)),k_(Ve.a,Ee)!=null,Ee.g=L--,H5e(Ee,t,n,r);for(;t.b!=0;)Ne=(Qn(t.b!=0),u(bh(t,t.a.a),112)),k_(Ve.a,Ne)!=null,Ne.g=P++,H5e(Ne,t,n,r);for(x=$a,le=(h=new o_(new i_(new m(Ve.a).a).b),new g(h));wM(le.a.a);){if(X=(o=dj(le.a),u(o.cd(),112)),!r&&X.b>0&&X.a<=0){_.c=Me(Yn,yt,1,0,5,1),_.c[_.c.length]=X;break}W=X.i-X.d,W>=x&&(W>x&&(_.c=Me(Yn,yt,1,0,5,1),x=W),_.c[_.c.length]=X)}_.c.length!=0&&(v=u(St(_,BH(s,_.c.length)),112),k_(Ve.a,v)!=null,v.g=P++,H5e(v,t,n,r),_.c=Me(Yn,yt,1,0,5,1))}for(Ce=e.c.length+1,q=new C(e);q.a0&&(P.d+=_.n.d,P.d+=_.d),P.a>0&&(P.a+=_.n.a,P.a+=_.d),P.b>0&&(P.b+=_.n.b,P.b+=_.d),P.c>0&&(P.c+=_.n.c,P.c+=_.d),P}function wlt(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q;for(P=n.d,L=n.c,o=new Pt(n.f.a+n.d.b+n.d.c,n.f.b+n.d.d+n.d.a),h=o.b,x=new C(e.a);x.a0&&(e.c[t.c.p][t.p].d+=vl(e.i,24)*NI*.07000000029802322-.03500000014901161,e.c[t.c.p][t.p].a=e.c[t.c.p][t.p].d/e.c[t.c.p][t.p].b)}}function xmn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X;for(q=new C(e);q.ar.d,r.d=b.Math.max(r.d,t),d&&n&&(r.d=b.Math.max(r.d,r.a),r.a=r.d+s);break;case 3:n=t>r.a,r.a=b.Math.max(r.a,t),d&&n&&(r.a=b.Math.max(r.a,r.d),r.d=r.a+s);break;case 2:n=t>r.c,r.c=b.Math.max(r.c,t),d&&n&&(r.c=b.Math.max(r.b,r.c),r.b=r.c+s);break;case 4:n=t>r.b,r.b=b.Math.max(r.b,t),d&&n&&(r.b=b.Math.max(r.b,r.c),r.c=r.b+s)}}}function Cmn(e){var t,n,r,s,o,h,d,v,x,_,L;for(x=new C(e);x.a0||_.j==Dn&&_.e.c.length-_.g.c.length<0)){t=!1;break}for(s=new C(_.g);s.a=x&&Ve>=X&&(P+=q.n.b+W.n.b+W.a.b-Ne,++d));if(n)for(h=new C(Ce.e);h.a=x&&Ve>=X&&(P+=q.n.b+W.n.b+W.a.b-Ne,++d))}d>0&&(nt+=P/d,++z)}z>0?(t.a=s*nt/z,t.g=z):(t.a=0,t.g=0)}function Amn(e,t){var n,r,s,o,h,d,v,x,_,L,P;for(s=new C(e.a.b);s.aDs||t.o==Pb&&_0&&Du(le,Ne*nt),Ve>0&&Iu(le,Ve*bt);for(B_(e.b,new sm),t=new st,d=new ob(new dg(e.c).a);d.b;)h=$v(d),r=u(h.cd(),79),n=u(h.dd(),395).a,s=d4(r,!1,!1),L=mst(n0(r),iI(s),n),mI(L,s),Ee=Dst(r),Ee&&Yo(t,Ee,0)==-1&&(t.c[t.c.length]=Ee,PYe(Ee,(Qn(L.b!=0),u(L.a.a.c,8)),n));for(X=new ob(new dg(e.d).a);X.b;)W=$v(X),r=u(W.cd(),79),n=u(W.dd(),395).a,s=d4(r,!1,!1),L=mst(Kp(r),BD(iI(s)),n),L=BD(L),mI(L,s),Ee=Ist(r),Ee&&Yo(t,Ee,0)==-1&&(t.c[t.c.length]=Ee,PYe(Ee,(Qn(L.b!=0),u(L.c.b.c,8)),n))}function klt(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt;if(n.c.length!=0){for(z=new st,P=new C(n);P.a1)for(z=new Y5e(q,Ee,r),Da(Ee,new fqe(e,z)),h.c[h.c.length]=z,L=Ee.a.ec().Kc();L.Ob();)_=u(L.Pb(),46),Au(o,_.b);if(d.a.gc()>1)for(z=new Y5e(q,d,r),Da(d,new dqe(e,z)),h.c[h.c.length]=z,L=d.a.ec().Kc();L.Ob();)_=u(L.Pb(),46),Au(o,_.b)}}function Elt(e){wv(e,new gb(gF(gv(hv(dv(fv(new lg,Dd),"ELK Radial"),'A radial layout provider which is based on the algorithm of Peter Eades published in "Drawing free trees.", published by International Institute for Advanced Study of Social Information Science, Fujitsu Limited in 1991. The radial layouter takes a tree and places the nodes in radial order around the root. The nodes of the same tree level are placed on the same radius.'),new tZ),Dd))),dt(e,Dd,iG,xt(qmt)),dt(e,Dd,py,xt(Vmt)),dt(e,Dd,E4,xt($mt)),dt(e,Dd,gk,xt(Hmt)),dt(e,Dd,dk,xt(zmt)),dt(e,Dd,P7,xt(jmt)),dt(e,Dd,CC,xt(aCe)),dt(e,Dd,B7,xt(Gmt)),dt(e,Dd,yce,xt(Ohe)),dt(e,Dd,mce,xt(Nhe)),dt(e,Dd,Lxe,xt(oCe)),dt(e,Dd,_xe,xt(kV)),dt(e,Dd,Cxe,xt(xV)),dt(e,Dd,Sxe,xt(BO)),dt(e,Dd,Axe,xt(cCe))}function i6e(e){var t;if(this.r=hJt(new ka,new Qi),this.b=new V_(u(Nr(ao),290)),this.p=new V_(u(Nr(ao),290)),this.i=new V_(u(Nr(Ogt),290)),this.e=e,this.o=new Io(e.rf()),this.D=e.Df()||It(Mt(e.We((bi(),UO)))),this.A=u(e.We((bi(),Rb)),21),this.B=u(e.We(p2),21),this.q=u(e.We(BS),98),this.u=u(e.We(Hy),21),!wfn(this.u))throw J(new M3("Invalid port label placement: "+this.u));if(this.v=It(Mt(e.We($Se))),this.j=u(e.We(J4),21),!z0n(this.j))throw J(new M3("Invalid node label placement: "+this.j));this.n=u(Q_(e,SSe),116),this.k=Ue(ft(Q_(e,RV))),this.d=Ue(ft(Q_(e,qSe))),this.w=Ue(ft(Q_(e,YSe))),this.s=Ue(ft(Q_(e,VSe))),this.t=Ue(ft(Q_(e,USe))),this.C=u(Q_(e,WSe),142),this.c=2*this.d,t=!this.B.Hc((wl(),nN)),this.f=new W_(0,t,0),this.g=new W_(1,t,0),Zee(this.f,(n1(),lu),this.g)}function Rmn(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In;for(Ee=0,q=0,z=0,P=1,Ce=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));Ce.e!=Ce.i.gc();)X=u(pr(Ce),33),P+=I0(new cr(fr(z0(X).a.Kc(),new V))),zt=X.g,q=b.Math.max(q,zt),L=X.f,z=b.Math.max(z,L),Ee+=zt*L;for(W=(!e.a&&(e.a=new at(hs,e,10,11)),e.a).i,h=Ee+2*r*r*P*W,o=b.Math.sqrt(h),v=b.Math.max(o*n,q),d=b.Math.max(o/n,z),le=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));le.e!=le.i.gc();)X=u(pr(le),33),Ut=s.b+(vl(t,26)*mC+vl(t,27)*yC)*(v-X.g),In=s.b+(vl(t,26)*mC+vl(t,27)*yC)*(d-X.f),Du(X,Ut),Iu(X,In);for(bt=v+(s.b+s.c),nt=d+(s.d+s.a),Ve=new rr((!e.a&&(e.a=new at(hs,e,10,11)),e.a));Ve.e!=Ve.i.gc();)for(Ne=u(pr(Ve),33),_=new cr(fr(z0(Ne).a.Kc(),new V));Vr(_);)x=u(Pr(_),79),iC(x)||Fyn(x,t,bt,nt);bt+=s.b+s.c,nt+=s.d+s.a,sw(e,bt,nt,!1,!0)}function xz(e){var t,n,r,s,o,h,d,v,x,_,L;if(e==null)throw J(new gd(Pu));if(x=e,o=e.length,v=!1,o>0&&(t=(zr(0,e.length),e.charCodeAt(0)),(t==45||t==43)&&(e=e.substr(1),--o,v=t==45)),o==0)throw J(new gd(cw+x+'"'));for(;e.length>0&&(zr(0,e.length),e.charCodeAt(0)==48);)e=e.substr(1),--o;if(o>(hut(),O0t)[10])throw J(new gd(cw+x+'"'));for(s=0;s0&&(L=-parseInt(e.substr(0,r),10),e=e.substr(r),o-=r,n=!1);o>=h;){if(r=parseInt(e.substr(0,h),10),e=e.substr(h),o-=h,n)n=!1;else{if(Mc(L,d)<0)throw J(new gd(cw+x+'"'));L=ja(L,_)}L=Wp(L,r)}if(Mc(L,0)>0)throw J(new gd(cw+x+'"'));if(!v&&(L=M8(L),Mc(L,0)<0))throw J(new gd(cw+x+'"'));return L}function s6e(e,t){ZWe();var n,r,s,o,h,d,v;if(this.a=new Y2e(this),this.b=e,this.c=t,this.f=Bne(Po((Yu(),Oa),t)),this.f.dc())if((d=q3e(Oa,e))==t)for(this.e=!0,this.d=new st,this.f=new xx,this.f.Fc(_b),u(wz(wD(Oa,Gl(e)),""),26)==e&&this.f.Fc(f_(Oa,Gl(e))),s=iae(Oa,e).Kc();s.Ob();)switch(r=u(s.Pb(),170),Dv(Po(Oa,r))){case 4:{this.d.Fc(r);break}case 5:{this.f.Gc(Bne(Po(Oa,r)));break}}else if(ho(),u(t,66).Oj())for(this.e=!0,this.f=null,this.d=new st,h=0,v=(e.i==null&&xd(e),e.i).length;h=0&&h0&&(u(_o(e.b,t),124).a.b=n)}function Fmn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le;for(kr(t,"Comment pre-processing",1),n=0,v=new C(e.a);v.a0&&(v=(zr(0,t.length),t.charCodeAt(0)),v!=64)){if(v==37&&(L=t.lastIndexOf("%"),x=!1,L!=0&&(L==P-1||(x=(zr(L+1,t.length),t.charCodeAt(L+1)==46))))){if(h=t.substr(1,L-1),Ee=an("%",h)?null:o6e(h),r=0,x)try{r=Wl(t.substr(L+2),$a,Ei)}catch(Ne){throw Ne=ts(Ne),we(Ne,127)?(d=Ne,J(new D$(d))):J(Ne)}for(X=Hme(e.Wg());X.Ob();)if(q=aH(X),we(q,510)&&(s=u(q,590),Ce=s.d,(Ee==null?Ce==null:an(Ee,Ce))&&r--==0))return s;return null}if(_=t.lastIndexOf("."),z=_==-1?t:t.substr(0,_),n=0,_!=-1)try{n=Wl(t.substr(_+1),$a,Ei)}catch(Ne){if(Ne=ts(Ne),we(Ne,127))z=t;else throw J(Ne)}for(z=an("%",z)?null:o6e(z),W=Hme(e.Wg());W.Ob();)if(q=aH(W),we(q,191)&&(o=u(q,191),le=o.ne(),(z==null?le==null:an(z,le))&&n--==0))return o;return null}return Kut(e,t)}function Hmn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn;for(nt=new st,q=new C(e.b);q.a=t.length)return{done:!0};var s=t[r++];return{value:[s,n.get(s)],done:!1}}}},Upn()||(e.prototype.createObject=function(){return{}},e.prototype.get=function(t){return this.obj[":"+t]},e.prototype.set=function(t,n){this.obj[":"+t]=n},e.prototype[coe]=function(t){delete this.obj[":"+t]},e.prototype.keys=function(){var t=[];for(var n in this.obj)n.charCodeAt(0)==58&&t.push(n.substring(1));return t}),e}function Gmn(e){j5e();var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X;if(e==null)return null;if(L=e.length*8,L==0)return"";for(d=L%24,z=L/24|0,P=d!=0?z+1:z,o=null,o=Me(Sh,Td,25,P*4,15,1),x=0,_=0,t=0,n=0,r=0,h=0,s=0,v=0;v>24,x=(t&3)<<24>>24,q=t&-128?(t>>2^192)<<24>>24:t>>2<<24>>24,W=n&-128?(n>>4^240)<<24>>24:n>>4<<24>>24,X=r&-128?(r>>6^252)<<24>>24:r>>6<<24>>24,o[h++]=Zg[q],o[h++]=Zg[W|x<<4],o[h++]=Zg[_<<2|X],o[h++]=Zg[r&63];return d==8?(t=e[s],x=(t&3)<<24>>24,q=t&-128?(t>>2^192)<<24>>24:t>>2<<24>>24,o[h++]=Zg[q],o[h++]=Zg[x<<4],o[h++]=61,o[h++]=61):d==16&&(t=e[s],n=e[s+1],_=(n&15)<<24>>24,x=(t&3)<<24>>24,q=t&-128?(t>>2^192)<<24>>24:t>>2<<24>>24,W=n&-128?(n>>4^240)<<24>>24:n>>4<<24>>24,o[h++]=Zg[q],o[h++]=Zg[W|x<<4],o[h++]=Zg[_<<2],o[h++]=61),jh(o,0,o.length)}function qmn(e,t){var n,r,s,o,h,d,v;if(e.e==0&&e.p>0&&(e.p=-(e.p-1)),e.p>$a&&$we(t,e.p-e2),h=t.q.getDate(),tD(t,1),e.k>=0&&Cen(t,e.k),e.c>=0?tD(t,e.c):e.k>=0?(v=new oye(t.q.getFullYear()-e2,t.q.getMonth(),35),r=35-v.q.getDate(),tD(t,b.Math.min(r,h))):tD(t,h),e.f<0&&(e.f=t.q.getHours()),e.b>0&&e.f<12&&(e.f+=12),RWt(t,e.f==24&&e.g?0:e.f),e.j>=0&&Rnn(t,e.j),e.n>=0&&trn(t,e.n),e.i>=0&&Qqe(t,Ua(ja(eI(Ou(t.q.getTime()),Pg),Pg),e.i)),e.a&&(s=new kF,$we(s,s.q.getFullYear()-e2-80),fte(Ou(t.q.getTime()),Ou(s.q.getTime()))&&$we(t,s.q.getFullYear()-e2+100)),e.d>=0){if(e.c==-1)n=(7+e.d-t.q.getDay())%7,n>3&&(n-=7),d=t.q.getMonth(),tD(t,t.q.getDate()+n),t.q.getMonth()!=d&&tD(t,t.q.getDate()+(n>0?-7:7));else if(t.q.getDay()!=e.d)return!1}return e.o>$a&&(o=t.q.getTimezoneOffset(),Qqe(t,Ua(Ou(t.q.getTime()),(e.o-o)*60*Pg))),!0}function Clt(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne;if(s=K(t,(et(),Mi)),!!we(s,239)){for(q=u(s,33),W=t.e,P=new Io(t.c),o=t.d,P.a+=o.b,P.b+=o.d,Ne=u(Ft(q,(pt(),Jq)),174),Vu(Ne,(wl(),$V))&&(z=u(Ft(q,qTe),116),jge(z,o.a),wee(z,o.d),$ge(z,o.b),Vge(z,o.c)),n=new st,_=new C(t.a);_.a<_.c.c.length;)for(v=u(Y(_),10),we(K(v,Mi),239)?Xmn(v,P):we(K(v,Mi),186)&&!W&&(r=u(K(v,Mi),118),Ce=vut(t,v,r.g,r.f),C1(r,Ce.a,Ce.b)),le=new C(v.j);le.a0&&it(e.p,_),it(e.o,_);t-=r,z=v+t,x+=t*e.e,gh(e.a,d,ct(z)),gh(e.b,d,x),e.j=b.Math.max(e.j,z),e.k=b.Math.max(e.k,x),e.d+=t,t+=W}}function ht(){ht=pe;var e;uc=new MM(EC,0),An=new MM(Oz,1),$n=new MM(woe,2),xr=new MM(moe,3),Dn=new MM(yoe,4),Q1=(hn(),new Kx((e=u(Qf(ao),9),new hh(e,u(wf(e,e.length),9),0)))),Bf=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[]))),_h=Sg(Ui($n,ie(re(ao,1),Dc,61,0,[]))),eh=Sg(Ui(xr,ie(re(ao,1),Dc,61,0,[]))),Jh=Sg(Ui(Dn,ie(re(ao,1),Dc,61,0,[]))),Ru=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[xr]))),wu=Sg(Ui($n,ie(re(ao,1),Dc,61,0,[Dn]))),Rf=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[Dn]))),ll=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[$n]))),th=Sg(Ui(xr,ie(re(ao,1),Dc,61,0,[Dn]))),Ch=Sg(Ui($n,ie(re(ao,1),Dc,61,0,[xr]))),hl=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[$n,Dn]))),Bu=Sg(Ui($n,ie(re(ao,1),Dc,61,0,[xr,Dn]))),Fu=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[xr,Dn]))),Ju=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[$n,xr]))),nu=Sg(Ui(An,ie(re(ao,1),Dc,61,0,[$n,xr,Dn])))}function Mlt(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee;if(t.b!=0){for(z=new as,d=null,q=null,r=_s(b.Math.floor(b.Math.log(t.b)*b.Math.LOG10E)+1),v=0,Ee=ii(t,0);Ee.b!=Ee.d.c;)for(le=u(ri(Ee),86),je(q)!==je(K(le,(Tc(),AS)))&&(q=Hr(K(le,AS)),v=0),q!=null?d=q+YXe(v++,r):d=YXe(v++,r),Ye(le,AS,d),X=(s=ii(new Ep(le).a.d,0),new f6(s));vF(X.a);)W=u(ri(X.a),188).c,ks(z,W,z.c.b,z.c),Ye(W,AS,d);for(P=new Mr,h=0;h=v){Qn(le.b>0),le.a.Xb(le.c=--le.b);break}else W.a>x&&(s?(Rs(s.b,W.b),s.a=b.Math.max(s.a,W.a),Ol(le)):(it(W.b,L),W.c=b.Math.min(W.c,x),W.a=b.Math.max(W.a,v),s=W));s||(s=new dHe,s.c=x,s.a=v,Dm(le,s),it(s.b,L))}for(d=t.b,_=0,X=new C(r);X.ad?1:0:(e.b&&(e.b._b(o)&&(s=u(e.b.xc(o),19).a),e.b._b(v)&&(d=u(e.b.xc(v),19).a)),sd?1:0)):t.e.c.length!=0&&n.g.c.length!=0?1:-1}function Kmn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt;for(kr(t,yft,1),W=new st,nt=new st,x=new C(e.b);x.a0&&(Ee-=z),X5e(h,Ee),_=0,P=new C(h.a);P.a0),d.a.Xb(d.c=--d.b)),v=.4*r*_,!o&&d.bt.d.c){if(z=e.c[t.a.d],X=e.c[L.a.d],z==X)continue;Cf(bf(pf(vf(gf(new Nh,1),100),z),X))}}}}}function o6e(e){kae();var t,n,r,s,o,h,d,v;if(e==null)return null;if(s=pd(e,Nu(37)),s<0)return e;for(v=new Fl(e.substr(0,s)),t=Me(el,A4,25,4,15,1),d=0,r=0,h=e.length;ss+2&&die((zr(s+1,e.length),e.charCodeAt(s+1)),DAe,IAe)&&die((zr(s+2,e.length),e.charCodeAt(s+2)),DAe,IAe))if(n=kQt((zr(s+1,e.length),e.charCodeAt(s+1)),(zr(s+2,e.length),e.charCodeAt(s+2))),s+=2,r>0?(n&192)==128?t[d++]=n<<24>>24:r=0:n>=128&&((n&224)==192?(t[d++]=n<<24>>24,r=2):(n&240)==224?(t[d++]=n<<24>>24,r=3):(n&248)==240&&(t[d++]=n<<24>>24,r=4)),r>0){if(d==r){switch(d){case 2:{Bp(v,((t[0]&31)<<6|t[1]&63)&Ss);break}case 3:{Bp(v,((t[0]&15)<<12|(t[1]&63)<<6|t[2]&63)&Ss);break}}d=0,r=0}}else{for(o=0;o0){if(h+r>e.length)return!1;d=ZH(e.substr(0,h+r),t)}else d=ZH(e,t);switch(o){case 71:return d=u4(e,h,ie(re(mt,1),Qe,2,6,[fht,dht]),t),s.e=d,!0;case 77:return Ppn(e,t,s,d,h);case 76:return Bpn(e,t,s,d,h);case 69:return S1n(e,t,h,s);case 99:return A1n(e,t,h,s);case 97:return d=u4(e,h,ie(re(mt,1),Qe,2,6,["AM","PM"]),t),s.b=d,!0;case 121:return Rpn(e,t,h,d,n,s);case 100:return d<=0?!1:(s.c=d,!0);case 83:return d<0?!1:Hon(d,h,t[0],s);case 104:d==12&&(d=0);case 75:case 72:return d<0?!1:(s.f=d,s.g=!1,!0);case 107:return d<0?!1:(s.f=d,s.g=!0,!0);case 109:return d<0?!1:(s.j=d,!0);case 115:return d<0?!1:(s.n=d,!0);case 90:if(hnt&&(q.c=nt-q.b),it(h.d,new Lne(q,Rye(h,q))),Ce=t==An?b.Math.max(Ce,W.b+x.b.rf().b):b.Math.min(Ce,W.b));for(Ce+=t==An?e.t:-e.t,Ee=Jye((h.e=Ce,h)),Ee>0&&(u(_o(e.b,t),124).a.b=Ee),_=P.Kc();_.Ob();)x=u(_.Pb(),111),!(!x.c||x.c.d.c.length<=0)&&(q=x.c.i,q.c-=x.e.a,q.d-=x.e.b)}function tyn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z;for(t=new Mr,v=new rr(e);v.e!=v.i.gc();){for(d=u(pr(v),33),n=new Ys,Si(jue,d,n),z=new Rc,s=u(zl(new vn(null,new Sv(new cr(fr(hI(d).a.Kc(),new V)))),yKe(z,eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[(F1(),Ql)])))),83),Vet(n,u(s.xc((Mn(),!0)),14),new _t),r=u(zl(Vi(u(s.xc(!1),15).Lc(),new hp),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[Ql]))),15),h=r.Kc();h.Ob();)o=u(h.Pb(),79),P=Dst(o),P&&(x=u(hc($o(t.f,P)),21),x||(x=Qot(P),gu(t.f,P,x)),no(n,x));for(s=u(zl(new vn(null,new Sv(new cr(fr(z0(d).a.Kc(),new V)))),yKe(z,eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[Ql])))),83),Vet(n,u(s.xc(!0),14),new Gt),r=u(zl(Vi(u(s.xc(!1),15).Lc(),new ff),eb(new vt,new Dt,new Hn,ie(re(yl,1),tt,132,0,[Ql]))),15),L=r.Kc();L.Ob();)_=u(L.Pb(),79),P=Ist(_),P&&(x=u(hc($o(t.f,P)),21),x||(x=Qot(P),gu(t.f,P,x)),no(n,x))}}function nyn(e,t){pae();var n,r,s,o,h,d,v,x,_,L,P,z,q,W;if(v=Mc(e,0)<0,v&&(e=M8(e)),Mc(e,0)==0)switch(t){case 0:return"0";case 1:return L7;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return z=new Tp,t<0?z.a+="0E+":z.a+="0E",z.a+=t==$a?"2147483648":""+-t,z.a}_=18,L=Me(Sh,Td,25,_+1,15,1),n=_,W=e;do x=W,W=eI(W,10),L[--n]=Or(Ua(48,Wp(x,ja(W,10))))&Ss;while(Mc(W,0)!=0);if(s=Wp(Wp(Wp(_,n),t),1),t==0)return v&&(L[--n]=45),jh(L,n,_-n);if(t>0&&Mc(s,-6)>=0){if(Mc(s,0)>=0){for(o=n+Or(s),d=_-1;d>=o;d--)L[d+1]=L[d];return L[++o]=46,v&&(L[--n]=45),jh(L,n,_-n+1)}for(h=2;fte(h,Ua(M8(s),1));h++)L[--n]=48;return L[--n]=46,L[--n]=48,v&&(L[--n]=45),jh(L,n,_-n)}return q=n+1,r=_,P=new xm,v&&(P.a+="-"),r-q>=1?(Bp(P,L[n]),P.a+=".",P.a+=jh(L,n+1,_-n-1)):P.a+=jh(L,n,_-n),P.a+="E",Mc(s,0)>0&&(P.a+="+"),P.a+=""+d_(s),P.a}function ryn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z;if(e.e.a.$b(),e.f.a.$b(),e.c.c=Me(Yn,yt,1,0,5,1),e.i.c=Me(Yn,yt,1,0,5,1),e.g.a.$b(),t)for(h=new C(t.a);h.a=1&&(Ve-x>0&&q>=0?(Du(L,L.i+Ne),Iu(L,L.j+v*x)):Ve-x<0&&z>=0&&(Du(L,L.i+Ne*Ve),Iu(L,L.j+v)));return So(e,(bi(),Rb),(Bl(),o=u(Qf(qS),9),new hh(o,u(wf(o,o.length),9),0))),new Pt(nt,_)}function Olt(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q;if(z=us(zo(u(Te((!e.b&&(e.b=new wn(mr,e,4,7)),e.b),0),82))),q=us(zo(u(Te((!e.c&&(e.c=new wn(mr,e,5,8)),e.c),0),82))),L=z==q,d=new Fa,t=u(Ft(e,(hH(),rAe)),74),t&&t.b>=2){if((!e.a&&(e.a=new at(os,e,6,6)),e.a).i==0)n=(pv(),s=new ld,s),Br((!e.a&&(e.a=new at(os,e,6,6)),e.a),n);else if((!e.a&&(e.a=new at(os,e,6,6)),e.a).i>1)for(P=new _6((!e.a&&(e.a=new at(os,e,6,6)),e.a));P.e!=P.i.gc();)J_(P);mI(t,u(Te((!e.a&&(e.a=new at(os,e,6,6)),e.a),0),202))}if(L)for(r=new rr((!e.a&&(e.a=new at(os,e,6,6)),e.a));r.e!=r.i.gc();)for(n=u(pr(r),202),x=new rr((!n.a&&(n.a=new Bs(ef,n,5)),n.a));x.e!=x.i.gc();)v=u(pr(x),469),d.a=b.Math.max(d.a,v.a),d.b=b.Math.max(d.b,v.b);for(h=new rr((!e.n&&(e.n=new at(Jo,e,1,7)),e.n));h.e!=h.i.gc();)o=u(pr(h),137),_=u(Ft(o,FS),8),_&&C1(o,_.a,_.b),L&&(d.a=b.Math.max(d.a,o.i+o.g),d.b=b.Math.max(d.b,o.j+o.f));return d}function iyn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt;for(Ee=t.c.length,s=new p4(e.a,n,null,null),zt=Me(pa,Ao,25,Ee,15,1),W=Me(pa,Ao,25,Ee,15,1),q=Me(pa,Ao,25,Ee,15,1),X=0,d=0;dzt[v]&&(X=v),L=new C(e.a.b);L.az&&(o&&(q2(nt,P),q2(zt,ct(x.b-1))),ki=n.b,Ws+=P+t,P=0,_=b.Math.max(_,n.b+n.c+dr)),Du(d,ki),Iu(d,Ws),_=b.Math.max(_,ki+dr+n.c),P=b.Math.max(P,L),ki+=dr+t;if(_=b.Math.max(_,r),Rn=Ws+P+n.a,RnSd,Ut=b.Math.abs(P.b-q.b)>Sd,(!n&&zt&&Ut||n&&(zt||Ut))&&ci(X.a,Ne)),no(X.a,r),r.b==0?P=Ne:P=(Qn(r.b!=0),u(r.c.b.c,8)),xsn(z,L,W),xtt(s)==bt&&(Ya(bt.i)!=s.a&&(W=new Fa,_4e(W,Ya(bt.i),Ce)),Ye(X,Rle,W)),Ufn(z,X,Ce),_.a.zc(z,_);Va(X,Ve),ba(X,bt)}for(x=_.a.ec().Kc();x.Ob();)v=u(x.Pb(),17),Va(v,null),ba(v,null);ur(t)}function Nlt(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne;if(e.gc()==1)return u(e.Xb(0),231);if(e.gc()<=0)return new k$;for(s=e.Kc();s.Ob();){for(n=u(s.Pb(),231),q=0,_=Ei,L=Ei,v=$a,x=$a,z=new C(n.e);z.ad&&(Ee=0,Ne+=h+le,h=0),q2n(W,n,Ee,Ne),t=b.Math.max(t,Ee+X.a),h=b.Math.max(h,X.b),Ee+=X.a+le;return W}function Plt(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q;switch(_=new Gu,e.a.g){case 3:P=u(K(t.e,(et(),Mb)),15),z=u(K(t.j,Mb),15),q=u(K(t.f,Mb),15),n=u(K(t.e,q4),15),r=u(K(t.j,q4),15),s=u(K(t.f,q4),15),h=new st,Rs(h,P),z.Jc(new XX),Rs(h,we(z,152)?H6(u(z,152)):we(z,131)?u(z,131).a:we(z,54)?new lv(z):new Em(z)),Rs(h,q),o=new st,Rs(o,n),Rs(o,we(r,152)?H6(u(r,152)):we(r,131)?u(r,131).a:we(r,54)?new lv(r):new Em(r)),Rs(o,s),Ye(t.f,Mb,h),Ye(t.f,q4,o),Ye(t.f,z9e,t.f),Ye(t.e,Mb,null),Ye(t.e,q4,null),Ye(t.j,Mb,null),Ye(t.j,q4,null);break;case 1:no(_,t.e.a),ci(_,t.i.n),no(_,nb(t.j.a)),ci(_,t.a.n),no(_,t.f.a);break;default:no(_,t.e.a),no(_,nb(t.j.a)),no(_,t.f.a)}Rh(t.f.a),no(t.f.a,_),Va(t.f,t.e.c),d=u(K(t.e,(pt(),Fo)),74),x=u(K(t.j,Fo),74),v=u(K(t.f,Fo),74),(d||x||v)&&(L=new Gu,Kve(L,v),Kve(L,x),Kve(L,d),Ye(t.f,Fo,L)),Va(t.j,null),ba(t.j,null),Va(t.e,null),ba(t.e,null),No(t.a,null),No(t.i,null),t.g&&Plt(e,t.g)}function cyn(e){j5e();var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X;if(e==null||(o=O$(e),q=Yan(o),q%4!=0))return null;if(W=q/4|0,W==0)return Me(el,A4,25,0,15,1);for(L=null,t=0,n=0,r=0,s=0,h=0,d=0,v=0,x=0,z=0,P=0,_=0,L=Me(el,A4,25,W*3,15,1);z>4)<<24>>24,L[P++]=((n&15)<<4|r>>2&15)<<24>>24,L[P++]=(r<<6|s)<<24>>24}return!fM(h=o[_++])||!fM(d=o[_++])?null:(t=J1[h],n=J1[d],v=o[_++],x=o[_++],J1[v]==-1||J1[x]==-1?v==61&&x==61?n&15?null:(X=Me(el,A4,25,z*3+1,15,1),Hc(L,0,X,0,z*3),X[P]=(t<<2|n>>4)<<24>>24,X):v!=61&&x==61?(r=J1[v],r&3?null:(X=Me(el,A4,25,z*3+2,15,1),Hc(L,0,X,0,z*3),X[P++]=(t<<2|n>>4)<<24>>24,X[P]=((n&15)<<4|r>>2&15)<<24>>24,X)):null:(r=J1[v],s=J1[x],L[P++]=(t<<2|n>>4)<<24>>24,L[P++]=((n&15)<<4|r>>2&15)<<24>>24,L[P++]=(r<<6|s)<<24>>24,L))}function uyn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve;for(kr(t,yft,1),q=u(K(e,(pt(),K0)),218),s=new C(e.b);s.a=2){for(W=!0,P=new C(o.j),n=u(Y(P),11),z=null;P.a0&&(s=u(St(X.c.a,nt-1),10),h=e.i[s.p],zt=b.Math.ceil(j3(e.n,s,X)),o=Ve.a.e-X.d.d-(h.a.e+s.o.b+s.d.a)-zt),x=gs,nt0&&bt.a.e.e-bt.a.a-(bt.b.e.e-bt.b.a)<0,q=Ee.a.e.e-Ee.a.a-(Ee.b.e.e-Ee.b.a)<0&&bt.a.e.e-bt.a.a-(bt.b.e.e-bt.b.a)>0,z=Ee.a.e.e+Ee.b.abt.b.e.e+bt.a.a,Ne=0,!W&&!q&&(P?o+L>0?Ne=L:x-r>0&&(Ne=r):z&&(o+d>0?Ne=d:x-Ce>0&&(Ne=Ce))),Ve.a.e+=Ne,Ve.b&&(Ve.d.e+=Ne),!1))}function Rlt(e,t,n){var r,s,o,h,d,v,x,_,L,P;if(r=new fh(t.qf().a,t.qf().b,t.rf().a,t.rf().b),s=new T6,e.c)for(h=new C(t.wf());h.ax&&(r.a+=$Ve(Me(Sh,Td,25,-x,15,1))),r.a+="Is",pd(v,Nu(32))>=0)for(s=0;s=r.o.b/2}else Ce=!L;Ce?(le=u(K(r,(et(),Mk)),15),le?P?o=le:(s=u(K(r,_k),15),s?le.gc()<=s.gc()?o=le:o=s:(o=new st,Ye(r,_k,o))):(o=new st,Ye(r,Mk,o))):(s=u(K(r,(et(),_k)),15),s?L?o=s:(le=u(K(r,Mk),15),le?s.gc()<=le.gc()?o=s:o=le:(o=new st,Ye(r,Mk,o))):(o=new st,Ye(r,_k,o))),o.Fc(e),Ye(e,(et(),Bq),n),t.d==n?(ba(t,null),n.e.c.length+n.g.c.length==0&&rc(n,null),ran(n)):(Va(t,null),n.e.c.length+n.g.c.length==0&&rc(n,null)),Rh(t.a)}function dyn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki;for(Ce=new Ea(e.b,0),_=t.Kc(),q=0,x=u(_.Pb(),19).a,Ve=0,n=new Ys,bt=new C0;Ce.b=e.a&&(r=Zbn(e,Ce),_=b.Math.max(_,r.b),Ne=b.Math.max(Ne,r.d),it(d,new xa(Ce,r)));for(zt=new st,x=0;x<_;++x)Om(zt,0,(Qn(X.b>0),X.a.Xb(X.c=--X.b),Ut=new Bh(e.b),Dm(X,Ut),Qn(X.b0?(x=0,X&&(x+=d),x+=(Ut-1)*h,Ee&&(x+=d),zt&&Ee&&(x=b.Math.max(x,Qgn(Ee,h,Ce,bt))),x0){for(P=_<100?null:new _p(_),x=new Vme(t),q=x.g,le=Me(Lr,Jr,25,_,15,1),r=0,Ne=new jv(_),s=0;s=0;)if(z!=null?Ci(z,q[v]):je(z)===je(q[v])){le.length<=r&&(X=le,le=Me(Lr,Jr,25,2*le.length,15,1),Hc(X,0,le,0,r)),le[r++]=s,Br(Ne,q[v]);break e}if(z=z,je(z)===je(d))break}}if(x=Ne,q=Ne.g,_=r,r>le.length&&(X=le,le=Me(Lr,Jr,25,r,15,1),Hc(X,0,le,0,r)),r>0){for(Ee=!0,o=0;o=0;)J6(e,le[h]);if(r!=_){for(s=_;--s>=r;)J6(x,s);X=le,le=Me(Lr,Jr,25,r,15,1),Hc(X,0,le,0,r)}t=x}}}else for(t=Yun(e,t),s=e.i;--s>=0;)t.Hc(e.g[s])&&(J6(e,s),Ee=!0);if(Ee){if(le!=null){for(n=t.gc(),L=n==1?x_(e,4,t.Kc().Pb(),null,le[0],W):x_(e,6,t,le,le[0],W),P=n<100?null:new _p(n),s=t.Kc();s.Ob();)z=s.Pb(),P=Ybe(e,u(z,72),P);P?(P.Ei(L),P.Fi()):_i(e.e,L)}else{for(P=cYt(t.gc()),s=t.Kc();s.Ob();)z=s.Pb(),P=Ybe(e,u(z,72),P);P&&P.Fi()}return!0}else return!1}function wyn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee;for(n=new hit(t),n.a||tbn(t),x=n2n(t),v=new Nv,X=new sct,W=new C(t.a);W.a0||n.o==K1&&s0?(L=u(St(P.c.a,h-1),10),zt=j3(e.b,P,L),X=P.n.b-P.d.d-(L.n.b+L.o.b+L.d.a+zt)):X=P.n.b-P.d.d,x=b.Math.min(X,x),hh?w7(e,t,n):w7(e,n,t),sh?1:0}return r=u(K(t,(et(),Nc)),19).a,o=u(K(n,Nc),19).a,r>o?w7(e,t,n):w7(e,n,t),ro?1:0}function c6e(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce;if(It(Mt(Ft(t,(bi(),PV)))))return hn(),hn(),bo;if(x=(!t.a&&(t.a=new at(hs,t,10,11)),t.a).i!=0,L=adn(t),_=!L.dc(),x||_){if(s=u(Ft(t,xE),149),!s)throw J(new M3("Resolved algorithm is not set; apply a LayoutAlgorithmResolver before computing layout."));if(Ce=D2e(s,(g7(),KV)),Urt(t),!x&&_&&!Ce)return hn(),hn(),bo;if(v=new st,je(Ft(t,Q4))===je((F0(),Wg))&&(D2e(s,UV)||D2e(s,VV)))for(z=Act(e,t),q=new as,no(q,(!t.a&&(t.a=new at(hs,t,10,11)),t.a));q.b!=0;)P=u(q.b==0?null:(Qn(q.b!=0),bh(q,q.a.a)),33),Urt(P),le=je(Ft(P,Q4))===je(jS),le||J2(P,PS)&&!Vwe(s,Ft(P,xE))?(d=c6e(e,P,n,r),Rs(v,d),So(P,Q4,jS),Vct(P)):no(q,(!P.a&&(P.a=new at(hs,P,10,11)),P.a));else for(z=(!t.a&&(t.a=new at(hs,t,10,11)),t.a).i,h=new rr((!t.a&&(t.a=new at(hs,t,10,11)),t.a));h.e!=h.i.gc();)o=u(pr(h),33),d=c6e(e,o,n,r),Rs(v,d),Vct(o);for(X=new C(v);X.a=0?z=Y6(d):z=zD(Y6(d)),e.Ye(gE,z)),x=new Fa,P=!1,e.Xe(Cw)?(ybe(x,u(e.We(Cw),8)),P=!0):WWt(x,h.a/2,h.b/2),z.g){case 4:Ye(_,vu,(mh(),l2)),Ye(_,Fq,(sb(),F4)),_.o.b=h.b,W<0&&(_.o.a=-W),Vs(L,(ht(),$n)),P||(x.a=h.a),x.a-=h.a;break;case 2:Ye(_,vu,(mh(),Ly)),Ye(_,Fq,(sb(),aE)),_.o.b=h.b,W<0&&(_.o.a=-W),Vs(L,(ht(),Dn)),P||(x.a=0);break;case 1:Ye(_,Lb,(P0(),$4)),_.o.a=h.a,W<0&&(_.o.b=-W),Vs(L,(ht(),xr)),P||(x.b=h.b),x.b-=h.b;break;case 3:Ye(_,Lb,(P0(),Tk)),_.o.a=h.a,W<0&&(_.o.b=-W),Vs(L,(ht(),An)),P||(x.b=0)}if(ybe(L.n,x),Ye(_,Cw,x),t==$b||t==p0||t==tu){if(q=0,t==$b&&e.Xe(zg))switch(z.g){case 1:case 2:q=u(e.We(zg),19).a;break;case 3:case 4:q=-u(e.We(zg),19).a}else switch(z.g){case 4:case 2:q=o.b,t==p0&&(q/=s.b);break;case 1:case 3:q=o.a,t==p0&&(q/=s.a)}Ye(_,Ew,q)}return Ye(_,vc,z),_}function kyn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut;if(n=Ue(ft(K(e.a.j,(pt(),xTe)))),n<-1||!e.a.i||A6(u(K(e.a.o,bs),98))||ac(e.a.o,(ht(),$n)).gc()<2&&ac(e.a.o,Dn).gc()<2)return!0;if(e.a.c.Rf())return!1;for(Ve=0,Ne=0,Ee=new st,v=e.a.e,x=0,_=v.length;x<_;++x){for(d=v[x],P=d,z=0,W=P.length;z=n}function xyn(){qpe();function e(r){var s=this;this.dispatch=function(o){var h=o.data;switch(h.cmd){case"algorithms":var d=Zye((hn(),new T(new E1(x2.b))));r.postMessage({id:h.id,data:d});break;case"categories":var v=Zye((hn(),new T(new E1(x2.c))));r.postMessage({id:h.id,data:v});break;case"options":var x=Zye((hn(),new T(new E1(x2.d))));r.postMessage({id:h.id,data:x});break;case"register":Lwn(h.algorithms),r.postMessage({id:h.id});break;case"layout":uvn(h.graph,h.layoutOptions||{},h.options||{}),r.postMessage({id:h.id,data:h.graph});break}},this.saveDispatch=function(o){try{s.dispatch(o)}catch(h){r.postMessage({id:o.data.id,error:h})}}}function t(r){var s=this;this.dispatcher=new e({postMessage:function(o){s.onmessage({data:o})}}),this.postMessage=function(o){setTimeout(function(){s.dispatcher.saveDispatch({data:o})},0)}}if(typeof document===foe&&typeof self!==foe){var n=new e(self);self.onmessage=n.saveDispatch}else typeof p!==foe&&p.exports&&(Object.defineProperty(w,"__esModule",{value:!0}),p.exports={default:t,Worker:t})}function Eyn(e){e.N||(e.N=!0,e.b=gc(e,0),ls(e.b,0),ls(e.b,1),ls(e.b,2),e.bb=gc(e,1),ls(e.bb,0),ls(e.bb,1),e.fb=gc(e,2),ls(e.fb,3),ls(e.fb,4),zi(e.fb,5),e.qb=gc(e,3),ls(e.qb,0),zi(e.qb,1),zi(e.qb,2),ls(e.qb,3),ls(e.qb,4),zi(e.qb,5),ls(e.qb,6),e.a=di(e,4),e.c=di(e,5),e.d=di(e,6),e.e=di(e,7),e.f=di(e,8),e.g=di(e,9),e.i=di(e,10),e.j=di(e,11),e.k=di(e,12),e.n=di(e,13),e.o=di(e,14),e.p=di(e,15),e.q=di(e,16),e.s=di(e,17),e.r=di(e,18),e.t=di(e,19),e.u=di(e,20),e.v=di(e,21),e.w=di(e,22),e.B=di(e,23),e.A=di(e,24),e.C=di(e,25),e.D=di(e,26),e.F=di(e,27),e.G=di(e,28),e.H=di(e,29),e.J=di(e,30),e.I=di(e,31),e.K=di(e,32),e.M=di(e,33),e.L=di(e,34),e.P=di(e,35),e.Q=di(e,36),e.R=di(e,37),e.S=di(e,38),e.T=di(e,39),e.U=di(e,40),e.V=di(e,41),e.X=di(e,42),e.W=di(e,43),e.Y=di(e,44),e.Z=di(e,45),e.$=di(e,46),e._=di(e,47),e.ab=di(e,48),e.cb=di(e,49),e.db=di(e,50),e.eb=di(e,51),e.gb=di(e,52),e.hb=di(e,53),e.ib=di(e,54),e.jb=di(e,55),e.kb=di(e,56),e.lb=di(e,57),e.mb=di(e,58),e.nb=di(e,59),e.ob=di(e,60),e.pb=di(e,61))}function Tyn(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne;if(Ce=0,t.f.a==0)for(X=new C(e);X.ax&&(xn(x,t.c.length),u(t.c[x],200)).a.c.length==0;)Au(t,(xn(x,t.c.length),t.c[x]));if(!v){--o;continue}if(lbn(t,_,s,v,P,n,x,r)){L=!0;continue}if(P){if(vvn(t,_,s,v,n,x,r)){L=!0;continue}else if(_ye(_,s)){s.c=!0,L=!0;continue}}else if(_ye(_,s)){s.c=!0,L=!0;continue}if(L)continue}if(_ye(_,s)){s.c=!0,L=!0,v&&(v.k=!1);continue}else $H(s.q)}return L}function Sae(e,t,n,r,s,o,h){var d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki,Ws;for(W=0,In=0,x=new C(e.b);x.aW&&(o&&(q2(nt,z),q2(zt,ct(_.b-1)),it(e.d,q),d.c=Me(Yn,yt,1,0,5,1)),ki=n.b,Ws+=z+t,z=0,L=b.Math.max(L,n.b+n.c+dr)),d.c[d.c.length]=v,iit(v,ki,Ws),L=b.Math.max(L,ki+dr+n.c),z=b.Math.max(z,P),ki+=dr+t,q=v;if(Rs(e.a,d),it(e.d,u(St(d,d.c.length-1),157)),L=b.Math.max(L,r),Rn=Ws+z+n.a,Rn1&&(h=b.Math.min(h,b.Math.abs(u(s1(d.a,1),8).b-_.b)))));else for(W=new C(t.j);W.as&&(o=P.a-s,h=Ei,r.c=Me(Yn,yt,1,0,5,1),s=P.a),P.a>=s&&(r.c[r.c.length]=d,d.a.b>1&&(h=b.Math.min(h,b.Math.abs(u(s1(d.a,d.a.b-2),8).b-P.b)))));if(r.c.length!=0&&o>t.o.a/2&&h>t.o.b/2){for(z=new $c,rc(z,t),Vs(z,(ht(),An)),z.n.a=t.o.a/2,le=new $c,rc(le,t),Vs(le,xr),le.n.a=t.o.a/2,le.n.b=t.o.b,v=new C(r);v.a=x.b?Va(d,le):Va(d,z)):(x=u(yQt(d.a),8),X=d.a.b==0?D1(d.c):u(fj(d.a),8),X.b>=x.b?ba(d,le):ba(d,z)),L=u(K(d,(pt(),Fo)),74),L&&Xm(L,x,!0);t.n.a=s-t.o.a/2}}function Lyn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki,Ws,rh,af;if(In=null,dr=t,Rn=GQe(e,jQe(n),dr),I_(Rn,D0(dr,Id)),ki=u(K3(e.g,tk(M0(dr,Bce))),33),P=M0(dr,"sourcePort"),r=null,P&&(r=tk(P)),Ws=u(K3(e.j,r),118),!ki)throw d=i7(dr),q="An edge must have a source node (edge id: '"+d,W=q+z7,J(new dd(W));if(Ws&&!md(L1(Ws),ki))throw v=D0(dr,Id),X="The source port of an edge must be a port of the edge's source node (edge id: '"+v,le=X+z7,J(new dd(le));if(zt=(!Rn.b&&(Rn.b=new wn(mr,Rn,4,7)),Rn.b),o=null,Ws?o=Ws:o=ki,Br(zt,o),rh=u(K3(e.g,tk(M0(dr,o8e))),33),z=M0(dr,"targetPort"),s=null,z&&(s=tk(z)),af=u(K3(e.j,s),118),!rh)throw L=i7(dr),Ce="An edge must have a target node (edge id: '"+L,Ee=Ce+z7,J(new dd(Ee));if(af&&!md(L1(af),rh))throw x=D0(dr,Id),Ne="The target port of an edge must be a port of the edge's target node (edge id: '"+x,Ve=Ne+z7,J(new dd(Ve));if(Ut=(!Rn.c&&(Rn.c=new wn(mr,Rn,5,8)),Rn.c),h=null,af?h=af:h=rh,Br(Ut,h),(!Rn.b&&(Rn.b=new wn(mr,Rn,4,7)),Rn.b).i==0||(!Rn.c&&(Rn.c=new wn(mr,Rn,5,8)),Rn.c).i==0)throw _=D0(dr,Id),nt=R1t+_,bt=nt+z7,J(new dd(bt));return KH(dr,Rn),m0n(dr,Rn),In=pie(e,dr,Rn),In}function zlt(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In;return L=Ibn(_u(e,(ht(),Q1)),t),q=s4(_u(e,Bf),t),Ne=s4(_u(e,eh),t),zt=HH(_u(e,Jh),t),P=HH(_u(e,_h),t),Ce=s4(_u(e,Rf),t),W=s4(_u(e,ll),t),nt=s4(_u(e,th),t),Ve=s4(_u(e,Ch),t),Ut=HH(_u(e,wu),t),le=s4(_u(e,Ru),t),Ee=s4(_u(e,hl),t),bt=s4(_u(e,Bu),t),In=HH(_u(e,Fu),t),z=HH(_u(e,Ju),t),X=s4(_u(e,nu),t),n=Q3(ie(re(pa,1),Ao,25,15,[Ce.a,zt.a,nt.a,In.a])),r=Q3(ie(re(pa,1),Ao,25,15,[q.a,L.a,Ne.a,X.a])),s=le.a,o=Q3(ie(re(pa,1),Ao,25,15,[W.a,P.a,Ve.a,z.a])),x=Q3(ie(re(pa,1),Ao,25,15,[Ce.b,q.b,W.b,Ee.b])),v=Q3(ie(re(pa,1),Ao,25,15,[zt.b,L.b,P.b,X.b])),_=Ut.b,d=Q3(ie(re(pa,1),Ao,25,15,[nt.b,Ne.b,Ve.b,bt.b])),_g(_u(e,Q1),n+s,x+_),_g(_u(e,nu),n+s,x+_),_g(_u(e,Bf),n+s,0),_g(_u(e,eh),n+s,x+_+v),_g(_u(e,Jh),0,x+_),_g(_u(e,_h),n+s+r,x+_),_g(_u(e,ll),n+s+r,0),_g(_u(e,th),0,x+_+v),_g(_u(e,Ch),n+s+r,x+_+v),_g(_u(e,wu),0,x),_g(_u(e,Ru),n,0),_g(_u(e,Bu),0,x+_+v),_g(_u(e,Ju),n+s+r,0),h=new Fa,h.a=Q3(ie(re(pa,1),Ao,25,15,[n+r+s+o,Ut.a,Ee.a,bt.a])),h.b=Q3(ie(re(pa,1),Ao,25,15,[x+v+_+d,le.b,In.b,z.b])),h}function Myn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X;for(W=new st,P=new C(e.d.b);P.as.d.d+s.d.a?_.f.d=!0:(_.f.d=!0,_.f.a=!0))),r.b!=r.d.c&&(t=n);_&&(o=u(er(e.f,h.d.i),57),t.bo.d.d+o.d.a?_.f.d=!0:(_.f.d=!0,_.f.a=!0))}for(d=new cr(fr(Xo(z).a.Kc(),new V));Vr(d);)h=u(Pr(d),17),h.a.b!=0&&(t=u(fj(h.a),8),h.d.j==(ht(),An)&&(X=new hC(t,new Pt(t.a,s.d.d),s,h),X.f.a=!0,X.a=h.d,W.c[W.c.length]=X),h.d.j==xr&&(X=new hC(t,new Pt(t.a,s.d.d+s.d.a),s,h),X.f.d=!0,X.a=h.d,W.c[W.c.length]=X))}return W}function Dyn(e,t,n){var r,s,o,h,d,v,x,_,L;if(kr(n,"Network simplex node placement",1),e.e=t,e.n=u(K(t,(et(),G4)),304),Kvn(e),Ahn(e),ms(ic(new vn(null,new mn(e.e.b,16)),new hQ),new Oje(e)),ms(Vi(ic(Vi(ic(new vn(null,new mn(e.e.b,16)),new N9),new kQ),new xQ),new EQ),new Ije(e)),It(Mt(K(e.e,(pt(),gS))))&&(h=Kc(n,1),kr(h,"Straight Edges Pre-Processing",1),dmn(e),ur(h)),uun(e.f),o=u(K(t,vS),19).a*e.f.a.c.length,sae(Rpe(Fpe(bne(e.f),o),!1),Kc(n,1)),e.d.a.gc()!=0){for(h=Kc(n,1),kr(h,"Flexible Where Space Processing",1),d=u(Tv(Fj(Cu(new vn(null,new mn(e.f.a,16)),new fQ),new sQ)),19).a,v=u(Tv(Rj(Cu(new vn(null,new mn(e.f.a,16)),new dQ),new aQ)),19).a,x=v-d,_=Ev(new z2,e.f),L=Ev(new z2,e.f),Cf(bf(pf(gf(vf(new Nh,2e4),x),_),L)),ms(Vi(Vi(Rne(e.i),new gQ),new pQ),new MYe(d,_,x,L)),s=e.d.a.ec().Kc();s.Ob();)r=u(s.Pb(),213),r.g=1;sae(Rpe(Fpe(bne(e.f),o),!1),Kc(h,1)),ur(h)}It(Mt(K(t,gS)))&&(h=Kc(n,1),kr(h,"Straight Edges Post-Processing",1),w1n(e),ur(h)),Qwn(e),e.e=null,e.f=null,e.i=null,e.c=null,sl(e.k),e.j=null,e.a=null,e.o=null,e.d.a.$b(),ur(n)}function Iyn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve;for(d=new C(e.a.b);d.a0)if(r=L.gc(),x=_s(b.Math.floor((r+1)/2))-1,s=_s(b.Math.ceil((r+1)/2))-1,t.o==K1)for(_=s;_>=x;_--)t.a[Ne.p]==Ne&&(W=u(L.Xb(_),46),q=u(W.a,10),!_0(n,W.b)&&z>e.b.e[q.p]&&(t.a[q.p]=Ne,t.g[Ne.p]=t.g[q.p],t.a[Ne.p]=t.g[Ne.p],t.f[t.g[Ne.p].p]=(Mn(),!!(It(t.f[t.g[Ne.p].p])&Ne.k==(zn(),ca))),z=e.b.e[q.p]));else for(_=x;_<=s;_++)t.a[Ne.p]==Ne&&(le=u(L.Xb(_),46),X=u(le.a,10),!_0(n,le.b)&&z=q&&(Ce>q&&(z.c=Me(Yn,yt,1,0,5,1),q=Ce),z.c[z.c.length]=h);z.c.length!=0&&(P=u(St(z,BH(t,z.c.length)),128),Rn.a.Bc(P)!=null,P.s=W++,s5e(P,Ut,nt),z.c=Me(Yn,yt,1,0,5,1))}for(Ne=e.c.length+1,d=new C(e);d.aIn.s&&(Ol(n),Au(In.i,r),r.c>0&&(r.a=In,it(In.t,r),r.b=bt,it(bt.i,r)))}function u6e(e){var t,n,r,s,o;switch(t=e.c,t){case 11:return e.Ml();case 12:return e.Ol();case 14:return e.Ql();case 15:return e.Tl();case 16:return e.Rl();case 17:return e.Ul();case 21:return mi(e),yi(),yi(),nA;case 10:switch(e.a){case 65:return e.yl();case 90:return e.Dl();case 122:return e.Kl();case 98:return e.El();case 66:return e.zl();case 60:return e.Jl();case 62:return e.Hl()}}switch(o=Syn(e),t=e.c,t){case 3:return e.Zl(o);case 4:return e.Xl(o);case 5:return e.Yl(o);case 0:if(e.a==123&&e.d=48&&t<=57){for(r=t-48;s=48&&t<=57;)if(r=r*10+t-48,r<0)throw J(new $r(Ur((jr(),d8e))))}else throw J(new $r(Ur((jr(),hdt))));if(n=r,t==44){if(s>=e.j)throw J(new $r(Ur((jr(),ddt))));if((t=Ma(e.i,s++))>=48&&t<=57){for(n=t-48;s=48&&t<=57;)if(n=n*10+t-48,n<0)throw J(new $r(Ur((jr(),d8e))));if(r>n)throw J(new $r(Ur((jr(),gdt))))}else n=-1}if(t!=125)throw J(new $r(Ur((jr(),fdt))));e.sl(s)?(o=(yi(),yi(),new $m(9,o)),e.d=s+1):(o=(yi(),yi(),new $m(3,o)),e.d=s),o.dm(r),o.cm(n),mi(e)}}return o}function Glt(e,t,n,r,s){var o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn;for(W=new su(t.b),Ne=new su(t.b),P=new su(t.b),zt=new su(t.b),X=new su(t.b),bt=ii(t,0);bt.b!=bt.d.c;)for(Ve=u(ri(bt),11),d=new C(Ve.g);d.a0,le=Ve.g.c.length>0,x&&le?P.c[P.c.length]=Ve:x?W.c[W.c.length]=Ve:le&&(Ne.c[Ne.c.length]=Ve);for(q=new C(W);q.a1)for(q=new _6((!e.a&&(e.a=new at(os,e,6,6)),e.a));q.e!=q.i.gc();)J_(q);for(h=u(Te((!e.a&&(e.a=new at(os,e,6,6)),e.a),0),202),X=ki,ki>Ve+Ne?X=Ve+Ne:kint+W?le=nt+W:WsVe-Ne&&Xnt-W&&leki+dr?zt=ki+dr:VeWs+bt?Ut=Ws+bt:ntki-dr&&ztWs-bt&&Utn&&(P=n-1),z=pN+vl(t,24)*NI*L-L/2,z<0?z=1:z>r&&(z=r-1),s=(pv(),v=new pp,v),z$(s,P),G$(s,z),Br((!h.a&&(h.a=new Bs(ef,h,5)),h.a),s)}function pt(){pt=pe,Xle=(bi(),c3t),QTe=u3t,SO=zSe,Mf=l3t,Ok=GSe,Sw=h3t,Ry=qSe,bE=VSe,vE=USe,Qle=RV,Aw=jb,Zle=f3t,bS=YSe,eV=Fk,CO=(f6e(),svt),V4=avt,Nb=ovt,U4=cvt,Vvt=new fo(BV,ct(0)),pE=nvt,XTe=rvt,Ik=ivt,s_e=Mvt,ZTe=hvt,JTe=gvt,ehe=kvt,e_e=vvt,t_e=mvt,tV=Nvt,the=Dvt,r_e=Cvt,n_e=Tvt,i_e=Avt,_w=Xbt,pS=Qbt,Vle=gbt,ATe=bbt,VTe=new kv(12),qTe=new fo(Fb,VTe),_Te=($0(),_E),K0=new fo(wSe,_Te),Ny=new fo(kl,0),Uvt=new fo(ufe,ct(1)),Hq=new fo(Bk,N7),Ob=PV,bs=BS,gE=t5,Fvt=VO,Bd=Jyt,Iy=Q4,Wvt=new fo(lfe,(Mn(),!0)),Oy=UO,Db=nfe,Ib=Rb,Jq=p2,Yle=NV,TTe=(wo(),f0),Zl=new fo(Mw,TTe),Tw=J4,Qq=SSe,Py=Hy,qvt=cfe,KTe=$Se,WTe=(n4(),ZO),new fo(PSe,WTe),Hvt=ife,zvt=sfe,Gvt=afe,$vt=rfe,Jle=lvt,jTe=Fbt,Wle=Rbt,vS=uvt,vu=Mbt,Dy=abt,dS=sbt,My=U2t,kTe=W2t,Hle=Q2t,_O=K2t,zle=rbt,$Te=jbt,HTe=$bt,NTe=Tbt,Zq=evt,Kle=Gbt,Ule=mbt,GTe=Kbt,STe=fbt,qle=dbt,$le=IV,zTe=Hbt,Gq=j2t,wTe=F2t,zq=R2t,DTe=xbt,MTe=kbt,ITe=Ebt,fE=e5,Fo=Z4,Hg=ySe,Rd=tfe,Gle=efe,xTe=J2t,zg=ofe,fS=n3t,Kq=r3t,Cw=RSe,UTe=i3t,dE=s3t,BTe=Ibt,RTe=Nbt,By=Rk,Fle=B2t,FTe=Bbt,Wq=ubt,Uq=cbt,Xq=WO,PTe=Sbt,gS=Vbt,AO=WSe,ETe=obt,YTe=tvt,CTe=lbt,jvt=Lbt,Rvt=tbt,OTe=TSe,Yq=Dbt,Vq=nbt,h2=V2t,yTe=G2t,qq=H2t,mTe=z2t,jle=q2t,Dk=$2t,LTe=ybt}function Lae(e,t){pae();var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki;if(zt=e.e,q=e.d,s=e.a,zt==0)switch(t){case 0:return"0";case 1:return L7;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return nt=new Tp,t<0?nt.a+="0E+":nt.a+="0E",nt.a+=-t,nt.a}if(Ee=q*10+1+7,Ne=Me(Sh,Td,25,Ee+1,15,1),n=Ee,q==1)if(d=s[0],d<0){ki=qs(d,yo);do W=ki,ki=eI(ki,10),Ne[--n]=48+Or(Wp(W,ja(ki,10)))&Ss;while(Mc(ki,0)!=0)}else{ki=d;do W=ki,ki=ki/10|0,Ne[--n]=48+(W-ki*10)&Ss;while(ki!=0)}else{In=Me(Lr,Jr,25,q,15,1),dr=q,Hc(s,0,In,0,dr);e:for(;;){for(bt=0,x=dr-1;x>=0;x--)Rn=Ua(A0(bt,32),qs(In[x],yo)),le=Ghn(Rn),In[x]=Or(le),bt=Or(Np(le,32));Ce=Or(bt),X=n;do Ne[--n]=48+Ce%10&Ss;while((Ce=Ce/10|0)!=0&&n!=0);for(r=9-X+n,v=0;v0;v++)Ne[--n]=48;for(L=dr-1;In[L]==0;L--)if(L==0)break e;dr=L+1}for(;Ne[n]==48;)++n}if(z=zt<0,h=Ee-n-t-1,t==0)return z&&(Ne[--n]=45),jh(Ne,n,Ee-n);if(t>0&&h>=-6){if(h>=0){for(_=n+h,P=Ee-1;P>=_;P--)Ne[P+1]=Ne[P];return Ne[++_]=46,z&&(Ne[--n]=45),jh(Ne,n,Ee-n+1)}for(L=2;L<-h+1;L++)Ne[--n]=48;return Ne[--n]=46,Ne[--n]=48,z&&(Ne[--n]=45),jh(Ne,n,Ee-n)}return Ut=n+1,o=Ee,Ve=new xm,z&&(Ve.a+="-"),o-Ut>=1?(Bp(Ve,Ne[n]),Ve.a+=".",Ve.a+=jh(Ne,n+1,Ee-n-1)):Ve.a+=jh(Ne,n,Ee-n),Ve.a+="E",h>0&&(Ve.a+="+"),Ve.a+=""+h,Ve.a}function Ult(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt;switch(e.c=t,e.g=new Mr,n=(Tm(),new ym(e.c)),r=new nr(n),Uye(r),Ee=Hr(Ft(e.c,(nI(),HCe))),v=u(Ft(e.c,Vhe),316),Ve=u(Ft(e.c,Uhe),429),h=u(Ft(e.c,FCe),482),Ne=u(Ft(e.c,qhe),430),e.j=Ue(ft(Ft(e.c,Eyt))),d=e.a,v.g){case 0:d=e.a;break;case 1:d=e.b;break;case 2:d=e.i;break;case 3:d=e.e;break;case 4:d=e.f;break;default:throw J(new Ln(lG+(v.f!=null?v.f:""+v.g)))}if(e.d=new gXe(d,Ve,h),Ye(e.d,(H8(),JC),Mt(Ft(e.c,kyt))),e.d.c=It(Mt(Ft(e.c,jCe))),Jj(e.c).i==0)return e.d;for(L=new rr(Jj(e.c));L.e!=L.i.gc();){for(_=u(pr(L),33),z=_.g/2,P=_.f/2,nt=new Pt(_.i+z,_.j+P);Il(e.g,nt);)Lm(nt,(b.Math.random()-.5)*Sd,(b.Math.random()-.5)*Sd);W=u(Ft(_,(bi(),WO)),142),X=new DXe(nt,new fh(nt.a-z-e.j/2-W.b,nt.b-P-e.j/2-W.d,_.g+e.j+(W.b+W.c),_.f+e.j+(W.d+W.a))),it(e.d.i,X),Si(e.g,nt,new xa(X,_))}switch(Ne.g){case 0:if(Ee==null)e.d.d=u(St(e.d.i,0),65);else for(Ce=new C(e.d.i);Ce.a1&&ks(_,le,_.c.b,_.c),F$(s)));le=Ce}return _}function jyn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki,Ws,rh,af,ed;for(kr(n,"Greedy cycle removal",1),Ee=t.a,ed=Ee.c.length,e.a=Me(Lr,Jr,25,ed,15,1),e.c=Me(Lr,Jr,25,ed,15,1),e.b=Me(Lr,Jr,25,ed,15,1),x=0,le=new C(Ee);le.a0?dr+1:1);for(h=new C(nt.g);h.a0?dr+1:1)}e.c[x]==0?ci(e.e,W):e.a[x]==0&&ci(e.f,W),++x}for(q=-1,z=1,L=new st,e.d=u(K(t,(et(),Lk)),230);ed>0;){for(;e.e.b!=0;)Ws=u(mne(e.e),10),e.b[Ws.p]=q--,I5e(e,Ws),--ed;for(;e.f.b!=0;)rh=u(mne(e.f),10),e.b[rh.p]=z++,I5e(e,rh),--ed;if(ed>0){for(P=$a,Ce=new C(Ee);Ce.a=P&&(Ne>P&&(L.c=Me(Yn,yt,1,0,5,1),P=Ne),L.c[L.c.length]=W));_=e.Zf(L),e.b[_.p]=z++,I5e(e,_),--ed}}for(ki=Ee.c.length+1,x=0;xe.b[af]&&(iw(r,!0),Ye(t,yO,(Mn(),!0)));e.a=null,e.c=null,e.b=null,Rh(e.f),Rh(e.e),ur(n)}function Klt(e,t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le;for(r=new st,d=new st,X=t/2,z=e.gc(),s=u(e.Xb(0),8),le=u(e.Xb(1),8),q=Gse(s.a,s.b,le.a,le.b,X),it(r,(xn(0,q.c.length),u(q.c[0],8))),it(d,(xn(1,q.c.length),u(q.c[1],8))),x=2;x=0;v--)ci(n,(xn(v,h.c.length),u(h.c[v],8)));return n}function $yn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z;if(h=!0,L=null,r=null,s=null,t=!1,z=e4t,x=null,o=null,d=0,v=Yie(e,d,OAe,NAe),v=0&&an(e.substr(d,2),"//")?(d+=2,v=Yie(e,d,KS,YS),r=e.substr(d,v-d),d=v):L!=null&&(d==e.length||(zr(d,e.length),e.charCodeAt(d)!=47))&&(h=!1,v=lbe(e,Nu(35),d),v==-1&&(v=e.length),r=e.substr(d,v-d),d=v);if(!n&&d0&&Ma(_,_.length-1)==58&&(s=_,d=v)),d=e.j){e.a=-1,e.c=1;return}if(t=Ma(e.i,e.d++),e.a=t,e.b==1){switch(t){case 92:if(r=10,e.d>=e.j)throw J(new $r(Ur((jr(),vG))));e.a=Ma(e.i,e.d++);break;case 45:(e.e&512)==512&&e.d=e.j||Ma(e.i,e.d)!=63)break;if(++e.d>=e.j)throw J(new $r(Ur((jr(),Wce))));switch(t=Ma(e.i,e.d++),t){case 58:r=13;break;case 61:r=14;break;case 33:r=15;break;case 91:r=19;break;case 62:r=18;break;case 60:if(e.d>=e.j)throw J(new $r(Ur((jr(),Wce))));if(t=Ma(e.i,e.d++),t==61)r=16;else if(t==33)r=17;else throw J(new $r(Ur((jr(),W1t))));break;case 35:for(;e.d=e.j)throw J(new $r(Ur((jr(),vG))));e.a=Ma(e.i,e.d++);break;default:r=0}e.c=r}function zyn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr;if(bt=u(K(e,(pt(),bs)),98),bt!=(wa(),X1)&&bt!=w2){for(q=e.b,z=q.c.length,_=new su((ql(z+2,Nae),R$(Ua(Ua(5,z+2),(z+2)/10|0)))),W=new su((ql(z+2,Nae),R$(Ua(Ua(5,z+2),(z+2)/10|0)))),it(_,new Mr),it(_,new Mr),it(W,new st),it(W,new st),nt=new st,t=0;t=Ve||!ucn(le,r))&&(r=HXe(t,_)),No(le,r),o=new cr(fr(Xo(le).a.Kc(),new V));Vr(o);)s=u(Pr(o),17),!e.a[s.p]&&(W=s.c.i,--e.e[W.p],e.e[W.p]==0&&S8(l7(z,W)));for(x=_.c.length-1;x>=0;--x)it(t.b,(xn(x,_.c.length),u(_.c[x],29)));t.a.c=Me(Yn,yt,1,0,5,1),ur(n)}function Ylt(e){var t,n,r,s,o,h,d,v,x;for(e.b=1,mi(e),t=null,e.c==0&&e.a==94?(mi(e),t=(yi(),yi(),new Hl(4)),Yc(t,0,q7),d=new Hl(4)):d=(yi(),yi(),new Hl(4)),s=!0;(x=e.c)!=1;){if(x==0&&e.a==93&&!s){t&&(bC(t,d),d=t);break}if(n=e.a,r=!1,x==10)switch(n){case 100:case 68:case 119:case 87:case 115:case 83:ly(d,m7(n)),r=!0;break;case 105:case 73:case 99:case 67:n=(ly(d,m7(n)),-1),n<0&&(r=!0);break;case 112:case 80:if(v=$4e(e,n),!v)throw J(new $r(Ur((jr(),Kce))));ly(d,v),r=!0;break;default:n=y5e(e)}else if(x==24&&!s){if(t&&(bC(t,d),d=t),o=Ylt(e),bC(d,o),e.c!=0||e.a!=93)throw J(new $r(Ur((jr(),rdt))));break}if(mi(e),!r){if(x==0){if(n==91)throw J(new $r(Ur((jr(),h8e))));if(n==93)throw J(new $r(Ur((jr(),f8e))));if(n==45&&!s&&e.a!=93)throw J(new $r(Ur((jr(),Yce))))}if(e.c!=0||e.a!=45||n==45&&s)Yc(d,n,n);else{if(mi(e),(x=e.c)==1)throw J(new $r(Ur((jr(),wG))));if(x==0&&e.a==93)Yc(d,n,n),Yc(d,45,45);else{if(x==0&&e.a==93||x==24)throw J(new $r(Ur((jr(),Yce))));if(h=e.a,x==0){if(h==91)throw J(new $r(Ur((jr(),h8e))));if(h==93)throw J(new $r(Ur((jr(),f8e))));if(h==45)throw J(new $r(Ur((jr(),Yce))))}else x==10&&(h=y5e(e));if(mi(e),n>h)throw J(new $r(Ur((jr(),adt))));Yc(d,n,h)}}}s=!1}if(e.c==1)throw J(new $r(Ur((jr(),wG))));return l4(d),gC(d),e.b=0,mi(e),d}function qyn(e){Rr(e.c,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#decimal"])),Rr(e.d,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#integer"])),Rr(e.e,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#boolean"])),Rr(e.f,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EBoolean",gi,"EBoolean:Object"])),Rr(e.i,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#byte"])),Rr(e.g,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#hexBinary"])),Rr(e.j,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EByte",gi,"EByte:Object"])),Rr(e.n,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EChar",gi,"EChar:Object"])),Rr(e.t,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#double"])),Rr(e.u,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EDouble",gi,"EDouble:Object"])),Rr(e.F,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#float"])),Rr(e.G,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EFloat",gi,"EFloat:Object"])),Rr(e.I,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#int"])),Rr(e.J,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EInt",gi,"EInt:Object"])),Rr(e.N,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#long"])),Rr(e.O,Zr,ie(re(mt,1),Qe,2,6,[Ha,"ELong",gi,"ELong:Object"])),Rr(e.Z,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#short"])),Rr(e.$,Zr,ie(re(mt,1),Qe,2,6,[Ha,"EShort",gi,"EShort:Object"])),Rr(e._,Zr,ie(re(mt,1),Qe,2,6,[Ha,"http://www.w3.org/2001/XMLSchema#string"]))}function Vyn(e){var t,n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr;if(e.c.length==1)return xn(0,e.c.length),u(e.c[0],135);if(e.c.length<=0)return new E$;for(v=new C(e);v.aL&&(Rn=0,dr+=_+bt,_=0),tgn(Ve,h,Rn,dr),t=b.Math.max(t,Rn+nt.a),_=b.Math.max(_,nt.b),Rn+=nt.a+bt;for(Ne=new Mr,n=new Mr,Ut=new C(e);Ut.aqse(o))&&(L=o);for(!L&&(L=(xn(0,X.c.length),u(X.c[0],180))),W=new C(t.b);W.a=-1900?1:0,n>=4?Yr(e,ie(re(mt,1),Qe,2,6,[fht,dht])[d]):Yr(e,ie(re(mt,1),Qe,2,6,["BC","AD"])[d]);break;case 121:jcn(e,n,r);break;case 77:G2n(e,n,r);break;case 107:v=s.q.getHours(),v==0?e0(e,24,n):e0(e,v,n);break;case 83:lgn(e,n,s);break;case 69:_=r.q.getDay(),n==5?Yr(e,ie(re(mt,1),Qe,2,6,["S","M","T","W","T","F","S"])[_]):n==4?Yr(e,ie(re(mt,1),Qe,2,6,[Kae,Yae,Xae,Qae,Zae,Jae,eoe])[_]):Yr(e,ie(re(mt,1),Qe,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[_]);break;case 97:s.q.getHours()>=12&&s.q.getHours()<24?Yr(e,ie(re(mt,1),Qe,2,6,["AM","PM"])[1]):Yr(e,ie(re(mt,1),Qe,2,6,["AM","PM"])[0]);break;case 104:L=s.q.getHours()%12,L==0?e0(e,12,n):e0(e,L,n);break;case 75:P=s.q.getHours()%12,e0(e,P,n);break;case 72:z=s.q.getHours(),e0(e,z,n);break;case 99:q=r.q.getDay(),n==5?Yr(e,ie(re(mt,1),Qe,2,6,["S","M","T","W","T","F","S"])[q]):n==4?Yr(e,ie(re(mt,1),Qe,2,6,[Kae,Yae,Xae,Qae,Zae,Jae,eoe])[q]):n==3?Yr(e,ie(re(mt,1),Qe,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[q]):e0(e,q,1);break;case 76:W=r.q.getMonth(),n==5?Yr(e,ie(re(mt,1),Qe,2,6,["J","F","M","A","M","J","J","A","S","O","N","D"])[W]):n==4?Yr(e,ie(re(mt,1),Qe,2,6,[Rae,Fae,jae,$ae,ak,Hae,zae,Gae,qae,Vae,Uae,Wae])[W]):n==3?Yr(e,ie(re(mt,1),Qe,2,6,["Jan","Feb","Mar","Apr",ak,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"])[W]):e0(e,W+1,n);break;case 81:X=r.q.getMonth()/3|0,n<4?Yr(e,ie(re(mt,1),Qe,2,6,["Q1","Q2","Q3","Q4"])[X]):Yr(e,ie(re(mt,1),Qe,2,6,["1st quarter","2nd quarter","3rd quarter","4th quarter"])[X]);break;case 100:le=r.q.getDate(),e0(e,le,n);break;case 109:x=s.q.getMinutes(),e0(e,x,n);break;case 115:h=s.q.getSeconds(),e0(e,h,n);break;case 122:n<4?Yr(e,o.c[0]):Yr(e,o.c[1]);break;case 118:Yr(e,o.b);break;case 90:n<3?Yr(e,J1n(o)):n==3?Yr(e,ndn(o)):Yr(e,rdn(o.a));break;default:return!1}return!0}function h6e(e,t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki;if(Bct(t),v=u(Te((!t.b&&(t.b=new wn(mr,t,4,7)),t.b),0),82),_=u(Te((!t.c&&(t.c=new wn(mr,t,5,8)),t.c),0),82),d=zo(v),x=zo(_),h=(!t.a&&(t.a=new at(os,t,6,6)),t.a).i==0?null:u(Te((!t.a&&(t.a=new at(os,t,6,6)),t.a),0),202),bt=u(er(e.a,d),10),Rn=u(er(e.a,x),10),zt=null,dr=null,we(v,186)&&(nt=u(er(e.a,v),299),we(nt,11)?zt=u(nt,11):we(nt,10)&&(bt=u(nt,10),zt=u(St(bt.j,0),11))),we(_,186)&&(In=u(er(e.a,_),299),we(In,11)?dr=u(In,11):we(In,10)&&(Rn=u(In,10),dr=u(St(Rn.j,0),11))),!bt||!Rn)throw J(new CT("The source or the target of edge "+t+" could not be found. This usually happens when an edge connects a node laid out by ELK Layered to a node in another level of hierarchy laid out by either another instance of ELK Layered or another layout algorithm alltogether. The former can be solved by setting the hierarchyHandling option to INCLUDE_CHILDREN."));for(W=new Iv,Ho(W,t),Ye(W,(et(),Mi),t),Ye(W,(pt(),Fo),null),z=u(K(r,eu),21),bt==Rn&&z.Fc((mo(),cS)),zt||(Ve=(vo(),hu),Ut=null,h&&R3(u(K(bt,bs),98))&&(Ut=new Pt(h.j,h.k),qQe(Ut,nD(t)),yZe(Ut,n),Vm(x,d)&&(Ve=ul,Ni(Ut,bt.n))),zt=Nut(bt,Ut,Ve,r)),dr||(Ve=(vo(),ul),ki=null,h&&R3(u(K(Rn,bs),98))&&(ki=new Pt(h.b,h.c),qQe(ki,nD(t)),yZe(ki,n)),dr=Nut(Rn,ki,Ve,Ya(Rn))),Va(W,zt),ba(W,dr),(zt.e.c.length>1||zt.g.c.length>1||dr.e.c.length>1||dr.g.c.length>1)&&z.Fc((mo(),oS)),P=new rr((!t.n&&(t.n=new at(Jo,t,1,7)),t.n));P.e!=P.i.gc();)if(L=u(pr(P),137),!It(Mt(Ft(L,Ob)))&&L.a)switch(X=Mie(L),it(W.b,X),u(K(X,Rd),272).g){case 1:case 2:z.Fc((mo(),cE));break;case 0:z.Fc((mo(),oE)),Ye(X,Rd,(P1(),EE))}if(o=u(K(r,dS),314),le=u(K(r,Zq),315),s=o==(V6(),vO)||le==(X_(),ohe),h&&(!h.a&&(h.a=new Bs(ef,h,5)),h.a).i!=0&&s){for(Ce=iI(h),q=new Gu,Ne=ii(Ce,0);Ne.b!=Ne.d.c;)Ee=u(ri(Ne),8),ci(q,new Io(Ee));Ye(W,R9e,q)}return W}function Yyn(e){e.gb||(e.gb=!0,e.b=gc(e,0),ls(e.b,18),zi(e.b,19),e.a=gc(e,1),ls(e.a,1),zi(e.a,2),zi(e.a,3),zi(e.a,4),zi(e.a,5),e.o=gc(e,2),ls(e.o,8),ls(e.o,9),zi(e.o,10),zi(e.o,11),zi(e.o,12),zi(e.o,13),zi(e.o,14),zi(e.o,15),zi(e.o,16),zi(e.o,17),zi(e.o,18),zi(e.o,19),zi(e.o,20),zi(e.o,21),zi(e.o,22),zi(e.o,23),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),Bo(e.o),e.p=gc(e,3),ls(e.p,2),ls(e.p,3),ls(e.p,4),ls(e.p,5),zi(e.p,6),zi(e.p,7),Bo(e.p),Bo(e.p),e.q=gc(e,4),ls(e.q,8),e.v=gc(e,5),zi(e.v,9),Bo(e.v),Bo(e.v),Bo(e.v),e.w=gc(e,6),ls(e.w,2),ls(e.w,3),ls(e.w,4),zi(e.w,5),e.B=gc(e,7),zi(e.B,1),Bo(e.B),Bo(e.B),Bo(e.B),e.Q=gc(e,8),zi(e.Q,0),Bo(e.Q),e.R=gc(e,9),ls(e.R,1),e.S=gc(e,10),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),Bo(e.S),e.T=gc(e,11),zi(e.T,10),zi(e.T,11),zi(e.T,12),zi(e.T,13),zi(e.T,14),Bo(e.T),Bo(e.T),e.U=gc(e,12),ls(e.U,2),ls(e.U,3),zi(e.U,4),zi(e.U,5),zi(e.U,6),zi(e.U,7),Bo(e.U),e.V=gc(e,13),zi(e.V,10),e.W=gc(e,14),ls(e.W,18),ls(e.W,19),ls(e.W,20),zi(e.W,21),zi(e.W,22),zi(e.W,23),e.bb=gc(e,15),ls(e.bb,10),ls(e.bb,11),ls(e.bb,12),ls(e.bb,13),ls(e.bb,14),ls(e.bb,15),ls(e.bb,16),zi(e.bb,17),Bo(e.bb),Bo(e.bb),e.eb=gc(e,16),ls(e.eb,2),ls(e.eb,3),ls(e.eb,4),ls(e.eb,5),ls(e.eb,6),ls(e.eb,7),zi(e.eb,8),zi(e.eb,9),e.ab=gc(e,17),ls(e.ab,0),ls(e.ab,1),e.H=gc(e,18),zi(e.H,0),zi(e.H,1),zi(e.H,2),zi(e.H,3),zi(e.H,4),zi(e.H,5),Bo(e.H),e.db=gc(e,19),zi(e.db,2),e.c=di(e,20),e.d=di(e,21),e.e=di(e,22),e.f=di(e,23),e.i=di(e,24),e.g=di(e,25),e.j=di(e,26),e.k=di(e,27),e.n=di(e,28),e.r=di(e,29),e.s=di(e,30),e.t=di(e,31),e.u=di(e,32),e.fb=di(e,33),e.A=di(e,34),e.C=di(e,35),e.D=di(e,36),e.F=di(e,37),e.G=di(e,38),e.I=di(e,39),e.J=di(e,40),e.L=di(e,41),e.M=di(e,42),e.N=di(e,43),e.O=di(e,44),e.P=di(e,45),e.X=di(e,46),e.Y=di(e,47),e.Z=di(e,48),e.$=di(e,49),e._=di(e,50),e.cb=di(e,51),e.K=di(e,52))}function bi(){bi=pe;var e,t;PS=new Zi(n1t),xE=new Zi(r1t),dSe=(t0(),Yhe),Jyt=new dn(Zke,dSe),Bk=new dn(fk,null),e3t=new Zi(Uxe),pSe=(ty(),Ui(Zhe,ie(re(Jhe,1),tt,291,0,[Qhe]))),IV=new dn(rG,pSe),VO=new dn(WI,(Mn(),!1)),bSe=(wo(),f0),Mw=new dn(txe,bSe),mSe=($0(),hfe),wSe=new dn(VI,mSe),xSe=new dn(uG,!1),ESe=(F0(),FV),Q4=new dn(nG,ESe),OSe=new kv(12),Fb=new dn(uw,OSe),OV=new dn(jI,!1),TSe=new dn(fce,!1),KO=new dn(CC,!1),FSe=(wa(),w2),BS=new dn(Doe,FSe),Rk=new Zi(iG),BV=new Zi(FI),ufe=new Zi(Fz),lfe=new Zi(_C),_Se=new Gu,Z4=new dn(lxe,_Se),n3t=new dn(dxe,!1),r3t=new dn(gxe,!1),CSe=new yT,WO=new dn(bxe,CSe),PV=new dn(Xke,!1),o3t=new dn(i1t,1),new dn(s1t,!0),ct(0),new dn(a1t,ct(100)),new dn(o1t,!1),ct(0),new dn(c1t,ct(4e3)),ct(0),new dn(u1t,ct(400)),new dn(l1t,!1),new dn(h1t,!1),new dn(f1t,!0),new dn(d1t,!1),gSe=(EH(),pfe),t3t=new dn(Vxe,gSe),c3t=new dn(Fke,10),u3t=new dn(jke,10),zSe=new dn(_oe,20),l3t=new dn($ke,10),GSe=new dn(Moe,2),h3t=new dn(Hke,10),qSe=new dn(zke,0),RV=new dn(Vke,5),VSe=new dn(Gke,1),USe=new dn(qke,1),jb=new dn(py,20),f3t=new dn(Uke,10),YSe=new dn(Wke,10),Fk=new Zi(Kke),KSe=new bVe,WSe=new dn(vxe,KSe),s3t=new Zi(hce),NSe=!1,i3t=new dn(lce,NSe),ASe=new kv(5),SSe=new dn(nxe,ASe),LSe=(sy(),t=u(Qf(xo),9),new hh(t,u(wf(t,t.length),9),0)),J4=new dn(P7,LSe),BSe=(n4(),v2),PSe=new dn(sxe,BSe),ife=new Zi(axe),sfe=new Zi(oxe),afe=new Zi(cxe),rfe=new Zi(uxe),MSe=(e=u(Qf(qS),9),new hh(e,u(wf(e,e.length),9),0)),Rb=new dn(E4,MSe),ISe=rn((wl(),SE)),p2=new dn(dk,ISe),DSe=new Pt(0,0),e5=new dn(gk,DSe),NV=new dn(uce,!1),vSe=(P1(),EE),tfe=new dn(hxe,vSe),efe=new dn(jz,!1),ct(1),new dn(g1t,null),RSe=new Zi(pxe),ofe=new Zi(fxe),HSe=(ht(),uc),t5=new dn(Qke,HSe),kl=new Zi(Yke),jSe=(ol(),rn(m2)),Hy=new dn(B7,jSe),cfe=new dn(rxe,!1),$Se=new dn(ixe,!0),UO=new dn(Jke,!1),nfe=new dn(exe,!1),ySe=new dn(Coe,1),kSe=(YH(),dfe),new dn(p1t,kSe),a3t=!0}function et(){et=pe;var e,t;Mi=new Zi(K6e),O9e=new Zi("coordinateOrigin"),Ple=new Zi("processors"),I9e=new zs("compoundNode",(Mn(),!1)),kO=new zs("insideConnections",!1),R9e=new Zi("originalBendpoints"),F9e=new Zi("originalDummyNodePosition"),j9e=new Zi("originalLabelEdge"),EO=new Zi("representedLabels"),uS=new Zi("endLabels"),Ck=new Zi("endLabel.origin"),Ak=new zs("labelSide",(Ul(),QO)),H4=new zs("maxEdgeThickness",0),W1=new zs("reversed",!1),Lk=new Zi(Qht),l1=new zs("longEdgeSource",null),Yh=new zs("longEdgeTarget",null),Ay=new zs("longEdgeHasLabelDummies",!1),xO=new zs("longEdgeBeforeLabelDummy",!1),Fq=new zs("edgeConstraint",(sb(),wle)),xw=new Zi("inLayerLayoutUnit"),Lb=new zs("inLayerConstraint",(P0(),mO)),Sk=new zs("inLayerSuccessorConstraint",new st),B9e=new zs("inLayerSuccessorConstraintBetweenNonDummies",!1),cl=new Zi("portDummy"),Rq=new zs("crossingHint",ct(0)),eu=new zs("graphProperties",(t=u(Qf(_le),9),new hh(t,u(wf(t,t.length),9),0))),vc=new zs("externalPortSide",(ht(),uc)),P9e=new zs("externalPortSize",new Fa),Mle=new Zi("externalPortReplacedDummies"),jq=new Zi("externalPortReplacedDummy"),Sy=new zs("externalPortConnections",(e=u(Qf(ao),9),new hh(e,u(wf(e,e.length),9),0))),Ew=new zs(Ght,0),D9e=new Zi("barycenterAssociates"),Mk=new Zi("TopSideComments"),_k=new Zi("BottomSideComments"),Bq=new Zi("CommentConnectionPort"),Ile=new zs("inputCollect",!1),Nle=new zs("outputCollect",!1),yO=new zs("cyclic",!1),N9e=new Zi("crossHierarchyMap"),Rle=new Zi("targetOffset"),new zs("splineLabelSize",new Fa),G4=new Zi("spacings"),$q=new zs("partitionConstraint",!1),yw=new Zi("breakingPoint.info"),z9e=new Zi("splines.survivingEdge"),Mb=new Zi("splines.route.start"),q4=new Zi("splines.edgeChain"),H9e=new Zi("originalPortConstraints"),lE=new Zi("selfLoopHolder"),hE=new Zi("splines.nsPortY"),Nc=new Zi("modelOrder"),Ole=new Zi("longEdgeTargetNode"),kw=new zs(Tft,!1),z4=new zs(Tft,!1),Dle=new Zi("layerConstraints.hiddenNodes"),$9e=new Zi("layerConstraints.opposidePort"),Ble=new Zi("targetNode.modelOrder")}function f6e(){f6e=pe,J9e=(ED(),Lq),obt=new dn(nke,J9e),mbt=new dn(rke,(Mn(),!1)),sTe=(b$(),Lle),Tbt=new dn(Gz,sTe),jbt=new dn(ike,!1),$bt=new dn(ske,!0),B2t=new dn(ake,!1),dTe=(mD(),lhe),tvt=new dn(oke,dTe),ct(1),uvt=new dn(cke,ct(7)),lvt=new dn(uke,!1),ybt=new dn(lke,!1),Z9e=(db(),ble),abt=new dn(Roe,Z9e),cTe=(WH(),rhe),Fbt=new dn(GI,cTe),aTe=(mh(),TO),Mbt=new dn(hke,aTe),ct(-1),Lbt=new dn(fke,ct(-1)),ct(-1),Dbt=new dn(dke,ct(-1)),ct(-1),Ibt=new dn(Foe,ct(4)),ct(-1),Nbt=new dn(joe,ct(2)),oTe=(f4(),aV),Rbt=new dn($oe,oTe),ct(0),Bbt=new dn(Hoe,ct(0)),Sbt=new dn(zoe,ct(Ei)),Q9e=(V6(),Ek),sbt=new dn(MC,Q9e),U2t=new dn(gke,!1),J2t=new dn(Goe,.1),rbt=new dn(qoe,!1),ct(-1),tbt=new dn(pke,ct(-1)),ct(-1),nbt=new dn(bke,ct(-1)),ct(0),W2t=new dn(vke,ct(40)),X9e=(q8(),Sle),Q2t=new dn(Voe,X9e),Y9e=wO,K2t=new dn(qz,Y9e),fTe=(X_(),wS),evt=new dn(T4,fTe),Vbt=new Zi(Vz),uTe=(pD(),Dq),Hbt=new dn(Uoe,uTe),lTe=(tI(),Iq),Gbt=new dn(Woe,lTe),Kbt=new dn(Koe,.3),Xbt=new Zi(Yoe),hTe=(Zm(),sV),Qbt=new dn(Xoe,hTe),nTe=(iH(),fhe),fbt=new dn(wke,nTe),rTe=(uD(),dhe),dbt=new dn(mke,rTe),iTe=(Q8(),kS),gbt=new dn(Uz,iTe),bbt=new dn(Wz,.2),lbt=new dn(Qoe,2),svt=new dn(yke,null),ovt=new dn(kke,10),avt=new dn(xke,10),cvt=new dn(Eke,20),ct(0),nvt=new dn(Tke,ct(0)),ct(0),rvt=new dn(_ke,ct(0)),ct(0),ivt=new dn(Cke,ct(0)),R2t=new dn(Zoe,!1),V9e=(h7(),aS),j2t=new dn(Ske,V9e),q9e=(S$(),gle),F2t=new dn(Ake,q9e),xbt=new dn(Kz,!1),ct(0),kbt=new dn(Joe,ct(16)),ct(0),Ebt=new dn(ece,ct(5)),bTe=(uH(),bhe),Mvt=new dn(W0,bTe),hvt=new dn(Yz,10),gvt=new dn(Xz,1),pTe=(V$(),Aq),kvt=new dn(DC,pTe),vvt=new Zi(tce),gTe=ct(1),ct(0),mvt=new dn(nce,gTe),vTe=(nH(),phe),Nvt=new dn(Qz,vTe),Dvt=new Zi(Zz),Cvt=new dn(Jz,!0),Tvt=new dn(eG,2),Avt=new dn(rce,!0),tTe=(QH(),Mq),ubt=new dn(Lke,tTe),eTe=(ek(),iE),cbt=new dn(Mke,eTe),K9e=(R0(),f2),V2t=new dn(tG,K9e),q2t=new dn(Dke,!1),U9e=(Uv(),N4),$2t=new dn(ice,U9e),W9e=(j_(),ihe),G2t=new dn(Ike,W9e),H2t=new dn(sce,0),z2t=new dn(ace,0),Cbt=vle,_bt=vO,Obt=rV,Pbt=rV,Abt=nhe,ebt=(F0(),Wg),ibt=Ek,Z2t=Ek,Y2t=Ek,X2t=Wg,Ubt=mS,Wbt=wS,zbt=wS,qbt=wS,Ybt=che,Jbt=mS,Zbt=mS,pbt=($0(),jk),vbt=jk,wbt=kS,hbt=YO,fvt=wE,dvt=Fy,pvt=wE,bvt=Fy,xvt=wE,Evt=Fy,wvt=ple,yvt=Aq,Pvt=wE,Bvt=Fy,Ivt=wE,Ovt=Fy,Svt=Fy,_vt=Fy,Lvt=Fy}function po(){po=pe,MEe=new Cs("DIRECTION_PREPROCESSOR",0),SEe=new Cs("COMMENT_PREPROCESSOR",1),tS=new Cs("EDGE_AND_LAYER_CONSTRAINT_EDGE_REVERSER",2),ele=new Cs("INTERACTIVE_EXTERNAL_PORT_POSITIONER",3),YEe=new Cs("PARTITION_PREPROCESSOR",4),uq=new Cs("LABEL_DUMMY_INSERTER",5),mq=new Cs("SELF_LOOP_PREPROCESSOR",6),eE=new Cs("LAYER_CONSTRAINT_PREPROCESSOR",7),WEe=new Cs("PARTITION_MIDPROCESSOR",8),FEe=new Cs("HIGH_DEGREE_NODE_LAYER_PROCESSOR",9),VEe=new Cs("NODE_PROMOTION",10),J7=new Cs("LAYER_CONSTRAINT_POSTPROCESSOR",11),KEe=new Cs("PARTITION_POSTPROCESSOR",12),PEe=new Cs("HIERARCHICAL_PORT_CONSTRAINT_PROCESSOR",13),XEe=new Cs("SEMI_INTERACTIVE_CROSSMIN_PROCESSOR",14),kEe=new Cs("BREAKING_POINT_INSERTER",15),dq=new Cs("LONG_EDGE_SPLITTER",16),tle=new Cs("PORT_SIDE_PROCESSOR",17),oq=new Cs("INVERTED_PORT_PROCESSOR",18),bq=new Cs("PORT_LIST_SORTER",19),ZEe=new Cs("SORT_BY_INPUT_ORDER_OF_MODEL",20),pq=new Cs("NORTH_SOUTH_PORT_PREPROCESSOR",21),xEe=new Cs("BREAKING_POINT_PROCESSOR",22),UEe=new Cs(bft,23),JEe=new Cs(vft,24),vq=new Cs("SELF_LOOP_PORT_RESTORER",25),QEe=new Cs("SINGLE_EDGE_GRAPH_WRAPPER",26),cq=new Cs("IN_LAYER_CONSTRAINT_PROCESSOR",27),IEe=new Cs("END_NODE_PORT_LABEL_MANAGEMENT_PROCESSOR",28),GEe=new Cs("LABEL_AND_NODE_SIZE_PROCESSOR",29),zEe=new Cs("INNERMOST_NODE_MARGIN_CALCULATOR",30),yq=new Cs("SELF_LOOP_ROUTER",31),_Ee=new Cs("COMMENT_NODE_MARGIN_CALCULATOR",32),aq=new Cs("END_LABEL_PREPROCESSOR",33),hq=new Cs("LABEL_DUMMY_SWITCHER",34),TEe=new Cs("CENTER_LABEL_MANAGEMENT_PROCESSOR",35),Z7=new Cs("LABEL_SIDE_SELECTOR",36),$Ee=new Cs("HYPEREDGE_DUMMY_MERGER",37),BEe=new Cs("HIERARCHICAL_PORT_DUMMY_SIZE_PROCESSOR",38),qEe=new Cs("LAYER_SIZE_AND_GRAPH_HEIGHT_CALCULATOR",39),nS=new Cs("HIERARCHICAL_PORT_POSITION_PROCESSOR",40),AEe=new Cs("CONSTRAINTS_POSTPROCESSOR",41),CEe=new Cs("COMMENT_POSTPROCESSOR",42),HEe=new Cs("HYPERNODE_PROCESSOR",43),REe=new Cs("HIERARCHICAL_PORT_ORTHOGONAL_EDGE_ROUTER",44),fq=new Cs("LONG_EDGE_JOINER",45),wq=new Cs("SELF_LOOP_POSTPROCESSOR",46),EEe=new Cs("BREAKING_POINT_REMOVER",47),gq=new Cs("NORTH_SOUTH_PORT_POSTPROCESSOR",48),jEe=new Cs("HORIZONTAL_COMPACTOR",49),lq=new Cs("LABEL_DUMMY_REMOVER",50),OEe=new Cs("FINAL_SPLINE_BENDPOINTS_CALCULATOR",51),DEe=new Cs("END_LABEL_SORTER",52),pO=new Cs("REVERSED_EDGE_RESTORER",53),sq=new Cs("END_LABEL_POSTPROCESSOR",54),NEe=new Cs("HIERARCHICAL_NODE_RESIZER",55),LEe=new Cs("DIRECTION_POSTPROCESSOR",56)}function Xyn(e,t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut,In,Rn,dr,ki,Ws,rh,af,ed,aU,pN,rA,bN,IE,Dfe,Q4t,Ife,Jg,Bw,OE,vN,wN,Vk,Ofe,iA,Z4t,gLe,Rw,sA,Nfe,Uk,aA,Qy,oA,Pfe,J4t;for(gLe=0,ki=t,af=0,pN=ki.length;af0&&(e.a[Jg.p]=gLe++)}for(aA=0,Ws=n,ed=0,rA=Ws.length;ed0;){for(Jg=(Qn(wN.b>0),u(wN.a.Xb(wN.c=--wN.b),11)),vN=0,d=new C(Jg.e);d.a0&&(Jg.j==(ht(),An)?(e.a[Jg.p]=aA,++aA):(e.a[Jg.p]=aA+bN+Dfe,++Dfe))}aA+=Dfe}for(OE=new Mr,q=new C0,dr=t,rh=0,aU=dr.length;rhx.b&&(x.b=Vk)):Jg.i.c==Z4t&&(Vkx.c&&(x.c=Vk));for(L8(W,0,W.length,null),Uk=Me(Lr,Jr,25,W.length,15,1),r=Me(Lr,Jr,25,aA+1,15,1),le=0;le0;)bt%2>0&&(s+=Pfe[bt+1]),bt=(bt-1)/2|0,++Pfe[bt];for(Ut=Me(_wt,yt,362,W.length*2,0,1),Ne=0;Ne'?":an(W1t,e)?"'(?<' or '(? toIndex: ",_6e=", toIndex: ",C6e="Index: ",S6e=", Size: ",M7="org.eclipse.elk.alg.common",ji={62:1},_ht="org.eclipse.elk.alg.common.compaction",Cht="Scanline/EventHandler",o0="org.eclipse.elk.alg.common.compaction.oned",Sht="CNode belongs to another CGroup.",Aht="ISpacingsHandler/1",doe="The ",goe=" instance has been finished already.",Lht="The direction ",Mht=" is not supported by the CGraph instance.",Dht="OneDimensionalCompactor",Iht="OneDimensionalCompactor/lambda$0$Type",Oht="Quadruplet",Nht="ScanlineConstraintCalculator",Pht="ScanlineConstraintCalculator/ConstraintsScanlineHandler",Bht="ScanlineConstraintCalculator/ConstraintsScanlineHandler/lambda$0$Type",Rht="ScanlineConstraintCalculator/Timestamp",Fht="ScanlineConstraintCalculator/lambda$0$Type",_d={169:1,45:1},poe="org.eclipse.elk.alg.common.compaction.options",cc="org.eclipse.elk.core.data",A6e="org.eclipse.elk.polyomino.traversalStrategy",L6e="org.eclipse.elk.polyomino.lowLevelSort",M6e="org.eclipse.elk.polyomino.highLevelSort",D6e="org.eclipse.elk.polyomino.fill",zh={130:1},boe="polyomino",xC="org.eclipse.elk.alg.common.networksimplex",c0={177:1,3:1,4:1},jht="org.eclipse.elk.alg.common.nodespacing",wb="org.eclipse.elk.alg.common.nodespacing.cellsystem",D7="CENTER",$ht={212:1,326:1},I6e={3:1,4:1,5:1,595:1},uk="LEFT",lk="RIGHT",O6e="Vertical alignment cannot be null",N6e="BOTTOM",Iz="org.eclipse.elk.alg.common.nodespacing.internal",EC="UNDEFINED",z1=.01,PI="org.eclipse.elk.alg.common.nodespacing.internal.algorithm",Hht="LabelPlacer/lambda$0$Type",zht="LabelPlacer/lambda$1$Type",Ght="portRatioOrPosition",I7="org.eclipse.elk.alg.common.overlaps",voe="DOWN",Cd="org.eclipse.elk.alg.common.polyomino",Oz="NORTH",woe="EAST",moe="SOUTH",yoe="WEST",Nz="org.eclipse.elk.alg.common.polyomino.structures",P6e="Direction",koe="Grid is only of size ",xoe=". Requested point (",Eoe=") is out of bounds.",Pz=" Given center based coordinates were (",BI="org.eclipse.elk.graph.properties",qht="IPropertyHolder",B6e={3:1,94:1,134:1},hk="org.eclipse.elk.alg.common.spore",Vht="org.eclipse.elk.alg.common.utils",mb={209:1},k4="org.eclipse.elk.core",Uht="Connected Components Compaction",Wht="org.eclipse.elk.alg.disco",Bz="org.eclipse.elk.alg.disco.graph",Toe="org.eclipse.elk.alg.disco.options",R6e="CompactionStrategy",F6e="org.eclipse.elk.disco.componentCompaction.strategy",j6e="org.eclipse.elk.disco.componentCompaction.componentLayoutAlgorithm",$6e="org.eclipse.elk.disco.debug.discoGraph",H6e="org.eclipse.elk.disco.debug.discoPolys",Kht="componentCompaction",yb="org.eclipse.elk.disco",_oe="org.eclipse.elk.spacing.componentComponent",Coe="org.eclipse.elk.edge.thickness",fk="org.eclipse.elk.aspectRatio",uw="org.eclipse.elk.padding",x4="org.eclipse.elk.alg.disco.transform",Soe=1.5707963267948966,O7=17976931348623157e292,gy={3:1,4:1,5:1,192:1},z6e={3:1,6:1,4:1,5:1,106:1,120:1},G6e="org.eclipse.elk.alg.force",q6e="ComponentsProcessor",Yht="ComponentsProcessor/1",RI="org.eclipse.elk.alg.force.graph",Xht="Component Layout",V6e="org.eclipse.elk.alg.force.model",Rz="org.eclipse.elk.force.model",U6e="org.eclipse.elk.force.iterations",W6e="org.eclipse.elk.force.repulsivePower",Aoe="org.eclipse.elk.force.temperature",Sd=.001,Loe="org.eclipse.elk.force.repulsion",TC="org.eclipse.elk.alg.force.options",N7=1.600000023841858,Yl="org.eclipse.elk.force",FI="org.eclipse.elk.priority",py="org.eclipse.elk.spacing.nodeNode",Moe="org.eclipse.elk.spacing.edgeLabel",Fz="org.eclipse.elk.randomSeed",_C="org.eclipse.elk.separateConnectedComponents",jI="org.eclipse.elk.interactive",Doe="org.eclipse.elk.portConstraints",jz="org.eclipse.elk.edgeLabels.inline",CC="org.eclipse.elk.omitNodeMicroLayout",dk="org.eclipse.elk.nodeSize.options",E4="org.eclipse.elk.nodeSize.constraints",P7="org.eclipse.elk.nodeLabels.placement",B7="org.eclipse.elk.portLabels.placement",K6e="origin",Qht="random",Zht="boundingBox.upLeft",Jht="boundingBox.lowRight",Y6e="org.eclipse.elk.stress.fixed",X6e="org.eclipse.elk.stress.desiredEdgeLength",Q6e="org.eclipse.elk.stress.dimension",Z6e="org.eclipse.elk.stress.epsilon",J6e="org.eclipse.elk.stress.iterationLimit",t2="org.eclipse.elk.stress",eft="ELK Stress",gk="org.eclipse.elk.nodeSize.minimum",$z="org.eclipse.elk.alg.force.stress",tft="Layered layout",pk="org.eclipse.elk.alg.layered",$I="org.eclipse.elk.alg.layered.compaction.components",SC="org.eclipse.elk.alg.layered.compaction.oned",Hz="org.eclipse.elk.alg.layered.compaction.oned.algs",kb="org.eclipse.elk.alg.layered.compaction.recthull",Ad="org.eclipse.elk.alg.layered.components",U0="NONE",Dc={3:1,6:1,4:1,9:1,5:1,122:1},nft={3:1,6:1,4:1,5:1,141:1,106:1,120:1},zz="org.eclipse.elk.alg.layered.compound",ps={51:1},uu="org.eclipse.elk.alg.layered.graph",Ioe=" -> ",rft="Not supported by LGraph",eke="Port side is undefined",Ooe={3:1,6:1,4:1,5:1,474:1,141:1,106:1,120:1},Bg={3:1,6:1,4:1,5:1,141:1,193:1,203:1,106:1,120:1},ift={3:1,6:1,4:1,5:1,141:1,1943:1,203:1,106:1,120:1},sft=`([{"' \r +`,aft=`)]}"' \r +`,oft="The given string contains parts that cannot be parsed as numbers.",HI="org.eclipse.elk.core.math",cft={3:1,4:1,142:1,207:1,414:1},uft={3:1,4:1,116:1,207:1,414:1},qn="org.eclipse.elk.layered",Rg="org.eclipse.elk.alg.layered.graph.transform",lft="ElkGraphImporter",hft="ElkGraphImporter/lambda$0$Type",fft="ElkGraphImporter/lambda$1$Type",dft="ElkGraphImporter/lambda$2$Type",gft="ElkGraphImporter/lambda$4$Type",pft="Node margin calculation",Pn="org.eclipse.elk.alg.layered.intermediate",bft="ONE_SIDED_GREEDY_SWITCH",vft="TWO_SIDED_GREEDY_SWITCH",Noe="No implementation is available for the layout processor ",tke="IntermediateProcessorStrategy",Poe="Node '",wft="FIRST_SEPARATE",mft="LAST_SEPARATE",yft="Odd port side processing",Is="org.eclipse.elk.alg.layered.intermediate.compaction",AC="org.eclipse.elk.alg.layered.intermediate.greedyswitch",u0="org.eclipse.elk.alg.layered.p3order.counting",zI={225:1},bk="org.eclipse.elk.alg.layered.intermediate.loops",Xl="org.eclipse.elk.alg.layered.intermediate.loops.ordering",n2="org.eclipse.elk.alg.layered.intermediate.loops.routing",LC="org.eclipse.elk.alg.layered.intermediate.preserveorder",Ld="org.eclipse.elk.alg.layered.intermediate.wrapping",Ic="org.eclipse.elk.alg.layered.options",Boe="INTERACTIVE",kft="DEPTH_FIRST",xft="EDGE_LENGTH",Eft="SELF_LOOPS",Tft="firstTryWithInitialOrder",nke="org.eclipse.elk.layered.directionCongruency",rke="org.eclipse.elk.layered.feedbackEdges",Gz="org.eclipse.elk.layered.interactiveReferencePoint",ike="org.eclipse.elk.layered.mergeEdges",ske="org.eclipse.elk.layered.mergeHierarchyEdges",ake="org.eclipse.elk.layered.allowNonFlowPortsToSwitchSides",oke="org.eclipse.elk.layered.portSortingStrategy",cke="org.eclipse.elk.layered.thoroughness",uke="org.eclipse.elk.layered.unnecessaryBendpoints",lke="org.eclipse.elk.layered.generatePositionAndLayerIds",Roe="org.eclipse.elk.layered.cycleBreaking.strategy",GI="org.eclipse.elk.layered.layering.strategy",hke="org.eclipse.elk.layered.layering.layerConstraint",fke="org.eclipse.elk.layered.layering.layerChoiceConstraint",dke="org.eclipse.elk.layered.layering.layerId",Foe="org.eclipse.elk.layered.layering.minWidth.upperBoundOnWidth",joe="org.eclipse.elk.layered.layering.minWidth.upperLayerEstimationScalingFactor",$oe="org.eclipse.elk.layered.layering.nodePromotion.strategy",Hoe="org.eclipse.elk.layered.layering.nodePromotion.maxIterations",zoe="org.eclipse.elk.layered.layering.coffmanGraham.layerBound",MC="org.eclipse.elk.layered.crossingMinimization.strategy",gke="org.eclipse.elk.layered.crossingMinimization.forceNodeModelOrder",Goe="org.eclipse.elk.layered.crossingMinimization.hierarchicalSweepiness",qoe="org.eclipse.elk.layered.crossingMinimization.semiInteractive",pke="org.eclipse.elk.layered.crossingMinimization.positionChoiceConstraint",bke="org.eclipse.elk.layered.crossingMinimization.positionId",vke="org.eclipse.elk.layered.crossingMinimization.greedySwitch.activationThreshold",Voe="org.eclipse.elk.layered.crossingMinimization.greedySwitch.type",qz="org.eclipse.elk.layered.crossingMinimization.greedySwitchHierarchical.type",T4="org.eclipse.elk.layered.nodePlacement.strategy",Vz="org.eclipse.elk.layered.nodePlacement.favorStraightEdges",Uoe="org.eclipse.elk.layered.nodePlacement.bk.edgeStraightening",Woe="org.eclipse.elk.layered.nodePlacement.bk.fixedAlignment",Koe="org.eclipse.elk.layered.nodePlacement.linearSegments.deflectionDampening",Yoe="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility",Xoe="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility.default",wke="org.eclipse.elk.layered.edgeRouting.selfLoopDistribution",mke="org.eclipse.elk.layered.edgeRouting.selfLoopOrdering",Uz="org.eclipse.elk.layered.edgeRouting.splines.mode",Wz="org.eclipse.elk.layered.edgeRouting.splines.sloppy.layerSpacingFactor",Qoe="org.eclipse.elk.layered.edgeRouting.polyline.slopedEdgeZoneWidth",yke="org.eclipse.elk.layered.spacing.baseValue",kke="org.eclipse.elk.layered.spacing.edgeNodeBetweenLayers",xke="org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers",Eke="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers",Tke="org.eclipse.elk.layered.priority.direction",_ke="org.eclipse.elk.layered.priority.shortness",Cke="org.eclipse.elk.layered.priority.straightness",Zoe="org.eclipse.elk.layered.compaction.connectedComponents",Ske="org.eclipse.elk.layered.compaction.postCompaction.strategy",Ake="org.eclipse.elk.layered.compaction.postCompaction.constraints",Kz="org.eclipse.elk.layered.highDegreeNodes.treatment",Joe="org.eclipse.elk.layered.highDegreeNodes.threshold",ece="org.eclipse.elk.layered.highDegreeNodes.treeHeight",W0="org.eclipse.elk.layered.wrapping.strategy",Yz="org.eclipse.elk.layered.wrapping.additionalEdgeSpacing",Xz="org.eclipse.elk.layered.wrapping.correctionFactor",DC="org.eclipse.elk.layered.wrapping.cutting.strategy",tce="org.eclipse.elk.layered.wrapping.cutting.cuts",nce="org.eclipse.elk.layered.wrapping.cutting.msd.freedom",Qz="org.eclipse.elk.layered.wrapping.validify.strategy",Zz="org.eclipse.elk.layered.wrapping.validify.forbiddenIndices",Jz="org.eclipse.elk.layered.wrapping.multiEdge.improveCuts",eG="org.eclipse.elk.layered.wrapping.multiEdge.distancePenalty",rce="org.eclipse.elk.layered.wrapping.multiEdge.improveWrappedEdges",Lke="org.eclipse.elk.layered.edgeLabels.sideSelection",Mke="org.eclipse.elk.layered.edgeLabels.centerLabelPlacementStrategy",tG="org.eclipse.elk.layered.considerModelOrder.strategy",Dke="org.eclipse.elk.layered.considerModelOrder.noModelOrder",ice="org.eclipse.elk.layered.considerModelOrder.components",Ike="org.eclipse.elk.layered.considerModelOrder.longEdgeStrategy",sce="org.eclipse.elk.layered.considerModelOrder.crossingCounterNodeInfluence",ace="org.eclipse.elk.layered.considerModelOrder.crossingCounterPortInfluence",oce="layering",_ft="layering.minWidth",Cft="layering.nodePromotion",qI="crossingMinimization",nG="org.eclipse.elk.hierarchyHandling",Sft="crossingMinimization.greedySwitch",Aft="nodePlacement",Lft="nodePlacement.bk",Mft="edgeRouting",VI="org.eclipse.elk.edgeRouting",G1="spacing",Oke="priority",Nke="compaction",Dft="compaction.postCompaction",Ift="Specifies whether and how post-process compaction is applied.",Pke="highDegreeNodes",Bke="wrapping",Oft="wrapping.cutting",Nft="wrapping.validify",Rke="wrapping.multiEdge",cce="edgeLabels",UI="considerModelOrder",Fke="org.eclipse.elk.spacing.commentComment",jke="org.eclipse.elk.spacing.commentNode",$ke="org.eclipse.elk.spacing.edgeEdge",Hke="org.eclipse.elk.spacing.edgeNode",zke="org.eclipse.elk.spacing.labelLabel",Gke="org.eclipse.elk.spacing.labelPortHorizontal",qke="org.eclipse.elk.spacing.labelPortVertical",Vke="org.eclipse.elk.spacing.labelNode",Uke="org.eclipse.elk.spacing.nodeSelfLoop",Wke="org.eclipse.elk.spacing.portPort",Kke="org.eclipse.elk.spacing.individual",Yke="org.eclipse.elk.port.borderOffset",Xke="org.eclipse.elk.noLayout",Qke="org.eclipse.elk.port.side",WI="org.eclipse.elk.debugMode",Zke="org.eclipse.elk.alignment",Jke="org.eclipse.elk.insideSelfLoops.activate",exe="org.eclipse.elk.insideSelfLoops.yo",uce="org.eclipse.elk.nodeSize.fixedGraphSize",txe="org.eclipse.elk.direction",nxe="org.eclipse.elk.nodeLabels.padding",rxe="org.eclipse.elk.portLabels.nextToPortIfPossible",ixe="org.eclipse.elk.portLabels.treatAsGroup",sxe="org.eclipse.elk.portAlignment.default",axe="org.eclipse.elk.portAlignment.north",oxe="org.eclipse.elk.portAlignment.south",cxe="org.eclipse.elk.portAlignment.west",uxe="org.eclipse.elk.portAlignment.east",rG="org.eclipse.elk.contentAlignment",lxe="org.eclipse.elk.junctionPoints",hxe="org.eclipse.elk.edgeLabels.placement",fxe="org.eclipse.elk.port.index",dxe="org.eclipse.elk.commentBox",gxe="org.eclipse.elk.hypernode",pxe="org.eclipse.elk.port.anchor",lce="org.eclipse.elk.partitioning.activate",hce="org.eclipse.elk.partitioning.partition",iG="org.eclipse.elk.position",bxe="org.eclipse.elk.margins",vxe="org.eclipse.elk.spacing.portsSurrounding",fce="org.eclipse.elk.interactiveLayout",Oc="org.eclipse.elk.core.util",wxe={3:1,4:1,5:1,593:1},Pft="NETWORK_SIMPLEX",Qc={123:1,51:1},sG="org.eclipse.elk.alg.layered.p1cycles",by="org.eclipse.elk.alg.layered.p2layers",mxe={402:1,225:1},Bft={832:1,3:1,4:1},Qu="org.eclipse.elk.alg.layered.p3order",ko="org.eclipse.elk.alg.layered.p4nodes",Rft={3:1,4:1,5:1,840:1},Md=1e-5,r2="org.eclipse.elk.alg.layered.p4nodes.bk",dce="org.eclipse.elk.alg.layered.p5edges",o1="org.eclipse.elk.alg.layered.p5edges.orthogonal",gce="org.eclipse.elk.alg.layered.p5edges.orthogonal.direction",pce=1e-6,vy="org.eclipse.elk.alg.layered.p5edges.splines",bce=.09999999999999998,aG=1e-8,Fft=4.71238898038469,jft=3.141592653589793,IC="org.eclipse.elk.alg.mrtree",OC="org.eclipse.elk.alg.mrtree.graph",vk="org.eclipse.elk.alg.mrtree.intermediate",$ft="Set neighbors in level",Hft="DESCENDANTS",yxe="org.eclipse.elk.mrtree.weighting",kxe="org.eclipse.elk.mrtree.searchOrder",oG="org.eclipse.elk.alg.mrtree.options",Fg="org.eclipse.elk.mrtree",zft="org.eclipse.elk.tree",xxe="org.eclipse.elk.alg.radial",_4=6.283185307179586,Exe=5e-324,Gft="org.eclipse.elk.alg.radial.intermediate",vce="org.eclipse.elk.alg.radial.intermediate.compaction",qft={3:1,4:1,5:1,106:1},Txe="org.eclipse.elk.alg.radial.intermediate.optimization",wce="No implementation is available for the layout option ",NC="org.eclipse.elk.alg.radial.options",_xe="org.eclipse.elk.radial.orderId",Cxe="org.eclipse.elk.radial.radius",mce="org.eclipse.elk.radial.compactor",yce="org.eclipse.elk.radial.compactionStepSize",Sxe="org.eclipse.elk.radial.sorter",Axe="org.eclipse.elk.radial.wedgeCriteria",Lxe="org.eclipse.elk.radial.optimizationCriteria",Dd="org.eclipse.elk.radial",Vft="org.eclipse.elk.alg.radial.p1position.wedge",Mxe="org.eclipse.elk.alg.radial.sorting",Uft=5.497787143782138,Wft=3.9269908169872414,Kft=2.356194490192345,Yft="org.eclipse.elk.alg.rectpacking",cG="org.eclipse.elk.alg.rectpacking.firstiteration",kce="org.eclipse.elk.alg.rectpacking.options",Dxe="org.eclipse.elk.rectpacking.optimizationGoal",Ixe="org.eclipse.elk.rectpacking.lastPlaceShift",Oxe="org.eclipse.elk.rectpacking.currentPosition",Nxe="org.eclipse.elk.rectpacking.desiredPosition",Pxe="org.eclipse.elk.rectpacking.onlyFirstIteration",Bxe="org.eclipse.elk.rectpacking.rowCompaction",xce="org.eclipse.elk.rectpacking.expandToAspectRatio",Rxe="org.eclipse.elk.rectpacking.targetWidth",uG="org.eclipse.elk.expandNodes",Gh="org.eclipse.elk.rectpacking",KI="org.eclipse.elk.alg.rectpacking.util",lG="No implementation available for ",wy="org.eclipse.elk.alg.spore",my="org.eclipse.elk.alg.spore.options",lw="org.eclipse.elk.sporeCompaction",Ece="org.eclipse.elk.underlyingLayoutAlgorithm",Fxe="org.eclipse.elk.processingOrder.treeConstruction",jxe="org.eclipse.elk.processingOrder.spanningTreeCostFunction",Tce="org.eclipse.elk.processingOrder.preferredRoot",_ce="org.eclipse.elk.processingOrder.rootSelection",Cce="org.eclipse.elk.structure.structureExtractionStrategy",$xe="org.eclipse.elk.compaction.compactionStrategy",Hxe="org.eclipse.elk.compaction.orthogonal",zxe="org.eclipse.elk.overlapRemoval.maxIterations",Gxe="org.eclipse.elk.overlapRemoval.runScanline",Sce="processingOrder",Xft="overlapRemoval",R7="org.eclipse.elk.sporeOverlap",Qft="org.eclipse.elk.alg.spore.p1structure",Ace="org.eclipse.elk.alg.spore.p2processingorder",Lce="org.eclipse.elk.alg.spore.p3execution",Zft="Invalid index: ",F7="org.eclipse.elk.core.alg",C4={331:1},yy={288:1},Jft="Make sure its type is registered with the ",qxe=" utility class.",j7="true",Mce="false",e1t="Couldn't clone property '",hw=.05,qh="org.eclipse.elk.core.options",t1t=1.2999999523162842,fw="org.eclipse.elk.box",Vxe="org.eclipse.elk.box.packingMode",n1t="org.eclipse.elk.algorithm",r1t="org.eclipse.elk.resolvedAlgorithm",Uxe="org.eclipse.elk.bendPoints",t3n="org.eclipse.elk.labelManager",i1t="org.eclipse.elk.scaleFactor",s1t="org.eclipse.elk.animate",a1t="org.eclipse.elk.animTimeFactor",o1t="org.eclipse.elk.layoutAncestors",c1t="org.eclipse.elk.maxAnimTime",u1t="org.eclipse.elk.minAnimTime",l1t="org.eclipse.elk.progressBar",h1t="org.eclipse.elk.validateGraph",f1t="org.eclipse.elk.validateOptions",d1t="org.eclipse.elk.zoomToFit",n3n="org.eclipse.elk.font.name",g1t="org.eclipse.elk.font.size",p1t="org.eclipse.elk.edge.type",b1t="partitioning",v1t="nodeLabels",hG="portAlignment",Dce="nodeSize",Ice="port",Wxe="portLabels",w1t="insideSelfLoops",PC="org.eclipse.elk.fixed",fG="org.eclipse.elk.random",m1t="port must have a parent node to calculate the port side",y1t="The edge needs to have exactly one edge section. Found: ",BC="org.eclipse.elk.core.util.adapters",kh="org.eclipse.emf.ecore",S4="org.eclipse.elk.graph",k1t="EMapPropertyHolder",x1t="ElkBendPoint",E1t="ElkGraphElement",T1t="ElkConnectableShape",Kxe="ElkEdge",_1t="ElkEdgeSection",C1t="EModelElement",S1t="ENamedElement",Yxe="ElkLabel",Xxe="ElkNode",Qxe="ElkPort",A1t={92:1,90:1},wk="org.eclipse.emf.common.notify.impl",i2="The feature '",RC="' is not a valid changeable feature",L1t="Expecting null",Oce="' is not a valid feature",M1t="The feature ID",D1t=" is not a valid feature ID",_c=32768,I1t={105:1,92:1,90:1,56:1,49:1,97:1},Tn="org.eclipse.emf.ecore.impl",xb="org.eclipse.elk.graph.impl",FC="Recursive containment not allowed for ",$7="The datatype '",dw="' is not a valid classifier",Nce="The value '",A4={190:1,3:1,4:1},Pce="The class '",H7="http://www.eclipse.org/elk/ElkGraph",Sf=1024,Zxe="property",jC="value",Bce="source",O1t="properties",N1t="identifier",Rce="height",Fce="width",jce="parent",$ce="text",Hce="children",P1t="hierarchical",Jxe="sources",zce="targets",e8e="sections",dG="bendPoints",t8e="outgoingShape",n8e="incomingShape",r8e="outgoingSections",i8e="incomingSections",Qa="org.eclipse.emf.common.util",s8e="Severe implementation error in the Json to ElkGraph importer.",Id="id",Ia="org.eclipse.elk.graph.json",a8e="Unhandled parameter types: ",B1t="startPoint",R1t="An edge must have at least one source and one target (edge id: '",z7="').",F1t="Referenced edge section does not exist: ",j1t=" (edge id: '",o8e="target",$1t="sourcePoint",H1t="targetPoint",gG="group",gi="name",z1t="connectableShape cannot be null",G1t="edge cannot be null",Gce="Passed edge is not 'simple'.",pG="org.eclipse.elk.graph.util",YI="The 'no duplicates' constraint is violated",qce="targetIndex=",Eb=", size=",Vce="sourceIndex=",Od={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1},Uce={3:1,4:1,20:1,28:1,52:1,14:1,47:1,15:1,54:1,67:1,63:1,58:1,588:1},bG="logging",q1t="measureExecutionTime",V1t="parser.parse.1",U1t="parser.parse.2",vG="parser.next.1",Wce="parser.next.2",W1t="parser.next.3",K1t="parser.next.4",Tb="parser.factor.1",c8e="parser.factor.2",Y1t="parser.factor.3",X1t="parser.factor.4",Q1t="parser.factor.5",Z1t="parser.factor.6",J1t="parser.atom.1",edt="parser.atom.2",tdt="parser.atom.3",u8e="parser.atom.4",Kce="parser.atom.5",l8e="parser.cc.1",wG="parser.cc.2",ndt="parser.cc.3",rdt="parser.cc.5",h8e="parser.cc.6",f8e="parser.cc.7",Yce="parser.cc.8",idt="parser.ope.1",sdt="parser.ope.2",adt="parser.ope.3",jg="parser.descape.1",odt="parser.descape.2",cdt="parser.descape.3",udt="parser.descape.4",ldt="parser.descape.5",xh="parser.process.1",hdt="parser.quantifier.1",fdt="parser.quantifier.2",ddt="parser.quantifier.3",gdt="parser.quantifier.4",d8e="parser.quantifier.5",pdt="org.eclipse.emf.common.notify",g8e={415:1,672:1},bdt={3:1,4:1,20:1,28:1,52:1,14:1,15:1,67:1,58:1},XI={366:1,143:1},$C="index=",Xce={3:1,4:1,5:1,126:1},vdt={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,58:1},p8e={3:1,6:1,4:1,5:1,192:1},wdt={3:1,4:1,5:1,165:1,367:1},mdt=";/?:@&=+$,",ydt="invalid authority: ",kdt="EAnnotation",xdt="ETypedElement",Edt="EStructuralFeature",Tdt="EAttribute",_dt="EClassifier",Cdt="EEnumLiteral",Sdt="EGenericType",Adt="EOperation",Ldt="EParameter",Mdt="EReference",Ddt="ETypeParameter",Wi="org.eclipse.emf.ecore.util",Qce={76:1},b8e={3:1,20:1,14:1,15:1,58:1,589:1,76:1,69:1,95:1},Idt="org.eclipse.emf.ecore.util.FeatureMap$Entry",Zu=8192,ky=2048,HC="byte",mG="char",zC="double",GC="float",qC="int",VC="long",UC="short",Odt="java.lang.Object",L4={3:1,4:1,5:1,247:1},v8e={3:1,4:1,5:1,673:1},Ndt={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,69:1},Zo={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,76:1,69:1,95:1},QI="mixed",Zr="http:///org/eclipse/emf/ecore/util/ExtendedMetaData",Vh="kind",Pdt={3:1,4:1,5:1,674:1},w8e={3:1,4:1,20:1,28:1,52:1,14:1,15:1,67:1,58:1,76:1,69:1,95:1},yG={20:1,28:1,52:1,14:1,15:1,58:1,69:1},kG={47:1,125:1,279:1},xG={72:1,332:1},EG="The value of type '",TG="' must be of type '",M4=1316,Uh="http://www.eclipse.org/emf/2002/Ecore",_G=-32768,gw="constraints",Ha="baseType",Bdt="getEStructuralFeature",Rdt="getFeatureID",WC="feature",Fdt="getOperationID",m8e="operation",jdt="defaultValue",$dt="eTypeParameters",Hdt="isInstance",zdt="getEEnumLiteral",Gdt="eContainingClass",li={55:1},qdt={3:1,4:1,5:1,119:1},Vdt="org.eclipse.emf.ecore.resource",Udt={92:1,90:1,591:1,1935:1},Zce="org.eclipse.emf.ecore.resource.impl",y8e="unspecified",ZI="simple",CG="attribute",Wdt="attributeWildcard",SG="element",Jce="elementWildcard",c1="collapse",eue="itemType",AG="namespace",JI="##targetNamespace",Wh="whiteSpace",k8e="wildcards",_b="http://www.eclipse.org/emf/2003/XMLType",tue="##any",G7="uninitialized",eO="The multiplicity constraint is violated",LG="org.eclipse.emf.ecore.xml.type",Kdt="ProcessingInstruction",Ydt="SimpleAnyType",Xdt="XMLTypeDocumentRoot",As="org.eclipse.emf.ecore.xml.type.impl",tO="INF",Qdt="processing",Zdt="ENTITIES_._base",x8e="minLength",E8e="ENTITY",MG="NCName",Jdt="IDREFS_._base",T8e="integer",nue="token",rue="pattern",e0t="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",_8e="\\i\\c*",t0t="[\\i-[:]][\\c-[:]]*",n0t="nonPositiveInteger",nO="maxInclusive",C8e="NMTOKEN",r0t="NMTOKENS_._base",S8e="nonNegativeInteger",rO="minInclusive",i0t="normalizedString",s0t="unsignedByte",a0t="unsignedInt",o0t="18446744073709551615",c0t="unsignedShort",u0t="processingInstruction",$g="org.eclipse.emf.ecore.xml.type.internal",q7=1114111,l0t="Internal Error: shorthands: \\u",KC="xml:isDigit",iue="xml:isWord",sue="xml:isSpace",aue="xml:isNameChar",oue="xml:isInitialNameChar",h0t="09٠٩۰۹०९০৯੦੯૦૯୦୯௧௯౦౯೦೯൦൯๐๙໐໙༠༩",f0t="AZazÀÖØöøıĴľŁňŊžƀǃǍǰǴǵǺȗɐʨʻˁΆΆΈΊΌΌΎΡΣώϐϖϚϚϜϜϞϞϠϠϢϳЁЌЎяёќўҁҐӄӇӈӋӌӐӫӮӵӸӹԱՖՙՙաֆאתװײءغفيٱڷںھۀێېۓەەۥۦअहऽऽक़ॡঅঌএঐওনপরললশহড়ঢ়য়ৡৰৱਅਊਏਐਓਨਪਰਲਲ਼ਵਸ਼ਸਹਖ਼ੜਫ਼ਫ਼ੲੴઅઋઍઍએઑઓનપરલળવહઽઽૠૠଅଌଏଐଓନପରଲଳଶହଽଽଡ଼ଢ଼ୟୡஅஊஎஐஒகஙசஜஜஞடணதநபமவஷஹఅఌఎఐఒనపళవహౠౡಅಌಎಐಒನಪಳವಹೞೞೠೡഅഌഎഐഒനപഹൠൡกฮะะาำเๅກຂຄຄງຈຊຊຍຍດທນຟມຣລລວວສຫອຮະະາຳຽຽເໄཀཇཉཀྵႠჅაჶᄀᄀᄂᄃᄅᄇᄉᄉᄋᄌᄎᄒᄼᄼᄾᄾᅀᅀᅌᅌᅎᅎᅐᅐᅔᅕᅙᅙᅟᅡᅣᅣᅥᅥᅧᅧᅩᅩᅭᅮᅲᅳᅵᅵᆞᆞᆨᆨᆫᆫᆮᆯᆷᆸᆺᆺᆼᇂᇫᇫᇰᇰᇹᇹḀẛẠỹἀἕἘἝἠὅὈὍὐὗὙὙὛὛὝὝὟώᾀᾴᾶᾼιιῂῄῆῌῐΐῖΊῠῬῲῴῶῼΩΩKÅ℮℮ↀↂ〇〇〡〩ぁゔァヺㄅㄬ一龥가힣",d0t="Private Use",cue="ASSIGNED",uue="\0€ÿĀſƀɏɐʯʰ˿̀ͯͰϿЀӿ԰֏֐׿؀ۿ܀ݏހ޿ऀॿঀ৿਀੿઀૿଀୿஀௿ఀ౿ಀ೿ഀൿ඀෿฀๿຀໿ༀ࿿က႟Ⴀჿᄀᇿሀ፿Ꭰ᏿᐀ᙿ ᚟ᚠ᛿ក៿᠀᢯Ḁỿἀ῿ ⁰₟₠⃏⃐⃿℀⅏⅐↏←⇿∀⋿⌀⏿␀␿⑀⑟①⓿─╿▀▟■◿☀⛿✀➿⠀⣿⺀⻿⼀⿟⿰⿿ 〿぀ゟ゠ヿ㄀ㄯ㄰㆏㆐㆟ㆠㆿ㈀㋿㌀㏿㐀䶵一鿿ꀀ꒏꒐꓏가힣豈﫿ffﭏﭐ﷿︠︯︰﹏﹐﹯ﹰ﻾\uFEFF\uFEFF＀￯",A8e="UNASSIGNED",V7={3:1,117:1},g0t="org.eclipse.emf.ecore.xml.type.util",DG={3:1,4:1,5:1,368:1},L8e="org.eclipse.xtext.xbase.lib",p0t="Cannot add elements to a Range",b0t="Cannot set elements in a Range",v0t="Cannot remove elements from a Range",IG="locale",OG="default",NG="user.agent",l,PG,lue;b.goog=b.goog||{},b.goog.global=b.goog.global||b,Afn(),M(1,null,{},S),l.Fb=function(t){return lVe(this,t)},l.Gb=function(){return this.gm},l.Hb=function(){return xv(this)},l.Ib=function(){var t;return Cp(pl(this))+"@"+(t=Xi(this)>>>0,t.toString(16))},l.equals=function(e){return this.Fb(e)},l.hashCode=function(){return this.Hb()},l.toString=function(){return this.Ib()};var w0t,m0t,y0t;M(290,1,{290:1,2026:1},aye),l.le=function(t){var n;return n=new aye,n.i=4,t>1?n.c=SXe(this,t-1):n.c=this,n},l.me=function(){return S0(this),this.b},l.ne=function(){return Cp(this)},l.oe=function(){return S0(this),this.k},l.pe=function(){return(this.i&4)!=0},l.qe=function(){return(this.i&1)!=0},l.Ib=function(){return kme(this)},l.i=0;var Yn=O(oc,"Object",1),M8e=O(oc,"Class",290);M(1998,1,_I),O(CI,"Optional",1998),M(1170,1998,_I,N),l.Fb=function(t){return t===this},l.Hb=function(){return 2040732332},l.Ib=function(){return"Optional.absent()"},l.Jb=function(t){return Nr(t),kT(),hue};var hue;O(CI,"Absent",1170),M(628,1,{},ste),O(CI,"Joiner",628);var r3n=ss(CI,"Predicate");M(582,1,{169:1,582:1,3:1,45:1},aT),l.Mb=function(t){return pnt(this,t)},l.Lb=function(t){return pnt(this,t)},l.Fb=function(t){var n;return we(t,582)?(n=u(t,582),J4e(this.a,n.a)):!1},l.Hb=function(){return hye(this.a)+306654252},l.Ib=function(){return g1n(this.a)},O(CI,"Predicates/AndPredicate",582),M(408,1998,{408:1,3:1},Bx),l.Fb=function(t){var n;return we(t,408)?(n=u(t,408),Ci(this.a,n.a)):!1},l.Hb=function(){return 1502476572+Xi(this.a)},l.Ib=function(){return tht+this.a+")"},l.Jb=function(t){return new Bx(Zj(t.Kb(this.a),"the Function passed to Optional.transform() must not return null."))},O(CI,"Present",408),M(198,1,T7),l.Nb=function(t){La(this,t)},l.Qb=function(){eze()},O(qt,"UnmodifiableIterator",198),M(1978,198,_7),l.Qb=function(){eze()},l.Rb=function(t){throw J(new Fr)},l.Wb=function(t){throw J(new Fr)},O(qt,"UnmodifiableListIterator",1978),M(386,1978,_7),l.Ob=function(){return this.c0},l.Pb=function(){if(this.c>=this.d)throw J(new xc);return this.Xb(this.c++)},l.Tb=function(){return this.c},l.Ub=function(){if(this.c<=0)throw J(new xc);return this.Xb(--this.c)},l.Vb=function(){return this.c-1},l.c=0,l.d=0,O(qt,"AbstractIndexedListIterator",386),M(699,198,T7),l.Ob=function(){return nie(this)},l.Pb=function(){return pme(this)},l.e=1,O(qt,"AbstractIterator",699),M(1986,1,{224:1}),l.Zb=function(){var t;return t=this.f,t||(this.f=this.ac())},l.Fb=function(t){return yie(this,t)},l.Hb=function(){return Xi(this.Zb())},l.dc=function(){return this.gc()==0},l.ec=function(){return D6(this)},l.Ib=function(){return Qo(this.Zb())},O(qt,"AbstractMultimap",1986),M(726,1986,bb),l.$b=function(){U$(this)},l._b=function(t){return mze(this,t)},l.ac=function(){return new Jx(this,this.c)},l.ic=function(t){return this.hc()},l.bc=function(){return new H3(this,this.c)},l.jc=function(){return this.mc(this.hc())},l.kc=function(){return new RHe(this)},l.lc=function(){return Sse(this.c.vc().Nc(),new R,64,this.d)},l.cc=function(t){return Ii(this,t)},l.fc=function(t){return jD(this,t)},l.gc=function(){return this.d},l.mc=function(t){return hn(),new T(t)},l.nc=function(){return new BHe(this)},l.oc=function(){return Sse(this.c.Cc().Nc(),new B,64,this.d)},l.pc=function(t,n){return new C$(this,t,n,null)},l.d=0,O(qt,"AbstractMapBasedMultimap",726),M(1631,726,bb),l.hc=function(){return new su(this.a)},l.jc=function(){return hn(),hn(),bo},l.cc=function(t){return u(Ii(this,t),15)},l.fc=function(t){return u(jD(this,t),15)},l.Zb=function(){return B6(this)},l.Fb=function(t){return yie(this,t)},l.qc=function(t){return u(Ii(this,t),15)},l.rc=function(t){return u(jD(this,t),15)},l.mc=function(t){return ZM(u(t,15))},l.pc=function(t,n){return IQe(this,t,u(n,15),null)},O(qt,"AbstractListMultimap",1631),M(732,1,ga),l.Nb=function(t){La(this,t)},l.Ob=function(){return this.c.Ob()||this.e.Ob()},l.Pb=function(){var t;return this.e.Ob()||(t=u(this.c.Pb(),42),this.b=t.cd(),this.a=u(t.dd(),14),this.e=this.a.Kc()),this.sc(this.b,this.e.Pb())},l.Qb=function(){this.e.Qb(),this.a.dc()&&this.c.Qb(),--this.d.d},O(qt,"AbstractMapBasedMultimap/Itr",732),M(1099,732,ga,BHe),l.sc=function(t,n){return n},O(qt,"AbstractMapBasedMultimap/1",1099),M(1100,1,{},B),l.Kb=function(t){return u(t,14).Nc()},O(qt,"AbstractMapBasedMultimap/1methodref$spliterator$Type",1100),M(1101,732,ga,RHe),l.sc=function(t,n){return new vv(t,n)},O(qt,"AbstractMapBasedMultimap/2",1101);var D8e=ss(wr,"Map");M(1967,1,ow),l.wc=function(t){B_(this,t)},l.yc=function(t,n,r){return Rie(this,t,n,r)},l.$b=function(){this.vc().$b()},l.tc=function(t){return lse(this,t)},l._b=function(t){return!!n4e(this,t,!1)},l.uc=function(t){var n,r,s;for(r=this.vc().Kc();r.Ob();)if(n=u(r.Pb(),42),s=n.dd(),je(t)===je(s)||t!=null&&Ci(t,s))return!0;return!1},l.Fb=function(t){var n,r,s;if(t===this)return!0;if(!we(t,83)||(s=u(t,83),this.gc()!=s.gc()))return!1;for(r=s.vc().Kc();r.Ob();)if(n=u(r.Pb(),42),!this.tc(n))return!1;return!0},l.xc=function(t){return hc(n4e(this,t,!1))},l.Hb=function(){return tye(this.vc())},l.dc=function(){return this.gc()==0},l.ec=function(){return new vm(this)},l.zc=function(t,n){throw J(new pg("Put not supported on this map"))},l.Ac=function(t){P_(this,t)},l.Bc=function(t){return hc(n4e(this,t,!0))},l.gc=function(){return this.vc().gc()},l.Ib=function(){return vst(this)},l.Cc=function(){return new E1(this)},O(wr,"AbstractMap",1967),M(1987,1967,ow),l.bc=function(){return new mF(this)},l.vc=function(){return DKe(this)},l.ec=function(){var t;return t=this.g,t||(this.g=this.bc())},l.Cc=function(){var t;return t=this.i,t||(this.i=new hGe(this))},O(qt,"Maps/ViewCachingAbstractMap",1987),M(389,1987,ow,Jx),l.xc=function(t){return Xrn(this,t)},l.Bc=function(t){return fan(this,t)},l.$b=function(){this.d==this.e.c?this.e.$b():Aj(new Eve(this))},l._b=function(t){return Knt(this.d,t)},l.Ec=function(){return new Rx(this)},l.Dc=function(){return this.Ec()},l.Fb=function(t){return this===t||Ci(this.d,t)},l.Hb=function(){return Xi(this.d)},l.ec=function(){return this.e.ec()},l.gc=function(){return this.d.gc()},l.Ib=function(){return Qo(this.d)},O(qt,"AbstractMapBasedMultimap/AsMap",389);var q1=ss(oc,"Iterable");M(28,1,hy),l.Jc=function(t){Da(this,t)},l.Lc=function(){return this.Oc()},l.Nc=function(){return new mn(this,0)},l.Oc=function(){return new vn(null,this.Nc())},l.Fc=function(t){throw J(new pg("Add not supported on this collection"))},l.Gc=function(t){return no(this,t)},l.$b=function(){cwe(this)},l.Hc=function(t){return Xm(this,t,!1)},l.Ic=function(t){return MD(this,t)},l.dc=function(){return this.gc()==0},l.Mc=function(t){return Xm(this,t,!0)},l.Pc=function(){return Bve(this)},l.Qc=function(t){return YD(this,t)},l.Ib=function(){return Yp(this)},O(wr,"AbstractCollection",28);var Kh=ss(wr,"Set");M(H1,28,Xu),l.Nc=function(){return new mn(this,1)},l.Fb=function(t){return Hrt(this,t)},l.Hb=function(){return tye(this)},O(wr,"AbstractSet",H1),M(1970,H1,Xu),O(qt,"Sets/ImprovedAbstractSet",1970),M(1971,1970,Xu),l.$b=function(){this.Rc().$b()},l.Hc=function(t){return xrt(this,t)},l.dc=function(){return this.Rc().dc()},l.Mc=function(t){var n;return this.Hc(t)?(n=u(t,42),this.Rc().ec().Mc(n.cd())):!1},l.gc=function(){return this.Rc().gc()},O(qt,"Maps/EntrySet",1971),M(1097,1971,Xu,Rx),l.Hc=function(t){return Mye(this.a.d.vc(),t)},l.Kc=function(){return new Eve(this.a)},l.Rc=function(){return this.a},l.Mc=function(t){var n;return Mye(this.a.d.vc(),t)?(n=u(t,42),Bnn(this.a.e,n.cd()),!0):!1},l.Nc=function(){return qM(this.a.d.vc().Nc(),new $R(this.a))},O(qt,"AbstractMapBasedMultimap/AsMap/AsMapEntries",1097),M(1098,1,{},$R),l.Kb=function(t){return kZe(this.a,u(t,42))},O(qt,"AbstractMapBasedMultimap/AsMap/AsMapEntries/0methodref$wrapEntry$Type",1098),M(730,1,ga,Eve),l.Nb=function(t){La(this,t)},l.Pb=function(){var t;return t=u(this.b.Pb(),42),this.a=u(t.dd(),14),kZe(this.c,t)},l.Ob=function(){return this.b.Ob()},l.Qb=function(){X3(!!this.a),this.b.Qb(),this.c.e.d-=this.a.gc(),this.a.$b(),this.a=null},O(qt,"AbstractMapBasedMultimap/AsMap/AsMapIterator",730),M(532,1970,Xu,mF),l.$b=function(){this.b.$b()},l.Hc=function(t){return this.b._b(t)},l.Jc=function(t){Nr(t),this.b.wc(new dee(t))},l.dc=function(){return this.b.dc()},l.Kc=function(){return new xT(this.b.vc().Kc())},l.Mc=function(t){return this.b._b(t)?(this.b.Bc(t),!0):!1},l.gc=function(){return this.b.gc()},O(qt,"Maps/KeySet",532),M(318,532,Xu,H3),l.$b=function(){var t;Aj((t=this.b.vc().Kc(),new Ype(this,t)))},l.Ic=function(t){return this.b.ec().Ic(t)},l.Fb=function(t){return this===t||Ci(this.b.ec(),t)},l.Hb=function(){return Xi(this.b.ec())},l.Kc=function(){var t;return t=this.b.vc().Kc(),new Ype(this,t)},l.Mc=function(t){var n,r;return r=0,n=u(this.b.Bc(t),14),n&&(r=n.gc(),n.$b(),this.a.d-=r),r>0},l.Nc=function(){return this.b.ec().Nc()},O(qt,"AbstractMapBasedMultimap/KeySet",318),M(731,1,ga,Ype),l.Nb=function(t){La(this,t)},l.Ob=function(){return this.c.Ob()},l.Pb=function(){return this.a=u(this.c.Pb(),42),this.a.cd()},l.Qb=function(){var t;X3(!!this.a),t=u(this.a.dd(),14),this.c.Qb(),this.b.a.d-=t.gc(),t.$b(),this.a=null},O(qt,"AbstractMapBasedMultimap/KeySet/1",731),M(491,389,{83:1,161:1},RM),l.bc=function(){return this.Sc()},l.ec=function(){return this.Tc()},l.Sc=function(){return new dM(this.c,this.Uc())},l.Tc=function(){var t;return t=this.b,t||(this.b=this.Sc())},l.Uc=function(){return u(this.d,161)},O(qt,"AbstractMapBasedMultimap/SortedAsMap",491),M(542,491,nht,pj),l.bc=function(){return new Zx(this.a,u(u(this.d,161),171))},l.Sc=function(){return new Zx(this.a,u(u(this.d,161),171))},l.ec=function(){var t;return t=this.b,u(t||(this.b=new Zx(this.a,u(u(this.d,161),171))),271)},l.Tc=function(){var t;return t=this.b,u(t||(this.b=new Zx(this.a,u(u(this.d,161),171))),271)},l.Uc=function(){return u(u(this.d,161),171)},O(qt,"AbstractMapBasedMultimap/NavigableAsMap",542),M(490,318,rht,dM),l.Nc=function(){return this.b.ec().Nc()},O(qt,"AbstractMapBasedMultimap/SortedKeySet",490),M(388,490,g6e,Zx),O(qt,"AbstractMapBasedMultimap/NavigableKeySet",388),M(541,28,hy,C$),l.Fc=function(t){var n,r;return bl(this),r=this.d.dc(),n=this.d.Fc(t),n&&(++this.f.d,r&&HM(this)),n},l.Gc=function(t){var n,r,s;return t.dc()?!1:(s=(bl(this),this.d.gc()),n=this.d.Gc(t),n&&(r=this.d.gc(),this.f.d+=r-s,s==0&&HM(this)),n)},l.$b=function(){var t;t=(bl(this),this.d.gc()),t!=0&&(this.d.$b(),this.f.d-=t,Oj(this))},l.Hc=function(t){return bl(this),this.d.Hc(t)},l.Ic=function(t){return bl(this),this.d.Ic(t)},l.Fb=function(t){return t===this?!0:(bl(this),Ci(this.d,t))},l.Hb=function(){return bl(this),Xi(this.d)},l.Kc=function(){return bl(this),new uve(this)},l.Mc=function(t){var n;return bl(this),n=this.d.Mc(t),n&&(--this.f.d,Oj(this)),n},l.gc=function(){return Yqe(this)},l.Nc=function(){return bl(this),this.d.Nc()},l.Ib=function(){return bl(this),Qo(this.d)},O(qt,"AbstractMapBasedMultimap/WrappedCollection",541);var Eh=ss(wr,"List");M(728,541,{20:1,28:1,14:1,15:1},Fve),l.ad=function(t){Y3(this,t)},l.Nc=function(){return bl(this),this.d.Nc()},l.Vc=function(t,n){var r;bl(this),r=this.d.dc(),u(this.d,15).Vc(t,n),++this.a.d,r&&HM(this)},l.Wc=function(t,n){var r,s,o;return n.dc()?!1:(o=(bl(this),this.d.gc()),r=u(this.d,15).Wc(t,n),r&&(s=this.d.gc(),this.a.d+=s-o,o==0&&HM(this)),r)},l.Xb=function(t){return bl(this),u(this.d,15).Xb(t)},l.Xc=function(t){return bl(this),u(this.d,15).Xc(t)},l.Yc=function(){return bl(this),new AVe(this)},l.Zc=function(t){return bl(this),new HYe(this,t)},l.$c=function(t){var n;return bl(this),n=u(this.d,15).$c(t),--this.a.d,Oj(this),n},l._c=function(t,n){return bl(this),u(this.d,15)._c(t,n)},l.bd=function(t,n){return bl(this),IQe(this.a,this.e,u(this.d,15).bd(t,n),this.b?this.b:this)},O(qt,"AbstractMapBasedMultimap/WrappedList",728),M(1096,728,{20:1,28:1,14:1,15:1,54:1},wUe),O(qt,"AbstractMapBasedMultimap/RandomAccessWrappedList",1096),M(620,1,ga,uve),l.Nb=function(t){La(this,t)},l.Ob=function(){return y8(this),this.b.Ob()},l.Pb=function(){return y8(this),this.b.Pb()},l.Qb=function(){tUe(this)},O(qt,"AbstractMapBasedMultimap/WrappedCollection/WrappedIterator",620),M(729,620,r0,AVe,HYe),l.Qb=function(){tUe(this)},l.Rb=function(t){var n;n=Yqe(this.a)==0,(y8(this),u(this.b,125)).Rb(t),++this.a.a.d,n&&HM(this.a)},l.Sb=function(){return(y8(this),u(this.b,125)).Sb()},l.Tb=function(){return(y8(this),u(this.b,125)).Tb()},l.Ub=function(){return(y8(this),u(this.b,125)).Ub()},l.Vb=function(){return(y8(this),u(this.b,125)).Vb()},l.Wb=function(t){(y8(this),u(this.b,125)).Wb(t)},O(qt,"AbstractMapBasedMultimap/WrappedList/WrappedListIterator",729),M(727,541,rht,Mbe),l.Nc=function(){return bl(this),this.d.Nc()},O(qt,"AbstractMapBasedMultimap/WrappedSortedSet",727),M(1095,727,g6e,yVe),O(qt,"AbstractMapBasedMultimap/WrappedNavigableSet",1095),M(1094,541,Xu,IUe),l.Nc=function(){return bl(this),this.d.Nc()},O(qt,"AbstractMapBasedMultimap/WrappedSet",1094),M(1103,1,{},R),l.Kb=function(t){return znn(u(t,42))},O(qt,"AbstractMapBasedMultimap/lambda$1$Type",1103),M(1102,1,{},eee),l.Kb=function(t){return new vv(this.a,t)},O(qt,"AbstractMapBasedMultimap/lambda$2$Type",1102);var Cb=ss(wr,"Map/Entry");M(345,1,_z),l.Fb=function(t){var n;return we(t,42)?(n=u(t,42),md(this.cd(),n.cd())&&md(this.dd(),n.dd())):!1},l.Hb=function(){var t,n;return t=this.cd(),n=this.dd(),(t==null?0:Xi(t))^(n==null?0:Xi(n))},l.ed=function(t){throw J(new Fr)},l.Ib=function(){return this.cd()+"="+this.dd()},O(qt,iht,345),M(1988,28,hy),l.$b=function(){this.fd().$b()},l.Hc=function(t){var n;return we(t,42)?(n=u(t,42),xtn(this.fd(),n.cd(),n.dd())):!1},l.Mc=function(t){var n;return we(t,42)?(n=u(t,42),fQe(this.fd(),n.cd(),n.dd())):!1},l.gc=function(){return this.fd().d},O(qt,"Multimaps/Entries",1988),M(733,1988,hy,XL),l.Kc=function(){return this.a.kc()},l.fd=function(){return this.a},l.Nc=function(){return this.a.lc()},O(qt,"AbstractMultimap/Entries",733),M(734,733,Xu,_pe),l.Nc=function(){return this.a.lc()},l.Fb=function(t){return y4e(this,t)},l.Hb=function(){return ptt(this)},O(qt,"AbstractMultimap/EntrySet",734),M(735,28,hy,T3),l.$b=function(){this.a.$b()},l.Hc=function(t){return aan(this.a,t)},l.Kc=function(){return this.a.nc()},l.gc=function(){return this.a.d},l.Nc=function(){return this.a.oc()},O(qt,"AbstractMultimap/Values",735),M(1989,28,{835:1,20:1,28:1,14:1}),l.Jc=function(t){Nr(t),G3(this).Jc(new fee(t))},l.Nc=function(){var t;return t=G3(this).Nc(),Sse(t,new ve,64|t.qd()&1296,this.a.d)},l.Fc=function(t){return Npe(),!0},l.Gc=function(t){return Nr(this),Nr(t),we(t,543)?Stn(u(t,835)):!t.dc()&&Wre(this,t.Kc())},l.Hc=function(t){var n;return n=u(Ym(B6(this.a),t),14),(n?n.gc():0)>0},l.Fb=function(t){return y0n(this,t)},l.Hb=function(){return Xi(G3(this))},l.dc=function(){return G3(this).dc()},l.Mc=function(t){return Nat(this,t,1)>0},l.Ib=function(){return Qo(G3(this))},O(qt,"AbstractMultiset",1989),M(1991,1970,Xu),l.$b=function(){U$(this.a.a)},l.Hc=function(t){var n,r;return we(t,492)?(r=u(t,416),u(r.a.dd(),14).gc()<=0?!1:(n=zXe(this.a,r.a.cd()),n==u(r.a.dd(),14).gc())):!1},l.Mc=function(t){var n,r,s,o;return we(t,492)&&(r=u(t,416),n=r.a.cd(),s=u(r.a.dd(),14).gc(),s!=0)?(o=this.a,cdn(o,n,s)):!1},O(qt,"Multisets/EntrySet",1991),M(1109,1991,Xu,QL),l.Kc=function(){return new VHe(DKe(B6(this.a.a)).Kc())},l.gc=function(){return B6(this.a.a).gc()},O(qt,"AbstractMultiset/EntrySet",1109),M(619,726,bb),l.hc=function(){return this.gd()},l.jc=function(){return this.hd()},l.cc=function(t){return this.jd(t)},l.fc=function(t){return this.kd(t)},l.Zb=function(){var t;return t=this.f,t||(this.f=this.ac())},l.hd=function(){return hn(),hn(),HG},l.Fb=function(t){return yie(this,t)},l.jd=function(t){return u(Ii(this,t),21)},l.kd=function(t){return u(jD(this,t),21)},l.mc=function(t){return hn(),new Kx(u(t,21))},l.pc=function(t,n){return new IUe(this,t,u(n,21))},O(qt,"AbstractSetMultimap",619),M(1657,619,bb),l.hc=function(){return new Sp(this.b)},l.gd=function(){return new Sp(this.b)},l.jc=function(){return Jve(new Sp(this.b))},l.hd=function(){return Jve(new Sp(this.b))},l.cc=function(t){return u(u(Ii(this,t),21),84)},l.jd=function(t){return u(u(Ii(this,t),21),84)},l.fc=function(t){return u(u(jD(this,t),21),84)},l.kd=function(t){return u(u(jD(this,t),21),84)},l.mc=function(t){return we(t,271)?Jve(u(t,271)):(hn(),new ube(u(t,84)))},l.Zb=function(){var t;return t=this.f,t||(this.f=we(this.c,171)?new pj(this,u(this.c,171)):we(this.c,161)?new RM(this,u(this.c,161)):new Jx(this,this.c))},l.pc=function(t,n){return we(n,271)?new yVe(this,t,u(n,271)):new Mbe(this,t,u(n,84))},O(qt,"AbstractSortedSetMultimap",1657),M(1658,1657,bb),l.Zb=function(){var t;return t=this.f,u(u(t||(this.f=we(this.c,171)?new pj(this,u(this.c,171)):we(this.c,161)?new RM(this,u(this.c,161)):new Jx(this,this.c)),161),171)},l.ec=function(){var t;return t=this.i,u(u(t||(this.i=we(this.c,171)?new Zx(this,u(this.c,171)):we(this.c,161)?new dM(this,u(this.c,161)):new H3(this,this.c)),84),271)},l.bc=function(){return we(this.c,171)?new Zx(this,u(this.c,171)):we(this.c,161)?new dM(this,u(this.c,161)):new H3(this,this.c)},O(qt,"AbstractSortedKeySortedSetMultimap",1658),M(2010,1,{1947:1}),l.Fb=function(t){return Qln(this,t)},l.Hb=function(){var t;return tye((t=this.g,t||(this.g=new oT(this))))},l.Ib=function(){var t;return vst((t=this.f,t||(this.f=new tbe(this))))},O(qt,"AbstractTable",2010),M(665,H1,Xu,oT),l.$b=function(){tze()},l.Hc=function(t){var n,r;return we(t,468)?(n=u(t,682),r=u(Ym(eYe(this.a),Mp(n.c.e,n.b)),83),!!r&&Mye(r.vc(),new vv(Mp(n.c.c,n.a),G6(n.c,n.b,n.a)))):!1},l.Kc=function(){return PJt(this.a)},l.Mc=function(t){var n,r;return we(t,468)?(n=u(t,682),r=u(Ym(eYe(this.a),Mp(n.c.e,n.b)),83),!!r&&Oan(r.vc(),new vv(Mp(n.c.c,n.a),G6(n.c,n.b,n.a)))):!1},l.gc=function(){return fKe(this.a)},l.Nc=function(){return Mtn(this.a)},O(qt,"AbstractTable/CellSet",665),M(1928,28,hy,tee),l.$b=function(){tze()},l.Hc=function(t){return zhn(this.a,t)},l.Kc=function(){return BJt(this.a)},l.gc=function(){return fKe(this.a)},l.Nc=function(){return pQe(this.a)},O(qt,"AbstractTable/Values",1928),M(1632,1631,bb),O(qt,"ArrayListMultimapGwtSerializationDependencies",1632),M(513,1632,bb,ite,Twe),l.hc=function(){return new su(this.a)},l.a=0,O(qt,"ArrayListMultimap",513),M(664,2010,{664:1,1947:1,3:1},qat),O(qt,"ArrayTable",664),M(1924,386,_7,YVe),l.Xb=function(t){return new sye(this.a,t)},O(qt,"ArrayTable/1",1924),M(1925,1,{},jR),l.ld=function(t){return new sye(this.a,t)},O(qt,"ArrayTable/1methodref$getCell$Type",1925),M(2011,1,{682:1}),l.Fb=function(t){var n;return t===this?!0:we(t,468)?(n=u(t,682),md(Mp(this.c.e,this.b),Mp(n.c.e,n.b))&&md(Mp(this.c.c,this.a),Mp(n.c.c,n.a))&&md(G6(this.c,this.b,this.a),G6(n.c,n.b,n.a))):!1},l.Hb=function(){return fH(ie(re(Yn,1),yt,1,5,[Mp(this.c.e,this.b),Mp(this.c.c,this.a),G6(this.c,this.b,this.a)]))},l.Ib=function(){return"("+Mp(this.c.e,this.b)+","+Mp(this.c.c,this.a)+")="+G6(this.c,this.b,this.a)},O(qt,"Tables/AbstractCell",2011),M(468,2011,{468:1,682:1},sye),l.a=0,l.b=0,l.d=0,O(qt,"ArrayTable/2",468),M(1927,1,{},r6),l.ld=function(t){return CJe(this.a,t)},O(qt,"ArrayTable/2methodref$getValue$Type",1927),M(1926,386,_7,XVe),l.Xb=function(t){return CJe(this.a,t)},O(qt,"ArrayTable/3",1926),M(1979,1967,ow),l.$b=function(){Aj(this.kc())},l.vc=function(){return new s6(this)},l.lc=function(){return new AYe(this.kc(),this.gc())},O(qt,"Maps/IteratorBasedAbstractMap",1979),M(828,1979,ow),l.$b=function(){throw J(new Fr)},l._b=function(t){return yze(this.c,t)},l.kc=function(){return new QVe(this,this.c.b.c.gc())},l.lc=function(){return Ene(this.c.b.c.gc(),16,new iv(this))},l.xc=function(t){var n;return n=u(c_(this.c,t),19),n?this.nd(n.a):null},l.dc=function(){return this.c.b.c.dc()},l.ec=function(){return Dne(this.c)},l.zc=function(t,n){var r;if(r=u(c_(this.c,t),19),!r)throw J(new Ln(this.md()+" "+t+" not in "+Dne(this.c)));return this.od(r.a,n)},l.Bc=function(t){throw J(new Fr)},l.gc=function(){return this.c.b.c.gc()},O(qt,"ArrayTable/ArrayMap",828),M(1923,1,{},iv),l.ld=function(t){return nYe(this.a,t)},O(qt,"ArrayTable/ArrayMap/0methodref$getEntry$Type",1923),M(1921,345,_z,eGe),l.cd=function(){return QWt(this.a,this.b)},l.dd=function(){return this.a.nd(this.b)},l.ed=function(t){return this.a.od(this.b,t)},l.b=0,O(qt,"ArrayTable/ArrayMap/1",1921),M(1922,386,_7,QVe),l.Xb=function(t){return nYe(this.a,t)},O(qt,"ArrayTable/ArrayMap/2",1922),M(1920,828,ow,GKe),l.md=function(){return"Column"},l.nd=function(t){return G6(this.b,this.a,t)},l.od=function(t,n){return ent(this.b,this.a,t,n)},l.a=0,O(qt,"ArrayTable/Row",1920),M(829,828,ow,tbe),l.nd=function(t){return new GKe(this.a,t)},l.zc=function(t,n){return u(n,83),NVt()},l.od=function(t,n){return u(n,83),PVt()},l.md=function(){return"Row"},O(qt,"ArrayTable/RowMap",829),M(1120,1,Hh,tGe),l.qd=function(){return this.a.qd()&-262},l.rd=function(){return this.a.rd()},l.Nb=function(t){this.a.Nb(new Xze(t,this.b))},l.sd=function(t){return this.a.sd(new Yze(t,this.b))},O(qt,"CollectSpliterators/1",1120),M(1121,1,Un,Yze),l.td=function(t){this.a.td(this.b.Kb(t))},O(qt,"CollectSpliterators/1/lambda$0$Type",1121),M(1122,1,Un,Xze),l.td=function(t){this.a.td(this.b.Kb(t))},O(qt,"CollectSpliterators/1/lambda$1$Type",1122),M(1123,1,Hh,CQe),l.qd=function(){return this.a},l.rd=function(){return this.d&&(this.b=MVe(this.b,this.d.rd())),MVe(this.b,0)},l.Nb=function(t){this.d&&(this.d.Nb(t),this.d=null),this.c.Nb(new Kze(this.e,t)),this.b=0},l.sd=function(t){for(;;){if(this.d&&this.d.sd(t))return XT(this.b,Cz)&&(this.b=Wp(this.b,1)),!0;if(this.d=null,!this.c.sd(new Qze(this,this.e)))return!1}},l.a=0,l.b=0,O(qt,"CollectSpliterators/1FlatMapSpliterator",1123),M(1124,1,Un,Qze),l.td=function(t){eYt(this.a,this.b,t)},O(qt,"CollectSpliterators/1FlatMapSpliterator/lambda$0$Type",1124),M(1125,1,Un,Kze),l.td=function(t){FWt(this.b,this.a,t)},O(qt,"CollectSpliterators/1FlatMapSpliterator/lambda$1$Type",1125),M(1117,1,Hh,cWe),l.qd=function(){return 16464|this.b},l.rd=function(){return this.a.rd()},l.Nb=function(t){this.a.xe(new Jze(t,this.c))},l.sd=function(t){return this.a.ye(new Zze(t,this.c))},l.b=0,O(qt,"CollectSpliterators/1WithCharacteristics",1117),M(1118,1,SI,Zze),l.ud=function(t){this.a.td(this.b.ld(t))},O(qt,"CollectSpliterators/1WithCharacteristics/lambda$0$Type",1118),M(1119,1,SI,Jze),l.ud=function(t){this.a.td(this.b.ld(t))},O(qt,"CollectSpliterators/1WithCharacteristics/lambda$1$Type",1119),M(245,1,Iae),l.wd=function(t){return this.vd(u(t,245))},l.vd=function(t){var n;return t==(Yee(),due)?1:t==(Xee(),fue)?-1:(n=(_j(),CD(this.a,t.a)),n!=0?n:we(this,519)==we(t,519)?0:we(this,519)?1:-1)},l.zd=function(){return this.a},l.Fb=function(t){return c3e(this,t)},O(qt,"Cut",245),M(1761,245,Iae,ize),l.vd=function(t){return t==this?0:1},l.xd=function(t){throw J(new ope)},l.yd=function(t){t.a+="+∞)"},l.zd=function(){throw J(new Wo(aht))},l.Hb=function(){return Ud(),v3e(this)},l.Ad=function(t){return!1},l.Ib=function(){return"+∞"};var fue;O(qt,"Cut/AboveAll",1761),M(519,245,{245:1,519:1,3:1,35:1},nUe),l.xd=function(t){Ec((t.a+="(",t),this.a)},l.yd=function(t){Bp(Ec(t,this.a),93)},l.Hb=function(){return~Xi(this.a)},l.Ad=function(t){return _j(),CD(this.a,t)<0},l.Ib=function(){return"/"+this.a+"\\"},O(qt,"Cut/AboveValue",519),M(1760,245,Iae,sze),l.vd=function(t){return t==this?0:-1},l.xd=function(t){t.a+="(-∞"},l.yd=function(t){throw J(new ope)},l.zd=function(){throw J(new Wo(aht))},l.Hb=function(){return Ud(),v3e(this)},l.Ad=function(t){return!0},l.Ib=function(){return"-∞"};var due;O(qt,"Cut/BelowAll",1760),M(1762,245,Iae,rUe),l.xd=function(t){Ec((t.a+="[",t),this.a)},l.yd=function(t){Bp(Ec(t,this.a),41)},l.Hb=function(){return Xi(this.a)},l.Ad=function(t){return _j(),CD(this.a,t)<=0},l.Ib=function(){return"\\"+this.a+"/"},O(qt,"Cut/BelowValue",1762),M(537,1,i0),l.Jc=function(t){Da(this,t)},l.Ib=function(){return uon(u(Zj(this,"use Optional.orNull() instead of Optional.or(null)"),20).Kc())},O(qt,"FluentIterable",537),M(433,537,i0,JT),l.Kc=function(){return new cr(fr(this.a.Kc(),new V))},O(qt,"FluentIterable/2",433),M(1046,537,i0,oVe),l.Kc=function(){return Pp(this)},O(qt,"FluentIterable/3",1046),M(708,386,_7,nbe),l.Xb=function(t){return this.a[t].Kc()},O(qt,"FluentIterable/3/1",708),M(1972,1,{}),l.Ib=function(){return Qo(this.Bd().b)},O(qt,"ForwardingObject",1972),M(1973,1972,oht),l.Bd=function(){return this.Cd()},l.Jc=function(t){Da(this,t)},l.Lc=function(){return this.Oc()},l.Nc=function(){return new mn(this,0)},l.Oc=function(){return new vn(null,this.Nc())},l.Fc=function(t){return this.Cd(),Tze()},l.Gc=function(t){return this.Cd(),_ze()},l.$b=function(){this.Cd(),Cze()},l.Hc=function(t){return this.Cd().Hc(t)},l.Ic=function(t){return this.Cd().Ic(t)},l.dc=function(){return this.Cd().b.dc()},l.Kc=function(){return this.Cd().Kc()},l.Mc=function(t){return this.Cd(),Sze()},l.gc=function(){return this.Cd().b.gc()},l.Pc=function(){return this.Cd().Pc()},l.Qc=function(t){return this.Cd().Qc(t)},O(qt,"ForwardingCollection",1973),M(1980,28,p6e),l.Kc=function(){return this.Ed()},l.Fc=function(t){throw J(new Fr)},l.Gc=function(t){throw J(new Fr)},l.$b=function(){throw J(new Fr)},l.Hc=function(t){return t!=null&&Xm(this,t,!1)},l.Dd=function(){switch(this.gc()){case 0:return Rm(),Rm(),gue;case 1:return Rm(),new Tne(Nr(this.Ed().Pb()));default:return new qKe(this,this.Pc())}},l.Mc=function(t){throw J(new Fr)},O(qt,"ImmutableCollection",1980),M(712,1980,p6e,spe),l.Kc=function(){return q6(this.a.Kc())},l.Hc=function(t){return t!=null&&this.a.Hc(t)},l.Ic=function(t){return this.a.Ic(t)},l.dc=function(){return this.a.dc()},l.Ed=function(){return q6(this.a.Kc())},l.gc=function(){return this.a.gc()},l.Pc=function(){return this.a.Pc()},l.Qc=function(t){return this.a.Qc(t)},l.Ib=function(){return Qo(this.a)},O(qt,"ForwardingImmutableCollection",712),M(152,1980,vC),l.Kc=function(){return this.Ed()},l.Yc=function(){return this.Fd(0)},l.Zc=function(t){return this.Fd(t)},l.ad=function(t){Y3(this,t)},l.Nc=function(){return new mn(this,16)},l.bd=function(t,n){return this.Gd(t,n)},l.Vc=function(t,n){throw J(new Fr)},l.Wc=function(t,n){throw J(new Fr)},l.Fb=function(t){return i0n(this,t)},l.Hb=function(){return psn(this)},l.Xc=function(t){return t==null?-1:Aun(this,t)},l.Ed=function(){return this.Fd(0)},l.Fd=function(t){return vbe(this,t)},l.$c=function(t){throw J(new Fr)},l._c=function(t,n){throw J(new Fr)},l.Gd=function(t,n){var r;return pH((r=new fGe(this),new Zd(r,t,n)))};var gue;O(qt,"ImmutableList",152),M(2006,152,vC),l.Kc=function(){return q6(this.Hd().Kc())},l.bd=function(t,n){return pH(this.Hd().bd(t,n))},l.Hc=function(t){return t!=null&&this.Hd().Hc(t)},l.Ic=function(t){return this.Hd().Ic(t)},l.Fb=function(t){return Ci(this.Hd(),t)},l.Xb=function(t){return Mp(this,t)},l.Hb=function(){return Xi(this.Hd())},l.Xc=function(t){return this.Hd().Xc(t)},l.dc=function(){return this.Hd().dc()},l.Ed=function(){return q6(this.Hd().Kc())},l.gc=function(){return this.Hd().gc()},l.Gd=function(t,n){return pH(this.Hd().bd(t,n))},l.Pc=function(){return this.Hd().Qc(Me(Yn,yt,1,this.Hd().gc(),5,1))},l.Qc=function(t){return this.Hd().Qc(t)},l.Ib=function(){return Qo(this.Hd())},O(qt,"ForwardingImmutableList",2006),M(714,1,C7),l.vc=function(){return Cv(this)},l.wc=function(t){B_(this,t)},l.ec=function(){return Dne(this)},l.yc=function(t,n,r){return Rie(this,t,n,r)},l.Cc=function(){return this.Ld()},l.$b=function(){throw J(new Fr)},l._b=function(t){return this.xc(t)!=null},l.uc=function(t){return this.Ld().Hc(t)},l.Jd=function(){return new Y$e(this)},l.Kd=function(){return new X$e(this)},l.Fb=function(t){return oan(this,t)},l.Hb=function(){return Cv(this).Hb()},l.dc=function(){return this.gc()==0},l.zc=function(t,n){return BVt()},l.Bc=function(t){throw J(new Fr)},l.Ib=function(){return jfn(this)},l.Ld=function(){return this.e?this.e:this.e=this.Kd()},l.c=null,l.d=null,l.e=null;var k0t;O(qt,"ImmutableMap",714),M(715,714,C7),l._b=function(t){return yze(this,t)},l.uc=function(t){return bGe(this.b,t)},l.Id=function(){return Wnt(new uT(this))},l.Jd=function(){return Wnt(TYe(this.b))},l.Kd=function(){return wd(),new spe(EYe(this.b))},l.Fb=function(t){return vGe(this.b,t)},l.xc=function(t){return c_(this,t)},l.Hb=function(){return Xi(this.b.c)},l.dc=function(){return this.b.c.dc()},l.gc=function(){return this.b.c.gc()},l.Ib=function(){return Qo(this.b.c)},O(qt,"ForwardingImmutableMap",715),M(1974,1973,Oae),l.Bd=function(){return this.Md()},l.Cd=function(){return this.Md()},l.Nc=function(){return new mn(this,1)},l.Fb=function(t){return t===this||this.Md().Fb(t)},l.Hb=function(){return this.Md().Hb()},O(qt,"ForwardingSet",1974),M(1069,1974,Oae,uT),l.Bd=function(){return w8(this.a.b)},l.Cd=function(){return w8(this.a.b)},l.Hc=function(t){if(we(t,42)&&u(t,42).cd()==null)return!1;try{return pGe(w8(this.a.b),t)}catch(n){if(n=ts(n),we(n,205))return!1;throw J(n)}},l.Md=function(){return w8(this.a.b)},l.Qc=function(t){var n;return n=sXe(w8(this.a.b),t),w8(this.a.b).b.gc()=0?"+":"")+(r/60|0),n=ZF(b.Math.abs(r)%60),(Sst(),R0t)[this.q.getDay()]+" "+F0t[this.q.getMonth()]+" "+ZF(this.q.getDate())+" "+ZF(this.q.getHours())+":"+ZF(this.q.getMinutes())+":"+ZF(this.q.getSeconds())+" GMT"+t+n+" "+this.q.getFullYear()};var FG=O(wr,"Date",199);M(1915,199,bht,est),l.a=!1,l.b=0,l.c=0,l.d=0,l.e=0,l.f=0,l.g=!1,l.i=0,l.j=0,l.k=0,l.n=0,l.o=0,l.p=0,O("com.google.gwt.i18n.shared.impl","DateRecord",1915),M(1966,1,{}),l.fe=function(){return null},l.ge=function(){return null},l.he=function(){return null},l.ie=function(){return null},l.je=function(){return null},O(ok,"JSONValue",1966),M(216,1966,{216:1},hg,a6),l.Fb=function(t){return we(t,216)?Swe(this.a,u(t,216).a):!1},l.ee=function(){return iVt},l.Hb=function(){return gwe(this.a)},l.fe=function(){return this},l.Ib=function(){var t,n,r;for(r=new Fl("["),n=0,t=this.a.length;n0&&(r.a+=","),Ec(r,Gm(this,n));return r.a+="]",r.a},O(ok,"JSONArray",216),M(483,1966,{483:1},jx),l.ee=function(){return sVt},l.ge=function(){return this},l.Ib=function(){return Mn(),""+this.a},l.a=!1;var A0t,L0t;O(ok,"JSONBoolean",483),M(985,60,q0,UHe),O(ok,"JSONException",985),M(1023,1966,{},Ae),l.ee=function(){return lVt},l.Ib=function(){return Pu};var M0t;O(ok,"JSONNull",1023),M(258,1966,{258:1},lT),l.Fb=function(t){return we(t,258)?this.a==u(t,258).a:!1},l.ee=function(){return aVt},l.Hb=function(){return i8(this.a)},l.he=function(){return this},l.Ib=function(){return this.a+""},l.a=0,O(ok,"JSONNumber",258),M(183,1966,{183:1},p6,$x),l.Fb=function(t){return we(t,183)?Swe(this.a,u(t,183).a):!1},l.ee=function(){return oVt},l.Hb=function(){return gwe(this.a)},l.ie=function(){return this},l.Ib=function(){var t,n,r,s,o,h,d;for(d=new Fl("{"),t=!0,h=aie(this,Me(mt,Qe,2,0,6,1)),r=h,s=0,o=r.length;s=0?":"+this.c:"")+")"},l.c=0;var K8e=O(oc,"StackTraceElement",310);y0t={3:1,475:1,35:1,2:1};var mt=O(oc,b6e,2);M(107,418,{475:1},bg,ST,Ph),O(oc,"StringBuffer",107),M(100,418,{475:1},Tp,xm,Fl),O(oc,"StringBuilder",100),M(687,73,noe,Bpe),O(oc,"StringIndexOutOfBoundsException",687),M(2043,1,{});var Y8e;M(844,1,{},Bt),l.Kb=function(t){return u(t,78).e},O(oc,"Throwable/lambda$0$Type",844),M(41,60,{3:1,102:1,60:1,78:1,41:1},Fr,pg),O(oc,"UnsupportedOperationException",41),M(240,236,{3:1,35:1,236:1,240:1},kD,Vpe),l.wd=function(t){return out(this,u(t,240))},l.ke=function(){return ry(Gut(this))},l.Fb=function(t){var n;return this===t?!0:we(t,240)?(n=u(t,240),this.e==n.e&&out(this,n)==0):!1},l.Hb=function(){var t;return this.b!=0?this.b:this.a<54?(t=Ou(this.f),this.b=Or(qs(t,-1)),this.b=33*this.b+Or(qs(Np(t,32),-1)),this.b=17*this.b+_s(this.e),this.b):(this.b=17*Hnt(this.c)+_s(this.e),this.b)},l.Ib=function(){return Gut(this)},l.a=0,l.b=0,l.d=0,l.e=0,l.f=0;var N0t,Ab,X8e,Q8e,Z8e,J8e,e7e,t7e,xue=O("java.math","BigDecimal",240);M(91,236,{3:1,35:1,236:1,91:1},b3e,Tg,z3,Z3e,qrt,Ip),l.wd=function(t){return jrt(this,u(t,91))},l.ke=function(){return ry(Lae(this,0))},l.Fb=function(t){return Yye(this,t)},l.Hb=function(){return Hnt(this)},l.Ib=function(){return Lae(this,0)},l.b=-2,l.c=0,l.d=0,l.e=0;var Eue,jG,n7e,Tue,$G,K7,D4=O("java.math","BigInteger",91),P0t,B0t,yk,QC;M(488,1967,ow),l.$b=function(){sl(this)},l._b=function(t){return Il(this,t)},l.uc=function(t){return _nt(this,t,this.g)||_nt(this,t,this.f)},l.vc=function(){return new dg(this)},l.xc=function(t){return er(this,t)},l.zc=function(t,n){return Si(this,t,n)},l.Bc=function(t){return z6(this,t)},l.gc=function(){return MT(this)},O(wr,"AbstractHashMap",488),M(261,H1,Xu,dg),l.$b=function(){this.a.$b()},l.Hc=function(t){return kQe(this,t)},l.Kc=function(){return new ob(this.a)},l.Mc=function(t){var n;return kQe(this,t)?(n=u(t,42).cd(),this.a.Bc(n),!0):!1},l.gc=function(){return this.a.gc()},O(wr,"AbstractHashMap/EntrySet",261),M(262,1,ga,ob),l.Nb=function(t){La(this,t)},l.Pb=function(){return $v(this)},l.Ob=function(){return this.b},l.Qb=function(){wJe(this)},l.b=!1,O(wr,"AbstractHashMap/EntrySetIterator",262),M(417,1,ga,c6),l.Nb=function(t){La(this,t)},l.Ob=function(){return wM(this)},l.Pb=function(){return GYe(this)},l.Qb=function(){Ol(this)},l.b=0,l.c=-1,O(wr,"AbstractList/IteratorImpl",417),M(96,417,r0,Ea),l.Qb=function(){Ol(this)},l.Rb=function(t){Dm(this,t)},l.Sb=function(){return this.b>0},l.Tb=function(){return this.b},l.Ub=function(){return Qn(this.b>0),this.a.Xb(this.c=--this.b)},l.Vb=function(){return this.b-1},l.Wb=function(t){Am(this.c!=-1),this.a._c(this.c,t)},O(wr,"AbstractList/ListIteratorImpl",96),M(219,52,A7,Zd),l.Vc=function(t,n){jm(t,this.b),this.c.Vc(this.a+t,n),++this.b},l.Xb=function(t){return xn(t,this.b),this.c.Xb(this.a+t)},l.$c=function(t){var n;return xn(t,this.b),n=this.c.$c(this.a+t),--this.b,n},l._c=function(t,n){return xn(t,this.b),this.c._c(this.a+t,n)},l.gc=function(){return this.b},l.a=0,l.b=0,O(wr,"AbstractList/SubList",219),M(384,H1,Xu,vm),l.$b=function(){this.a.$b()},l.Hc=function(t){return this.a._b(t)},l.Kc=function(){var t;return t=this.a.vc().Kc(),new nM(t)},l.Mc=function(t){return this.a._b(t)?(this.a.Bc(t),!0):!1},l.gc=function(){return this.a.gc()},O(wr,"AbstractMap/1",384),M(691,1,ga,nM),l.Nb=function(t){La(this,t)},l.Ob=function(){return this.a.Ob()},l.Pb=function(){var t;return t=u(this.a.Pb(),42),t.cd()},l.Qb=function(){this.a.Qb()},O(wr,"AbstractMap/1/1",691),M(226,28,hy,E1),l.$b=function(){this.a.$b()},l.Hc=function(t){return this.a.uc(t)},l.Kc=function(){var t;return t=this.a.vc().Kc(),new T1(t)},l.gc=function(){return this.a.gc()},O(wr,"AbstractMap/2",226),M(294,1,ga,T1),l.Nb=function(t){La(this,t)},l.Ob=function(){return this.a.Ob()},l.Pb=function(){var t;return t=u(this.a.Pb(),42),t.dd()},l.Qb=function(){this.a.Qb()},O(wr,"AbstractMap/2/1",294),M(484,1,{484:1,42:1}),l.Fb=function(t){var n;return we(t,42)?(n=u(t,42),Vc(this.d,n.cd())&&Vc(this.e,n.dd())):!1},l.cd=function(){return this.d},l.dd=function(){return this.e},l.Hb=function(){return F3(this.d)^F3(this.e)},l.ed=function(t){return Rbe(this,t)},l.Ib=function(){return this.d+"="+this.e},O(wr,"AbstractMap/AbstractEntry",484),M(383,484,{484:1,383:1,42:1},OF),O(wr,"AbstractMap/SimpleEntry",383),M(1984,1,aoe),l.Fb=function(t){var n;return we(t,42)?(n=u(t,42),Vc(this.cd(),n.cd())&&Vc(this.dd(),n.dd())):!1},l.Hb=function(){return F3(this.cd())^F3(this.dd())},l.Ib=function(){return this.cd()+"="+this.dd()},O(wr,iht,1984),M(1992,1967,nht),l.tc=function(t){return LZe(this,t)},l._b=function(t){return fne(this,t)},l.vc=function(){return new k(this)},l.xc=function(t){var n;return n=t,hc(bye(this,n))},l.ec=function(){return new m(this)},O(wr,"AbstractNavigableMap",1992),M(739,H1,Xu,k),l.Hc=function(t){return we(t,42)&&LZe(this.b,u(t,42))},l.Kc=function(){return new o_(this.b)},l.Mc=function(t){var n;return we(t,42)?(n=u(t,42),bJe(this.b,n)):!1},l.gc=function(){return this.b.c},O(wr,"AbstractNavigableMap/EntrySet",739),M(493,H1,g6e,m),l.Nc=function(){return new DF(this)},l.$b=function(){ET(this.a)},l.Hc=function(t){return fne(this.a,t)},l.Kc=function(){var t;return t=new o_(new i_(this.a).b),new g(t)},l.Mc=function(t){return fne(this.a,t)?(k_(this.a,t),!0):!1},l.gc=function(){return this.a.c},O(wr,"AbstractNavigableMap/NavigableKeySet",493),M(494,1,ga,g),l.Nb=function(t){La(this,t)},l.Ob=function(){return wM(this.a.a)},l.Pb=function(){var t;return t=dj(this.a),t.cd()},l.Qb=function(){mWe(this.a)},O(wr,"AbstractNavigableMap/NavigableKeySet/1",494),M(2004,28,hy),l.Fc=function(t){return S8(l7(this,t)),!0},l.Gc=function(t){return Sn(t),kj(t!=this,"Can't add a queue to itself"),no(this,t)},l.$b=function(){for(;Kre(this)!=null;);},O(wr,"AbstractQueue",2004),M(302,28,{4:1,20:1,28:1,14:1},L3,UXe),l.Fc=function(t){return Pwe(this,t),!0},l.$b=function(){Hwe(this)},l.Hc=function(t){return Ktt(new y_(this),t)},l.dc=function(){return TT(this)},l.Kc=function(){return new y_(this)},l.Mc=function(t){return yen(new y_(this),t)},l.gc=function(){return this.c-this.b&this.a.length-1},l.Nc=function(){return new mn(this,272)},l.Qc=function(t){var n;return n=this.c-this.b&this.a.length-1,t.lengthn&&cs(t,n,null),t},l.b=0,l.c=0,O(wr,"ArrayDeque",302),M(446,1,ga,y_),l.Nb=function(t){La(this,t)},l.Ob=function(){return this.a!=this.b},l.Pb=function(){return gH(this)},l.Qb=function(){Uet(this)},l.a=0,l.b=0,l.c=-1,O(wr,"ArrayDeque/IteratorImpl",446),M(12,52,mht,st,su,Uu),l.Vc=function(t,n){Om(this,t,n)},l.Fc=function(t){return it(this,t)},l.Wc=function(t,n){return xye(this,t,n)},l.Gc=function(t){return Rs(this,t)},l.$b=function(){this.c=Me(Yn,yt,1,0,5,1)},l.Hc=function(t){return Yo(this,t,0)!=-1},l.Jc=function(t){Mu(this,t)},l.Xb=function(t){return St(this,t)},l.Xc=function(t){return Yo(this,t,0)},l.dc=function(){return this.c.length==0},l.Kc=function(){return new C(this)},l.$c=function(t){return Eg(this,t)},l.Mc=function(t){return Au(this,t)},l.Ud=function(t,n){VXe(this,t,n)},l._c=function(t,n){return gh(this,t,n)},l.gc=function(){return this.c.length},l.ad=function(t){aa(this,t)},l.Pc=function(){return tne(this)},l.Qc=function(t){return j1(this,t)};var i3n=O(wr,"ArrayList",12);M(7,1,ga,C),l.Nb=function(t){La(this,t)},l.Ob=function(){return nc(this)},l.Pb=function(){return Y(this)},l.Qb=function(){b_(this)},l.a=0,l.b=-1,O(wr,"ArrayList/1",7),M(2013,b.Function,{},he),l.te=function(t,n){return Fs(t,n)},M(154,52,yht,Al),l.Hc=function(t){return Ket(this,t)!=-1},l.Jc=function(t){var n,r,s,o;for(Sn(t),r=this.a,s=0,o=r.length;s>>0,t.toString(16)))},l.f=0,l.i=Ds;var VG=O(o0,"CNode",57);M(814,1,{},bpe),O(o0,"CNode/CNodeBuilder",814);var Z0t;M(1525,1,{},Er),l.Oe=function(t,n){return 0},l.Pe=function(t,n){return 0},O(o0,Aht,1525),M(1790,1,{},br),l.Le=function(t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X;for(_=gs,s=new C(t.a.b);s.as.d.c||s.d.c==h.d.c&&s.d.b0?t+this.n.d+this.n.a:0},l.Se=function(){var t,n,r,s,o;if(o=0,this.e)this.b?o=this.b.a:this.a[1][1]&&(o=this.a[1][1].Se());else if(this.g)o=qye(this,wse(this,null,!0));else for(n=(n1(),ie(re(Ey,1),tt,232,0,[pc,lu,bc])),r=0,s=n.length;r0?o+this.n.b+this.n.c:0},l.Te=function(){var t,n,r,s,o;if(this.g)for(t=wse(this,null,!1),r=(n1(),ie(re(Ey,1),tt,232,0,[pc,lu,bc])),s=0,o=r.length;s0&&(s[0]+=this.d,r-=s[0]),s[2]>0&&(s[2]+=this.d,r-=s[2]),this.c.a=b.Math.max(0,r),this.c.d=n.d+t.d+(this.c.a-r)/2,s[1]=b.Math.max(s[1],r),Kwe(this,lu,n.d+t.d+s[0]-(s[1]-r)/2,s)},l.b=null,l.d=0,l.e=!1,l.f=!1,l.g=!1;var Due=0,UG=0;O(wb,"GridContainerCell",1473),M(461,22,{3:1,35:1,22:1,461:1},pte);var a2,Nd,Af,cgt=Gr(wb,"HorizontalLabelAlignment",461,Wr,Pen,mYt),ugt;M(306,212,{212:1,306:1},fXe,yet,uXe),l.Re=function(){return XWe(this)},l.Se=function(){return kve(this)},l.a=0,l.c=!1;var g3n=O(wb,"LabelCell",306);M(244,326,{212:1,326:1,244:1},W_),l.Re=function(){return oI(this)},l.Se=function(){return cI(this)},l.Te=function(){uae(this)},l.Ue=function(){lae(this)},l.b=0,l.c=0,l.d=!1,O(wb,"StripContainerCell",244),M(1626,1,vi,Ms),l.Mb=function(t){return IVt(u(t,212))},O(wb,"StripContainerCell/lambda$0$Type",1626),M(1627,1,{},Pa),l.Fe=function(t){return u(t,212).Se()},O(wb,"StripContainerCell/lambda$1$Type",1627),M(1628,1,vi,Ta),l.Mb=function(t){return OVt(u(t,212))},O(wb,"StripContainerCell/lambda$2$Type",1628),M(1629,1,{},_a),l.Fe=function(t){return u(t,212).Re()},O(wb,"StripContainerCell/lambda$3$Type",1629),M(462,22,{3:1,35:1,22:1,462:1},bte);var Lf,o2,u1,lgt=Gr(wb,"VerticalLabelAlignment",462,Wr,Ben,yYt),hgt;M(789,1,{},i6e),l.c=0,l.d=0,l.k=0,l.s=0,l.t=0,l.v=!1,l.w=0,l.D=!1,O(Iz,"NodeContext",789),M(1471,1,ji,ka),l.ue=function(t,n){return fVe(u(t,61),u(n,61))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Iz,"NodeContext/0methodref$comparePortSides$Type",1471),M(1472,1,ji,Qi),l.ue=function(t,n){return afn(u(t,111),u(n,111))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Iz,"NodeContext/1methodref$comparePortContexts$Type",1472),M(159,22,{3:1,35:1,22:1,159:1},vh);var fgt,dgt,ggt,pgt,bgt,vgt,wgt,mgt,ygt,kgt,xgt,Egt,Tgt,_gt,Cgt,Sgt,Agt,Lgt,Mgt,Dgt,Igt,Iue,Ogt=Gr(Iz,"NodeLabelLocation",159,Wr,Xie,kYt),Ngt;M(111,1,{111:1},Wat),l.a=!1,O(Iz,"PortContext",111),M(1476,1,Un,ea),l.td=function(t){Dze(u(t,306))},O(PI,Hht,1476),M(1477,1,vi,Ca),l.Mb=function(t){return!!u(t,111).c},O(PI,zht,1477),M(1478,1,Un,Sa),l.td=function(t){Dze(u(t,111).c)},O(PI,"LabelPlacer/lambda$2$Type",1478);var F7e;M(1475,1,Un,cg),l.td=function(t){Mm(),fVt(u(t,111))},O(PI,"NodeLabelAndSizeUtilities/lambda$0$Type",1475),M(790,1,Un,eve),l.td=function(t){TUt(this.b,this.c,this.a,u(t,181))},l.a=!1,l.c=!1,O(PI,"NodeLabelCellCreator/lambda$0$Type",790),M(1474,1,Un,fn),l.td=function(t){pVt(this.a,u(t,181))},O(PI,"PortContextCreator/lambda$0$Type",1474);var WG;M(1829,1,{},Gc),O(I7,"GreedyRectangleStripOverlapRemover",1829),M(1830,1,ji,Ka),l.ue=function(t,n){return nKt(u(t,222),u(n,222))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(I7,"GreedyRectangleStripOverlapRemover/0methodref$compareByYCoordinate$Type",1830),M(1786,1,{},uHe),l.a=5,l.e=0,O(I7,"RectangleStripOverlapRemover",1786),M(1787,1,ji,Es),l.ue=function(t,n){return rKt(u(t,222),u(n,222))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(I7,"RectangleStripOverlapRemover/0methodref$compareLeftRectangleBorders$Type",1787),M(1789,1,ji,lp),l.ue=function(t,n){return SZt(u(t,222),u(n,222))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(I7,"RectangleStripOverlapRemover/1methodref$compareRightRectangleBorders$Type",1789),M(406,22,{3:1,35:1,22:1,406:1},BF);var iO,Oue,Nue,sO,Pgt=Gr(I7,"RectangleStripOverlapRemover/OverlapRemovalDirection",406,Wr,Ptn,xYt),Bgt;M(222,1,{222:1},Lne),O(I7,"RectangleStripOverlapRemover/RectangleNode",222),M(1788,1,Un,vr),l.td=function(t){Dun(this.a,u(t,222))},O(I7,"RectangleStripOverlapRemover/lambda$1$Type",1788),M(1304,1,ji,sd),l.ue=function(t,n){return Rvn(u(t,167),u(n,167))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Cd,"PolyominoCompactor/CornerCasesGreaterThanRestComparator",1304),M(1307,1,{},sh),l.Kb=function(t){return u(t,324).a},O(Cd,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$0$Type",1307),M(1308,1,vi,Ai),l.Mb=function(t){return u(t,323).a},O(Cd,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$1$Type",1308),M(1309,1,vi,nn),l.Mb=function(t){return u(t,323).a},O(Cd,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$2$Type",1309),M(1302,1,ji,Tr),l.ue=function(t,n){return v2n(u(t,167),u(n,167))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Cd,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator",1302),M(1305,1,{},Dh),l.Kb=function(t){return u(t,324).a},O(Cd,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator/lambda$0$Type",1305),M(767,1,ji,ai),l.ue=function(t,n){return msn(u(t,167),u(n,167))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Cd,"PolyominoCompactor/MinNumOfExtensionsComparator",767),M(1300,1,ji,Ns),l.ue=function(t,n){return Ain(u(t,321),u(n,321))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Cd,"PolyominoCompactor/MinPerimeterComparator",1300),M(1301,1,ji,mc),l.ue=function(t,n){return iun(u(t,321),u(n,321))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Cd,"PolyominoCompactor/MinPerimeterComparatorWithShape",1301),M(1303,1,ji,yu),l.ue=function(t,n){return $2n(u(t,167),u(n,167))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Cd,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator",1303),M(1306,1,{},Mo),l.Kb=function(t){return u(t,324).a},O(Cd,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator/lambda$0$Type",1306),M(777,1,{},o2e),l.Ce=function(t,n){return Dtn(this,u(t,46),u(n,167))},O(Cd,"SuccessorCombination",777),M(644,1,{},ku),l.Ce=function(t,n){var r;return ydn((r=u(t,46),u(n,167),r))},O(Cd,"SuccessorJitter",644),M(643,1,{},Ih),l.Ce=function(t,n){var r;return cpn((r=u(t,46),u(n,167),r))},O(Cd,"SuccessorLineByLine",643),M(568,1,{},qf),l.Ce=function(t,n){var r;return k0n((r=u(t,46),u(n,167),r))},O(Cd,"SuccessorManhattan",568),M(1356,1,{},lx),l.Ce=function(t,n){var r;return Ign((r=u(t,46),u(n,167),r))},O(Cd,"SuccessorMaxNormWindingInMathPosSense",1356),M(400,1,{},gr),l.Ce=function(t,n){return Yve(this,t,n)},l.c=!1,l.d=!1,l.e=!1,l.f=!1,O(Cd,"SuccessorQuadrantsGeneric",400),M(1357,1,{},ad),l.Kb=function(t){return u(t,324).a},O(Cd,"SuccessorQuadrantsGeneric/lambda$0$Type",1357),M(323,22,{3:1,35:1,22:1,323:1},PF),l.a=!1;var aO,oO,cO,uO,Rgt=Gr(Nz,P6e,323,Wr,Ftn,EYt),Fgt;M(1298,1,{}),l.Ib=function(){var t,n,r,s,o,h;for(r=" ",t=ct(0),o=0;o=0?"b"+t+"["+Sre(this.a)+"]":"b["+Sre(this.a)+"]"):"b_"+xv(this)},O(RI,"FBendpoint",559),M(282,134,{3:1,282:1,94:1,134:1},UUe),l.Ib=function(){return Sre(this)},O(RI,"FEdge",282),M(231,134,{3:1,231:1,94:1,134:1},k$);var b3n=O(RI,"FGraph",231);M(447,357,{3:1,447:1,357:1,94:1,134:1},YQe),l.Ib=function(){return this.b==null||this.b.length==0?"l["+Sre(this.a)+"]":"l_"+this.b},O(RI,"FLabel",447),M(144,357,{3:1,144:1,357:1,94:1,134:1},sYe),l.Ib=function(){return Cwe(this)},l.b=0,O(RI,"FNode",144),M(2003,1,{}),l.bf=function(t){R5e(this,t)},l.cf=function(){Mit(this)},l.d=0,O(V6e,"AbstractForceModel",2003),M(631,2003,{631:1},$tt),l.af=function(t,n){var r,s,o,h,d;return Cat(this.f,t,n),o=da(fc(n.d),t.d),d=b.Math.sqrt(o.a*o.a+o.b*o.b),s=b.Math.max(0,d-w_(t.e)/2-w_(n.e)/2),r=bnt(this.e,t,n),r>0?h=-TZt(s,this.c)*r:h=bKt(s,this.b)*u(K(t,(a1(),Q7)),19).a,bd(o,h/d),o},l.bf=function(t){R5e(this,t),this.a=u(K(t,(a1(),JG)),19).a,this.c=Ue(ft(K(t,eq))),this.b=Ue(ft(K(t,Hue)))},l.df=function(t){return t0&&(h-=AVt(s,this.a)*r),bd(o,h*this.b/d),o},l.bf=function(t){var n,r,s,o,h,d,v;for(R5e(this,t),this.b=Ue(ft(K(t,(a1(),zue)))),this.c=this.b/u(K(t,JG),19).a,s=t.e.c.length,h=0,o=0,v=new C(t.e);v.a0},l.a=0,l.b=0,l.c=0,O(V6e,"FruchtermanReingoldModel",632),M(849,1,zh,DJ),l.Qe=function(t){en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Rz),""),"Force Model"),"Determines the model for force calculation."),W7e),(Ng(),vs)),K7e),rn((i1(),Fn))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,U6e),""),"Iterations"),"The number of iterations on the force model."),ct(300)),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,W6e),""),"Repulsive Power"),"Determines how many bend points are added to the edge; such bend points are regarded as repelling particles in the force model"),ct(0)),Cc),Za),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Aoe),""),"FR Temperature"),"The temperature is used as a scaling factor for particle displacements."),Sd),qo),ma),rn(Fn)))),va(t,Aoe,Rz,ipt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Loe),""),"Eades Repulsion"),"Factor for repulsive forces in Eades' model."),5),qo),ma),rn(Fn)))),va(t,Loe,Rz,tpt),Slt((new rT,t))};var Zgt,Jgt,W7e,ept,tpt,npt,rpt,ipt;O(TC,"ForceMetaDataProvider",849),M(424,22,{3:1,35:1,22:1,424:1},h2e);var $ue,ZG,K7e=Gr(TC,"ForceModelStrategy",424,Wr,len,CYt),spt;M(988,1,zh,rT),l.Qe=function(t){Slt(t)};var apt,opt,Y7e,JG,X7e,cpt,upt,lpt,Q7e,hpt,Z7e,J7e,fpt,Q7,dpt,Hue,eEe,gpt,ppt,eq,zue;O(TC,"ForceOptions",988),M(989,1,{},N5),l.$e=function(){var t;return t=new dpe,t},l._e=function(t){},O(TC,"ForceOptions/ForceFactory",989);var fO,eS,kk,tq;M(850,1,zh,IJ),l.Qe=function(t){en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Y6e),""),"Fixed Position"),"Prevent that the node is moved by the layout algorithm."),(Mn(),!1)),(Ng(),za)),Us),rn((i1(),ua))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,X6e),""),"Desired Edge Length"),"Either specified for parent nodes or for individual edges, where the latter takes higher precedence."),100),qo),ma),Ui(Fn,ie(re(Ug,1),tt,175,0,[Fd]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Q6e),""),"Layout Dimension"),"Dimensions that are permitted to be altered during layout."),tEe),vs),cEe),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Z6e),""),"Stress Epsilon"),"Termination criterion for the iterative process."),Sd),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,J6e),""),"Iteration Limit"),"Maximum number of performed iterations. Takes higher precedence than 'epsilon'."),ct(Ei)),Cc),Za),rn(Fn)))),hlt((new OJ,t))};var bpt,vpt,tEe,wpt,mpt,ypt;O(TC,"StressMetaDataProvider",850),M(992,1,zh,OJ),l.Qe=function(t){hlt(t)};var nq,nEe,rEe,iEe,sEe,aEe,kpt,xpt,Ept,Tpt,oEe,_pt;O(TC,"StressOptions",992),M(993,1,{},ah),l.$e=function(){var t;return t=new WUe,t},l._e=function(t){},O(TC,"StressOptions/StressFactory",993),M(1128,209,mb,WUe),l.Ze=function(t,n){var r,s,o,h,d;for(kr(n,eft,1),It(Mt(Ft(t,(ZD(),sEe))))?It(Mt(Ft(t,oEe)))||i$((r=new sr((Tm(),new ym(t))),r)):Iot(new dpe,t,Kc(n,1)),o=cnt(t),s=kut(this.a,o),d=s.Kc();d.Ob();)h=u(d.Pb(),231),!(h.e.c.length<=1)&&(Pvn(this.b,h),d0n(this.b),Mu(h.d,new od));o=Nlt(s),Dlt(o),ur(n)},O($z,"StressLayoutProvider",1128),M(1129,1,Un,od),l.td=function(t){q5e(u(t,447))},O($z,"StressLayoutProvider/lambda$0$Type",1129),M(990,1,{},nHe),l.c=0,l.e=0,l.g=0,O($z,"StressMajorization",990),M(379,22,{3:1,35:1,22:1,379:1},vte);var Gue,que,Vue,cEe=Gr($z,"StressMajorization/Dimension",379,Wr,Fen,SYt),Cpt;M(991,1,ji,Li),l.ue=function(t,n){return rYt(this.a,u(t,144),u(n,144))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O($z,"StressMajorization/lambda$0$Type",991),M(1229,1,{},cQe),O(pk,"ElkLayered",1229),M(1230,1,Un,P5),l.td=function(t){gdn(u(t,37))},O(pk,"ElkLayered/lambda$0$Type",1230),M(1231,1,Un,wi),l.td=function(t){iYt(this.a,u(t,37))},O(pk,"ElkLayered/lambda$1$Type",1231),M(1263,1,{},NVe);var Spt,Apt,Lpt;O(pk,"GraphConfigurator",1263),M(759,1,Un,Ts),l.td=function(t){Fst(this.a,u(t,10))},O(pk,"GraphConfigurator/lambda$0$Type",759),M(760,1,{},B5),l.Kb=function(t){return H3e(),new vn(null,new mn(u(t,29).a,16))},O(pk,"GraphConfigurator/lambda$1$Type",760),M(761,1,Un,Yi),l.td=function(t){Fst(this.a,u(t,10))},O(pk,"GraphConfigurator/lambda$2$Type",761),M(1127,209,mb,sHe),l.Ze=function(t,n){var r;r=nvn(new hHe,t),je(Ft(t,(pt(),Iy)))===je((F0(),Wg))?Non(this.a,r,n):Mdn(this.a,r,n),Clt(new PJ,r)},O(pk,"LayeredLayoutProvider",1127),M(356,22,{3:1,35:1,22:1,356:1},yM);var Pd,c2,bu,Zc,Go,uEe=Gr(pk,"LayeredPhases",356,Wr,knn,AYt),Mpt;M(1651,1,{},Yet),l.i=0;var Dpt;O($I,"ComponentsToCGraphTransformer",1651);var Ipt;M(1652,1,{},y9),l.ef=function(t,n){return b.Math.min(t.a!=null?Ue(t.a):t.c.i,n.a!=null?Ue(n.a):n.c.i)},l.ff=function(t,n){return b.Math.min(t.a!=null?Ue(t.a):t.c.i,n.a!=null?Ue(n.a):n.c.i)},O($I,"ComponentsToCGraphTransformer/1",1652),M(81,1,{81:1}),l.i=0,l.k=!0,l.o=Ds;var Uue=O(SC,"CNode",81);M(460,81,{460:1,81:1},fbe,d3e),l.Ib=function(){return""},O($I,"ComponentsToCGraphTransformer/CRectNode",460),M(1623,1,{},vL);var Wue,Kue;O($I,"OneDimensionalComponentsCompaction",1623),M(1624,1,{},v1),l.Kb=function(t){return Len(u(t,46))},l.Fb=function(t){return this===t},O($I,"OneDimensionalComponentsCompaction/lambda$0$Type",1624),M(1625,1,{},dp),l.Kb=function(t){return zon(u(t,46))},l.Fb=function(t){return this===t},O($I,"OneDimensionalComponentsCompaction/lambda$1$Type",1625),M(1654,1,{},iYe),O(SC,"CGraph",1654),M(189,1,{189:1},Wie),l.b=0,l.c=0,l.e=0,l.g=!0,l.i=Ds,O(SC,"CGroup",189),M(1653,1,{},om),l.ef=function(t,n){return b.Math.max(t.a!=null?Ue(t.a):t.c.i,n.a!=null?Ue(n.a):n.c.i)},l.ff=function(t,n){return b.Math.max(t.a!=null?Ue(t.a):t.c.i,n.a!=null?Ue(n.a):n.c.i)},O(SC,Aht,1653),M(1655,1,{},jat),l.d=!1;var Opt,Yue=O(SC,Dht,1655);M(1656,1,{},yc),l.Kb=function(t){return Zpe(),Mn(),u(u(t,46).a,81).d.e!=0},l.Fb=function(t){return this===t},O(SC,Iht,1656),M(823,1,{},xve),l.a=!1,l.b=!1,l.c=!1,l.d=!1,O(SC,Oht,823),M(1825,1,{},xKe),O(Hz,Nht,1825);var dO=ss(kb,Cht);M(1826,1,{369:1},JYe),l.Ke=function(t){Epn(this,u(t,466))},O(Hz,Pht,1826),M(1827,1,ji,hx),l.ue=function(t,n){return EJt(u(t,81),u(n,81))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Hz,Bht,1827),M(466,1,{466:1},d2e),l.a=!1,O(Hz,Rht,466),M(1828,1,ji,Vo),l.ue=function(t,n){return Pln(u(t,466),u(n,466))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Hz,Fht,1828),M(140,1,{140:1},r8,vve),l.Fb=function(t){var n;return t==null||v3n!=pl(t)?!1:(n=u(t,140),Vc(this.c,n.c)&&Vc(this.d,n.d))},l.Hb=function(){return fH(ie(re(Yn,1),yt,1,5,[this.c,this.d]))},l.Ib=function(){return"("+this.c+io+this.d+(this.a?"cx":"")+this.b+")"},l.a=!0,l.c=0,l.d=0;var v3n=O(kb,"Point",140);M(405,22,{3:1,35:1,22:1,405:1},RF);var vw,Ty,O4,_y,Npt=Gr(kb,"Point/Quadrant",405,Wr,jtn,LYt),Ppt;M(1642,1,{},aHe),l.b=null,l.c=null,l.d=null,l.e=null,l.f=null;var Bpt,Rpt,Fpt,jpt,$pt;O(kb,"RectilinearConvexHull",1642),M(574,1,{369:1},IH),l.Ke=function(t){xrn(this,u(t,140))},l.b=0;var lEe;O(kb,"RectilinearConvexHull/MaximalElementsEventHandler",574),M(1644,1,ji,am),l.ue=function(t,n){return fJt(ft(t),ft(n))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(kb,"RectilinearConvexHull/MaximalElementsEventHandler/lambda$0$Type",1644),M(1643,1,{369:1},vet),l.Ke=function(t){Bgn(this,u(t,140))},l.a=0,l.b=null,l.c=null,l.d=null,l.e=null,O(kb,"RectilinearConvexHull/RectangleEventHandler",1643),M(1645,1,ji,ev),l.ue=function(t,n){return ptn(u(t,140),u(n,140))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(kb,"RectilinearConvexHull/lambda$0$Type",1645),M(1646,1,ji,cd),l.ue=function(t,n){return btn(u(t,140),u(n,140))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(kb,"RectilinearConvexHull/lambda$1$Type",1646),M(1647,1,ji,fx),l.ue=function(t,n){return wtn(u(t,140),u(n,140))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(kb,"RectilinearConvexHull/lambda$2$Type",1647),M(1648,1,ji,oh),l.ue=function(t,n){return vtn(u(t,140),u(n,140))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(kb,"RectilinearConvexHull/lambda$3$Type",1648),M(1649,1,ji,QK),l.ue=function(t,n){return yfn(u(t,140),u(n,140))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(kb,"RectilinearConvexHull/lambda$4$Type",1649),M(1650,1,{},MXe),O(kb,"Scanline",1650),M(2005,1,{}),O(Ad,"AbstractGraphPlacer",2005),M(325,1,{325:1},xUe),l.mf=function(t){return this.nf(t)?(sn(this.b,u(K(t,(et(),Sy)),21),t),!0):!1},l.nf=function(t){var n,r,s,o;for(n=u(K(t,(et(),Sy)),21),o=u(Ii($i,n),21),s=o.Kc();s.Ob();)if(r=u(s.Pb(),21),!u(Ii(this.b,r),15).dc())return!1;return!0};var $i;O(Ad,"ComponentGroup",325),M(765,2005,{},vpe),l.of=function(t){var n,r;for(r=new C(this.a);r.aq&&(nt=0,bt+=z+o,z=0),le=d.c,cC(d,nt+le.a,bt+le.b),Zf(le),r=b.Math.max(r,nt+Ee.a),z=b.Math.max(z,Ee.b),nt+=Ee.a+o;if(n.f.a=r,n.f.b=bt+z,It(Mt(K(h,zq)))){for(s=new k9,l6e(s,t,o),P=t.Kc();P.Ob();)L=u(P.Pb(),37),Ni(Zf(L.c),s.e);Ni(Zf(n.f),s.a)}lme(n,t)},O(Ad,"SimpleRowGraphPlacer",1291),M(1292,1,ji,Vf),l.ue=function(t,n){return wsn(u(t,37),u(n,37))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Ad,"SimpleRowGraphPlacer/1",1292);var zpt;M(1262,1,_d,cm),l.Lb=function(t){var n;return n=u(K(u(t,243).b,(pt(),Fo)),74),!!n&&n.b!=0},l.Fb=function(t){return this===t},l.Mb=function(t){var n;return n=u(K(u(t,243).b,(pt(),Fo)),74),!!n&&n.b!=0},O(zz,"CompoundGraphPostprocessor/1",1262),M(1261,1,ps,fHe),l.pf=function(t,n){dit(this,u(t,37),n)},O(zz,"CompoundGraphPreprocessor",1261),M(441,1,{441:1},ert),l.c=!1,O(zz,"CompoundGraphPreprocessor/ExternalPort",441),M(243,1,{243:1},mj),l.Ib=function(){return nne(this.c)+":"+Pat(this.b)},O(zz,"CrossHierarchyEdge",243),M(763,1,ji,Di),l.ue=function(t,n){return oln(this,u(t,243),u(n,243))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(zz,"CrossHierarchyEdgeComparator",763),M(299,134,{3:1,299:1,94:1,134:1}),l.p=0,O(uu,"LGraphElement",299),M(17,299,{3:1,17:1,299:1,94:1,134:1},Iv),l.Ib=function(){return Pat(this)};var Que=O(uu,"LEdge",17);M(37,299,{3:1,20:1,37:1,299:1,94:1,134:1},Ime),l.Jc=function(t){Da(this,t)},l.Kc=function(){return new C(this.b)},l.Ib=function(){return this.b.c.length==0?"G-unlayered"+Yp(this.a):this.a.c.length==0?"G-layered"+Yp(this.b):"G[layerless"+Yp(this.a)+", layers"+Yp(this.b)+"]"};var Gpt=O(uu,"LGraph",37),qpt;M(657,1,{}),l.qf=function(){return this.e.n},l.We=function(t){return K(this.e,t)},l.rf=function(){return this.e.o},l.sf=function(){return this.e.p},l.Xe=function(t){return ta(this.e,t)},l.tf=function(t){this.e.n.a=t.a,this.e.n.b=t.b},l.uf=function(t){this.e.o.a=t.a,this.e.o.b=t.b},l.vf=function(t){this.e.p=t},O(uu,"LGraphAdapters/AbstractLShapeAdapter",657),M(577,1,{839:1},es),l.wf=function(){var t,n;if(!this.b)for(this.b=Wd(this.a.b.c.length),n=new C(this.a.b);n.a0&&$nt((zr(n-1,t.length),t.charCodeAt(n-1)),aft);)--n;if(h> ",t),zH(r)),Yr(Ec((t.a+="[",t),r.i),"]")),t.a},l.c=!0,l.d=!1;var pEe,bEe,vEe,wEe,mEe,yEe,Upt=O(uu,"LPort",11);M(397,1,i0,sa),l.Jc=function(t){Da(this,t)},l.Kc=function(){var t;return t=new C(this.a.e),new Ks(t)},O(uu,"LPort/1",397),M(1290,1,ga,Ks),l.Nb=function(t){La(this,t)},l.Pb=function(){return u(Y(this.a),17).c},l.Ob=function(){return nc(this.a)},l.Qb=function(){b_(this.a)},O(uu,"LPort/1/1",1290),M(359,1,i0,Ar),l.Jc=function(t){Da(this,t)},l.Kc=function(){var t;return t=new C(this.a.g),new We(t)},O(uu,"LPort/2",359),M(762,1,ga,We),l.Nb=function(t){La(this,t)},l.Pb=function(){return u(Y(this.a),17).d},l.Ob=function(){return nc(this.a)},l.Qb=function(){b_(this.a)},O(uu,"LPort/2/1",762),M(1283,1,i0,JGe),l.Jc=function(t){Da(this,t)},l.Kc=function(){return new N1(this)},O(uu,"LPort/CombineIter",1283),M(201,1,ga,N1),l.Nb=function(t){La(this,t)},l.Qb=function(){Eze()},l.Ob=function(){return s_(this)},l.Pb=function(){return nc(this.a)?Y(this.a):Y(this.b)},O(uu,"LPort/CombineIter/1",201),M(1285,1,_d,gp),l.Lb=function(t){return NKe(t)},l.Fb=function(t){return this===t},l.Mb=function(t){return Ku(),u(t,11).e.c.length!=0},O(uu,"LPort/lambda$0$Type",1285),M(1284,1,_d,um),l.Lb=function(t){return PKe(t)},l.Fb=function(t){return this===t},l.Mb=function(t){return Ku(),u(t,11).g.c.length!=0},O(uu,"LPort/lambda$1$Type",1284),M(1286,1,_d,JK),l.Lb=function(t){return Ku(),u(t,11).j==(ht(),An)},l.Fb=function(t){return this===t},l.Mb=function(t){return Ku(),u(t,11).j==(ht(),An)},O(uu,"LPort/lambda$2$Type",1286),M(1287,1,_d,R2),l.Lb=function(t){return Ku(),u(t,11).j==(ht(),$n)},l.Fb=function(t){return this===t},l.Mb=function(t){return Ku(),u(t,11).j==(ht(),$n)},O(uu,"LPort/lambda$3$Type",1287),M(1288,1,_d,eY),l.Lb=function(t){return Ku(),u(t,11).j==(ht(),xr)},l.Fb=function(t){return this===t},l.Mb=function(t){return Ku(),u(t,11).j==(ht(),xr)},O(uu,"LPort/lambda$4$Type",1288),M(1289,1,_d,tY),l.Lb=function(t){return Ku(),u(t,11).j==(ht(),Dn)},l.Fb=function(t){return this===t},l.Mb=function(t){return Ku(),u(t,11).j==(ht(),Dn)},O(uu,"LPort/lambda$5$Type",1289),M(29,299,{3:1,20:1,299:1,29:1,94:1,134:1},Bh),l.Jc=function(t){Da(this,t)},l.Kc=function(){return new C(this.a)},l.Ib=function(){return"L_"+Yo(this.b.b,this,0)+Yp(this.a)},O(uu,"Layer",29),M(1342,1,{},hHe),O(Rg,lft,1342),M(1346,1,{},R5),l.Kb=function(t){return zo(u(t,82))},O(Rg,"ElkGraphImporter/0methodref$connectableShapeToNode$Type",1346),M(1349,1,{},x9),l.Kb=function(t){return zo(u(t,82))},O(Rg,"ElkGraphImporter/1methodref$connectableShapeToNode$Type",1349),M(1343,1,Un,On),l.td=function(t){Yat(this.a,u(t,118))},O(Rg,hft,1343),M(1344,1,Un,Ir),l.td=function(t){Yat(this.a,u(t,118))},O(Rg,fft,1344),M(1345,1,{},VP),l.Kb=function(t){return new vn(null,new mn(oJt(u(t,79)),16))},O(Rg,dft,1345),M(1347,1,vi,ar),l.Mb=function(t){return cWt(this.a,u(t,33))},O(Rg,gft,1347),M(1348,1,{},dx),l.Kb=function(t){return new vn(null,new mn(cJt(u(t,79)),16))},O(Rg,"ElkGraphImporter/lambda$5$Type",1348),M(1350,1,vi,or),l.Mb=function(t){return uWt(this.a,u(t,33))},O(Rg,"ElkGraphImporter/lambda$7$Type",1350),M(1351,1,vi,nY),l.Mb=function(t){return _Jt(u(t,79))},O(Rg,"ElkGraphImporter/lambda$8$Type",1351),M(1278,1,{},PJ);var Wpt;O(Rg,"ElkGraphLayoutTransferrer",1278),M(1279,1,vi,qa),l.Mb=function(t){return QKt(this.a,u(t,17))},O(Rg,"ElkGraphLayoutTransferrer/lambda$0$Type",1279),M(1280,1,Un,qr),l.td=function(t){bM(),it(this.a,u(t,17))},O(Rg,"ElkGraphLayoutTransferrer/lambda$1$Type",1280),M(1281,1,vi,is),l.Mb=function(t){return BKt(this.a,u(t,17))},O(Rg,"ElkGraphLayoutTransferrer/lambda$2$Type",1281),M(1282,1,Un,Uo),l.td=function(t){bM(),it(this.a,u(t,17))},O(Rg,"ElkGraphLayoutTransferrer/lambda$3$Type",1282),M(1485,1,ps,gx),l.pf=function(t,n){Fin(u(t,37),n)},O(Pn,"CommentNodeMarginCalculator",1485),M(1486,1,{},rY),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"CommentNodeMarginCalculator/lambda$0$Type",1486),M(1487,1,Un,iY),l.td=function(t){wvn(u(t,10))},O(Pn,"CommentNodeMarginCalculator/lambda$1$Type",1487),M(1488,1,ps,sY),l.pf=function(t,n){Dpn(u(t,37),n)},O(Pn,"CommentPostprocessor",1488),M(1489,1,ps,aY),l.pf=function(t,n){Fmn(u(t,37),n)},O(Pn,"CommentPreprocessor",1489),M(1490,1,ps,oY),l.pf=function(t,n){egn(u(t,37),n)},O(Pn,"ConstraintsPostprocessor",1490),M(1491,1,ps,cY),l.pf=function(t,n){osn(u(t,37),n)},O(Pn,"EdgeAndLayerConstraintEdgeReverser",1491),M(1492,1,ps,uY),l.pf=function(t,n){Yon(u(t,37),n)},O(Pn,"EndLabelPostprocessor",1492),M(1493,1,{},lY),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"EndLabelPostprocessor/lambda$0$Type",1493),M(1494,1,vi,hY),l.Mb=function(t){return GJt(u(t,10))},O(Pn,"EndLabelPostprocessor/lambda$1$Type",1494),M(1495,1,Un,fY),l.td=function(t){Bln(u(t,10))},O(Pn,"EndLabelPostprocessor/lambda$2$Type",1495),M(1496,1,ps,dY),l.pf=function(t,n){_1n(u(t,37),n)},O(Pn,"EndLabelPreprocessor",1496),M(1497,1,{},mL),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"EndLabelPreprocessor/lambda$0$Type",1497),M(1498,1,Un,_We),l.td=function(t){_Ut(this.a,this.b,this.c,u(t,10))},l.a=0,l.b=0,l.c=!1,O(Pn,"EndLabelPreprocessor/lambda$1$Type",1498),M(1499,1,vi,gY),l.Mb=function(t){return je(K(u(t,70),(pt(),Rd)))===je((P1(),TE))},O(Pn,"EndLabelPreprocessor/lambda$2$Type",1499),M(1500,1,Un,qc),l.td=function(t){ci(this.a,u(t,70))},O(Pn,"EndLabelPreprocessor/lambda$3$Type",1500),M(1501,1,vi,pY),l.Mb=function(t){return je(K(u(t,70),(pt(),Rd)))===je((P1(),zy))},O(Pn,"EndLabelPreprocessor/lambda$4$Type",1501),M(1502,1,Un,uo),l.td=function(t){ci(this.a,u(t,70))},O(Pn,"EndLabelPreprocessor/lambda$5$Type",1502),M(1551,1,ps,NJ),l.pf=function(t,n){ron(u(t,37),n)};var Kpt;O(Pn,"EndLabelSorter",1551),M(1552,1,ji,E9),l.ue=function(t,n){return Ocn(u(t,456),u(n,456))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"EndLabelSorter/1",1552),M(456,1,{456:1},VYe),O(Pn,"EndLabelSorter/LabelGroup",456),M(1553,1,{},UP),l.Kb=function(t){return vM(),new vn(null,new mn(u(t,29).a,16))},O(Pn,"EndLabelSorter/lambda$0$Type",1553),M(1554,1,vi,F5),l.Mb=function(t){return vM(),u(t,10).k==(zn(),Hs)},O(Pn,"EndLabelSorter/lambda$1$Type",1554),M(1555,1,Un,bY),l.td=function(t){Bfn(u(t,10))},O(Pn,"EndLabelSorter/lambda$2$Type",1555),M(1556,1,vi,vY),l.Mb=function(t){return vM(),je(K(u(t,70),(pt(),Rd)))===je((P1(),zy))},O(Pn,"EndLabelSorter/lambda$3$Type",1556),M(1557,1,vi,wY),l.Mb=function(t){return vM(),je(K(u(t,70),(pt(),Rd)))===je((P1(),TE))},O(Pn,"EndLabelSorter/lambda$4$Type",1557),M(1503,1,ps,mY),l.pf=function(t,n){Lvn(this,u(t,37))},l.b=0,l.c=0,O(Pn,"FinalSplineBendpointsCalculator",1503),M(1504,1,{},yY),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"FinalSplineBendpointsCalculator/lambda$0$Type",1504),M(1505,1,{},T9),l.Kb=function(t){return new vn(null,new Sv(new cr(fr(js(u(t,10)).a.Kc(),new V))))},O(Pn,"FinalSplineBendpointsCalculator/lambda$1$Type",1505),M(1506,1,vi,yL),l.Mb=function(t){return!to(u(t,17))},O(Pn,"FinalSplineBendpointsCalculator/lambda$2$Type",1506),M(1507,1,vi,WP),l.Mb=function(t){return ta(u(t,17),(et(),Mb))},O(Pn,"FinalSplineBendpointsCalculator/lambda$3$Type",1507),M(1508,1,Un,Lc),l.td=function(t){z2n(this.a,u(t,128))},O(Pn,"FinalSplineBendpointsCalculator/lambda$4$Type",1508),M(1509,1,Un,v3),l.td=function(t){Nse(u(t,17).a)},O(Pn,"FinalSplineBendpointsCalculator/lambda$5$Type",1509),M(792,1,ps,Ra),l.pf=function(t,n){xwn(this,u(t,37),n)},O(Pn,"GraphTransformer",792),M(511,22,{3:1,35:1,22:1,511:1},f2e);var Jue,gO,Ypt=Gr(Pn,"GraphTransformer/Mode",511,Wr,hen,GXt),Xpt;M(1510,1,ps,w3),l.pf=function(t,n){Zgn(u(t,37),n)},O(Pn,"HierarchicalNodeResizingProcessor",1510),M(1511,1,ps,kY),l.pf=function(t,n){Oin(u(t,37),n)},O(Pn,"HierarchicalPortConstraintProcessor",1511),M(1512,1,ji,df),l.ue=function(t,n){return qcn(u(t,10),u(n,10))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"HierarchicalPortConstraintProcessor/NodeComparator",1512),M(1513,1,ps,j5),l.pf=function(t,n){Jbn(u(t,37),n)},O(Pn,"HierarchicalPortDummySizeProcessor",1513),M(1514,1,ps,xY),l.pf=function(t,n){Xpn(this,u(t,37),n)},l.a=0,O(Pn,"HierarchicalPortOrthogonalEdgeRouter",1514),M(1515,1,ji,px),l.ue=function(t,n){return tKt(u(t,10),u(n,10))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"HierarchicalPortOrthogonalEdgeRouter/1",1515),M(1516,1,ji,zd),l.ue=function(t,n){return prn(u(t,10),u(n,10))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"HierarchicalPortOrthogonalEdgeRouter/2",1516),M(1517,1,ps,EY),l.pf=function(t,n){kfn(u(t,37),n)},O(Pn,"HierarchicalPortPositionProcessor",1517),M(1518,1,ps,BJ),l.pf=function(t,n){byn(this,u(t,37))},l.a=0,l.c=0;var rq,iq;O(Pn,"HighDegreeNodeLayeringProcessor",1518),M(571,1,{571:1},TY),l.b=-1,l.d=-1,O(Pn,"HighDegreeNodeLayeringProcessor/HighDegreeNodeInformation",571),M(1519,1,{},_Y),l.Kb=function(t){return GM(),Xo(u(t,10))},l.Fb=function(t){return this===t},O(Pn,"HighDegreeNodeLayeringProcessor/lambda$0$Type",1519),M(1520,1,{},CY),l.Kb=function(t){return GM(),js(u(t,10))},l.Fb=function(t){return this===t},O(Pn,"HighDegreeNodeLayeringProcessor/lambda$1$Type",1520),M(1526,1,ps,_9),l.pf=function(t,n){Sbn(this,u(t,37),n)},O(Pn,"HyperedgeDummyMerger",1526),M(793,1,{},nve),l.a=!1,l.b=!1,l.c=!1,O(Pn,"HyperedgeDummyMerger/MergeState",793),M(1527,1,{},kL),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"HyperedgeDummyMerger/lambda$0$Type",1527),M(1528,1,{},KP),l.Kb=function(t){return new vn(null,new mn(u(t,10).j,16))},O(Pn,"HyperedgeDummyMerger/lambda$1$Type",1528),M(1529,1,Un,xL),l.td=function(t){u(t,11).p=-1},O(Pn,"HyperedgeDummyMerger/lambda$2$Type",1529),M(1530,1,ps,$5),l.pf=function(t,n){_bn(u(t,37),n)},O(Pn,"HypernodesProcessor",1530),M(1531,1,ps,SY),l.pf=function(t,n){Cbn(u(t,37),n)},O(Pn,"InLayerConstraintProcessor",1531),M(1532,1,ps,YP),l.pf=function(t,n){nsn(u(t,37),n)},O(Pn,"InnermostNodeMarginCalculator",1532),M(1533,1,ps,XP),l.pf=function(t,n){Omn(this,u(t,37))},l.a=Ds,l.b=Ds,l.c=gs,l.d=gs;var w3n=O(Pn,"InteractiveExternalPortPositioner",1533);M(1534,1,{},AY),l.Kb=function(t){return u(t,17).d.i},l.Fb=function(t){return this===t},O(Pn,"InteractiveExternalPortPositioner/lambda$0$Type",1534),M(1535,1,{},lo),l.Kb=function(t){return iKt(this.a,ft(t))},l.Fb=function(t){return this===t},O(Pn,"InteractiveExternalPortPositioner/lambda$1$Type",1535),M(1536,1,{},LY),l.Kb=function(t){return u(t,17).c.i},l.Fb=function(t){return this===t},O(Pn,"InteractiveExternalPortPositioner/lambda$2$Type",1536),M(1537,1,{},Sl),l.Kb=function(t){return sKt(this.a,ft(t))},l.Fb=function(t){return this===t},O(Pn,"InteractiveExternalPortPositioner/lambda$3$Type",1537),M(1538,1,{},Yf),l.Kb=function(t){return KKt(this.a,ft(t))},l.Fb=function(t){return this===t},O(Pn,"InteractiveExternalPortPositioner/lambda$4$Type",1538),M(1539,1,{},mp),l.Kb=function(t){return YKt(this.a,ft(t))},l.Fb=function(t){return this===t},O(Pn,"InteractiveExternalPortPositioner/lambda$5$Type",1539),M(77,22,{3:1,35:1,22:1,77:1,234:1},Cs),l.Kf=function(){switch(this.g){case 15:return new VX;case 22:return new UX;case 47:return new YX;case 28:case 35:return new m3;case 32:return new gx;case 42:return new sY;case 1:return new aY;case 41:return new oY;case 56:return new Ra((j8(),gO));case 0:return new Ra((j8(),Jue));case 2:return new cY;case 54:return new uY;case 33:return new dY;case 51:return new mY;case 55:return new w3;case 13:return new kY;case 38:return new j5;case 44:return new xY;case 40:return new EY;case 9:return new BJ;case 49:return new hUe;case 37:return new _9;case 43:return new $5;case 27:return new SY;case 30:return new YP;case 3:return new XP;case 18:return new DY;case 29:return new IY;case 5:return new _R;case 50:return new MY;case 34:return new RJ;case 36:return new bx;case 52:return new NJ;case 11:return new lm;case 7:return new jJ;case 39:return new vx;case 45:return new BY;case 16:return new C9;case 10:return new ud;case 48:return new TL;case 21:return new wx;case 23:return new ete((Gv(),xS));case 8:return new eB;case 12:return new CL;case 4:return new FY;case 19:return new iT;case 17:return new GY;case 53:return new qY;case 6:return new oB;case 25:return new pHe;case 46:return new KY;case 31:return new YUe;case 14:return new AL;case 26:return new ZX;case 20:return new nX;case 24:return new ete((Gv(),cV));default:throw J(new Ln(Noe+(this.f!=null?this.f:""+this.g)))}};var kEe,xEe,EEe,TEe,_Ee,CEe,SEe,AEe,LEe,MEe,tS,sq,aq,DEe,IEe,OEe,NEe,PEe,BEe,REe,nS,FEe,jEe,$Ee,HEe,zEe,ele,oq,cq,GEe,uq,lq,hq,Z7,J7,eE,qEe,fq,dq,VEe,gq,pq,UEe,WEe,KEe,YEe,bq,tle,pO,vq,wq,mq,yq,XEe,QEe,ZEe,JEe,m3n=Gr(Pn,tke,77,Wr,Hot,zXt),Qpt;M(1540,1,ps,DY),l.pf=function(t,n){Pmn(u(t,37),n)},O(Pn,"InvertedPortProcessor",1540),M(1541,1,ps,IY),l.pf=function(t,n){P2n(u(t,37),n)},O(Pn,"LabelAndNodeSizeProcessor",1541),M(1542,1,vi,OY),l.Mb=function(t){return u(t,10).k==(zn(),Hs)},O(Pn,"LabelAndNodeSizeProcessor/lambda$0$Type",1542),M(1543,1,vi,Gd),l.Mb=function(t){return u(t,10).k==(zn(),Ls)},O(Pn,"LabelAndNodeSizeProcessor/lambda$1$Type",1543),M(1544,1,Un,CWe),l.td=function(t){CUt(this.b,this.a,this.c,u(t,10))},l.a=!1,l.c=!1,O(Pn,"LabelAndNodeSizeProcessor/lambda$2$Type",1544),M(1545,1,ps,_R),l.pf=function(t,n){smn(u(t,37),n)};var Zpt;O(Pn,"LabelDummyInserter",1545),M(1546,1,_d,tv),l.Lb=function(t){return je(K(u(t,70),(pt(),Rd)))===je((P1(),EE))},l.Fb=function(t){return this===t},l.Mb=function(t){return je(K(u(t,70),(pt(),Rd)))===je((P1(),EE))},O(Pn,"LabelDummyInserter/1",1546),M(1547,1,ps,MY),l.pf=function(t,n){own(u(t,37),n)},O(Pn,"LabelDummyRemover",1547),M(1548,1,vi,NY),l.Mb=function(t){return It(Mt(K(u(t,70),(pt(),Gle))))},O(Pn,"LabelDummyRemover/lambda$0$Type",1548),M(1359,1,ps,RJ),l.pf=function(t,n){Bwn(this,u(t,37),n)},l.a=null;var nle;O(Pn,"LabelDummySwitcher",1359),M(286,1,{286:1},jct),l.c=0,l.d=null,l.f=0,O(Pn,"LabelDummySwitcher/LabelDummyInfo",286),M(1360,1,{},QP),l.Kb=function(t){return U6(),new vn(null,new mn(u(t,29).a,16))},O(Pn,"LabelDummySwitcher/lambda$0$Type",1360),M(1361,1,vi,ZP),l.Mb=function(t){return U6(),u(t,10).k==(zn(),Rl)},O(Pn,"LabelDummySwitcher/lambda$1$Type",1361),M(1362,1,{},gg),l.Kb=function(t){return RKt(this.a,u(t,10))},O(Pn,"LabelDummySwitcher/lambda$2$Type",1362),M(1363,1,Un,fd),l.td=function(t){BZt(this.a,u(t,286))},O(Pn,"LabelDummySwitcher/lambda$3$Type",1363),M(1364,1,ji,PY),l.ue=function(t,n){return lZt(u(t,286),u(n,286))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"LabelDummySwitcher/lambda$4$Type",1364),M(791,1,ps,m3),l.pf=function(t,n){Wnn(u(t,37),n)},O(Pn,"LabelManagementProcessor",791),M(1549,1,ps,bx),l.pf=function(t,n){wpn(u(t,37),n)},O(Pn,"LabelSideSelector",1549),M(1550,1,vi,EL),l.Mb=function(t){return It(Mt(K(u(t,70),(pt(),Gle))))},O(Pn,"LabelSideSelector/lambda$0$Type",1550),M(1558,1,ps,lm),l.pf=function(t,n){evn(u(t,37),n)},O(Pn,"LayerConstraintPostprocessor",1558),M(1559,1,ps,jJ),l.pf=function(t,n){g0n(u(t,37),n)};var e9e;O(Pn,"LayerConstraintPreprocessor",1559),M(360,22,{3:1,35:1,22:1,360:1},FF);var bO,kq,xq,rle,Jpt=Gr(Pn,"LayerConstraintPreprocessor/HiddenNodeConnections",360,Wr,$tn,OYt),e2t;M(1560,1,ps,vx),l.pf=function(t,n){iwn(u(t,37),n)},O(Pn,"LayerSizeAndGraphHeightCalculator",1560),M(1561,1,ps,BY),l.pf=function(t,n){ogn(u(t,37),n)},O(Pn,"LongEdgeJoiner",1561),M(1562,1,ps,C9),l.pf=function(t,n){jvn(u(t,37),n)},O(Pn,"LongEdgeSplitter",1562),M(1563,1,ps,ud),l.pf=function(t,n){jwn(this,u(t,37),n)},l.d=0,l.e=0,l.i=0,l.j=0,l.k=0,l.n=0,O(Pn,"NodePromotion",1563),M(1564,1,{},JP),l.Kb=function(t){return u(t,46),Mn(),!0},l.Fb=function(t){return this===t},O(Pn,"NodePromotion/lambda$0$Type",1564),M(1565,1,{},yp),l.Kb=function(t){return rJt(this.a,u(t,46))},l.Fb=function(t){return this===t},l.a=0,O(Pn,"NodePromotion/lambda$1$Type",1565),M(1566,1,{},Xf),l.Kb=function(t){return iJt(this.a,u(t,46))},l.Fb=function(t){return this===t},l.a=0,O(Pn,"NodePromotion/lambda$2$Type",1566),M(1567,1,ps,TL),l.pf=function(t,n){uyn(u(t,37),n)},O(Pn,"NorthSouthPortPostprocessor",1567),M(1568,1,ps,wx),l.pf=function(t,n){Kmn(u(t,37),n)},O(Pn,"NorthSouthPortPreprocessor",1568),M(1569,1,ji,_L),l.ue=function(t,n){return Esn(u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"NorthSouthPortPreprocessor/lambda$0$Type",1569),M(1570,1,ps,eB),l.pf=function(t,n){hbn(u(t,37),n)},O(Pn,"PartitionMidprocessor",1570),M(1571,1,vi,RY),l.Mb=function(t){return ta(u(t,10),(pt(),dE))},O(Pn,"PartitionMidprocessor/lambda$0$Type",1571),M(1572,1,Un,ov),l.td=function(t){CJt(this.a,u(t,10))},O(Pn,"PartitionMidprocessor/lambda$1$Type",1572),M(1573,1,ps,CL),l.pf=function(t,n){Sgn(u(t,37),n)},O(Pn,"PartitionPostprocessor",1573),M(1574,1,ps,FY),l.pf=function(t,n){Rdn(u(t,37),n)},O(Pn,"PartitionPreprocessor",1574),M(1575,1,vi,jY),l.Mb=function(t){return ta(u(t,10),(pt(),dE))},O(Pn,"PartitionPreprocessor/lambda$0$Type",1575),M(1576,1,{},tB),l.Kb=function(t){return new vn(null,new Sv(new cr(fr(js(u(t,10)).a.Kc(),new V))))},O(Pn,"PartitionPreprocessor/lambda$1$Type",1576),M(1577,1,vi,H5),l.Mb=function(t){return Mcn(u(t,17))},O(Pn,"PartitionPreprocessor/lambda$2$Type",1577),M(1578,1,Un,nB),l.td=function(t){Osn(u(t,17))},O(Pn,"PartitionPreprocessor/lambda$3$Type",1578),M(1579,1,ps,iT),l.pf=function(t,n){Y2n(u(t,37),n)};var t9e,t2t,n2t,r2t,n9e,r9e;O(Pn,"PortListSorter",1579),M(1580,1,{},z5),l.Kb=function(t){return X8(),u(t,11).e},O(Pn,"PortListSorter/lambda$0$Type",1580),M(1581,1,{},$Y),l.Kb=function(t){return X8(),u(t,11).g},O(Pn,"PortListSorter/lambda$1$Type",1581),M(1582,1,ji,SL),l.ue=function(t,n){return QQe(u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"PortListSorter/lambda$2$Type",1582),M(1583,1,ji,HY),l.ue=function(t,n){return eln(u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"PortListSorter/lambda$3$Type",1583),M(1584,1,ji,zY),l.ue=function(t,n){return cut(u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"PortListSorter/lambda$4$Type",1584),M(1585,1,ps,GY),l.pf=function(t,n){c0n(u(t,37),n)},O(Pn,"PortSideProcessor",1585),M(1586,1,ps,qY),l.pf=function(t,n){u2n(u(t,37),n)},O(Pn,"ReversedEdgeRestorer",1586),M(1591,1,ps,pHe),l.pf=function(t,n){Fun(this,u(t,37),n)},O(Pn,"SelfLoopPortRestorer",1591),M(1592,1,{},rB),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"SelfLoopPortRestorer/lambda$0$Type",1592),M(1593,1,vi,VY),l.Mb=function(t){return u(t,10).k==(zn(),Hs)},O(Pn,"SelfLoopPortRestorer/lambda$1$Type",1593),M(1594,1,vi,UY),l.Mb=function(t){return ta(u(t,10),(et(),lE))},O(Pn,"SelfLoopPortRestorer/lambda$2$Type",1594),M(1595,1,{},WY),l.Kb=function(t){return u(K(u(t,10),(et(),lE)),403)},O(Pn,"SelfLoopPortRestorer/lambda$3$Type",1595),M(1596,1,Un,mm),l.td=function(t){Wfn(this.a,u(t,403))},O(Pn,"SelfLoopPortRestorer/lambda$4$Type",1596),M(794,1,Un,iB),l.td=function(t){c1n(u(t,101))},O(Pn,"SelfLoopPortRestorer/lambda$5$Type",794),M(1597,1,ps,KY),l.pf=function(t,n){Wcn(u(t,37),n)},O(Pn,"SelfLoopPostProcessor",1597),M(1598,1,{},YY),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"SelfLoopPostProcessor/lambda$0$Type",1598),M(1599,1,vi,XY),l.Mb=function(t){return u(t,10).k==(zn(),Hs)},O(Pn,"SelfLoopPostProcessor/lambda$1$Type",1599),M(1600,1,vi,sB),l.Mb=function(t){return ta(u(t,10),(et(),lE))},O(Pn,"SelfLoopPostProcessor/lambda$2$Type",1600),M(1601,1,Un,QY),l.td=function(t){ehn(u(t,10))},O(Pn,"SelfLoopPostProcessor/lambda$3$Type",1601),M(1602,1,{},ZY),l.Kb=function(t){return new vn(null,new mn(u(t,101).f,1))},O(Pn,"SelfLoopPostProcessor/lambda$4$Type",1602),M(1603,1,Un,l6),l.td=function(t){Gtn(this.a,u(t,409))},O(Pn,"SelfLoopPostProcessor/lambda$5$Type",1603),M(1604,1,vi,aB),l.Mb=function(t){return!!u(t,101).i},O(Pn,"SelfLoopPostProcessor/lambda$6$Type",1604),M(1605,1,Un,S3),l.td=function(t){SVt(this.a,u(t,101))},O(Pn,"SelfLoopPostProcessor/lambda$7$Type",1605),M(1587,1,ps,oB),l.pf=function(t,n){$0n(u(t,37),n)},O(Pn,"SelfLoopPreProcessor",1587),M(1588,1,{},cB),l.Kb=function(t){return new vn(null,new mn(u(t,101).f,1))},O(Pn,"SelfLoopPreProcessor/lambda$0$Type",1588),M(1589,1,{},JY),l.Kb=function(t){return u(t,409).a},O(Pn,"SelfLoopPreProcessor/lambda$1$Type",1589),M(1590,1,Un,eX),l.td=function(t){IWt(u(t,17))},O(Pn,"SelfLoopPreProcessor/lambda$2$Type",1590),M(1606,1,ps,YUe),l.pf=function(t,n){Rfn(this,u(t,37),n)},O(Pn,"SelfLoopRouter",1606),M(1607,1,{},mx),l.Kb=function(t){return new vn(null,new mn(u(t,29).a,16))},O(Pn,"SelfLoopRouter/lambda$0$Type",1607),M(1608,1,vi,G5),l.Mb=function(t){return u(t,10).k==(zn(),Hs)},O(Pn,"SelfLoopRouter/lambda$1$Type",1608),M(1609,1,vi,S9),l.Mb=function(t){return ta(u(t,10),(et(),lE))},O(Pn,"SelfLoopRouter/lambda$2$Type",1609),M(1610,1,{},tX),l.Kb=function(t){return u(K(u(t,10),(et(),lE)),403)},O(Pn,"SelfLoopRouter/lambda$3$Type",1610),M(1611,1,Un,VGe),l.td=function(t){vJt(this.a,this.b,u(t,403))},O(Pn,"SelfLoopRouter/lambda$4$Type",1611),M(1612,1,ps,AL),l.pf=function(t,n){apn(u(t,37),n)},O(Pn,"SemiInteractiveCrossMinProcessor",1612),M(1613,1,vi,A9),l.Mb=function(t){return u(t,10).k==(zn(),Hs)},O(Pn,"SemiInteractiveCrossMinProcessor/lambda$0$Type",1613),M(1614,1,vi,LL),l.Mb=function(t){return hKe(u(t,10))._b((pt(),By))},O(Pn,"SemiInteractiveCrossMinProcessor/lambda$1$Type",1614),M(1615,1,ji,uB),l.ue=function(t,n){return Pin(u(t,10),u(n,10))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Pn,"SemiInteractiveCrossMinProcessor/lambda$2$Type",1615),M(1616,1,{},lB),l.Ce=function(t,n){return NJt(u(t,10),u(n,10))},O(Pn,"SemiInteractiveCrossMinProcessor/lambda$3$Type",1616),M(1618,1,ps,nX),l.pf=function(t,n){tvn(u(t,37),n)},O(Pn,"SortByInputModelProcessor",1618),M(1619,1,vi,rX),l.Mb=function(t){return u(t,11).g.c.length!=0},O(Pn,"SortByInputModelProcessor/lambda$0$Type",1619),M(1620,1,Un,h6),l.td=function(t){d1n(this.a,u(t,11))},O(Pn,"SortByInputModelProcessor/lambda$1$Type",1620),M(1693,803,{},ctt),l.Me=function(t){var n,r,s,o;switch(this.c=t,this.a.g){case 2:n=new st,ms(Vi(new vn(null,new mn(this.c.a.b,16)),new gB),new XGe(this,n)),sI(this,new fB),Mu(n,new sX),n.c=Me(Yn,yt,1,0,5,1),ms(Vi(new vn(null,new mn(this.c.a.b,16)),new aX),new A3(n)),sI(this,new oX),Mu(n,new cX),n.c=Me(Yn,yt,1,0,5,1),r=LVe(ktt(Kj(new vn(null,new mn(this.c.a.b,16)),new qd(this))),new uX),ms(new vn(null,new mn(this.c.a.a,16)),new WGe(r,n)),sI(this,new lX),Mu(n,new iX),n.c=Me(Yn,yt,1,0,5,1);break;case 3:s=new st,sI(this,new hB),o=LVe(ktt(Kj(new vn(null,new mn(this.c.a.b,16)),new gT(this))),new dB),ms(Vi(new vn(null,new mn(this.c.a.b,16)),new hX),new YGe(o,s)),sI(this,new fX),Mu(s,new dX),s.c=Me(Yn,yt,1,0,5,1);break;default:throw J(new eHe)}},l.b=0,O(Is,"EdgeAwareScanlineConstraintCalculation",1693),M(1694,1,_d,hB),l.Lb=function(t){return we(u(t,57).g,145)},l.Fb=function(t){return this===t},l.Mb=function(t){return we(u(t,57).g,145)},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$0$Type",1694),M(1695,1,{},gT),l.Fe=function(t){return U1n(this.a,u(t,57))},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$1$Type",1695),M(1703,1,Az,UGe),l.Vd=function(){Z_(this.a,this.b,-1)},l.b=0,O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$10$Type",1703),M(1705,1,_d,fB),l.Lb=function(t){return we(u(t,57).g,145)},l.Fb=function(t){return this===t},l.Mb=function(t){return we(u(t,57).g,145)},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$11$Type",1705),M(1706,1,Un,sX),l.td=function(t){u(t,365).Vd()},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$12$Type",1706),M(1707,1,vi,aX),l.Mb=function(t){return we(u(t,57).g,10)},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$13$Type",1707),M(1709,1,Un,A3),l.td=function(t){mon(this.a,u(t,57))},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$14$Type",1709),M(1708,1,Az,eqe),l.Vd=function(){Z_(this.b,this.a,-1)},l.a=0,O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$15$Type",1708),M(1710,1,_d,oX),l.Lb=function(t){return we(u(t,57).g,10)},l.Fb=function(t){return this===t},l.Mb=function(t){return we(u(t,57).g,10)},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$16$Type",1710),M(1711,1,Un,cX),l.td=function(t){u(t,365).Vd()},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$17$Type",1711),M(1712,1,{},qd),l.Fe=function(t){return W1n(this.a,u(t,57))},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$18$Type",1712),M(1713,1,{},uX),l.De=function(){return 0},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$19$Type",1713),M(1696,1,{},dB),l.De=function(){return 0},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$2$Type",1696),M(1715,1,Un,WGe),l.td=function(t){eZt(this.a,this.b,u(t,307))},l.a=0,O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$20$Type",1715),M(1714,1,Az,KGe),l.Vd=function(){wot(this.a,this.b,-1)},l.b=0,O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$21$Type",1714),M(1716,1,_d,lX),l.Lb=function(t){return u(t,57),!0},l.Fb=function(t){return this===t},l.Mb=function(t){return u(t,57),!0},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$22$Type",1716),M(1717,1,Un,iX),l.td=function(t){u(t,365).Vd()},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$23$Type",1717),M(1697,1,vi,hX),l.Mb=function(t){return we(u(t,57).g,10)},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$3$Type",1697),M(1699,1,Un,YGe),l.td=function(t){tZt(this.a,this.b,u(t,57))},l.a=0,O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$4$Type",1699),M(1698,1,Az,tqe),l.Vd=function(){Z_(this.b,this.a,-1)},l.a=0,O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$5$Type",1698),M(1700,1,_d,fX),l.Lb=function(t){return u(t,57),!0},l.Fb=function(t){return this===t},l.Mb=function(t){return u(t,57),!0},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$6$Type",1700),M(1701,1,Un,dX),l.td=function(t){u(t,365).Vd()},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$7$Type",1701),M(1702,1,vi,gB),l.Mb=function(t){return we(u(t,57).g,145)},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$8$Type",1702),M(1704,1,Un,XGe),l.td=function(t){Zrn(this.a,this.b,u(t,57))},O(Is,"EdgeAwareScanlineConstraintCalculation/lambda$9$Type",1704),M(1521,1,ps,hUe),l.pf=function(t,n){Uvn(this,u(t,37),n)};var i2t;O(Is,"HorizontalGraphCompactor",1521),M(1522,1,{},_1),l.Oe=function(t,n){var r,s,o;return mme(t,n)||(r=U3(t),s=U3(n),r&&r.k==(zn(),Ls)||s&&s.k==(zn(),Ls))?0:(o=u(K(this.a.a,(et(),G4)),304),aKt(o,r?r.k:(zn(),ca),s?s.k:(zn(),ca)))},l.Pe=function(t,n){var r,s,o;return mme(t,n)?1:(r=U3(t),s=U3(n),o=u(K(this.a.a,(et(),G4)),304),gbe(o,r?r.k:(zn(),ca),s?s.k:(zn(),ca)))},O(Is,"HorizontalGraphCompactor/1",1522),M(1523,1,{},L9),l.Ne=function(t,n){return IT(),t.a.i==0},O(Is,"HorizontalGraphCompactor/lambda$0$Type",1523),M(1524,1,{},Vd),l.Ne=function(t,n){return MJt(this.a,t,n)},O(Is,"HorizontalGraphCompactor/lambda$1$Type",1524),M(1664,1,{},VJe);var s2t,a2t;O(Is,"LGraphToCGraphTransformer",1664),M(1672,1,vi,gX),l.Mb=function(t){return t!=null},O(Is,"LGraphToCGraphTransformer/0methodref$nonNull$Type",1672),M(1665,1,{},pX),l.Kb=function(t){return mf(),Qo(K(u(u(t,57).g,10),(et(),Mi)))},O(Is,"LGraphToCGraphTransformer/lambda$0$Type",1665),M(1666,1,{},pB),l.Kb=function(t){return mf(),Xnt(u(u(t,57).g,145))},O(Is,"LGraphToCGraphTransformer/lambda$1$Type",1666),M(1675,1,vi,bX),l.Mb=function(t){return mf(),we(u(t,57).g,10)},O(Is,"LGraphToCGraphTransformer/lambda$10$Type",1675),M(1676,1,Un,vX),l.td=function(t){LJt(u(t,57))},O(Is,"LGraphToCGraphTransformer/lambda$11$Type",1676),M(1677,1,vi,wX),l.Mb=function(t){return mf(),we(u(t,57).g,145)},O(Is,"LGraphToCGraphTransformer/lambda$12$Type",1677),M(1681,1,Un,mX),l.td=function(t){Nan(u(t,57))},O(Is,"LGraphToCGraphTransformer/lambda$13$Type",1681),M(1678,1,Un,pT),l.td=function(t){iWt(this.a,u(t,8))},l.a=0,O(Is,"LGraphToCGraphTransformer/lambda$14$Type",1678),M(1679,1,Un,$2),l.td=function(t){aWt(this.a,u(t,110))},l.a=0,O(Is,"LGraphToCGraphTransformer/lambda$15$Type",1679),M(1680,1,Un,QR),l.td=function(t){sWt(this.a,u(t,8))},l.a=0,O(Is,"LGraphToCGraphTransformer/lambda$16$Type",1680),M(1682,1,{},yX),l.Kb=function(t){return mf(),new vn(null,new Sv(new cr(fr(js(u(t,10)).a.Kc(),new V))))},O(Is,"LGraphToCGraphTransformer/lambda$17$Type",1682),M(1683,1,vi,kX),l.Mb=function(t){return mf(),to(u(t,17))},O(Is,"LGraphToCGraphTransformer/lambda$18$Type",1683),M(1684,1,Un,Dee),l.td=function(t){$rn(this.a,u(t,17))},O(Is,"LGraphToCGraphTransformer/lambda$19$Type",1684),M(1668,1,Un,Iee),l.td=function(t){ytn(this.a,u(t,145))},O(Is,"LGraphToCGraphTransformer/lambda$2$Type",1668),M(1685,1,{},bB),l.Kb=function(t){return mf(),new vn(null,new mn(u(t,29).a,16))},O(Is,"LGraphToCGraphTransformer/lambda$20$Type",1685),M(1686,1,{},xX),l.Kb=function(t){return mf(),new vn(null,new Sv(new cr(fr(js(u(t,10)).a.Kc(),new V))))},O(Is,"LGraphToCGraphTransformer/lambda$21$Type",1686),M(1687,1,{},vB),l.Kb=function(t){return mf(),u(K(u(t,17),(et(),Mb)),15)},O(Is,"LGraphToCGraphTransformer/lambda$22$Type",1687),M(1688,1,vi,EX),l.Mb=function(t){return cKt(u(t,15))},O(Is,"LGraphToCGraphTransformer/lambda$23$Type",1688),M(1689,1,Un,Oee),l.td=function(t){R1n(this.a,u(t,15))},O(Is,"LGraphToCGraphTransformer/lambda$24$Type",1689),M(1667,1,Un,QGe),l.td=function(t){onn(this.a,this.b,u(t,145))},O(Is,"LGraphToCGraphTransformer/lambda$3$Type",1667),M(1669,1,{},TX),l.Kb=function(t){return mf(),new vn(null,new mn(u(t,29).a,16))},O(Is,"LGraphToCGraphTransformer/lambda$4$Type",1669),M(1670,1,{},_X),l.Kb=function(t){return mf(),new vn(null,new Sv(new cr(fr(js(u(t,10)).a.Kc(),new V))))},O(Is,"LGraphToCGraphTransformer/lambda$5$Type",1670),M(1671,1,{},M9),l.Kb=function(t){return mf(),u(K(u(t,17),(et(),Mb)),15)},O(Is,"LGraphToCGraphTransformer/lambda$6$Type",1671),M(1673,1,Un,Nee),l.td=function(t){pdn(this.a,u(t,15))},O(Is,"LGraphToCGraphTransformer/lambda$8$Type",1673),M(1674,1,Un,ZGe),l.td=function(t){AWt(this.a,this.b,u(t,145))},O(Is,"LGraphToCGraphTransformer/lambda$9$Type",1674),M(1663,1,{},CX),l.Le=function(t){var n,r,s,o,h;for(this.a=t,this.d=new Gee,this.c=Me(R7e,yt,121,this.a.a.a.c.length,0,1),this.b=0,r=new C(this.a.a.a);r.a=X&&(it(h,ct(L)),Ee=b.Math.max(Ee,Ne[L-1]-P),v+=W,le+=Ne[L-1]-le,P=Ne[L-1],W=x[L]),W=b.Math.max(W,x[L]),++L;v+=W}q=b.Math.min(1/Ee,1/n.b/v),q>s&&(s=q,r=h)}return r},l.Wf=function(){return!1},O(Ld,"MSDCutIndexHeuristic",802),M(1617,1,ps,ZX),l.pf=function(t,n){Wbn(u(t,37),n)},O(Ld,"SingleEdgeGraphWrapper",1617),M(227,22,{3:1,35:1,22:1,227:1},jT);var B4,rE,iE,Cy,rS,R4,sE=Gr(Ic,"CenterEdgeLabelPlacementStrategy",227,Wr,irn,BYt),w2t;M(422,22,{3:1,35:1,22:1,422:1},g2e);var s9e,gle,a9e=Gr(Ic,"ConstraintCalculationStrategy",422,Wr,KJt,RYt),m2t;M(314,22,{3:1,35:1,22:1,314:1,246:1,234:1},yte),l.Kf=function(){return Lat(this)},l.Xf=function(){return Lat(this)};var vO,Ek,o9e,c9e=Gr(Ic,"CrossingMinimizationStrategy",314,Wr,$en,FYt),y2t;M(337,22,{3:1,35:1,22:1,337:1},kte);var u9e,ple,Aq,l9e=Gr(Ic,"CuttingStrategy",337,Wr,Hen,HYt),k2t;M(335,22,{3:1,35:1,22:1,335:1,246:1,234:1},xM),l.Kf=function(){return pot(this)},l.Xf=function(){return pot(this)};var h9e,ble,iS,vle,sS,f9e=Gr(Ic,"CycleBreakingStrategy",335,Wr,Mnn,zYt),x2t;M(419,22,{3:1,35:1,22:1,419:1},p2e);var Lq,d9e,g9e=Gr(Ic,"DirectionCongruency",419,Wr,WJt,GYt),E2t;M(450,22,{3:1,35:1,22:1,450:1},xte);var aE,wle,F4,T2t=Gr(Ic,"EdgeConstraint",450,Wr,zen,qYt),_2t;M(276,22,{3:1,35:1,22:1,276:1},$T);var mle,yle,kle,xle,Mq,Ele,p9e=Gr(Ic,"EdgeLabelSideSelection",276,Wr,crn,VYt),C2t;M(479,22,{3:1,35:1,22:1,479:1},b2e);var Dq,b9e,v9e=Gr(Ic,"EdgeStraighteningStrategy",479,Wr,UJt,UYt),S2t;M(274,22,{3:1,35:1,22:1,274:1},HT);var Tle,w9e,m9e,Iq,y9e,k9e,x9e=Gr(Ic,"FixedAlignment",274,Wr,arn,WYt),A2t;M(275,22,{3:1,35:1,22:1,275:1},zT);var E9e,T9e,_9e,C9e,aS,S9e,A9e=Gr(Ic,"GraphCompactionStrategy",275,Wr,srn,KYt),L2t;M(256,22,{3:1,35:1,22:1,256:1},_m);var oE,Oq,cE,Th,oS,Nq,uE,j4,Pq,cS,_le=Gr(Ic,"GraphProperties",256,Wr,Win,YYt),M2t;M(292,22,{3:1,35:1,22:1,292:1},Ete);var wO,Cle,Sle,Ale=Gr(Ic,"GreedySwitchType",292,Wr,Ven,XYt),D2t;M(303,22,{3:1,35:1,22:1,303:1},Tte);var Tk,mO,$4,I2t=Gr(Ic,"InLayerConstraint",303,Wr,qen,QYt),O2t;M(420,22,{3:1,35:1,22:1,420:1},v2e);var Lle,L9e,M9e=Gr(Ic,"InteractiveReferencePoint",420,Wr,YJt,ZYt),N2t,D9e,_k,yw,Bq,I9e,O9e,Rq,N9e,yO,Fq,uS,Ck,Sy,Mle,jq,vc,P9e,kw,eu,Dle,Ile,kO,Lb,xw,Sk,B9e,Ak,xO,Ay,l1,Yh,Ole,H4,Nc,Mi,R9e,F9e,j9e,$9e,H9e,Nle,$q,cl,Ew,Ple,Lk,EO,W1,z4,lE,G4,q4,hE,Mb,z9e,Ble,Rle,Mk;M(163,22,{3:1,35:1,22:1,163:1},TM);var lS,l2,hS,Ly,TO,G9e=Gr(Ic,"LayerConstraint",163,Wr,Onn,JYt),P2t;M(848,1,zh,VJ),l.Qe=function(t){en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,nke),""),"Direction Congruency"),"Specifies how drawings of the same graph with different layout directions compare to each other: either a natural reading direction is preserved or the drawings are rotated versions of each other."),J9e),(Ng(),vs)),g9e),rn((i1(),Fn))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,rke),""),"Feedback Edges"),"Whether feedback edges should be highlighted by routing around the nodes."),(Mn(),!1)),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Gz),""),"Interactive Reference Point"),"Determines which point of a node is considered by interactive layout phases."),sTe),vs),M9e),rn(Fn)))),va(t,Gz,Roe,Cbt),va(t,Gz,MC,_bt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ike),""),"Merge Edges"),"Edges that have no ports are merged so they touch the connected nodes at the same points. When this option is disabled, one port is created for each edge directly connected to a node. When it is enabled, all such incoming edges share an input port, and all outgoing edges share an output port."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ske),""),"Merge Hierarchy-Crossing Edges"),"If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible. They are broken by the algorithm, with hierarchical ports inserted as required. Usually, one such port is created for each edge at each hierarchy crossing point. With this option set to true, we try to create as few hierarchical ports as possible in the process. In particular, all edges that form a hyperedge can share a port."),!0),za),Us),rn(Fn)))),en(t,new Vt(sUt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ake),""),"Allow Non-Flow Ports To Switch Sides"),"Specifies whether non-flow ports may switch sides if their node's port constraints are either FIXED_SIDE or FIXED_ORDER. A non-flow port is a port on a side that is not part of the currently configured layout flow. For instance, given a left-to-right layout direction, north and south ports would be considered non-flow ports. Further note that the underlying criterium whether to switch sides or not solely relies on the minimization of edge crossings. Hence, edge length and other aesthetics criteria are not addressed."),!1),za),Us),rn(Bb)),ie(re(mt,1),Qe,2,6,["org.eclipse.elk.layered.northOrSouthPort"])))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,oke),""),"Port Sorting Strategy"),"Only relevant for nodes with FIXED_SIDE port constraints. Determines the way a node's ports are distributed on the sides of a node if their order is not prescribed. The option is set on parent nodes."),dTe),vs),k_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,cke),""),"Thoroughness"),"How much effort should be spent to produce a nice layout."),ct(7)),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,uke),""),"Add Unnecessary Bendpoints"),"Adds bend points even if an edge does not change direction. If true, each long edge dummy will contribute a bend point to its edges and hierarchy-crossing edges will always get a bend point where they cross hierarchy boundaries. By default, bend points are only added where an edge changes direction."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,lke),""),"Generate Position and Layer IDs"),"If enabled position id and layer id are generated, which are usually only used internally when setting the interactiveLayout option. This option should be specified on the root node."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Roe),"cycleBreaking"),"Cycle Breaking Strategy"),"Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right)."),Z9e),vs),f9e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,GI),oce),"Node Layering Strategy"),"Strategy for node layering."),cTe),vs),u_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,hke),oce),"Layer Constraint"),"Determines a constraint on the placement of the node regarding the layering."),aTe),vs),G9e),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,fke),oce),"Layer Choice Constraint"),"Allows to set a constraint regarding the layer placement of a node. Let i be the value of teh constraint. Assumed the drawing has n layers and i < n. If set to i, it expresses that the node should be placed in i-th layer. Should i>=n be true then the node is placed in the last layer of the drawing. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),ct(-1)),Cc),Za),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,dke),oce),"Layer ID"),"Layer identifier that was calculated by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),ct(-1)),Cc),Za),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Foe),_ft),"Upper Bound On Width [MinWidth Layerer]"),"Defines a loose upper bound on the width of the MinWidth layerer. If set to '-1' multiple values are tested and the best result is selected."),ct(4)),Cc),Za),rn(Fn)))),va(t,Foe,GI,Obt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,joe),_ft),"Upper Layer Estimation Scaling Factor [MinWidth Layerer]"),"Multiplied with Upper Bound On Width for defining an upper bound on the width of layers which haven't been determined yet, but whose maximum width had been (roughly) estimated by the MinWidth algorithm. Compensates for too high estimations. If set to '-1' multiple values are tested and the best result is selected."),ct(2)),Cc),Za),rn(Fn)))),va(t,joe,GI,Pbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,$oe),Cft),"Node Promotion Strategy"),"Reduces number of dummy nodes after layering phase (if possible)."),oTe),vs),w_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Hoe),Cft),"Max Node Promotion Iterations"),"Limits the number of iterations for node promotion."),ct(0)),Cc),Za),rn(Fn)))),va(t,Hoe,$oe,null),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,zoe),"layering.coffmanGraham"),"Layer Bound"),"The maximum number of nodes allowed per layer."),ct(Ei)),Cc),Za),rn(Fn)))),va(t,zoe,GI,Abt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,MC),qI),"Crossing Minimization Strategy"),"Strategy for crossing minimization."),Q9e),vs),c9e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,gke),qI),"Force Node Model Order"),"The node order given by the model does not change to produce a better layout. E.g. if node A is before node B in the model this is not changed during crossing minimization. This assumes that the node model order is already respected before crossing minimization. This can be achieved by setting considerModelOrder.strategy to NODES_AND_EDGES."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Goe),qI),"Hierarchical Sweepiness"),"How likely it is to use cross-hierarchy (1) vs bottom-up (-1)."),.1),qo),ma),rn(Fn)))),va(t,Goe,nG,ebt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,qoe),qI),"Semi-Interactive Crossing Minimization"),"Preserves the order of nodes within a layer but still minimizes crossings between edges connecting long edge dummies. Derives the desired order from positions specified by the 'org.eclipse.elk.position' layout option. Requires a crossing minimization strategy that is able to process 'in-layer' constraints."),!1),za),Us),rn(Fn)))),va(t,qoe,MC,ibt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,pke),qI),"Position Choice Constraint"),"Allows to set a constraint regarding the position placement of a node in a layer. Assumed the layer in which the node placed includes n other nodes and i < n. If set to i, it expresses that the node should be placed at the i-th position. Should i>=n be true then the node is placed at the last position in the layer. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),ct(-1)),Cc),Za),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,bke),qI),"Position ID"),"Position within a layer that was determined by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),ct(-1)),Cc),Za),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,vke),Sft),"Greedy Switch Activation Threshold"),"By default it is decided automatically if the greedy switch is activated or not. The decision is based on whether the size of the input graph (without dummy nodes) is smaller than the value of this option. A '0' enforces the activation."),ct(40)),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Voe),Sft),"Greedy Switch Crossing Minimization"),"Greedy Switch strategy for crossing minimization. The greedy switch heuristic is executed after the regular crossing minimization as a post-processor. Note that if 'hierarchyHandling' is set to 'INCLUDE_CHILDREN', the 'greedySwitchHierarchical.type' option must be used."),X9e),vs),Ale),rn(Fn)))),va(t,Voe,MC,Z2t),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,qz),"crossingMinimization.greedySwitchHierarchical"),"Greedy Switch Crossing Minimization (hierarchical)"),"Activates the greedy switch heuristic in case hierarchical layout is used. The differences to the non-hierarchical case (see 'greedySwitch.type') are: 1) greedy switch is inactive by default, 3) only the option value set on the node at which hierarchical layout starts is relevant, and 2) if it's activated by the user, it properly addresses hierarchy-crossing edges."),Y9e),vs),Ale),rn(Fn)))),va(t,qz,MC,Y2t),va(t,qz,nG,X2t),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,T4),Aft),"Node Placement Strategy"),"Strategy for node placement."),fTe),vs),d_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Vz),Aft),"Favor Straight Edges Over Balancing"),"Favor straight edges over a balanced node placement. The default behavior is determined automatically based on the used 'edgeRouting'. For an orthogonal style it is set to true, for all other styles to false."),za),Us),rn(Fn)))),va(t,Vz,T4,Ubt),va(t,Vz,T4,Wbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Uoe),Lft),"BK Edge Straightening"),"Specifies whether the Brandes Koepf node placer tries to increase the number of straight edges at the expense of diagram size. There is a subtle difference to the 'favorStraightEdges' option, which decides whether a balanced placement of the nodes is desired, or not. In bk terms this means combining the four alignments into a single balanced one, or not. This option on the other hand tries to straighten additional edges during the creation of each of the four alignments."),uTe),vs),v9e),rn(Fn)))),va(t,Uoe,T4,zbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Woe),Lft),"BK Fixed Alignment"),"Tells the BK node placer to use a certain alignment (out of its four) instead of the one producing the smallest height, or the combination of all four."),lTe),vs),x9e),rn(Fn)))),va(t,Woe,T4,qbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Koe),"nodePlacement.linearSegments"),"Linear Segments Deflection Dampening"),"Dampens the movement of nodes to keep the diagram from getting too large."),.3),qo),ma),rn(Fn)))),va(t,Koe,T4,Ybt),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Yoe),"nodePlacement.networkSimplex"),"Node Flexibility"),"Aims at shorter and straighter edges. Two configurations are possible: (a) allow ports to move freely on the side they are assigned to (the order is always defined beforehand), (b) additionally allow to enlarge a node wherever it helps. If this option is not configured for a node, the 'nodeFlexibility.default' value is used, which is specified for the node's parent."),vs),ahe),rn(ua)))),va(t,Yoe,T4,Jbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Xoe),"nodePlacement.networkSimplex.nodeFlexibility"),"Node Flexibility Default"),"Default value of the 'nodeFlexibility' option for the children of a hierarchical node."),hTe),vs),ahe),rn(Fn)))),va(t,Xoe,T4,Zbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,wke),Mft),"Self-Loop Distribution"),"Alter the distribution of the loops around the node. It only takes effect for PortConstraints.FREE."),nTe),vs),T_e),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,mke),Mft),"Self-Loop Ordering"),"Alter the ordering of the loops they can either be stacked or sequenced. It only takes effect for PortConstraints.FREE."),rTe),vs),__e),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Uz),"edgeRouting.splines"),"Spline Routing Mode"),"Specifies the way control points are assembled for each individual edge. CONSERVATIVE ensures that edges are properly routed around the nodes but feels rather orthogonal at times. SLOPPY uses fewer control points to obtain curvier edge routes but may result in edges overlapping nodes."),iTe),vs),S_e),rn(Fn)))),va(t,Uz,VI,pbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Wz),"edgeRouting.splines.sloppy"),"Sloppy Spline Layer Spacing Factor"),"Spacing factor for routing area between layers when using sloppy spline routing."),.2),qo),ma),rn(Fn)))),va(t,Wz,VI,vbt),va(t,Wz,Uz,wbt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Qoe),"edgeRouting.polyline"),"Sloped Edge Zone Width"),"Width of the strip to the left and to the right of each layer where the polyline edge router is allowed to refrain from ensuring that edges are routed horizontally. This prevents awkward bend points for nodes that extent almost to the edge of their layer."),2),qo),ma),rn(Fn)))),va(t,Qoe,VI,hbt),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,yke),G1),"Spacing Base Value"),"An optional base value for all other layout options of the 'spacing' group. It can be used to conveniently alter the overall 'spaciousness' of the drawing. Whenever an explicit value is set for the other layout options, this base value will have no effect. The base value is not inherited, i.e. it must be set for each hierarchical node."),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,kke),G1),"Edge Node Between Layers Spacing"),"The spacing to be preserved between nodes and edges that are routed next to the node's layer. For the spacing between nodes and edges that cross the node's layer 'spacing.edgeNode' is used."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,xke),G1),"Edge Edge Between Layer Spacing"),"Spacing to be preserved between pairs of edges that are routed between the same pair of layers. Note that 'spacing.edgeEdge' is used for the spacing between pairs of edges crossing the same layer."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Eke),G1),"Node Node Between Layers Spacing"),"The spacing to be preserved between any pair of nodes of two adjacent layers. Note that 'spacing.nodeNode' is used for the spacing between nodes within the layer itself."),20),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Tke),Oke),"Direction Priority"),"Defines how important it is to have a certain edge point into the direction of the overall layout. This option is evaluated during the cycle breaking phase."),ct(0)),Cc),Za),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,_ke),Oke),"Shortness Priority"),"Defines how important it is to keep an edge as short as possible. This option is evaluated during the layering phase."),ct(0)),Cc),Za),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Cke),Oke),"Straightness Priority"),"Defines how important it is to keep an edge straight, i.e. aligned with one of the two axes. This option is evaluated during node placement."),ct(0)),Cc),Za),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Zoe),Nke),Uht),"Tries to further compact components (disconnected sub-graphs)."),!1),za),Us),rn(Fn)))),va(t,Zoe,_C,!0),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Ske),Dft),"Post Compaction Strategy"),Ift),V9e),vs),A9e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Ake),Dft),"Post Compaction Constraint Calculation"),Ift),q9e),vs),a9e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Kz),Pke),"High Degree Node Treatment"),"Makes room around high degree nodes to place leafs and trees."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Joe),Pke),"High Degree Node Threshold"),"Whether a node is considered to have a high degree."),ct(16)),Cc),Za),rn(Fn)))),va(t,Joe,Kz,!0),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ece),Pke),"High Degree Node Maximum Tree Height"),"Maximum height of a subtree connected to a high degree node to be moved to separate layers."),ct(5)),Cc),Za),rn(Fn)))),va(t,ece,Kz,!0),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,W0),Bke),"Graph Wrapping Strategy"),"For certain graphs and certain prescribed drawing areas it may be desirable to split the laid out graph into chunks that are placed side by side. The edges that connect different chunks are 'wrapped' around from the end of one chunk to the start of the other chunk. The points between the chunks are referred to as 'cuts'."),bTe),vs),D_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Yz),Bke),"Additional Wrapped Edges Spacing"),"To visually separate edges that are wrapped from regularly routed edges an additional spacing value can be specified in form of this layout option. The spacing is added to the regular edgeNode spacing."),10),qo),ma),rn(Fn)))),va(t,Yz,W0,fvt),va(t,Yz,W0,dvt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Xz),Bke),"Correction Factor for Wrapping"),"At times and for certain types of graphs the executed wrapping may produce results that are consistently biased in the same fashion: either wrapping to often or to rarely. This factor can be used to correct the bias. Internally, it is simply multiplied with the 'aspect ratio' layout option."),1),qo),ma),rn(Fn)))),va(t,Xz,W0,pvt),va(t,Xz,W0,bvt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,DC),Oft),"Cutting Strategy"),"The strategy by which the layer indexes are determined at which the layering crumbles into chunks."),pTe),vs),l9e),rn(Fn)))),va(t,DC,W0,xvt),va(t,DC,W0,Evt),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,tce),Oft),"Manually Specified Cuts"),"Allows the user to specify her own cuts for a certain graph."),Y1),Eh),rn(Fn)))),va(t,tce,DC,wvt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,nce),"wrapping.cutting.msd"),"MSD Freedom"),"The MSD cutting strategy starts with an initial guess on the number of chunks the graph should be split into. The freedom specifies how much the strategy may deviate from this guess. E.g. if an initial number of 3 is computed, a freedom of 1 allows 2, 3, and 4 cuts."),gTe),Cc),Za),rn(Fn)))),va(t,nce,DC,yvt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Qz),Nft),"Validification Strategy"),"When wrapping graphs, one can specify indices that are not allowed as split points. The validification strategy makes sure every computed split point is allowed."),vTe),vs),M_e),rn(Fn)))),va(t,Qz,W0,Pvt),va(t,Qz,W0,Bvt),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Zz),Nft),"Valid Indices for Wrapping"),null),Y1),Eh),rn(Fn)))),va(t,Zz,W0,Ivt),va(t,Zz,W0,Ovt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Jz),Rke),"Improve Cuts"),"For general graphs it is important that not too many edges wrap backwards. Thus a compromise between evenly-distributed cuts and the total number of cut edges is sought."),!0),za),Us),rn(Fn)))),va(t,Jz,W0,Svt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,eG),Rke),"Distance Penalty When Improving Cuts"),null),2),qo),ma),rn(Fn)))),va(t,eG,W0,_vt),va(t,eG,Jz,!0),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,rce),Rke),"Improve Wrapped Edges"),"The initial wrapping is performed in a very simple way. As a consequence, edges that wrap from one chunk to another may be unnecessarily long. Activating this option tries to shorten such edges."),!0),za),Us),rn(Fn)))),va(t,rce,W0,Lvt),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Lke),cce),"Edge Label Side Selection"),"Method to decide on edge label sides."),tTe),vs),p9e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Mke),cce),"Edge Center Label Placement Strategy"),"Determines in which layer center labels of long edges should be placed."),eTe),vs),sE),Ui(Fn,ie(re(Ug,1),tt,175,0,[Vg]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,tG),UI),"Consider Model Order"),"Preserves the order of nodes and edges in the model file if this does not lead to additional edge crossings. Depending on the strategy this is not always possible since the node and edge order might be conflicting."),K9e),vs),y_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Dke),UI),"No Model Order"),"Set on a node to not set a model order for this node even though it is a real node."),!1),za),Us),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ice),UI),"Consider Model Order for Components"),"If set to NONE the usual ordering strategy (by cumulative node priority and size of nodes) is used. INSIDE_PORT_SIDES orders the components with external ports only inside the groups with the same port side. FORCE_MODEL_ORDER enforces the mode order on components. This option might produce bad alignments and sub optimal drawings in terms of used area since the ordering should be respected."),U9e),vs),fEe),rn(Fn)))),va(t,ice,_C,null),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Ike),UI),"Long Edge Ordering Strategy"),"Indicates whether long edges are sorted under, over, or equal to nodes that have no connection to a previous layer in a left-to-right or right-to-left layout. Under and over changes to right and left in a vertical layout."),W9e),vs),h_e),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,sce),UI),"Crossing Counter Node Order Influence"),"Indicates with what percentage (1 for 100%) violations of the node model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal node order. Defaults to no influence (0)."),0),qo),ma),rn(Fn)))),va(t,sce,tG,null),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ace),UI),"Crossing Counter Port Order Influence"),"Indicates with what percentage (1 for 100%) violations of the port model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal port order. Defaults to no influence (0)."),0),qo),ma),rn(Fn)))),va(t,ace,tG,null),Qlt((new SR,t))};var B2t,R2t,F2t,q9e,j2t,V9e,$2t,U9e,H2t,z2t,G2t,W9e,q2t,V2t,K9e,U2t,W2t,K2t,Y9e,Y2t,X2t,Q2t,X9e,Z2t,J2t,ebt,tbt,nbt,rbt,ibt,sbt,Q9e,abt,Z9e,obt,J9e,cbt,eTe,ubt,tTe,lbt,hbt,fbt,nTe,dbt,rTe,gbt,iTe,pbt,bbt,vbt,wbt,mbt,ybt,kbt,xbt,Ebt,Tbt,sTe,_bt,Cbt,Sbt,Abt,Lbt,Mbt,aTe,Dbt,Ibt,Obt,Nbt,Pbt,Bbt,Rbt,oTe,Fbt,cTe,jbt,$bt,Hbt,uTe,zbt,Gbt,lTe,qbt,Vbt,Ubt,Wbt,Kbt,Ybt,Xbt,Qbt,hTe,Zbt,Jbt,evt,fTe,tvt,dTe,nvt,rvt,ivt,svt,avt,ovt,cvt,uvt,lvt,hvt,fvt,dvt,gvt,pvt,bvt,vvt,wvt,mvt,gTe,yvt,kvt,pTe,xvt,Evt,Tvt,_vt,Cvt,Svt,Avt,Lvt,Mvt,bTe,Dvt,Ivt,Ovt,Nvt,vTe,Pvt,Bvt;O(Ic,"LayeredMetaDataProvider",848),M(986,1,zh,SR),l.Qe=function(t){Qlt(t)};var Bd,Fle,Hq,fS,zq,wTe,Gq,Dk,qq,mTe,yTe,jle,h2,$le,My,kTe,_O,Hle,xTe,Rvt,Vq,zle,dS,Dy,Fvt,Zl,ETe,TTe,Uq,Gle,Rd,Wq,K0,_Te,CTe,STe,qle,Vle,ATe,Hg,Ule,LTe,Iy,MTe,DTe,ITe,Kq,Oy,Db,OTe,NTe,Fo,PTe,jvt,vu,Yq,BTe,RTe,FTe,Wle,jTe,Xq,$Te,HTe,Qq,Tw,zTe,Kle,gS,GTe,_w,pS,Zq,Ib,Yle,fE,Jq,Ob,qTe,VTe,UTe,dE,WTe,$vt,Hvt,zvt,Gvt,Cw,Ny,bs,zg,qvt,Py,KTe,gE,YTe,By,Vvt,pE,XTe,Ik,Uvt,Wvt,CO,Xle,QTe,SO,Mf,V4,Ok,Sw,Nb,eV,Ry,Qle,bE,vE,Aw,U4,Zle,AO,bS,vS,Jle,ZTe,JTe,e_e,t_e,ehe,n_e,r_e,i_e,s_e,the,tV;O(Ic,"LayeredOptions",986),M(987,1,{},eQ),l.$e=function(){var t;return t=new sHe,t},l._e=function(t){},O(Ic,"LayeredOptions/LayeredFactory",987),M(1372,1,{}),l.a=0;var Kvt;O(Oc,"ElkSpacings/AbstractSpacingsBuilder",1372),M(779,1372,{},Kye);var nV,Yvt;O(Ic,"LayeredSpacings/LayeredSpacingsBuilder",779),M(313,22,{3:1,35:1,22:1,313:1,246:1,234:1},GT),l.Kf=function(){return Mot(this)},l.Xf=function(){return Mot(this)};var nhe,a_e,o_e,rV,rhe,c_e,u_e=Gr(Ic,"LayeringStrategy",313,Wr,orn,eXt),Xvt;M(378,22,{3:1,35:1,22:1,378:1},_te);var ihe,l_e,iV,h_e=Gr(Ic,"LongEdgeOrderingStrategy",378,Wr,jen,tXt),Qvt;M(197,22,{3:1,35:1,22:1,197:1},$F);var W4,K4,sV,she,ahe=Gr(Ic,"NodeFlexibility",197,Wr,Utn,nXt),Zvt;M(315,22,{3:1,35:1,22:1,315:1,246:1,234:1},EM),l.Kf=function(){return got(this)},l.Xf=function(){return got(this)};var wS,ohe,che,mS,f_e,d_e=Gr(Ic,"NodePlacementStrategy",315,Wr,Lnn,cXt),Jvt;M(260,22,{3:1,35:1,22:1,260:1},k6);var g_e,LO,p_e,b_e,MO,v_e,aV,oV,w_e=Gr(Ic,"NodePromotionStrategy",260,Wr,ain,iXt),ewt;M(339,22,{3:1,35:1,22:1,339:1},Cte);var m_e,f2,uhe,y_e=Gr(Ic,"OrderingStrategy",339,Wr,Wen,sXt),twt;M(421,22,{3:1,35:1,22:1,421:1},w2e);var lhe,hhe,k_e=Gr(Ic,"PortSortingStrategy",421,Wr,XJt,aXt),nwt;M(452,22,{3:1,35:1,22:1,452:1},Ste);var ul,hu,yS,rwt=Gr(Ic,"PortType",452,Wr,Uen,rXt),iwt;M(375,22,{3:1,35:1,22:1,375:1},Ate);var x_e,fhe,E_e,T_e=Gr(Ic,"SelfLoopDistributionStrategy",375,Wr,Ken,oXt),swt;M(376,22,{3:1,35:1,22:1,376:1},m2e);var DO,dhe,__e=Gr(Ic,"SelfLoopOrderingStrategy",376,Wr,VJt,uXt),awt;M(304,1,{304:1},Jut),O(Ic,"Spacings",304),M(336,22,{3:1,35:1,22:1,336:1},Lte);var ghe,C_e,kS,S_e=Gr(Ic,"SplineRoutingMode",336,Wr,Xen,lXt),owt;M(338,22,{3:1,35:1,22:1,338:1},Mte);var phe,A_e,L_e,M_e=Gr(Ic,"ValidifyStrategy",338,Wr,Qen,hXt),cwt;M(377,22,{3:1,35:1,22:1,377:1},Dte);var Fy,bhe,wE,D_e=Gr(Ic,"WrappingStrategy",377,Wr,Yen,fXt),uwt;M(1383,1,Qc,KJ),l.Yf=function(t){return u(t,37),lwt},l.pf=function(t,n){Hvn(this,u(t,37),n)};var lwt;O(sG,"DepthFirstCycleBreaker",1383),M(782,1,Qc,Ive),l.Yf=function(t){return u(t,37),hwt},l.pf=function(t,n){jyn(this,u(t,37),n)},l.Zf=function(t){return u(St(t,BH(this.d,t.c.length)),10)};var hwt;O(sG,"GreedyCycleBreaker",782),M(1386,782,Qc,Fqe),l.Zf=function(t){var n,r,s,o;for(o=null,n=Ei,s=new C(t);s.a1&&(It(Mt(K(Ya((xn(0,t.c.length),u(t.c[0],10))),(pt(),My))))?Tot(t,this.d,u(this,660)):(hn(),aa(t,this.d)),qtt(this.e,t))},l.Sf=function(t,n,r,s){var o,h,d,v,x,_,L;for(n!=dKe(r,t.length)&&(h=t[n-(r?1:-1)],rme(this.f,h,r?(vo(),hu):(vo(),ul))),o=t[n][0],L=!s||o.k==(zn(),Ls),_=O1(t[n]),this.ag(_,L,!1,r),d=0,x=new C(_);x.a"),t0?hre(this.a,t[n-1],t[n]):!r&&n1&&(It(Mt(K(Ya((xn(0,t.c.length),u(t.c[0],10))),(pt(),My))))?Tot(t,this.d,this):(hn(),aa(t,this.d)),It(Mt(K(Ya((xn(0,t.c.length),u(t.c[0],10))),My)))||qtt(this.e,t))},O(Qu,"ModelOrderBarycenterHeuristic",660),M(1803,1,ji,xje),l.ue=function(t,n){return t1n(this.a,u(t,10),u(n,10))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Qu,"ModelOrderBarycenterHeuristic/lambda$0$Type",1803),M(1403,1,Qc,ZJ),l.Yf=function(t){var n;return u(t,37),n=JF(Twt),xi(n,(ro(),bu),(po(),bq)),n},l.pf=function(t,n){$Jt((u(t,37),n))};var Twt;O(Qu,"NoCrossingMinimizer",1403),M(796,402,mxe,zpe),l.$f=function(t,n,r){var s,o,h,d,v,x,_,L,P,z,q;switch(P=this.g,r.g){case 1:{for(o=0,h=0,L=new C(t.j);L.a1&&(o.j==(ht(),$n)?this.b[t]=!0:o.j==Dn&&t>0&&(this.b[t-1]=!0))},l.f=0,O(u0,"AllCrossingsCounter",1798),M(587,1,{},Z$),l.b=0,l.d=0,O(u0,"BinaryIndexedTree",587),M(524,1,{},zM);var N_e,uV;O(u0,"CrossingsCounter",524),M(1906,1,ji,Eje),l.ue=function(t,n){return GQt(this.a,u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(u0,"CrossingsCounter/lambda$0$Type",1906),M(1907,1,ji,Tje),l.ue=function(t,n){return qQt(this.a,u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(u0,"CrossingsCounter/lambda$1$Type",1907),M(1908,1,ji,_je),l.ue=function(t,n){return VQt(this.a,u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(u0,"CrossingsCounter/lambda$2$Type",1908),M(1909,1,ji,Cje),l.ue=function(t,n){return UQt(this.a,u(t,11),u(n,11))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(u0,"CrossingsCounter/lambda$3$Type",1909),M(1910,1,Un,Sje),l.td=function(t){Srn(this.a,u(t,11))},O(u0,"CrossingsCounter/lambda$4$Type",1910),M(1911,1,vi,Aje),l.Mb=function(t){return HUt(this.a,u(t,11))},O(u0,"CrossingsCounter/lambda$5$Type",1911),M(1912,1,Un,Lje),l.td=function(t){Nqe(this,t)},O(u0,"CrossingsCounter/lambda$6$Type",1912),M(1913,1,Un,aqe),l.td=function(t){var n;h8(),$p(this.b,(n=this.a,u(t,11),n))},O(u0,"CrossingsCounter/lambda$7$Type",1913),M(826,1,_d,IB),l.Lb=function(t){return h8(),ta(u(t,11),(et(),cl))},l.Fb=function(t){return this===t},l.Mb=function(t){return h8(),ta(u(t,11),(et(),cl))},O(u0,"CrossingsCounter/lambda$8$Type",826),M(1905,1,{},Mje),O(u0,"HyperedgeCrossingsCounter",1905),M(467,1,{35:1,467:1},XUe),l.wd=function(t){return Tcn(this,u(t,467))},l.b=0,l.c=0,l.e=0,l.f=0;var y3n=O(u0,"HyperedgeCrossingsCounter/Hyperedge",467);M(362,1,{35:1,362:1},Xj),l.wd=function(t){return x0n(this,u(t,362))},l.b=0,l.c=0;var _wt=O(u0,"HyperedgeCrossingsCounter/HyperedgeCorner",362);M(523,22,{3:1,35:1,22:1,523:1},y2e);var ES,TS,Cwt=Gr(u0,"HyperedgeCrossingsCounter/HyperedgeCorner/Type",523,Wr,QJt,gXt),Swt;M(1405,1,Qc,WJ),l.Yf=function(t){return u(K(u(t,37),(et(),eu)),21).Hc((mo(),Th))?Awt:null},l.pf=function(t,n){Gln(this,u(t,37),n)};var Awt;O(ko,"InteractiveNodePlacer",1405),M(1406,1,Qc,UJ),l.Yf=function(t){return u(K(u(t,37),(et(),eu)),21).Hc((mo(),Th))?Lwt:null},l.pf=function(t,n){Sun(this,u(t,37),n)};var Lwt,lV,hV;O(ko,"LinearSegmentsNodePlacer",1406),M(257,1,{35:1,257:1},wpe),l.wd=function(t){return JVt(this,u(t,257))},l.Fb=function(t){var n;return we(t,257)?(n=u(t,257),this.b==n.b):!1},l.Hb=function(){return this.b},l.Ib=function(){return"ls"+Yp(this.e)},l.a=0,l.b=0,l.c=-1,l.d=-1,l.g=0;var Mwt=O(ko,"LinearSegmentsNodePlacer/LinearSegment",257);M(1408,1,Qc,EKe),l.Yf=function(t){return u(K(u(t,37),(et(),eu)),21).Hc((mo(),Th))?Dwt:null},l.pf=function(t,n){Dyn(this,u(t,37),n)},l.b=0,l.g=0;var Dwt;O(ko,"NetworkSimplexPlacer",1408),M(1427,1,ji,sQ),l.ue=function(t,n){return Tu(u(t,19).a,u(n,19).a)},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(ko,"NetworkSimplexPlacer/0methodref$compare$Type",1427),M(1429,1,ji,aQ),l.ue=function(t,n){return Tu(u(t,19).a,u(n,19).a)},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(ko,"NetworkSimplexPlacer/1methodref$compare$Type",1429),M(649,1,{649:1},oqe);var k3n=O(ko,"NetworkSimplexPlacer/EdgeRep",649);M(401,1,{401:1},lwe),l.b=!1;var x3n=O(ko,"NetworkSimplexPlacer/NodeRep",401);M(508,12,{3:1,4:1,20:1,28:1,52:1,12:1,14:1,15:1,54:1,508:1},bHe),O(ko,"NetworkSimplexPlacer/Path",508),M(1409,1,{},oQ),l.Kb=function(t){return u(t,17).d.i.k},O(ko,"NetworkSimplexPlacer/Path/lambda$0$Type",1409),M(1410,1,vi,cQ),l.Mb=function(t){return u(t,267)==(zn(),ca)},O(ko,"NetworkSimplexPlacer/Path/lambda$1$Type",1410),M(1411,1,{},uQ),l.Kb=function(t){return u(t,17).d.i},O(ko,"NetworkSimplexPlacer/Path/lambda$2$Type",1411),M(1412,1,vi,Dje),l.Mb=function(t){return NUe(krt(u(t,10)))},O(ko,"NetworkSimplexPlacer/Path/lambda$3$Type",1412),M(1413,1,vi,lQ),l.Mb=function(t){return IQt(u(t,11))},O(ko,"NetworkSimplexPlacer/lambda$0$Type",1413),M(1414,1,Un,cqe),l.td=function(t){LWt(this.a,this.b,u(t,11))},O(ko,"NetworkSimplexPlacer/lambda$1$Type",1414),M(1423,1,Un,Ije),l.td=function(t){Y1n(this.a,u(t,17))},O(ko,"NetworkSimplexPlacer/lambda$10$Type",1423),M(1424,1,{},hQ),l.Kb=function(t){return $l(),new vn(null,new mn(u(t,29).a,16))},O(ko,"NetworkSimplexPlacer/lambda$11$Type",1424),M(1425,1,Un,Oje),l.td=function(t){Vpn(this.a,u(t,10))},O(ko,"NetworkSimplexPlacer/lambda$12$Type",1425),M(1426,1,{},fQ),l.Kb=function(t){return $l(),ct(u(t,121).e)},O(ko,"NetworkSimplexPlacer/lambda$13$Type",1426),M(1428,1,{},dQ),l.Kb=function(t){return $l(),ct(u(t,121).e)},O(ko,"NetworkSimplexPlacer/lambda$15$Type",1428),M(1430,1,vi,gQ),l.Mb=function(t){return $l(),u(t,401).c.k==(zn(),Hs)},O(ko,"NetworkSimplexPlacer/lambda$17$Type",1430),M(1431,1,vi,pQ),l.Mb=function(t){return $l(),u(t,401).c.j.c.length>1},O(ko,"NetworkSimplexPlacer/lambda$18$Type",1431),M(1432,1,Un,MYe),l.td=function(t){Pon(this.c,this.b,this.d,this.a,u(t,401))},l.c=0,l.d=0,O(ko,"NetworkSimplexPlacer/lambda$19$Type",1432),M(1415,1,{},bQ),l.Kb=function(t){return $l(),new vn(null,new mn(u(t,29).a,16))},O(ko,"NetworkSimplexPlacer/lambda$2$Type",1415),M(1433,1,Un,Nje),l.td=function(t){SWt(this.a,u(t,11))},l.a=0,O(ko,"NetworkSimplexPlacer/lambda$20$Type",1433),M(1434,1,{},V5),l.Kb=function(t){return $l(),new vn(null,new mn(u(t,29).a,16))},O(ko,"NetworkSimplexPlacer/lambda$21$Type",1434),M(1435,1,Un,Pje),l.td=function(t){zWt(this.a,u(t,10))},O(ko,"NetworkSimplexPlacer/lambda$22$Type",1435),M(1436,1,vi,OB),l.Mb=function(t){return NUe(t)},O(ko,"NetworkSimplexPlacer/lambda$23$Type",1436),M(1437,1,{},vQ),l.Kb=function(t){return $l(),new vn(null,new mn(u(t,29).a,16))},O(ko,"NetworkSimplexPlacer/lambda$24$Type",1437),M(1438,1,vi,Bje),l.Mb=function(t){return KUt(this.a,u(t,10))},O(ko,"NetworkSimplexPlacer/lambda$25$Type",1438),M(1439,1,Un,uqe),l.td=function(t){v1n(this.a,this.b,u(t,10))},O(ko,"NetworkSimplexPlacer/lambda$26$Type",1439),M(1440,1,vi,wQ),l.Mb=function(t){return $l(),!to(u(t,17))},O(ko,"NetworkSimplexPlacer/lambda$27$Type",1440),M(1441,1,vi,mQ),l.Mb=function(t){return $l(),!to(u(t,17))},O(ko,"NetworkSimplexPlacer/lambda$28$Type",1441),M(1442,1,{},Rje),l.Ce=function(t,n){return jWt(this.a,u(t,29),u(n,29))},O(ko,"NetworkSimplexPlacer/lambda$29$Type",1442),M(1416,1,{},NB),l.Kb=function(t){return $l(),new vn(null,new Sv(new cr(fr(js(u(t,10)).a.Kc(),new V))))},O(ko,"NetworkSimplexPlacer/lambda$3$Type",1416),M(1417,1,vi,yQ),l.Mb=function(t){return $l(),Ctn(u(t,17))},O(ko,"NetworkSimplexPlacer/lambda$4$Type",1417),M(1418,1,Un,Fje),l.td=function(t){qbn(this.a,u(t,17))},O(ko,"NetworkSimplexPlacer/lambda$5$Type",1418),M(1419,1,{},N9),l.Kb=function(t){return $l(),new vn(null,new mn(u(t,29).a,16))},O(ko,"NetworkSimplexPlacer/lambda$6$Type",1419),M(1420,1,vi,kQ),l.Mb=function(t){return $l(),u(t,10).k==(zn(),Hs)},O(ko,"NetworkSimplexPlacer/lambda$7$Type",1420),M(1421,1,{},xQ),l.Kb=function(t){return $l(),new vn(null,new Sv(new cr(fr(j0(u(t,10)).a.Kc(),new V))))},O(ko,"NetworkSimplexPlacer/lambda$8$Type",1421),M(1422,1,vi,EQ),l.Mb=function(t){return $l(),CQt(u(t,17))},O(ko,"NetworkSimplexPlacer/lambda$9$Type",1422),M(1404,1,Qc,sT),l.Yf=function(t){return u(K(u(t,37),(et(),eu)),21).Hc((mo(),Th))?Iwt:null},l.pf=function(t,n){_vn(u(t,37),n)};var Iwt;O(ko,"SimpleNodePlacer",1404),M(180,1,{180:1},p4),l.Ib=function(){var t;return t="",this.c==(yd(),Lw)?t+=lk:this.c==Gg&&(t+=uk),this.o==(M1(),Pb)?t+=voe:this.o==K1?t+="UP":t+="BALANCED",t},O(r2,"BKAlignedLayout",180),M(516,22,{3:1,35:1,22:1,516:1},x2e);var Gg,Lw,Owt=Gr(r2,"BKAlignedLayout/HDirection",516,Wr,JJt,pXt),Nwt;M(515,22,{3:1,35:1,22:1,515:1},k2e);var Pb,K1,Pwt=Gr(r2,"BKAlignedLayout/VDirection",515,Wr,een,bXt),Bwt;M(1634,1,{},lqe),O(r2,"BKAligner",1634),M(1637,1,{},Vit),O(r2,"BKCompactor",1637),M(654,1,{654:1},TQ),l.a=0,O(r2,"BKCompactor/ClassEdge",654),M(458,1,{458:1},gHe),l.a=null,l.b=0,O(r2,"BKCompactor/ClassNode",458),M(1407,1,Qc,Bqe),l.Yf=function(t){return u(K(u(t,37),(et(),eu)),21).Hc((mo(),Th))?Rwt:null},l.pf=function(t,n){Uyn(this,u(t,37),n)},l.d=!1;var Rwt;O(r2,"BKNodePlacer",1407),M(1635,1,{},_Q),l.d=0,O(r2,"NeighborhoodInformation",1635),M(1636,1,ji,jje),l.ue=function(t,n){return Jrn(this,u(t,46),u(n,46))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(r2,"NeighborhoodInformation/NeighborComparator",1636),M(808,1,{}),O(r2,"ThresholdStrategy",808),M(1763,808,{},mHe),l.bg=function(t,n,r){return this.a.o==(M1(),K1)?gs:Ds},l.cg=function(){},O(r2,"ThresholdStrategy/NullThresholdStrategy",1763),M(579,1,{579:1},hqe),l.c=!1,l.d=!1,O(r2,"ThresholdStrategy/Postprocessable",579),M(1764,808,{},yHe),l.bg=function(t,n,r){var s,o,h;return o=n==r,s=this.a.a[r.p]==n,o||s?(h=t,this.a.c==(yd(),Lw)?(o&&(h=vae(this,n,!0)),!isNaN(h)&&!isFinite(h)&&s&&(h=vae(this,r,!1))):(o&&(h=vae(this,n,!0)),!isNaN(h)&&!isFinite(h)&&s&&(h=vae(this,r,!1))),h):t},l.cg=function(){for(var t,n,r,s,o;this.d.b!=0;)o=u(ben(this.d),579),s=fut(this,o),s.a&&(t=s.a,r=It(this.a.f[this.a.g[o.b.p].p]),!(!r&&!to(t)&&t.c.i.c==t.d.i.c)&&(n=mot(this,o),n||nWt(this.e,o)));for(;this.e.a.c.length!=0;)mot(this,u(Lnt(this.e),579))},O(r2,"ThresholdStrategy/SimpleThresholdStrategy",1764),M(635,1,{635:1,246:1,234:1},CQ),l.Kf=function(){return jtt(this)},l.Xf=function(){return jtt(this)};var vhe;O(dce,"EdgeRouterFactory",635),M(1458,1,Qc,hd),l.Yf=function(t){return Tpn(u(t,37))},l.pf=function(t,n){Ivn(u(t,37),n)};var Fwt,jwt,$wt,Hwt,zwt,P_e,Gwt,qwt;O(dce,"OrthogonalEdgeRouter",1458),M(1451,1,Qc,Rqe),l.Yf=function(t){return Kln(u(t,37))},l.pf=function(t,n){Zmn(this,u(t,37),n)};var Vwt,Uwt,Wwt,Kwt,OO,Ywt;O(dce,"PolylineEdgeRouter",1451),M(1452,1,_d,SQ),l.Lb=function(t){return Qme(u(t,10))},l.Fb=function(t){return this===t},l.Mb=function(t){return Qme(u(t,10))},O(dce,"PolylineEdgeRouter/1",1452),M(1809,1,vi,AQ),l.Mb=function(t){return u(t,129).c==(Jf(),d2)},O(o1,"HyperEdgeCycleDetector/lambda$0$Type",1809),M(1810,1,{},LQ),l.Ge=function(t){return u(t,129).d},O(o1,"HyperEdgeCycleDetector/lambda$1$Type",1810),M(1811,1,vi,MQ),l.Mb=function(t){return u(t,129).c==(Jf(),d2)},O(o1,"HyperEdgeCycleDetector/lambda$2$Type",1811),M(1812,1,{},U5),l.Ge=function(t){return u(t,129).d},O(o1,"HyperEdgeCycleDetector/lambda$3$Type",1812),M(1813,1,{},DQ),l.Ge=function(t){return u(t,129).d},O(o1,"HyperEdgeCycleDetector/lambda$4$Type",1813),M(1814,1,{},IQ),l.Ge=function(t){return u(t,129).d},O(o1,"HyperEdgeCycleDetector/lambda$5$Type",1814),M(112,1,{35:1,112:1},AD),l.wd=function(t){return eUt(this,u(t,112))},l.Fb=function(t){var n;return we(t,112)?(n=u(t,112),this.g==n.g):!1},l.Hb=function(){return this.g},l.Ib=function(){var t,n,r,s;for(t=new Fl("{"),s=new C(this.n);s.a"+this.b+" ("+hKt(this.c)+")"},l.d=0,O(o1,"HyperEdgeSegmentDependency",129),M(520,22,{3:1,35:1,22:1,520:1},E2e);var d2,jy,Xwt=Gr(o1,"HyperEdgeSegmentDependency/DependencyType",520,Wr,ZJt,vXt),Qwt;M(1815,1,{},$je),O(o1,"HyperEdgeSegmentSplitter",1815),M(1816,1,{},vze),l.a=0,l.b=0,O(o1,"HyperEdgeSegmentSplitter/AreaRating",1816),M(329,1,{329:1},vne),l.a=0,l.b=0,l.c=0,O(o1,"HyperEdgeSegmentSplitter/FreeArea",329),M(1817,1,ji,jQ),l.ue=function(t,n){return oYt(u(t,112),u(n,112))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(o1,"HyperEdgeSegmentSplitter/lambda$0$Type",1817),M(1818,1,Un,DYe),l.td=function(t){fnn(this.a,this.d,this.c,this.b,u(t,112))},l.b=0,O(o1,"HyperEdgeSegmentSplitter/lambda$1$Type",1818),M(1819,1,{},$Q),l.Kb=function(t){return new vn(null,new mn(u(t,112).e,16))},O(o1,"HyperEdgeSegmentSplitter/lambda$2$Type",1819),M(1820,1,{},HQ),l.Kb=function(t){return new vn(null,new mn(u(t,112).j,16))},O(o1,"HyperEdgeSegmentSplitter/lambda$3$Type",1820),M(1821,1,{},zQ),l.Fe=function(t){return Ue(ft(t))},O(o1,"HyperEdgeSegmentSplitter/lambda$4$Type",1821),M(655,1,{},Hne),l.a=0,l.b=0,l.c=0,O(o1,"OrthogonalRoutingGenerator",655),M(1638,1,{},GQ),l.Kb=function(t){return new vn(null,new mn(u(t,112).e,16))},O(o1,"OrthogonalRoutingGenerator/lambda$0$Type",1638),M(1639,1,{},qQ),l.Kb=function(t){return new vn(null,new mn(u(t,112).j,16))},O(o1,"OrthogonalRoutingGenerator/lambda$1$Type",1639),M(661,1,{}),O(gce,"BaseRoutingDirectionStrategy",661),M(1807,661,{},kHe),l.dg=function(t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X;if(!(t.r&&!t.q))for(L=n+t.o*r,_=new C(t.n);_.a<_.c.c.length;)for(x=u(Y(_),11),P=sc(ie(re(na,1),Qe,8,0,[x.i.n,x.n,x.a])).a,v=new C(x.g);v.aSd&&(h=L,o=t,s=new Pt(P,h),ci(d.a,s),rw(this,d,o,s,!1),z=t.r,z&&(q=Ue(ft(s1(z.e,0))),s=new Pt(q,h),ci(d.a,s),rw(this,d,o,s,!1),h=n+z.o*r,o=z,s=new Pt(q,h),ci(d.a,s),rw(this,d,o,s,!1)),s=new Pt(X,h),ci(d.a,s),rw(this,d,o,s,!1)))},l.eg=function(t){return t.i.n.a+t.n.a+t.a.a},l.fg=function(){return ht(),xr},l.gg=function(){return ht(),An},O(gce,"NorthToSouthRoutingStrategy",1807),M(1808,661,{},xHe),l.dg=function(t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X;if(!(t.r&&!t.q))for(L=n-t.o*r,_=new C(t.n);_.a<_.c.c.length;)for(x=u(Y(_),11),P=sc(ie(re(na,1),Qe,8,0,[x.i.n,x.n,x.a])).a,v=new C(x.g);v.aSd&&(h=L,o=t,s=new Pt(P,h),ci(d.a,s),rw(this,d,o,s,!1),z=t.r,z&&(q=Ue(ft(s1(z.e,0))),s=new Pt(q,h),ci(d.a,s),rw(this,d,o,s,!1),h=n-z.o*r,o=z,s=new Pt(q,h),ci(d.a,s),rw(this,d,o,s,!1)),s=new Pt(X,h),ci(d.a,s),rw(this,d,o,s,!1)))},l.eg=function(t){return t.i.n.a+t.n.a+t.a.a},l.fg=function(){return ht(),An},l.gg=function(){return ht(),xr},O(gce,"SouthToNorthRoutingStrategy",1808),M(1806,661,{},EHe),l.dg=function(t,n,r){var s,o,h,d,v,x,_,L,P,z,q,W,X;if(!(t.r&&!t.q))for(L=n+t.o*r,_=new C(t.n);_.a<_.c.c.length;)for(x=u(Y(_),11),P=sc(ie(re(na,1),Qe,8,0,[x.i.n,x.n,x.a])).b,v=new C(x.g);v.aSd&&(h=L,o=t,s=new Pt(h,P),ci(d.a,s),rw(this,d,o,s,!0),z=t.r,z&&(q=Ue(ft(s1(z.e,0))),s=new Pt(h,q),ci(d.a,s),rw(this,d,o,s,!0),h=n+z.o*r,o=z,s=new Pt(h,q),ci(d.a,s),rw(this,d,o,s,!0)),s=new Pt(h,X),ci(d.a,s),rw(this,d,o,s,!0)))},l.eg=function(t){return t.i.n.b+t.n.b+t.a.b},l.fg=function(){return ht(),$n},l.gg=function(){return ht(),Dn},O(gce,"WestToEastRoutingStrategy",1806),M(813,1,{},G5e),l.Ib=function(){return Yp(this.a)},l.b=0,l.c=!1,l.d=!1,l.f=0,O(vy,"NubSpline",813),M(407,1,{407:1},Kot,hXe),O(vy,"NubSpline/PolarCP",407),M(1453,1,Qc,Rit),l.Yf=function(t){return Rhn(u(t,37))},l.pf=function(t,n){vyn(this,u(t,37),n)};var Zwt,Jwt,emt,tmt,nmt;O(vy,"SplineEdgeRouter",1453),M(268,1,{268:1},x$),l.Ib=function(){return this.a+" ->("+this.c+") "+this.b},l.c=0,O(vy,"SplineEdgeRouter/Dependency",268),M(455,22,{3:1,35:1,22:1,455:1},T2e);var g2,Y4,rmt=Gr(vy,"SplineEdgeRouter/SideToProcess",455,Wr,ten,wXt),imt;M(1454,1,vi,FQ),l.Mb=function(t){return aC(),!u(t,128).o},O(vy,"SplineEdgeRouter/lambda$0$Type",1454),M(1455,1,{},RQ),l.Ge=function(t){return aC(),u(t,128).v+1},O(vy,"SplineEdgeRouter/lambda$1$Type",1455),M(1456,1,Un,fqe),l.td=function(t){AQt(this.a,this.b,u(t,46))},O(vy,"SplineEdgeRouter/lambda$2$Type",1456),M(1457,1,Un,dqe),l.td=function(t){LQt(this.a,this.b,u(t,46))},O(vy,"SplineEdgeRouter/lambda$3$Type",1457),M(128,1,{35:1,128:1},hat,Y5e),l.wd=function(t){return tUt(this,u(t,128))},l.b=0,l.e=!1,l.f=0,l.g=0,l.j=!1,l.k=!1,l.n=0,l.o=!1,l.p=!1,l.q=!1,l.s=0,l.u=0,l.v=0,l.F=0,O(vy,"SplineSegment",128),M(459,1,{459:1},P9),l.a=0,l.b=!1,l.c=!1,l.d=!1,l.e=!1,l.f=0,O(vy,"SplineSegment/EdgeInformation",459),M(1234,1,{},OQ),O(IC,q6e,1234),M(1235,1,ji,NQ),l.ue=function(t,n){return hdn(u(t,135),u(n,135))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(IC,Yht,1235),M(1233,1,{},Oze),O(IC,"MrTree",1233),M(393,22,{3:1,35:1,22:1,393:1,246:1,234:1},HF),l.Kf=function(){return Bat(this)},l.Xf=function(){return Bat(this)};var fV,_S,NO,CS,B_e=Gr(IC,"TreeLayoutPhases",393,Wr,Wtn,mXt),smt;M(1130,209,mb,JUe),l.Ze=function(t,n){var r,s,o,h,d,v,x;for(It(Mt(Ft(t,(nw(),z_e))))||i$((r=new sr((Tm(),new ym(t))),r)),d=(v=new E$,Ho(v,t),Ye(v,(Tc(),LS),t),x=new Mr,nbn(t,v,x),mbn(t,v,x),v),h=fbn(this.a,d),o=new C(h);o.a"+h$(this.c):"e_"+Xi(this)},O(OC,"TEdge",188),M(135,134,{3:1,135:1,94:1,134:1},E$),l.Ib=function(){var t,n,r,s,o;for(o=null,s=ii(this.b,0);s.b!=s.d.c;)r=u(ri(s),86),o+=(r.c==null||r.c.length==0?"n_"+r.g:"n_"+r.c)+` +`;for(n=ii(this.a,0);n.b!=n.d.c;)t=u(ri(n),188),o+=(t.b&&t.c?h$(t.b)+"->"+h$(t.c):"e_"+Xi(t))+` +`;return o};var E3n=O(OC,"TGraph",135);M(633,502,{3:1,502:1,633:1,94:1,134:1}),O(OC,"TShape",633),M(86,633,{3:1,502:1,86:1,633:1,94:1,134:1},vie),l.Ib=function(){return h$(this)};var T3n=O(OC,"TNode",86);M(255,1,i0,Ep),l.Jc=function(t){Da(this,t)},l.Kc=function(){var t;return t=ii(this.a.d,0),new f6(t)},O(OC,"TNode/2",255),M(358,1,ga,f6),l.Nb=function(t){La(this,t)},l.Pb=function(){return u(ri(this.a),188).c},l.Ob=function(){return vF(this.a)},l.Qb=function(){F$(this.a)},O(OC,"TNode/2/1",358),M(1840,1,ps,ZUe),l.pf=function(t,n){Pbn(this,u(t,135),n)},O(vk,"FanProcessor",1840),M(327,22,{3:1,35:1,22:1,327:1,234:1},qT),l.Kf=function(){switch(this.g){case 0:return new FHe;case 1:return new ZUe;case 2:return new W5;case 3:return new VQ;case 4:return new WQ;case 5:return new IL;default:throw J(new Ln(Noe+(this.f!=null?this.f:""+this.g)))}};var whe,mhe,yhe,khe,xhe,dV,amt=Gr(vk,tke,327,Wr,urn,yXt),omt;M(1843,1,ps,VQ),l.pf=function(t,n){v0n(this,u(t,135),n)},l.a=0,O(vk,"LevelHeightProcessor",1843),M(1844,1,i0,UQ),l.Jc=function(t){Da(this,t)},l.Kc=function(){return hn(),e8(),Y7},O(vk,"LevelHeightProcessor/1",1844),M(1841,1,ps,W5),l.pf=function(t,n){T1n(this,u(t,135),n)},l.a=0,O(vk,"NeighborsProcessor",1841),M(1842,1,i0,PB),l.Jc=function(t){Da(this,t)},l.Kc=function(){return hn(),e8(),Y7},O(vk,"NeighborsProcessor/1",1842),M(1845,1,ps,WQ),l.pf=function(t,n){b0n(this,u(t,135),n)},l.a=0,O(vk,"NodePositionProcessor",1845),M(1839,1,ps,FHe),l.pf=function(t,n){zvn(this,u(t,135))},O(vk,"RootProcessor",1839),M(1846,1,ps,IL),l.pf=function(t,n){Qan(u(t,135))},O(vk,"Untreeifyer",1846);var PO,SS,cmt,Ehe,gV,AS,The,pV,bV,mE,LS,vV,qg,R_e,umt,_he,$y,Che,F_e;M(851,1,zh,E3),l.Qe=function(t){en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,yxe),""),"Weighting of Nodes"),"Which weighting to use when computing a node order."),$_e),(Ng(),vs)),W_e),rn((i1(),Fn))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,kxe),""),"Search Order"),"Which search order to use when computing a spanning tree."),j_e),vs),Y_e),rn(Fn)))),clt((new WL,t))};var lmt,j_e,hmt,$_e;O(oG,"MrTreeMetaDataProvider",851),M(994,1,zh,WL),l.Qe=function(t){clt(t)};var fmt,H_e,dmt,gmt,pmt,bmt,z_e,vmt,G_e,wmt,wV,q_e,mmt,V_e,ymt;O(oG,"MrTreeOptions",994),M(995,1,{},KQ),l.$e=function(){var t;return t=new JUe,t},l._e=function(t){},O(oG,"MrTreeOptions/MrtreeFactory",995),M(480,22,{3:1,35:1,22:1,480:1},_2e);var She,U_e,W_e=Gr(oG,"OrderWeighting",480,Wr,ren,kXt),kmt;M(425,22,{3:1,35:1,22:1,425:1},C2e);var K_e,Ahe,Y_e=Gr(oG,"TreeifyingOrder",425,Wr,nen,EXt),xmt;M(1459,1,Qc,UL),l.Yf=function(t){return u(t,135),Emt},l.pf=function(t,n){Xin(this,u(t,135),n)};var Emt;O("org.eclipse.elk.alg.mrtree.p1treeify","DFSTreeifyer",1459),M(1460,1,Qc,XJ),l.Yf=function(t){return u(t,135),Tmt},l.pf=function(t,n){N1n(this,u(t,135),n)};var Tmt;O("org.eclipse.elk.alg.mrtree.p2order","NodeOrderer",1460),M(1461,1,Qc,YJ),l.Yf=function(t){return u(t,135),_mt},l.pf=function(t,n){Qpn(this,u(t,135),n)},l.a=0;var _mt;O("org.eclipse.elk.alg.mrtree.p3place","NodePlacer",1461),M(1462,1,Qc,LR),l.Yf=function(t){return u(t,135),Cmt},l.pf=function(t,n){Eln(u(t,135),n)};var Cmt;O("org.eclipse.elk.alg.mrtree.p4route","EdgeRouter",1462);var MS;M(495,22,{3:1,35:1,22:1,495:1,246:1,234:1},S2e),l.Kf=function(){return grt(this)},l.Xf=function(){return grt(this)};var mV,yE,X_e=Gr(xxe,"RadialLayoutPhases",495,Wr,ien,xXt),Smt;M(1131,209,mb,Ize),l.Ze=function(t,n){var r,s,o,h,d,v;if(r=vat(this,t),kr(n,"Radial layout",r.c.length),It(Mt(Ft(t,(Jm(),aCe))))||i$((s=new sr((Tm(),new ym(t))),s)),v=$hn(t),So(t,(a_(),MS),v),!v)throw J(new Ln("The given graph is not a tree!"));for(o=Ue(ft(Ft(t,xV))),o==0&&(o=Dat(t)),So(t,xV,o),d=new C(vat(this,t));d.a0&&jnt((zr(n-1,t.length),t.charCodeAt(n-1)),aft);)--n;if(s>=n)throw J(new Ln("The given string does not contain any numbers."));if(o=cy(t.substr(s,n-s),`,|;|\r| +`),o.length!=2)throw J(new Ln("Exactly two numbers are expected, "+o.length+" were found."));try{this.a=ry(ny(o[0])),this.b=ry(ny(o[1]))}catch(h){throw h=ts(h),we(h,127)?(r=h,J(new Ln(oft+r))):J(h)}},l.Ib=function(){return"("+this.a+","+this.b+")"},l.a=0,l.b=0;var na=O(HI,"KVector",8);M(74,68,{3:1,4:1,20:1,28:1,52:1,14:1,68:1,15:1,74:1,414:1},Gu,pF,kUe),l.Pc=function(){return uan(this)},l.Jf=function(t){var n,r,s,o,h,d;s=cy(t,`,|;|\\(|\\)|\\[|\\]|\\{|\\}| | | +`),Rh(this);try{for(r=0,h=0,o=0,d=0;r0&&(h%2==0?o=ry(s[r]):d=ry(s[r]),h>0&&h%2!=0&&ci(this,new Pt(o,d)),++h),++r}catch(v){throw v=ts(v),we(v,127)?(n=v,J(new Ln("The given string does not match the expected format for vectors."+n))):J(v)}},l.Ib=function(){var t,n,r;for(t=new Fl("("),n=ii(this,0);n.b!=n.d.c;)r=u(ri(n),8),Yr(t,r.a+","+r.b),n.b!=n.d.c&&(t.a+="; ");return(t.a+=")",t).a};var sSe=O(HI,"KVectorChain",74);M(248,22,{3:1,35:1,22:1,248:1},VT);var Yhe,LV,MV,jO,$O,DV,aSe=Gr(qh,"Alignment",248,Wr,rrn,$Xt),Uyt;M(979,1,zh,JJ),l.Qe=function(t){rut(t)};var oSe,Xhe,Wyt,cSe,uSe,Kyt,lSe,Yyt,Xyt,hSe,fSe,Qyt;O(qh,"BoxLayouterOptions",979),M(980,1,{},MZ),l.$e=function(){var t;return t=new BZ,t},l._e=function(t){},O(qh,"BoxLayouterOptions/BoxFactory",980),M(291,22,{3:1,35:1,22:1,291:1},UT);var HO,Qhe,zO,GO,qO,Zhe,Jhe=Gr(qh,"ContentAlignment",291,Wr,nrn,HXt),Zyt;M(684,1,zh,wp),l.Qe=function(t){en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,n1t),""),"Layout Algorithm"),"Select a specific layout algorithm."),(Ng(),kE)),mt),rn((i1(),Fn))))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,r1t),""),"Resolved Layout Algorithm"),"Meta data associated with the selected algorithm."),Y1),S3n),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Zke),""),"Alignment"),"Alignment of the selected node relative to other nodes; the exact meaning depends on the used algorithm."),dSe),vs),aSe),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,fk),""),"Aspect Ratio"),"The desired aspect ratio of the drawing, that is the quotient of width by height."),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Uxe),""),"Bend Points"),"A fixed list of bend points for the edge. This is used by the 'Fixed Layout' algorithm to specify a pre-defined routing for an edge. The vector chain must include the source point, any bend points, and the target point, so it must have at least two points."),Y1),sSe),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,rG),""),"Content Alignment"),"Specifies how the content of a node are aligned. Each node can individually control the alignment of its contents. I.e. if a node should be aligned top left in its parent node, the parent node should specify that option."),pSe),Pk),Jhe),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,WI),""),"Debug Mode"),"Whether additional debug information shall be generated."),(Mn(),!1)),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,txe),""),P6e),"Overall direction of edges: horizontal (right / left) or vertical (down / up)."),bSe),vs),RS),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,VI),""),"Edge Routing"),"What kind of edge routing style should be applied for the content of a parent node. Algorithms may also set this option to single edges in order to mark them as splines. The bend point list of edges with this option set to SPLINES must be interpreted as control points for a piecewise cubic spline."),mSe),vs),ffe),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,uG),""),"Expand Nodes"),"If active, nodes are expanded to fill the area of their parent."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,nG),""),"Hierarchy Handling"),"Determines whether separate layout runs are triggered for different compound nodes in a hierarchical graph. Setting a node's hierarchy handling to `INCLUDE_CHILDREN` will lay out that node and all of its descendants in a single layout run, until a descendant is encountered which has its hierarchy handling set to `SEPARATE_CHILDREN`. In general, `SEPARATE_CHILDREN` will ensure that a new layout run is triggered for a node with that setting. Including multiple levels of hierarchy in a single layout run may allow cross-hierarchical edges to be laid out properly. If the root node is set to `INHERIT` (or not set at all), the default behavior is `SEPARATE_CHILDREN`."),ESe),vs),cAe),Ui(Fn,ie(re(Ug,1),tt,175,0,[ua]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,uw),""),"Padding"),"The padding to be left to a parent element's border when placing child elements. This can also serve as an output option of a layout algorithm if node size calculation is setup appropriately."),OSe),Y1),gEe),Ui(Fn,ie(re(Ug,1),tt,175,0,[ua]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,jI),""),"Interactive"),"Whether the algorithm should be run in interactive mode for the content of a parent node. What this means exactly depends on how the specific algorithm interprets this option. Usually in the interactive mode algorithms try to modify the current layout as little as possible."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,fce),""),"interactive Layout"),"Whether the graph should be changeable interactively and by setting constraints"),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,CC),""),"Omit Node Micro Layout"),"Node micro layout comprises the computation of node dimensions (if requested), the placement of ports and their labels, and the placement of node labels. The functionality is implemented independent of any specific layout algorithm and shouldn't have any negative impact on the layout algorithm's performance itself. Yet, if any unforeseen behavior occurs, this option allows to deactivate the micro layout."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Doe),""),"Port Constraints"),"Defines constraints of the position of the ports of a node."),FSe),vs),hAe),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,iG),""),"Position"),"The position of a node, port, or label. This is used by the 'Fixed Layout' algorithm to specify a pre-defined position."),Y1),na),Ui(ua,ie(re(Ug,1),tt,175,0,[Bb,Vg]))))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,FI),""),"Priority"),"Defines the priority of an object; its meaning depends on the specific layout algorithm and the context where it is used."),Cc),Za),Ui(ua,ie(re(Ug,1),tt,175,0,[Fd]))))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Fz),""),"Randomization Seed"),"Seed used for pseudo-random number generators to control the layout algorithm. If the value is 0, the seed shall be determined pseudo-randomly (e.g. from the system time)."),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,_C),""),"Separate Connected Components"),"Whether each connected component should be processed separately."),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,lxe),""),"Junction Points"),"This option is not used as option, but as output of the layout algorithms. It is attached to edges and determines the points where junction symbols should be drawn in order to represent hyperedges with orthogonal routing. Whether such points are computed depends on the chosen layout algorithm and edge routing style. The points are put into the vector chain with no specific order."),_Se),Y1),sSe),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,dxe),""),"Comment Box"),"Whether the node should be regarded as a comment box instead of a regular node. In that case its placement should be similar to how labels are handled. Any edges incident to a comment box specify to which graph elements the comment is related."),!1),za),Us),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,gxe),""),"Hypernode"),"Whether the node should be handled as a hypernode."),!1),za),Us),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,t3n),""),"Label Manager"),"Label managers can shorten labels upon a layout algorithm's request."),Y1),I3n),Ui(Fn,ie(re(Ug,1),tt,175,0,[Vg]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,bxe),""),"Margins"),"Margins define additional space around the actual bounds of a graph element. For instance, ports or labels being placed on the outside of a node's border might introduce such a margin. The margin is used to guarantee non-overlap of other graph elements with those ports or labels."),CSe),Y1),dEe),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Xke),""),"No Layout"),"No layout is done for the associated element. This is used to mark parts of a diagram to avoid their inclusion in the layout graph, or to mark parts of the layout graph to prevent layout engines from processing them. If you wish to exclude the contents of a compound node from automatic layout, while the node itself is still considered on its own layer, use the 'Fixed Layout' algorithm for that node."),!1),za),Us),Ui(ua,ie(re(Ug,1),tt,175,0,[Fd,Bb,Vg]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,i1t),""),"Scale Factor"),"The scaling factor to be applied to the corresponding node in recursive layout. It causes the corresponding node's size to be adjusted, and its ports and labels to be sized and placed accordingly after the layout of that node has been determined (and before the node itself and its siblings are arranged). The scaling is not reverted afterwards, so the resulting layout graph contains the adjusted size and position data. This option is currently not supported if 'Layout Hierarchy' is set."),1),qo),ma),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,s1t),""),"Animate"),"Whether the shift from the old layout to the new computed layout shall be animated."),!0),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,a1t),""),"Animation Time Factor"),"Factor for computation of animation time. The higher the value, the longer the animation time. If the value is 0, the resulting time is always equal to the minimum defined by 'Minimal Animation Time'."),ct(100)),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,o1t),""),"Layout Ancestors"),"Whether the hierarchy levels on the path from the selected element to the root of the diagram shall be included in the layout process."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,c1t),""),"Maximal Animation Time"),"The maximal time for animations, in milliseconds."),ct(4e3)),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,u1t),""),"Minimal Animation Time"),"The minimal time for animations, in milliseconds."),ct(400)),Cc),Za),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,l1t),""),"Progress Bar"),"Whether a progress bar shall be displayed during layout computations."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,h1t),""),"Validate Graph"),"Whether the graph shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,f1t),""),"Validate Options"),"Whether layout options shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!0),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,d1t),""),"Zoom to Fit"),"Whether the zoom level shall be set to view the whole diagram after layout."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Vxe),"box"),"Box Layout Mode"),"Configures the packing mode used by the {@link BoxLayoutProvider}. If SIMPLE is not required (neither priorities are used nor the interactive mode), GROUP_DEC can improve the packing and decrease the area. GROUP_MIXED and GROUP_INC may, in very specific scenarios, work better."),gSe),vs),vAe),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Fke),G1),"Comment Comment Spacing"),"Spacing to be preserved between a comment box and other comment boxes connected to the same node. The space left between comment boxes of different nodes is controlled by the node-node spacing."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,jke),G1),"Comment Node Spacing"),"Spacing to be preserved between a node and its connected comment boxes. The space left between a node and the comments of another node is controlled by the node-node spacing."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,_oe),G1),"Components Spacing"),"Spacing to be preserved between pairs of connected components. This option is only relevant if 'separateConnectedComponents' is activated."),20),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,$ke),G1),"Edge Spacing"),"Spacing to be preserved between any two edges. Note that while this can somewhat easily be satisfied for the segments of orthogonally drawn edges, it is harder for general polylines or splines."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Moe),G1),"Edge Label Spacing"),"The minimal distance to be preserved between a label and the edge it is associated with. Note that the placement of a label is influenced by the 'edgelabels.placement' option."),2),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Hke),G1),"Edge Node Spacing"),"Spacing to be preserved between nodes and edges."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,zke),G1),"Label Spacing"),"Determines the amount of space to be left between two labels of the same graph element."),0),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Vke),G1),"Label Node Spacing"),"Spacing to be preserved between labels and the border of node they are associated with. Note that the placement of a label is influenced by the 'nodelabels.placement' option."),5),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Gke),G1),"Horizontal spacing between Label and Port"),"Horizontal spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,qke),G1),"Vertical spacing between Label and Port"),"Vertical spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,py),G1),"Node Spacing"),"The minimal distance to be preserved between each two nodes."),20),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Uke),G1),"Node Self Loop Spacing"),"Spacing to be preserved between a node and its self loops."),10),qo),ma),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Wke),G1),"Port Spacing"),"Spacing between pairs of ports of the same node."),10),qo),ma),Ui(Fn,ie(re(Ug,1),tt,175,0,[ua]))))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Kke),G1),"Individual Spacing"),"Allows to specify individual spacing values for graph elements that shall be different from the value specified for the element's parent."),Y1),O3t),Ui(ua,ie(re(Ug,1),tt,175,0,[Fd,Bb,Vg]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,vxe),G1),"Additional Port Space"),"Additional space around the sets of ports on each node side. For each side of a node, this option can reserve additional space before and after the ports on each side. For example, a top spacing of 20 makes sure that the first port on the western and eastern side is 20 units away from the northern border."),KSe),Y1),dEe),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,hce),b1t),"Layout Partition"),"Partition to which the node belongs. This requires Layout Partitioning to be active. Nodes with lower partition IDs will appear to the left of nodes with higher partition IDs (assuming a left-to-right layout direction)."),Cc),Za),Ui(Fn,ie(re(Ug,1),tt,175,0,[ua]))))),va(t,hce,lce,a3t),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,lce),b1t),"Layout Partitioning"),"Whether to activate partitioned layout. This will allow to group nodes through the Layout Partition option. a pair of nodes with different partition indices is then placed such that the node with lower index is placed to the left of the other node (with left-to-right layout direction). Depending on the layout algorithm, this may only be guaranteed to work if all nodes have a layout partition configured, or at least if edges that cross partitions are not part of a partition-crossing cycle."),NSe),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,nxe),v1t),"Node Label Padding"),"Define padding for node labels that are placed inside of a node."),ASe),Y1),gEe),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,P7),v1t),"Node Label Placement"),"Hints for where node labels are to be placed; if empty, the node label's position is not modified."),LSe),Pk),xo),Ui(ua,ie(re(Ug,1),tt,175,0,[Vg]))))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,sxe),hG),"Port Alignment"),"Defines the default port distribution for a node. May be overridden for each side individually."),BSe),vs),HS),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,axe),hG),"Port Alignment (North)"),"Defines how ports on the northern side are placed, overriding the node's general port alignment."),vs),HS),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,oxe),hG),"Port Alignment (South)"),"Defines how ports on the southern side are placed, overriding the node's general port alignment."),vs),HS),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,cxe),hG),"Port Alignment (West)"),"Defines how ports on the western side are placed, overriding the node's general port alignment."),vs),HS),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,uxe),hG),"Port Alignment (East)"),"Defines how ports on the eastern side are placed, overriding the node's general port alignment."),vs),HS),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,E4),Dce),"Node Size Constraints"),"What should be taken into account when calculating a node's size. Empty size constraints specify that a node's size is already fixed and should not be changed."),MSe),Pk),qS),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,dk),Dce),"Node Size Options"),"Options modifying the behavior of the size constraints set on a node. Each member of the set specifies something that should be taken into account when calculating node sizes. The empty set corresponds to no further modifications."),ISe),Pk),dAe),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,gk),Dce),"Node Size Minimum"),"The minimal size to which a node can be reduced."),DSe),Y1),na),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,uce),Dce),"Fixed Graph Size"),"By default, the fixed layout provider will enlarge a graph until it is large enough to contain its children. If this option is set, it won't do so."),!1),za),Us),rn(Fn)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,hxe),cce),"Edge Label Placement"),"Gives a hint on where to put edge labels."),vSe),vs),XSe),rn(Vg)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,jz),cce),"Inline Edge Labels"),"If true, an edge label is placed directly on its edge. May only apply to center edge labels. This kind of label placement is only advisable if the label's rendering is such that it is not crossed by its edge and thus stays legible."),!1),za),Us),rn(Vg)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,n3n),"font"),"Font Name"),"Font name used for a label."),kE),mt),rn(Vg)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,g1t),"font"),"Font Size"),"Font size used for a label."),Cc),Za),rn(Vg)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,pxe),Ice),"Port Anchor Offset"),"The offset to the port position where connections shall be attached."),Y1),na),rn(Bb)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,fxe),Ice),"Port Index"),"The index of a port in the fixed order around a node. The order is assumed as clockwise, starting with the leftmost port on the top side. This option must be set if 'Port Constraints' is set to FIXED_ORDER and no specific positions are given for the ports. Additionally, the option 'Port Side' must be defined in this case."),Cc),Za),rn(Bb)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Qke),Ice),"Port Side"),"The side of a node on which a port is situated. This option must be set if 'Port Constraints' is set to FIXED_SIDE or FIXED_ORDER and no specific positions are given for the ports."),HSe),vs),ao),rn(Bb)))),en(t,new Vt(Zt(Qt(Jt(Wt(Xt(Kt(Yt(new Ht,Yke),Ice),"Port Border Offset"),"The offset of ports on the node border. With a positive offset the port is moved outside of the node, while with a negative offset the port is moved towards the inside. An offset of 0 means that the port is placed directly on the node border, i.e. if the port side is north, the port's south border touches the nodes's north border; if the port side is east, the port's west border touches the nodes's east border; if the port side is south, the port's north border touches the node's south border; if the port side is west, the port's east border touches the node's west border."),qo),ma),rn(Bb)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,B7),Wxe),"Port Label Placement"),"Decides on a placement method for port labels; if empty, the node label's position is not modified."),jSe),Pk),jV),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,rxe),Wxe),"Port Labels Next to Port"),"Use 'portLabels.placement': NEXT_TO_PORT_OF_POSSIBLE."),!1),za),Us),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,ixe),Wxe),"Treat Port Labels as Group"),"If this option is true (default), the labels of a port will be treated as a group when it comes to centering them next to their port. If this option is false, only the first label will be centered next to the port, with the others being placed below. This only applies to labels of eastern and western ports and will have no effect if labels are not placed next to their port."),!0),za),Us),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Jke),w1t),"Activate Inside Self Loops"),"Whether this node allows to route self loops inside of it instead of around it. If set to true, this will make the node a compound node if it isn't already, and will require the layout algorithm to support compound nodes with hierarchical ports."),!1),za),Us),rn(ua)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,exe),w1t),"Inside Self Loop"),"Whether a self loop should be routed inside a node instead of around that node."),!1),za),Us),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,Coe),"edge"),"Edge Thickness"),"The thickness of an edge. This is a hint on the line width used to draw an edge, possibly requiring more space to be reserved for it."),1),qo),ma),rn(Fd)))),en(t,new Vt(Zt(Qt(Jt(pn(Wt(Xt(Kt(Yt(new Ht,p1t),"edge"),"Edge Type"),"The type of an edge. This is usually used for UML class diagrams, where associations must be handled differently from generalizations."),kSe),vs),nAe),rn(Fd)))),NT(t,new R6(AT(Xx(Yx(new hm,qn),"Layered"),'The layer-based method was introduced by Sugiyama, Tagawa and Toda in 1981. It emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers, which are sometimes called "hierarchies", and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points.'))),NT(t,new R6(AT(Xx(Yx(new hm,"org.eclipse.elk.orthogonal"),"Orthogonal"),`Orthogonal methods that follow the "topology-shape-metrics" approach by Batini, Nardelli and Tamassia '86. The first phase determines the topology of the drawing by applying a planarization technique, which results in a planar representation of the graph. The orthogonal shape is computed in the second phase, which aims at minimizing the number of edge bends, and is called orthogonalization. The third phase leads to concrete coordinates for nodes and edge bend points by applying a compaction method, thus defining the metrics.`))),NT(t,new R6(AT(Xx(Yx(new hm,Yl),"Force"),"Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. The first successful method of this kind was proposed by Eades in 1984."))),NT(t,new R6(AT(Xx(Yx(new hm,"org.eclipse.elk.circle"),"Circle"),"Circular layout algorithms emphasize cycles or biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent OPTIONS of the graph."))),NT(t,new R6(AT(Xx(Yx(new hm,zft),"Tree"),"Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type."))),NT(t,new R6(AT(Xx(Yx(new hm,"org.eclipse.elk.planar"),"Planar"),"Algorithms that require a planar or upward planar graph. Most of these algorithms are theoretically interesting, but not practically usable."))),NT(t,new R6(AT(Xx(Yx(new hm,Dd),"Radial"),"Radial layout algorithms usually position the nodes of the graph on concentric circles."))),zct((new PR,t)),rut((new JJ,t)),wct((new BR,t))};var PS,Jyt,dSe,Bk,e3t,t3t,gSe,n3t,IV,pSe,VO,Mw,bSe,efe,tfe,vSe,wSe,mSe,ySe,kSe,xSe,Q4,ESe,r3t,UO,nfe,OV,TSe,Z4,_Se,WO,CSe,SSe,ASe,J4,LSe,Rb,MSe,NV,e5,DSe,p2,ISe,PV,KO,Fb,OSe,i3t,NSe,s3t,a3t,PSe,BSe,rfe,ife,sfe,afe,RSe,kl,BS,FSe,ofe,cfe,Hy,jSe,$Se,t5,HSe,Rk,BV,ufe,xE,o3t,lfe,c3t,u3t,zSe,l3t,GSe,h3t,Fk,qSe,RV,VSe,USe,jb,f3t,WSe,KSe,YSe;O(qh,"CoreOptions",684),M(103,22,{3:1,35:1,22:1,103:1},AM);var Y0,Xh,Df,f0,X0,RS=Gr(qh,P6e,103,Wr,_nn,qXt),d3t;M(272,22,{3:1,35:1,22:1,272:1},Fte);var EE,zy,TE,XSe=Gr(qh,"EdgeLabelPlacement",272,Wr,stn,VXt),g3t;M(218,22,{3:1,35:1,22:1,218:1},GF);var _E,YO,jk,hfe,ffe=Gr(qh,"EdgeRouting",218,Wr,Qtn,UXt),p3t;M(312,22,{3:1,35:1,22:1,312:1},WT);var QSe,ZSe,JSe,eAe,dfe,tAe,nAe=Gr(qh,"EdgeType",312,Wr,hrn,WXt),b3t;M(977,1,zh,PR),l.Qe=function(t){zct(t)};var rAe,iAe,sAe,aAe,v3t,oAe,FS;O(qh,"FixedLayouterOptions",977),M(978,1,{},BL),l.$e=function(){var t;return t=new NZ,t},l._e=function(t){},O(qh,"FixedLayouterOptions/FixedFactory",978),M(334,22,{3:1,35:1,22:1,334:1},jte);var Wg,FV,jS,cAe=Gr(qh,"HierarchyHandling",334,Wr,itn,KXt),w3t;M(285,22,{3:1,35:1,22:1,285:1},qF);var d0,b2,XO,QO,m3t=Gr(qh,"LabelSide",285,Wr,Xtn,YXt),y3t;M(93,22,{3:1,35:1,22:1,93:1},N3);var Q0,If,Qh,Of,Jl,Nf,Zh,g0,Pf,xo=Gr(qh,"NodeLabelPlacement",93,Wr,gin,XXt),k3t;M(249,22,{3:1,35:1,22:1,249:1},LM);var uAe,$S,v2,lAe,ZO,HS=Gr(qh,"PortAlignment",249,Wr,Cnn,QXt),x3t;M(98,22,{3:1,35:1,22:1,98:1},KT);var $b,tu,p0,CE,X1,w2,hAe=Gr(qh,"PortConstraints",98,Wr,Knn,ZXt),E3t;M(273,22,{3:1,35:1,22:1,273:1},YT);var zS,GS,Z0,JO,m2,$k,jV=Gr(qh,"PortLabelPlacement",273,Wr,lrn,JXt),T3t;M(61,22,{3:1,35:1,22:1,61:1},MM);var $n,An,_h,Ch,Bu,wu,Q1,Bf,ll,Ju,nu,hl,Ru,Fu,Rf,eh,th,Jh,xr,uc,Dn,ao=Gr(qh,"PortSide",61,Wr,xnn,nQt),_3t;M(981,1,zh,BR),l.Qe=function(t){wct(t)};var C3t,S3t,fAe,A3t,L3t;O(qh,"RandomLayouterOptions",981),M(982,1,{},$Z),l.$e=function(){var t;return t=new zZ,t},l._e=function(t){},O(qh,"RandomLayouterOptions/RandomFactory",982),M(374,22,{3:1,35:1,22:1,374:1},VF);var Gy,eN,tN,Hb,qS=Gr(qh,"SizeConstraint",374,Wr,Ytn,eQt),M3t;M(259,22,{3:1,35:1,22:1,259:1},P3);var nN,$V,SE,gfe,rN,VS,HV,zV,GV,dAe=Gr(qh,"SizeOptions",259,Wr,kin,tQt),D3t;M(370,1,{1949:1},Ux),l.b=!1,l.c=0,l.d=-1,l.e=null,l.f=null,l.g=-1,l.j=!1,l.k=!1,l.n=!1,l.o=0,l.q=0,l.r=0,O(Oc,"BasicProgressMonitor",370),M(972,209,mb,BZ),l.Ze=function(t,n){var r,s,o,h,d,v,x,_,L;switch(kr(n,"Box layout",2),o=uM(ft(Ft(t,(XH(),Qyt)))),h=u(Ft(t,Xyt),116),r=It(Mt(Ft(t,cSe))),s=It(Mt(Ft(t,uSe))),u(Ft(t,Xhe),311).g){case 0:d=(v=new Uu((!t.a&&(t.a=new at(hs,t,10,11)),t.a)),hn(),aa(v,new Zje(s)),v),x=A4e(t),_=ft(Ft(t,oSe)),(_==null||(Sn(_),_<=0))&&(_=1.3),L=ayn(d,o,h,x.a,x.b,r,(Sn(_),_)),sw(t,L.a,L.b,!1,!0);break;default:nwn(t,o,h,r)}ur(n)},O(Oc,"BoxLayoutProvider",972),M(973,1,ji,Zje),l.ue=function(t,n){return Tgn(this,u(t,33),u(n,33))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},l.a=!1,O(Oc,"BoxLayoutProvider/1",973),M(157,1,{157:1},H$,yUe),l.Ib=function(){return this.c?S5e(this.c):Yp(this.b)},O(Oc,"BoxLayoutProvider/Group",157),M(311,22,{3:1,35:1,22:1,311:1},UF);var gAe,pAe,bAe,pfe,vAe=Gr(Oc,"BoxLayoutProvider/PackingMode",311,Wr,Ztn,rQt),I3t;M(974,1,ji,RZ),l.ue=function(t,n){return SJt(u(t,157),u(n,157))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Oc,"BoxLayoutProvider/lambda$0$Type",974),M(975,1,ji,GB),l.ue=function(t,n){return yJt(u(t,157),u(n,157))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Oc,"BoxLayoutProvider/lambda$1$Type",975),M(976,1,ji,FZ),l.ue=function(t,n){return kJt(u(t,157),u(n,157))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(Oc,"BoxLayoutProvider/lambda$2$Type",976),M(1365,1,{831:1},jZ),l.qg=function(t,n){return SF(),!we(n,160)||Mze((W6(),u(t,160)),n)},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$0$Type",1365),M(1366,1,Un,Jje),l.td=function(t){han(this.a,u(t,146))},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$1$Type",1366),M(1367,1,Un,PZ),l.td=function(t){u(t,94),SF()},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$2$Type",1367),M(1371,1,Un,e$e),l.td=function(t){Bin(this.a,u(t,94))},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$3$Type",1371),M(1369,1,vi,bqe),l.Mb=function(t){return Qsn(this.a,this.b,u(t,146))},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$4$Type",1369),M(1368,1,vi,vqe),l.Mb=function(t){return gKt(this.a,this.b,u(t,831))},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$5$Type",1368),M(1370,1,Un,wqe),l.td=function(t){gZt(this.a,this.b,u(t,146))},O(Oc,"ElkSpacings/AbstractSpacingsBuilder/lambda$6$Type",1370),M(935,1,{},OZ),l.Kb=function(t){return wVe(t)},l.Fb=function(t){return this===t},O(Oc,"ElkUtil/lambda$0$Type",935),M(936,1,Un,mqe),l.td=function(t){Cdn(this.a,this.b,u(t,79))},l.a=0,l.b=0,O(Oc,"ElkUtil/lambda$1$Type",936),M(937,1,Un,yqe),l.td=function(t){CVt(this.a,this.b,u(t,202))},l.a=0,l.b=0,O(Oc,"ElkUtil/lambda$2$Type",937),M(938,1,Un,kqe),l.td=function(t){vWt(this.a,this.b,u(t,137))},l.a=0,l.b=0,O(Oc,"ElkUtil/lambda$3$Type",938),M(939,1,Un,t$e),l.td=function(t){MQt(this.a,u(t,469))},O(Oc,"ElkUtil/lambda$4$Type",939),M(342,1,{35:1,342:1},nVt),l.wd=function(t){return VWt(this,u(t,236))},l.Fb=function(t){var n;return we(t,342)?(n=u(t,342),this.a==n.a):!1},l.Hb=function(){return _s(this.a)},l.Ib=function(){return this.a+" (exclusive)"},l.a=0,O(Oc,"ExclusiveBounds/ExclusiveLowerBound",342),M(1138,209,mb,NZ),l.Ze=function(t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce,Ee,Ne,Ve,nt,bt,zt,Ut;for(kr(n,"Fixed Layout",1),h=u(Ft(t,(bi(),wSe)),218),P=0,z=0,Ee=new rr((!t.a&&(t.a=new at(hs,t,10,11)),t.a));Ee.e!=Ee.i.gc();){for(le=u(pr(Ee),33),Ut=u(Ft(le,(hH(),FS)),8),Ut&&(C1(le,Ut.a,Ut.b),u(Ft(le,iAe),174).Hc((Bl(),Gy))&&(q=u(Ft(le,aAe),8),q.a>0&&q.b>0&&sw(le,q.a,q.b,!0,!0))),P=b.Math.max(P,le.i+le.g),z=b.Math.max(z,le.j+le.f),_=new rr((!le.n&&(le.n=new at(Jo,le,1,7)),le.n));_.e!=_.i.gc();)v=u(pr(_),137),Ut=u(Ft(v,FS),8),Ut&&C1(v,Ut.a,Ut.b),P=b.Math.max(P,le.i+v.i+v.g),z=b.Math.max(z,le.j+v.j+v.f);for(nt=new rr((!le.c&&(le.c=new at(xl,le,9,9)),le.c));nt.e!=nt.i.gc();)for(Ve=u(pr(nt),118),Ut=u(Ft(Ve,FS),8),Ut&&C1(Ve,Ut.a,Ut.b),bt=le.i+Ve.i,zt=le.j+Ve.j,P=b.Math.max(P,bt+Ve.g),z=b.Math.max(z,zt+Ve.f),x=new rr((!Ve.n&&(Ve.n=new at(Jo,Ve,1,7)),Ve.n));x.e!=x.i.gc();)v=u(pr(x),137),Ut=u(Ft(v,FS),8),Ut&&C1(v,Ut.a,Ut.b),P=b.Math.max(P,bt+v.i+v.g),z=b.Math.max(z,zt+v.j+v.f);for(o=new cr(fr(z0(le).a.Kc(),new V));Vr(o);)r=u(Pr(o),79),L=Olt(r),P=b.Math.max(P,L.a),z=b.Math.max(z,L.b);for(s=new cr(fr(hI(le).a.Kc(),new V));Vr(s);)r=u(Pr(s),79),us(n0(r))!=t&&(L=Olt(r),P=b.Math.max(P,L.a),z=b.Math.max(z,L.b))}if(h==($0(),_E))for(Ce=new rr((!t.a&&(t.a=new at(hs,t,10,11)),t.a));Ce.e!=Ce.i.gc();)for(le=u(pr(Ce),33),s=new cr(fr(z0(le).a.Kc(),new V));Vr(s);)r=u(Pr(s),79),d=Ebn(r),d.b==0?So(r,Z4,null):So(r,Z4,d);It(Mt(Ft(t,(hH(),sAe))))||(Ne=u(Ft(t,v3t),116),X=P+Ne.b+Ne.c,W=z+Ne.d+Ne.a,sw(t,X,W,!0,!0)),ur(n)},O(Oc,"FixedLayoutProvider",1138),M(373,134,{3:1,414:1,373:1,94:1,134:1},rl,KJe),l.Jf=function(t){var n,r,s,o,h,d,v,x,_;if(t)try{for(x=cy(t,";,;"),h=x,d=0,v=h.length;d>16&Ss|n^s<<16},l.Kc=function(){return new n$e(this)},l.Ib=function(){return this.a==null&&this.b==null?"pair(null,null)":this.a==null?"pair(null,"+Qo(this.b)+")":this.b==null?"pair("+Qo(this.a)+",null)":"pair("+Qo(this.a)+","+Qo(this.b)+")"},O(Oc,"Pair",46),M(983,1,ga,n$e),l.Nb=function(t){La(this,t)},l.Ob=function(){return!this.c&&(!this.b&&this.a.a!=null||this.a.b!=null)},l.Pb=function(){if(!this.c&&!this.b&&this.a.a!=null)return this.b=!0,this.a.a;if(!this.c&&this.a.b!=null)return this.c=!0,this.a.b;throw J(new xc)},l.Qb=function(){throw this.c&&this.a.b!=null?this.a.b=null:this.b&&this.a.a!=null&&(this.a.a=null),J(new zu)},l.b=!1,l.c=!1,O(Oc,"Pair/1",983),M(448,1,{448:1},IYe),l.Fb=function(t){return Vc(this.a,u(t,448).a)&&Vc(this.c,u(t,448).c)&&Vc(this.d,u(t,448).d)&&Vc(this.b,u(t,448).b)},l.Hb=function(){return fH(ie(re(Yn,1),yt,1,5,[this.a,this.c,this.d,this.b]))},l.Ib=function(){return"("+this.a+io+this.c+io+this.d+io+this.b+")"},O(Oc,"Quadruple",448),M(1126,209,mb,zZ),l.Ze=function(t,n){var r,s,o,h,d;if(kr(n,"Random Layout",1),(!t.a&&(t.a=new at(hs,t,10,11)),t.a).i==0){ur(n);return}h=u(Ft(t,(i3e(),A3t)),19),h&&h.a!=0?o=new m$(h.a):o=new Fie,r=uM(ft(Ft(t,C3t))),d=uM(ft(Ft(t,L3t))),s=u(Ft(t,S3t),116),Rmn(t,o,r,d,s),ur(n)},O(Oc,"RandomLayoutProvider",1126);var B3t;M(553,1,{}),l.qf=function(){return new Pt(this.f.i,this.f.j)},l.We=function(t){return iXe(t,(bi(),kl))?Ft(this.f,R3t):Ft(this.f,t)},l.rf=function(){return new Pt(this.f.g,this.f.f)},l.sf=function(){return this.g},l.Xe=function(t){return J2(this.f,t)},l.tf=function(t){Du(this.f,t.a),Iu(this.f,t.b)},l.uf=function(t){zv(this.f,t.a),Hv(this.f,t.b)},l.vf=function(t){this.g=t},l.g=0;var R3t;O(BC,"ElkGraphAdapters/AbstractElkGraphElementAdapter",553),M(554,1,{839:1},tF),l.wf=function(){var t,n;if(!this.b)for(this.b=p$(Wj(this.a).i),n=new rr(Wj(this.a));n.e!=n.i.gc();)t=u(pr(n),137),it(this.b,new tte(t));return this.b},l.b=null,O(BC,"ElkGraphAdapters/ElkEdgeAdapter",554),M(301,553,{},ym),l.xf=function(){return Nit(this)},l.a=null,O(BC,"ElkGraphAdapters/ElkGraphAdapter",301),M(630,553,{181:1},tte),O(BC,"ElkGraphAdapters/ElkLabelAdapter",630),M(629,553,{680:1},ene),l.wf=function(){return jun(this)},l.Af=function(){var t;return t=u(Ft(this.f,(bi(),WO)),142),!t&&(t=new yT),t},l.Cf=function(){return $un(this)},l.Ef=function(t){var n;n=new pne(t),So(this.f,(bi(),WO),n)},l.Ff=function(t){So(this.f,(bi(),Fb),new Jbe(t))},l.yf=function(){return this.d},l.zf=function(){var t,n;if(!this.a)for(this.a=new st,n=new cr(fr(hI(u(this.f,33)).a.Kc(),new V));Vr(n);)t=u(Pr(n),79),it(this.a,new tF(t));return this.a},l.Bf=function(){var t,n;if(!this.c)for(this.c=new st,n=new cr(fr(z0(u(this.f,33)).a.Kc(),new V));Vr(n);)t=u(Pr(n),79),it(this.c,new tF(t));return this.c},l.Df=function(){return Jj(u(this.f,33)).i!=0||It(Mt(u(this.f,33).We((bi(),UO))))},l.Gf=function(){Mrn(this,(Tm(),B3t))},l.a=null,l.b=null,l.c=null,l.d=null,l.e=null,O(BC,"ElkGraphAdapters/ElkNodeAdapter",629),M(1266,553,{838:1},D$e),l.wf=function(){return Kun(this)},l.zf=function(){var t,n;if(!this.a)for(this.a=Wd(u(this.f,118).xg().i),n=new rr(u(this.f,118).xg());n.e!=n.i.gc();)t=u(pr(n),79),it(this.a,new tF(t));return this.a},l.Bf=function(){var t,n;if(!this.c)for(this.c=Wd(u(this.f,118).yg().i),n=new rr(u(this.f,118).yg());n.e!=n.i.gc();)t=u(pr(n),79),it(this.c,new tF(t));return this.c},l.Hf=function(){return u(u(this.f,118).We((bi(),t5)),61)},l.If=function(){var t,n,r,s,o,h,d,v;for(s=L1(u(this.f,118)),r=new rr(u(this.f,118).yg());r.e!=r.i.gc();)for(t=u(pr(r),79),v=new rr((!t.c&&(t.c=new wn(mr,t,5,8)),t.c));v.e!=v.i.gc();){if(d=u(pr(v),82),Vm(zo(d),s))return!0;if(zo(d)==s&&It(Mt(Ft(t,(bi(),nfe)))))return!0}for(n=new rr(u(this.f,118).xg());n.e!=n.i.gc();)for(t=u(pr(n),79),h=new rr((!t.b&&(t.b=new wn(mr,t,4,7)),t.b));h.e!=h.i.gc();)if(o=u(pr(h),82),Vm(zo(o),s))return!0;return!1},l.a=null,l.b=null,l.c=null,O(BC,"ElkGraphAdapters/ElkPortAdapter",1266),M(1267,1,ji,GZ),l.ue=function(t,n){return b2n(u(t,118),u(n,118))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(BC,"ElkGraphAdapters/PortComparator",1267);var y2=ss(kh,"EObject"),AE=ss(S4,k1t),ef=ss(S4,x1t),iN=ss(S4,E1t),sN=ss(S4,"ElkShape"),mr=ss(S4,T1t),ra=ss(S4,Kxe),os=ss(S4,_1t),aN=ss(kh,C1t),US=ss(kh,"EFactory"),F3t,bfe=ss(kh,S1t),h1=ss(kh,"EPackage"),la,j3t,$3t,kAe,qV,H3t,xAe,EAe,TAe,k2,z3t,G3t,Jo=ss(S4,Yxe),hs=ss(S4,Xxe),xl=ss(S4,Qxe);M(90,1,A1t),l.Jg=function(){return this.Kg(),null},l.Kg=function(){return null},l.Lg=function(){return this.Kg(),!1},l.Mg=function(){return!1},l.Ng=function(t){_i(this,t)},O(wk,"BasicNotifierImpl",90),M(97,90,I1t),l.nh=function(){return Ll(this)},l.Og=function(t,n){return t},l.Pg=function(){throw J(new Fr)},l.Qg=function(t){var n;return n=go(u(gn(this.Tg(),this.Vg()),18)),this.eh().ih(this,n.n,n.f,t)},l.Rg=function(t,n){throw J(new Fr)},l.Sg=function(t,n,r){return Kl(this,t,n,r)},l.Tg=function(){var t;return this.Pg()&&(t=this.Pg().ck(),t)?t:this.zh()},l.Ug=function(){return Hse(this)},l.Vg=function(){throw J(new Fr)},l.Wg=function(){var t,n;return n=this.ph().dk(),!n&&this.Pg().ik(n=(PT(),t=bwe(xd(this.Tg())),t==null?Tfe:new OM(this,t))),n},l.Xg=function(t,n){return t},l.Yg=function(t){var n;return n=t.Gj(),n?t.aj():Ji(this.Tg(),t)},l.Zg=function(){var t;return t=this.Pg(),t?t.fk():null},l.$g=function(){return this.Pg()?this.Pg().ck():null},l._g=function(t,n,r){return NH(this,t,n,r)},l.ah=function(t){return A8(this,t)},l.bh=function(t,n){return Ire(this,t,n)},l.dh=function(){var t;return t=this.Pg(),!!t&&t.gk()},l.eh=function(){throw J(new Fr)},l.fh=function(){return SH(this)},l.gh=function(t,n,r,s){return Q6(this,t,n,s)},l.hh=function(t,n,r){var s;return s=u(gn(this.Tg(),n),66),s.Nj().Qj(this,this.yh(),n-this.Ah(),t,r)},l.ih=function(t,n,r,s){return r$(this,t,n,s)},l.jh=function(t,n,r){var s;return s=u(gn(this.Tg(),n),66),s.Nj().Rj(this,this.yh(),n-this.Ah(),t,r)},l.kh=function(){return!!this.Pg()&&!!this.Pg().ek()},l.lh=function(t){return Zie(this,t)},l.mh=function(t){return kXe(this,t)},l.oh=function(t){return Kut(this,t)},l.ph=function(){throw J(new Fr)},l.qh=function(){return this.Pg()?this.Pg().ek():null},l.rh=function(){return SH(this)},l.sh=function(t,n){Bse(this,t,n)},l.th=function(t){this.ph().hk(t)},l.uh=function(t){this.ph().kk(t)},l.vh=function(t){this.ph().jk(t)},l.wh=function(t,n){var r,s,o,h;return h=this.Zg(),h&&t&&(n=Xa(h.Vk(),this,n),h.Zk(this)),s=this.eh(),s&&(rae(this,this.eh(),this.Vg()).Bb&so?(o=s.fh(),o&&(t?!h&&o.Zk(this):o.Yk(this))):(n=(r=this.Vg(),r>=0?this.Qg(n):this.eh().ih(this,-1-r,null,n)),n=this.Sg(null,-1,n))),this.uh(t),n},l.xh=function(t){var n,r,s,o,h,d,v,x;if(r=this.Tg(),h=Ji(r,t),n=this.Ah(),h>=n)return u(t,66).Nj().Uj(this,this.yh(),h-n);if(h<=-1)if(d=v4((Yu(),Oa),r,t),d){if(ho(),u(d,66).Oj()||(d=F6(Po(Oa,d))),o=(s=this.Yg(d),u(s>=0?this._g(s,!0,!0):tw(this,d,!0),153)),x=d.Zj(),x>1||x==-1)return u(u(o,215).hl(t,!1),76)}else throw J(new Ln(i2+t.ne()+Oce));else if(t.$j())return s=this.Yg(t),u(s>=0?this._g(s,!1,!0):tw(this,t,!1),76);return v=new Hqe(this,t),v},l.yh=function(){return vme(this)},l.zh=function(){return(Rp(),En).S},l.Ah=function(){return Jn(this.zh())},l.Bh=function(t){Dse(this,t)},l.Ib=function(){return _f(this)},O(Tn,"BasicEObjectImpl",97);var q3t;M(114,97,{105:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1}),l.Ch=function(t){var n;return n=wme(this),n[t]},l.Dh=function(t,n){var r;r=wme(this),cs(r,t,n)},l.Eh=function(t){var n;n=wme(this),cs(n,t,null)},l.Jg=function(){return u(_n(this,4),126)},l.Kg=function(){throw J(new Fr)},l.Lg=function(){return(this.Db&4)!=0},l.Pg=function(){throw J(new Fr)},l.Fh=function(t){X6(this,2,t)},l.Rg=function(t,n){this.Db=n<<16|this.Db&255,this.Fh(t)},l.Tg=function(){return Su(this)},l.Vg=function(){return this.Db>>16},l.Wg=function(){var t,n;return PT(),n=bwe(xd((t=u(_n(this,16),26),t||this.zh()))),n==null?Tfe:new OM(this,n)},l.Mg=function(){return(this.Db&1)==0},l.Zg=function(){return u(_n(this,128),1935)},l.$g=function(){return u(_n(this,16),26)},l.dh=function(){return(this.Db&32)!=0},l.eh=function(){return u(_n(this,2),49)},l.kh=function(){return(this.Db&64)!=0},l.ph=function(){throw J(new Fr)},l.qh=function(){return u(_n(this,64),281)},l.th=function(t){X6(this,16,t)},l.uh=function(t){X6(this,128,t)},l.vh=function(t){X6(this,64,t)},l.yh=function(){return du(this)},l.Db=0,O(Tn,"MinimalEObjectImpl",114),M(115,114,{105:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),l.Fh=function(t){this.Cb=t},l.eh=function(){return this.Cb},O(Tn,"MinimalEObjectImpl/Container",115),M(1985,115,{105:1,413:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),l._g=function(t,n,r){return L3e(this,t,n,r)},l.jh=function(t,n,r){return v4e(this,t,n,r)},l.lh=function(t){return Awe(this,t)},l.sh=function(t,n){gye(this,t,n)},l.zh=function(){return cu(),G3t},l.Bh=function(t){rye(this,t)},l.Ve=function(){return tit(this)},l.We=function(t){return Ft(this,t)},l.Xe=function(t){return J2(this,t)},l.Ye=function(t,n){return So(this,t,n)},O(xb,"EMapPropertyHolderImpl",1985),M(567,115,{105:1,469:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},pp),l._g=function(t,n,r){switch(t){case 0:return this.a;case 1:return this.b}return NH(this,t,n,r)},l.lh=function(t){switch(t){case 0:return this.a!=0;case 1:return this.b!=0}return Zie(this,t)},l.sh=function(t,n){switch(t){case 0:z$(this,Ue(ft(n)));return;case 1:G$(this,Ue(ft(n)));return}Bse(this,t,n)},l.zh=function(){return cu(),j3t},l.Bh=function(t){switch(t){case 0:z$(this,0);return;case 1:G$(this,0);return}Dse(this,t)},l.Ib=function(){var t;return this.Db&64?_f(this):(t=new Ph(_f(this)),t.a+=" (x: ",I3(t,this.a),t.a+=", y: ",I3(t,this.b),t.a+=")",t.a)},l.a=0,l.b=0,O(xb,"ElkBendPointImpl",567),M(723,1985,{105:1,413:1,160:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),l._g=function(t,n,r){return Oye(this,t,n,r)},l.hh=function(t,n,r){return _se(this,t,n,r)},l.jh=function(t,n,r){return uie(this,t,n,r)},l.lh=function(t){return Yme(this,t)},l.sh=function(t,n){K3e(this,t,n)},l.zh=function(){return cu(),H3t},l.Bh=function(t){Lye(this,t)},l.zg=function(){return this.k},l.Ag=function(){return Wj(this)},l.Ib=function(){return Bie(this)},l.k=null,O(xb,"ElkGraphElementImpl",723),M(724,723,{105:1,413:1,160:1,470:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),l._g=function(t,n,r){return Gye(this,t,n,r)},l.lh=function(t){return Xye(this,t)},l.sh=function(t,n){Y3e(this,t,n)},l.zh=function(){return cu(),z3t},l.Bh=function(t){t3e(this,t)},l.Bg=function(){return this.f},l.Cg=function(){return this.g},l.Dg=function(){return this.i},l.Eg=function(){return this.j},l.Fg=function(t,n){ej(this,t,n)},l.Gg=function(t,n){C1(this,t,n)},l.Hg=function(t){Du(this,t)},l.Ig=function(t){Iu(this,t)},l.Ib=function(){return Mse(this)},l.f=0,l.g=0,l.i=0,l.j=0,O(xb,"ElkShapeImpl",724),M(725,724,{105:1,413:1,82:1,160:1,470:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),l._g=function(t,n,r){return E3e(this,t,n,r)},l.hh=function(t,n,r){return z3e(this,t,n,r)},l.jh=function(t,n,r){return G3e(this,t,n,r)},l.lh=function(t){return fye(this,t)},l.sh=function(t,n){Z4e(this,t,n)},l.zh=function(){return cu(),$3t},l.Bh=function(t){p3e(this,t)},l.xg=function(){return!this.d&&(this.d=new wn(ra,this,8,5)),this.d},l.yg=function(){return!this.e&&(this.e=new wn(ra,this,7,4)),this.e},O(xb,"ElkConnectableShapeImpl",725),M(352,723,{105:1,413:1,79:1,160:1,352:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},rv),l.Qg=function(t){return F3e(this,t)},l._g=function(t,n,r){switch(t){case 3:return nD(this);case 4:return!this.b&&(this.b=new wn(mr,this,4,7)),this.b;case 5:return!this.c&&(this.c=new wn(mr,this,5,8)),this.c;case 6:return!this.a&&(this.a=new at(os,this,6,6)),this.a;case 7:return Mn(),!this.b&&(this.b=new wn(mr,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new wn(mr,this,5,8)),this.c.i<=1));case 8:return Mn(),!!iC(this);case 9:return Mn(),!!ew(this);case 10:return Mn(),!this.b&&(this.b=new wn(mr,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new wn(mr,this,5,8)),this.c.i!=0)}return Oye(this,t,n,r)},l.hh=function(t,n,r){var s;switch(n){case 3:return this.Cb&&(r=(s=this.Db>>16,s>=0?F3e(this,r):this.Cb.ih(this,-1-s,null,r))),Dbe(this,u(t,33),r);case 4:return!this.b&&(this.b=new wn(mr,this,4,7)),ou(this.b,t,r);case 5:return!this.c&&(this.c=new wn(mr,this,5,8)),ou(this.c,t,r);case 6:return!this.a&&(this.a=new at(os,this,6,6)),ou(this.a,t,r)}return _se(this,t,n,r)},l.jh=function(t,n,r){switch(n){case 3:return Dbe(this,null,r);case 4:return!this.b&&(this.b=new wn(mr,this,4,7)),Xa(this.b,t,r);case 5:return!this.c&&(this.c=new wn(mr,this,5,8)),Xa(this.c,t,r);case 6:return!this.a&&(this.a=new at(os,this,6,6)),Xa(this.a,t,r)}return uie(this,t,n,r)},l.lh=function(t){switch(t){case 3:return!!nD(this);case 4:return!!this.b&&this.b.i!=0;case 5:return!!this.c&&this.c.i!=0;case 6:return!!this.a&&this.a.i!=0;case 7:return!this.b&&(this.b=new wn(mr,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new wn(mr,this,5,8)),this.c.i<=1));case 8:return iC(this);case 9:return ew(this);case 10:return!this.b&&(this.b=new wn(mr,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new wn(mr,this,5,8)),this.c.i!=0)}return Yme(this,t)},l.sh=function(t,n){switch(t){case 3:Wse(this,u(n,33));return;case 4:!this.b&&(this.b=new wn(mr,this,4,7)),_r(this.b),!this.b&&(this.b=new wn(mr,this,4,7)),fs(this.b,u(n,14));return;case 5:!this.c&&(this.c=new wn(mr,this,5,8)),_r(this.c),!this.c&&(this.c=new wn(mr,this,5,8)),fs(this.c,u(n,14));return;case 6:!this.a&&(this.a=new at(os,this,6,6)),_r(this.a),!this.a&&(this.a=new at(os,this,6,6)),fs(this.a,u(n,14));return}K3e(this,t,n)},l.zh=function(){return cu(),kAe},l.Bh=function(t){switch(t){case 3:Wse(this,null);return;case 4:!this.b&&(this.b=new wn(mr,this,4,7)),_r(this.b);return;case 5:!this.c&&(this.c=new wn(mr,this,5,8)),_r(this.c);return;case 6:!this.a&&(this.a=new at(os,this,6,6)),_r(this.a);return}Lye(this,t)},l.Ib=function(){return Out(this)},O(xb,"ElkEdgeImpl",352),M(439,1985,{105:1,413:1,202:1,439:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},ld),l.Qg=function(t){return N3e(this,t)},l._g=function(t,n,r){switch(t){case 1:return this.j;case 2:return this.k;case 3:return this.b;case 4:return this.c;case 5:return!this.a&&(this.a=new Bs(ef,this,5)),this.a;case 6:return wXe(this);case 7:return n?rse(this):this.i;case 8:return n?nse(this):this.f;case 9:return!this.g&&(this.g=new wn(os,this,9,10)),this.g;case 10:return!this.e&&(this.e=new wn(os,this,10,9)),this.e;case 11:return this.d}return L3e(this,t,n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?N3e(this,r):this.Cb.ih(this,-1-o,null,r))),Ibe(this,u(t,79),r);case 9:return!this.g&&(this.g=new wn(os,this,9,10)),ou(this.g,t,r);case 10:return!this.e&&(this.e=new wn(os,this,10,9)),ou(this.e,t,r)}return h=u(gn((s=u(_n(this,16),26),s||(cu(),qV)),n),66),h.Nj().Qj(this,du(this),n-Jn((cu(),qV)),t,r)},l.jh=function(t,n,r){switch(n){case 5:return!this.a&&(this.a=new Bs(ef,this,5)),Xa(this.a,t,r);case 6:return Ibe(this,null,r);case 9:return!this.g&&(this.g=new wn(os,this,9,10)),Xa(this.g,t,r);case 10:return!this.e&&(this.e=new wn(os,this,10,9)),Xa(this.e,t,r)}return v4e(this,t,n,r)},l.lh=function(t){switch(t){case 1:return this.j!=0;case 2:return this.k!=0;case 3:return this.b!=0;case 4:return this.c!=0;case 5:return!!this.a&&this.a.i!=0;case 6:return!!wXe(this);case 7:return!!this.i;case 8:return!!this.f;case 9:return!!this.g&&this.g.i!=0;case 10:return!!this.e&&this.e.i!=0;case 11:return this.d!=null}return Awe(this,t)},l.sh=function(t,n){switch(t){case 1:N8(this,Ue(ft(n)));return;case 2:B8(this,Ue(ft(n)));return;case 3:O8(this,Ue(ft(n)));return;case 4:P8(this,Ue(ft(n)));return;case 5:!this.a&&(this.a=new Bs(ef,this,5)),_r(this.a),!this.a&&(this.a=new Bs(ef,this,5)),fs(this.a,u(n,14));return;case 6:Not(this,u(n,79));return;case 7:K$(this,u(n,82));return;case 8:W$(this,u(n,82));return;case 9:!this.g&&(this.g=new wn(os,this,9,10)),_r(this.g),!this.g&&(this.g=new wn(os,this,9,10)),fs(this.g,u(n,14));return;case 10:!this.e&&(this.e=new wn(os,this,10,9)),_r(this.e),!this.e&&(this.e=new wn(os,this,10,9)),fs(this.e,u(n,14));return;case 11:$me(this,Hr(n));return}gye(this,t,n)},l.zh=function(){return cu(),qV},l.Bh=function(t){switch(t){case 1:N8(this,0);return;case 2:B8(this,0);return;case 3:O8(this,0);return;case 4:P8(this,0);return;case 5:!this.a&&(this.a=new Bs(ef,this,5)),_r(this.a);return;case 6:Not(this,null);return;case 7:K$(this,null);return;case 8:W$(this,null);return;case 9:!this.g&&(this.g=new wn(os,this,9,10)),_r(this.g);return;case 10:!this.e&&(this.e=new wn(os,this,10,9)),_r(this.e);return;case 11:$me(this,null);return}rye(this,t)},l.Ib=function(){return Zat(this)},l.b=0,l.c=0,l.d=null,l.j=0,l.k=0,O(xb,"ElkEdgeSectionImpl",439),M(150,115,{105:1,92:1,90:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1}),l._g=function(t,n,r){var s;return t==0?(!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab):ph(this,t-Jn(this.zh()),gn((s=u(_n(this,16),26),s||this.zh()),t),n,r)},l.hh=function(t,n,r){var s,o;return n==0?(!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r)):(o=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),o.Nj().Qj(this,du(this),n-Jn(this.zh()),t,r))},l.jh=function(t,n,r){var s,o;return n==0?(!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r)):(o=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),o.Nj().Rj(this,du(this),n-Jn(this.zh()),t,r))},l.lh=function(t){var n;return t==0?!!this.Ab&&this.Ab.i!=0:dh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.oh=function(t){return a6e(this,t)},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return}yh(this,t-Jn(this.zh()),gn((r=u(_n(this,16),26),r||this.zh()),t),n)},l.uh=function(t){X6(this,128,t)},l.zh=function(){return on(),c4t},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return}wh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.Gh=function(){this.Bb|=1},l.Hh=function(t){return uC(this,t)},l.Bb=0,O(Tn,"EModelElementImpl",150),M(704,150,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1},RR),l.Ih=function(t,n){return ult(this,t,n)},l.Jh=function(t){var n,r,s,o,h;if(this.a!=Gl(t)||t.Bb&256)throw J(new Ln(Pce+t.zb+dw));for(s=jo(t);jc(s.a).i!=0;){if(r=u(xI(s,0,(n=u(Te(jc(s.a),0),87),h=n.c,we(h,88)?u(h,26):(on(),sf))),26),Jv(r))return o=Gl(r).Nh().Jh(r),u(o,49).th(t),o;s=jo(r)}return(t.D!=null?t.D:t.B)=="java.util.Map$Entry"?new nKe(t):new wve(t)},l.Kh=function(t,n){return aw(this,t,n)},l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.a}return ph(this,t-Jn((on(),_2)),gn((s=u(_n(this,16),26),s||_2),t),n,r)},l.hh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 1:return this.a&&(r=u(this.a,49).ih(this,4,h1,r)),Sye(this,u(t,235),r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),_2)),n),66),o.Nj().Qj(this,du(this),n-Jn((on(),_2)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 1:return Sye(this,null,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),_2)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),_2)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return!!this.a}return dh(this,t-Jn((on(),_2)),gn((n=u(_n(this,16),26),n||_2),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:Nst(this,u(n,235));return}yh(this,t-Jn((on(),_2)),gn((r=u(_n(this,16),26),r||_2),t),n)},l.zh=function(){return on(),_2},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:Nst(this,null);return}wh(this,t-Jn((on(),_2)),gn((n=u(_n(this,16),26),n||_2),t))};var WS,_Ae,V3t;O(Tn,"EFactoryImpl",704),M(Sf,704,{105:1,2014:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1},Y5),l.Ih=function(t,n){switch(t.yj()){case 12:return u(n,146).tg();case 13:return Qo(n);default:throw J(new Ln($7+t.ne()+dw))}},l.Jh=function(t){var n,r,s,o,h,d,v,x;switch(t.G==-1&&(t.G=(n=Gl(t),n?Dg(n.Mh(),t):-1)),t.G){case 4:return h=new j9,h;case 6:return d=new kpe,d;case 7:return v=new xpe,v;case 8:return s=new rv,s;case 9:return r=new pp,r;case 10:return o=new ld,o;case 11:return x=new qB,x;default:throw J(new Ln(Pce+t.zb+dw))}},l.Kh=function(t,n){switch(t.yj()){case 13:case 12:return null;default:throw J(new Ln($7+t.ne()+dw))}},O(xb,"ElkGraphFactoryImpl",Sf),M(438,150,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1}),l.Wg=function(){var t,n;return n=(t=u(_n(this,16),26),bwe(xd(t||this.zh()))),n==null?(PT(),PT(),Tfe):new EUe(this,n)},l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.ne()}return ph(this,t-Jn(this.zh()),gn((s=u(_n(this,16),26),s||this.zh()),t),n,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null}return dh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:this.Lh(Hr(n));return}yh(this,t-Jn(this.zh()),gn((r=u(_n(this,16),26),r||this.zh()),t),n)},l.zh=function(){return on(),u4t},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:this.Lh(null);return}wh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.ne=function(){return this.zb},l.Lh=function(t){au(this,t)},l.Ib=function(){return $_(this)},l.zb=null,O(Tn,"ENamedElementImpl",438),M(179,438,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1},rXe),l.Qg=function(t){return Kit(this,t)},l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.yb;case 3:return this.xb;case 4:return this.sb;case 5:return!this.rb&&(this.rb=new Pm(this,f1,this)),this.rb;case 6:return!this.vb&&(this.vb=new S6(h1,this,6,7)),this.vb;case 7:return n?this.Db>>16==7?u(this.Cb,235):null:mXe(this)}return ph(this,t-Jn((on(),Qg)),gn((s=u(_n(this,16),26),s||Qg),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 4:return this.sb&&(r=u(this.sb,49).ih(this,1,US,r)),Dye(this,u(t,471),r);case 5:return!this.rb&&(this.rb=new Pm(this,f1,this)),ou(this.rb,t,r);case 6:return!this.vb&&(this.vb=new S6(h1,this,6,7)),ou(this.vb,t,r);case 7:return this.Cb&&(r=(o=this.Db>>16,o>=0?Kit(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,7,r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),Qg)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),Qg)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 4:return Dye(this,null,r);case 5:return!this.rb&&(this.rb=new Pm(this,f1,this)),Xa(this.rb,t,r);case 6:return!this.vb&&(this.vb=new S6(h1,this,6,7)),Xa(this.vb,t,r);case 7:return Kl(this,null,7,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Qg)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Qg)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.yb!=null;case 3:return this.xb!=null;case 4:return!!this.sb;case 5:return!!this.rb&&this.rb.i!=0;case 6:return!!this.vb&&this.vb.i!=0;case 7:return!!mXe(this)}return dh(this,t-Jn((on(),Qg)),gn((n=u(_n(this,16),26),n||Qg),t))},l.oh=function(t){var n;return n=Fgn(this,t),n||a6e(this,t)},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:au(this,Hr(n));return;case 2:tH(this,Hr(n));return;case 3:eH(this,Hr(n));return;case 4:Lse(this,u(n,471));return;case 5:!this.rb&&(this.rb=new Pm(this,f1,this)),_r(this.rb),!this.rb&&(this.rb=new Pm(this,f1,this)),fs(this.rb,u(n,14));return;case 6:!this.vb&&(this.vb=new S6(h1,this,6,7)),_r(this.vb),!this.vb&&(this.vb=new S6(h1,this,6,7)),fs(this.vb,u(n,14));return}yh(this,t-Jn((on(),Qg)),gn((r=u(_n(this,16),26),r||Qg),t),n)},l.vh=function(t){var n,r;if(t&&this.rb)for(r=new rr(this.rb);r.e!=r.i.gc();)n=pr(r),we(n,351)&&(u(n,351).w=null);X6(this,64,t)},l.zh=function(){return on(),Qg},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:au(this,null);return;case 2:tH(this,null);return;case 3:eH(this,null);return;case 4:Lse(this,null);return;case 5:!this.rb&&(this.rb=new Pm(this,f1,this)),_r(this.rb);return;case 6:!this.vb&&(this.vb=new S6(h1,this,6,7)),_r(this.vb);return}wh(this,t-Jn((on(),Qg)),gn((n=u(_n(this,16),26),n||Qg),t))},l.Gh=function(){bse(this)},l.Mh=function(){return!this.rb&&(this.rb=new Pm(this,f1,this)),this.rb},l.Nh=function(){return this.sb},l.Oh=function(){return this.ub},l.Ph=function(){return this.xb},l.Qh=function(){return this.yb},l.Rh=function(t){this.ub=t},l.Ib=function(){var t;return this.Db&64?$_(this):(t=new Ph($_(this)),t.a+=" (nsURI: ",To(t,this.yb),t.a+=", nsPrefix: ",To(t,this.xb),t.a+=")",t.a)},l.xb=null,l.yb=null,O(Tn,"EPackageImpl",179),M(555,179,{105:1,2016:1,555:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1},oot),l.q=!1,l.r=!1;var U3t=!1;O(xb,"ElkGraphPackageImpl",555),M(354,724,{105:1,413:1,160:1,137:1,470:1,354:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},j9),l.Qg=function(t){return P3e(this,t)},l._g=function(t,n,r){switch(t){case 7:return yXe(this);case 8:return this.a}return Gye(this,t,n,r)},l.hh=function(t,n,r){var s;switch(n){case 7:return this.Cb&&(r=(s=this.Db>>16,s>=0?P3e(this,r):this.Cb.ih(this,-1-s,null,r))),Ove(this,u(t,160),r)}return _se(this,t,n,r)},l.jh=function(t,n,r){return n==7?Ove(this,null,r):uie(this,t,n,r)},l.lh=function(t){switch(t){case 7:return!!yXe(this);case 8:return!an("",this.a)}return Xye(this,t)},l.sh=function(t,n){switch(t){case 7:f5e(this,u(n,160));return;case 8:Ome(this,Hr(n));return}Y3e(this,t,n)},l.zh=function(){return cu(),xAe},l.Bh=function(t){switch(t){case 7:f5e(this,null);return;case 8:Ome(this,"");return}t3e(this,t)},l.Ib=function(){return Kst(this)},l.a="",O(xb,"ElkLabelImpl",354),M(239,725,{105:1,413:1,82:1,160:1,33:1,470:1,239:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},kpe),l.Qg=function(t){return j3e(this,t)},l._g=function(t,n,r){switch(t){case 9:return!this.c&&(this.c=new at(xl,this,9,9)),this.c;case 10:return!this.a&&(this.a=new at(hs,this,10,11)),this.a;case 11:return us(this);case 12:return!this.b&&(this.b=new at(ra,this,12,3)),this.b;case 13:return Mn(),!this.a&&(this.a=new at(hs,this,10,11)),this.a.i>0}return E3e(this,t,n,r)},l.hh=function(t,n,r){var s;switch(n){case 9:return!this.c&&(this.c=new at(xl,this,9,9)),ou(this.c,t,r);case 10:return!this.a&&(this.a=new at(hs,this,10,11)),ou(this.a,t,r);case 11:return this.Cb&&(r=(s=this.Db>>16,s>=0?j3e(this,r):this.Cb.ih(this,-1-s,null,r))),Hbe(this,u(t,33),r);case 12:return!this.b&&(this.b=new at(ra,this,12,3)),ou(this.b,t,r)}return z3e(this,t,n,r)},l.jh=function(t,n,r){switch(n){case 9:return!this.c&&(this.c=new at(xl,this,9,9)),Xa(this.c,t,r);case 10:return!this.a&&(this.a=new at(hs,this,10,11)),Xa(this.a,t,r);case 11:return Hbe(this,null,r);case 12:return!this.b&&(this.b=new at(ra,this,12,3)),Xa(this.b,t,r)}return G3e(this,t,n,r)},l.lh=function(t){switch(t){case 9:return!!this.c&&this.c.i!=0;case 10:return!!this.a&&this.a.i!=0;case 11:return!!us(this);case 12:return!!this.b&&this.b.i!=0;case 13:return!this.a&&(this.a=new at(hs,this,10,11)),this.a.i>0}return fye(this,t)},l.sh=function(t,n){switch(t){case 9:!this.c&&(this.c=new at(xl,this,9,9)),_r(this.c),!this.c&&(this.c=new at(xl,this,9,9)),fs(this.c,u(n,14));return;case 10:!this.a&&(this.a=new at(hs,this,10,11)),_r(this.a),!this.a&&(this.a=new at(hs,this,10,11)),fs(this.a,u(n,14));return;case 11:u5e(this,u(n,33));return;case 12:!this.b&&(this.b=new at(ra,this,12,3)),_r(this.b),!this.b&&(this.b=new at(ra,this,12,3)),fs(this.b,u(n,14));return}Z4e(this,t,n)},l.zh=function(){return cu(),EAe},l.Bh=function(t){switch(t){case 9:!this.c&&(this.c=new at(xl,this,9,9)),_r(this.c);return;case 10:!this.a&&(this.a=new at(hs,this,10,11)),_r(this.a);return;case 11:u5e(this,null);return;case 12:!this.b&&(this.b=new at(ra,this,12,3)),_r(this.b);return}p3e(this,t)},l.Ib=function(){return S5e(this)},O(xb,"ElkNodeImpl",239),M(186,725,{105:1,413:1,82:1,160:1,118:1,470:1,186:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},xpe),l.Qg=function(t){return B3e(this,t)},l._g=function(t,n,r){return t==9?L1(this):E3e(this,t,n,r)},l.hh=function(t,n,r){var s;switch(n){case 9:return this.Cb&&(r=(s=this.Db>>16,s>=0?B3e(this,r):this.Cb.ih(this,-1-s,null,r))),Obe(this,u(t,33),r)}return z3e(this,t,n,r)},l.jh=function(t,n,r){return n==9?Obe(this,null,r):G3e(this,t,n,r)},l.lh=function(t){return t==9?!!L1(this):fye(this,t)},l.sh=function(t,n){switch(t){case 9:c5e(this,u(n,33));return}Z4e(this,t,n)},l.zh=function(){return cu(),TAe},l.Bh=function(t){switch(t){case 9:c5e(this,null);return}p3e(this,t)},l.Ib=function(){return Nct(this)},O(xb,"ElkPortImpl",186);var W3t=ss(Qa,"BasicEMap/Entry");M(1092,115,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1,114:1,115:1},qB),l.Fb=function(t){return this===t},l.cd=function(){return this.b},l.Hb=function(){return xv(this)},l.Uh=function(t){Nme(this,u(t,146))},l._g=function(t,n,r){switch(t){case 0:return this.b;case 1:return this.c}return NH(this,t,n,r)},l.lh=function(t){switch(t){case 0:return!!this.b;case 1:return this.c!=null}return Zie(this,t)},l.sh=function(t,n){switch(t){case 0:Nme(this,u(n,146));return;case 1:Rme(this,n);return}Bse(this,t,n)},l.zh=function(){return cu(),k2},l.Bh=function(t){switch(t){case 0:Nme(this,null);return;case 1:Rme(this,null);return}Dse(this,t)},l.Sh=function(){var t;return this.a==-1&&(t=this.b,this.a=t?Xi(t):0),this.a},l.dd=function(){return this.c},l.Th=function(t){this.a=t},l.ed=function(t){var n;return n=this.c,Rme(this,t),n},l.Ib=function(){var t;return this.Db&64?_f(this):(t=new Tp,Yr(Yr(Yr(t,this.b?this.b.tg():Pu),Ioe),r_(this.c)),t.a)},l.a=-1,l.c=null;var Dw=O(xb,"ElkPropertyToValueMapEntryImpl",1092);M(984,1,{},VB),O(Ia,"JsonAdapter",984),M(210,60,q0,dd),O(Ia,"JsonImportException",210),M(857,1,{},Yit),O(Ia,"JsonImporter",857),M(891,1,{},xqe),O(Ia,"JsonImporter/lambda$0$Type",891),M(892,1,{},Eqe),O(Ia,"JsonImporter/lambda$1$Type",892),M(900,1,{},r$e),O(Ia,"JsonImporter/lambda$10$Type",900),M(902,1,{},Tqe),O(Ia,"JsonImporter/lambda$11$Type",902),M(903,1,{},_qe),O(Ia,"JsonImporter/lambda$12$Type",903),M(909,1,{},RYe),O(Ia,"JsonImporter/lambda$13$Type",909),M(908,1,{},BYe),O(Ia,"JsonImporter/lambda$14$Type",908),M(904,1,{},Cqe),O(Ia,"JsonImporter/lambda$15$Type",904),M(905,1,{},Sqe),O(Ia,"JsonImporter/lambda$16$Type",905),M(906,1,{},Aqe),O(Ia,"JsonImporter/lambda$17$Type",906),M(907,1,{},Lqe),O(Ia,"JsonImporter/lambda$18$Type",907),M(912,1,{},i$e),O(Ia,"JsonImporter/lambda$19$Type",912),M(893,1,{},s$e),O(Ia,"JsonImporter/lambda$2$Type",893),M(910,1,{},a$e),O(Ia,"JsonImporter/lambda$20$Type",910),M(911,1,{},o$e),O(Ia,"JsonImporter/lambda$21$Type",911),M(915,1,{},c$e),O(Ia,"JsonImporter/lambda$22$Type",915),M(913,1,{},u$e),O(Ia,"JsonImporter/lambda$23$Type",913),M(914,1,{},l$e),O(Ia,"JsonImporter/lambda$24$Type",914),M(917,1,{},h$e),O(Ia,"JsonImporter/lambda$25$Type",917),M(916,1,{},f$e),O(Ia,"JsonImporter/lambda$26$Type",916),M(918,1,Un,Mqe),l.td=function(t){drn(this.b,this.a,Hr(t))},O(Ia,"JsonImporter/lambda$27$Type",918),M(919,1,Un,Dqe),l.td=function(t){grn(this.b,this.a,Hr(t))},O(Ia,"JsonImporter/lambda$28$Type",919),M(920,1,{},Iqe),O(Ia,"JsonImporter/lambda$29$Type",920),M(896,1,{},d$e),O(Ia,"JsonImporter/lambda$3$Type",896),M(921,1,{},Oqe),O(Ia,"JsonImporter/lambda$30$Type",921),M(922,1,{},g$e),O(Ia,"JsonImporter/lambda$31$Type",922),M(923,1,{},p$e),O(Ia,"JsonImporter/lambda$32$Type",923),M(924,1,{},b$e),O(Ia,"JsonImporter/lambda$33$Type",924),M(925,1,{},v$e),O(Ia,"JsonImporter/lambda$34$Type",925),M(859,1,{},w$e),O(Ia,"JsonImporter/lambda$35$Type",859),M(929,1,{},AWe),O(Ia,"JsonImporter/lambda$36$Type",929),M(926,1,Un,m$e),l.td=function(t){vnn(this.a,u(t,469))},O(Ia,"JsonImporter/lambda$37$Type",926),M(927,1,Un,jqe),l.td=function(t){VUt(this.a,this.b,u(t,202))},O(Ia,"JsonImporter/lambda$38$Type",927),M(928,1,Un,$qe),l.td=function(t){UUt(this.a,this.b,u(t,202))},O(Ia,"JsonImporter/lambda$39$Type",928),M(894,1,{},y$e),O(Ia,"JsonImporter/lambda$4$Type",894),M(930,1,Un,k$e),l.td=function(t){wnn(this.a,u(t,8))},O(Ia,"JsonImporter/lambda$40$Type",930),M(895,1,{},x$e),O(Ia,"JsonImporter/lambda$5$Type",895),M(899,1,{},E$e),O(Ia,"JsonImporter/lambda$6$Type",899),M(897,1,{},T$e),O(Ia,"JsonImporter/lambda$7$Type",897),M(898,1,{},_$e),O(Ia,"JsonImporter/lambda$8$Type",898),M(901,1,{},C$e),O(Ia,"JsonImporter/lambda$9$Type",901),M(948,1,Un,S$e),l.td=function(t){O6(this.a,new Bm(Hr(t)))},O(Ia,"JsonMetaDataConverter/lambda$0$Type",948),M(949,1,Un,A$e),l.td=function(t){NZt(this.a,u(t,237))},O(Ia,"JsonMetaDataConverter/lambda$1$Type",949),M(950,1,Un,L$e),l.td=function(t){Den(this.a,u(t,149))},O(Ia,"JsonMetaDataConverter/lambda$2$Type",950),M(951,1,Un,M$e),l.td=function(t){PZt(this.a,u(t,175))},O(Ia,"JsonMetaDataConverter/lambda$3$Type",951),M(237,22,{3:1,35:1,22:1,237:1},E6);var VV,UV,vfe,WV,KV,YV,wfe,mfe,XV=Gr(BI,"GraphFeature",237,Wr,rin,sQt),K3t;M(13,1,{35:1,146:1},Zi,zs,dn,fo),l.wd=function(t){return qWt(this,u(t,146))},l.Fb=function(t){return iXe(this,t)},l.wg=function(){return xt(this)},l.tg=function(){return this.b},l.Hb=function(){return Ig(this.b)},l.Ib=function(){return this.b},O(BI,"Property",13),M(818,1,ji,epe),l.ue=function(t,n){return con(this,u(t,94),u(n,94))},l.Fb=function(t){return this===t},l.ve=function(){return new ue(this)},O(BI,"PropertyHolderComparator",818),M(695,1,ga,tpe),l.Nb=function(t){La(this,t)},l.Pb=function(){return wrn(this)},l.Qb=function(){Eze()},l.Ob=function(){return!!this.a},O(pG,"ElkGraphUtil/AncestorIterator",695);var CAe=ss(Qa,"EList");M(67,52,{20:1,28:1,52:1,14:1,15:1,67:1,58:1}),l.Vc=function(t,n){G_(this,t,n)},l.Fc=function(t){return Br(this,t)},l.Wc=function(t,n){return iye(this,t,n)},l.Gc=function(t){return fs(this,t)},l.Zh=function(){return new C6(this)},l.$h=function(){return new NM(this)},l._h=function(t){return _D(this,t)},l.ai=function(){return!0},l.bi=function(t,n){},l.ci=function(){},l.di=function(t,n){Nre(this,t,n)},l.ei=function(t,n,r){},l.fi=function(t,n){},l.gi=function(t,n,r){},l.Fb=function(t){return yct(this,t)},l.Hb=function(){return Jme(this)},l.hi=function(){return!1},l.Kc=function(){return new rr(this)},l.Yc=function(){return new _6(this)},l.Zc=function(t){var n;if(n=this.gc(),t<0||t>n)throw J(new Im(t,n));return new jne(this,t)},l.ji=function(t,n){this.ii(t,this.Xc(n))},l.Mc=function(t){return N$(this,t)},l.li=function(t,n){return n},l._c=function(t,n){return r4(this,t,n)},l.Ib=function(){return Vye(this)},l.ni=function(){return!0},l.oi=function(t,n){return K8(this,n)},O(Qa,"AbstractEList",67),M(63,67,Od,X5,jv,Vme),l.Vh=function(t,n){return Cse(this,t,n)},l.Wh=function(t){return xit(this,t)},l.Xh=function(t,n){$D(this,t,n)},l.Yh=function(t){cD(this,t)},l.pi=function(t){return fme(this,t)},l.$b=function(){A_(this)},l.Hc=function(t){return u7(this,t)},l.Xb=function(t){return Te(this,t)},l.qi=function(t){var n,r,s;++this.j,r=this.g==null?0:this.g.length,t>r&&(s=this.g,n=r+(r/2|0)+4,n=0?(this.$c(n),!0):!1},l.mi=function(t,n){return this.Ui(t,this.oi(t,n))},l.gc=function(){return this.Vi()},l.Pc=function(){return this.Wi()},l.Qc=function(t){return this.Xi(t)},l.Ib=function(){return this.Yi()},O(Qa,"DelegatingEList",1995),M(1996,1995,bdt),l.Vh=function(t,n){return B5e(this,t,n)},l.Wh=function(t){return this.Vh(this.Vi(),t)},l.Xh=function(t,n){sot(this,t,n)},l.Yh=function(t){Xat(this,t)},l.ai=function(){return!this.bj()},l.$b=function(){pC(this)},l.Zi=function(t,n,r,s,o){return new aXe(this,t,n,r,s,o)},l.$i=function(t){_i(this.Ai(),t)},l._i=function(){return null},l.aj=function(){return-1},l.Ai=function(){return null},l.bj=function(){return!1},l.cj=function(t,n){return n},l.dj=function(t,n){return n},l.ej=function(){return!1},l.fj=function(){return!this.Ri()},l.ii=function(t,n){var r,s;return this.ej()?(s=this.fj(),r=g4e(this,t,n),this.$i(this.Zi(7,ct(n),r,t,s)),r):g4e(this,t,n)},l.$c=function(t){var n,r,s,o;return this.ej()?(r=null,s=this.fj(),n=this.Zi(4,o=Sj(this,t),null,t,s),this.bj()&&o?(r=this.dj(o,r),r?(r.Ei(n),r.Fi()):this.$i(n)):r?(r.Ei(n),r.Fi()):this.$i(n),o):(o=Sj(this,t),this.bj()&&o&&(r=this.dj(o,null),r&&r.Fi()),o)},l.mi=function(t,n){return dut(this,t,n)},O(wk,"DelegatingNotifyingListImpl",1996),M(143,1,XI),l.Ei=function(t){return t4e(this,t)},l.Fi=function(){Gre(this)},l.xi=function(){return this.d},l._i=function(){return null},l.gj=function(){return null},l.yi=function(t){return-1},l.zi=function(){return Jot(this)},l.Ai=function(){return null},l.Bi=function(){return v5e(this)},l.Ci=function(){return this.o<0?this.o<-2?-2-this.o-1:-1:this.o},l.hj=function(){return!1},l.Di=function(t){var n,r,s,o,h,d,v,x,_,L,P;switch(this.d){case 1:case 2:switch(o=t.xi(),o){case 1:case 2:if(h=t.Ai(),je(h)===je(this.Ai())&&this.yi(null)==t.yi(null))return this.g=t.zi(),t.xi()==1&&(this.d=1),!0}case 4:{switch(o=t.xi(),o){case 4:{if(h=t.Ai(),je(h)===je(this.Ai())&&this.yi(null)==t.yi(null))return _=J5e(this),x=this.o<0?this.o<-2?-2-this.o-1:-1:this.o,d=t.Ci(),this.d=6,P=new jv(2),x<=d?(Br(P,this.n),Br(P,t.Bi()),this.g=ie(re(Lr,1),Jr,25,15,[this.o=x,d+1])):(Br(P,t.Bi()),Br(P,this.n),this.g=ie(re(Lr,1),Jr,25,15,[this.o=d,x])),this.n=P,_||(this.o=-2-this.o-1),!0;break}}break}case 6:{switch(o=t.xi(),o){case 4:{if(h=t.Ai(),je(h)===je(this.Ai())&&this.yi(null)==t.yi(null)){for(_=J5e(this),d=t.Ci(),L=u(this.g,48),s=Me(Lr,Jr,25,L.length+1,15,1),n=0;n>>0,n.toString(16))),s.a+=" (eventType: ",this.d){case 1:{s.a+="SET";break}case 2:{s.a+="UNSET";break}case 3:{s.a+="ADD";break}case 5:{s.a+="ADD_MANY";break}case 4:{s.a+="REMOVE";break}case 6:{s.a+="REMOVE_MANY";break}case 7:{s.a+="MOVE";break}case 8:{s.a+="REMOVING_ADAPTER";break}case 9:{s.a+="RESOLVE";break}default:{cte(s,this.d);break}}if(Hct(this)&&(s.a+=", touch: true"),s.a+=", position: ",cte(s,this.o<0?this.o<-2?-2-this.o-1:-1:this.o),s.a+=", notifier: ",QT(s,this.Ai()),s.a+=", feature: ",QT(s,this._i()),s.a+=", oldValue: ",QT(s,v5e(this)),s.a+=", newValue: ",this.d==6&&we(this.g,48)){for(r=u(this.g,48),s.a+="[",t=0;t10?((!this.b||this.c.j!=this.a)&&(this.b=new l_(this),this.a=this.j),_0(this.b,t)):u7(this,t)},l.ni=function(){return!0},l.a=0,O(Qa,"AbstractEList/1",953),M(295,73,noe,Im),O(Qa,"AbstractEList/BasicIndexOutOfBoundsException",295),M(40,1,ga,rr),l.Nb=function(t){La(this,t)},l.mj=function(){if(this.i.j!=this.f)throw J(new uh)},l.nj=function(){return pr(this)},l.Ob=function(){return this.e!=this.i.gc()},l.Pb=function(){return this.nj()},l.Qb=function(){J_(this)},l.e=0,l.f=0,l.g=-1,O(Qa,"AbstractEList/EIterator",40),M(278,40,r0,_6,jne),l.Qb=function(){J_(this)},l.Rb=function(t){Trt(this,t)},l.oj=function(){var t;try{return t=this.d.Xb(--this.e),this.mj(),this.g=this.e,t}catch(n){throw n=ts(n),we(n,73)?(this.mj(),J(new xc)):J(n)}},l.pj=function(t){_it(this,t)},l.Sb=function(){return this.e!=0},l.Tb=function(){return this.e},l.Ub=function(){return this.oj()},l.Vb=function(){return this.e-1},l.Wb=function(t){this.pj(t)},O(Qa,"AbstractEList/EListIterator",278),M(341,40,ga,C6),l.nj=function(){return Jie(this)},l.Qb=function(){throw J(new Fr)},O(Qa,"AbstractEList/NonResolvingEIterator",341),M(385,278,r0,NM,Kbe),l.Rb=function(t){throw J(new Fr)},l.nj=function(){var t;try{return t=this.c.ki(this.e),this.mj(),this.g=this.e++,t}catch(n){throw n=ts(n),we(n,73)?(this.mj(),J(new xc)):J(n)}},l.oj=function(){var t;try{return t=this.c.ki(--this.e),this.mj(),this.g=this.e,t}catch(n){throw n=ts(n),we(n,73)?(this.mj(),J(new xc)):J(n)}},l.Qb=function(){throw J(new Fr)},l.Wb=function(t){throw J(new Fr)},O(Qa,"AbstractEList/NonResolvingEListIterator",385),M(1982,67,vdt),l.Vh=function(t,n){var r,s,o,h,d,v,x,_,L,P,z;if(o=n.gc(),o!=0){for(_=u(_n(this.a,4),126),L=_==null?0:_.length,z=L+o,s=kie(this,z),P=L-t,P>0&&Hc(_,t,s,t+o,P),x=n.Kc(),d=0;dr)throw J(new Im(t,r));return new vYe(this,t)},l.$b=function(){var t,n;++this.j,t=u(_n(this.a,4),126),n=t==null?0:t.length,s7(this,null),Nre(this,n,t)},l.Hc=function(t){var n,r,s,o,h;if(n=u(_n(this.a,4),126),n!=null){if(t!=null){for(s=n,o=0,h=s.length;o=r)throw J(new Im(t,r));return n[t]},l.Xc=function(t){var n,r,s;if(n=u(_n(this.a,4),126),n!=null){if(t!=null){for(r=0,s=n.length;rr)throw J(new Im(t,r));return new bYe(this,t)},l.ii=function(t,n){var r,s,o;if(r=Irt(this),o=r==null?0:r.length,t>=o)throw J(new Do(qce+t+Eb+o));if(n>=o)throw J(new Do(Vce+n+Eb+o));return s=r[n],t!=n&&(t0&&Hc(t,0,n,0,r),n},l.Qc=function(t){var n,r,s;return n=u(_n(this.a,4),126),s=n==null?0:n.length,s>0&&(t.lengths&&cs(t,s,null),t};var Y3t;O(Qa,"ArrayDelegatingEList",1982),M(1038,40,ga,CZe),l.mj=function(){if(this.b.j!=this.f||je(u(_n(this.b.a,4),126))!==je(this.a))throw J(new uh)},l.Qb=function(){J_(this),this.a=u(_n(this.b.a,4),126)},O(Qa,"ArrayDelegatingEList/EIterator",1038),M(706,278,r0,$Ke,bYe),l.mj=function(){if(this.b.j!=this.f||je(u(_n(this.b.a,4),126))!==je(this.a))throw J(new uh)},l.pj=function(t){_it(this,t),this.a=u(_n(this.b.a,4),126)},l.Qb=function(){J_(this),this.a=u(_n(this.b.a,4),126)},O(Qa,"ArrayDelegatingEList/EListIterator",706),M(1039,341,ga,SZe),l.mj=function(){if(this.b.j!=this.f||je(u(_n(this.b.a,4),126))!==je(this.a))throw J(new uh)},O(Qa,"ArrayDelegatingEList/NonResolvingEIterator",1039),M(707,385,r0,HKe,vYe),l.mj=function(){if(this.b.j!=this.f||je(u(_n(this.b.a,4),126))!==je(this.a))throw J(new uh)},O(Qa,"ArrayDelegatingEList/NonResolvingEListIterator",707),M(606,295,noe,zte),O(Qa,"BasicEList/BasicIndexOutOfBoundsException",606),M(696,63,Od,O2e),l.Vc=function(t,n){throw J(new Fr)},l.Fc=function(t){throw J(new Fr)},l.Wc=function(t,n){throw J(new Fr)},l.Gc=function(t){throw J(new Fr)},l.$b=function(){throw J(new Fr)},l.qi=function(t){throw J(new Fr)},l.Kc=function(){return this.Zh()},l.Yc=function(){return this.$h()},l.Zc=function(t){return this._h(t)},l.ii=function(t,n){throw J(new Fr)},l.ji=function(t,n){throw J(new Fr)},l.$c=function(t){throw J(new Fr)},l.Mc=function(t){throw J(new Fr)},l._c=function(t,n){throw J(new Fr)},O(Qa,"BasicEList/UnmodifiableEList",696),M(705,1,{3:1,20:1,14:1,15:1,58:1,589:1}),l.Vc=function(t,n){NWt(this,t,u(n,42))},l.Fc=function(t){return yKt(this,u(t,42))},l.Jc=function(t){Da(this,t)},l.Xb=function(t){return u(Te(this.c,t),133)},l.ii=function(t,n){return u(this.c.ii(t,n),42)},l.ji=function(t,n){PWt(this,t,u(n,42))},l.Lc=function(){return new vn(null,new mn(this,16))},l.$c=function(t){return u(this.c.$c(t),42)},l._c=function(t,n){return AZt(this,t,u(n,42))},l.ad=function(t){Y3(this,t)},l.Nc=function(){return new mn(this,16)},l.Oc=function(){return new vn(null,new mn(this,16))},l.Wc=function(t,n){return this.c.Wc(t,n)},l.Gc=function(t){return this.c.Gc(t)},l.$b=function(){this.c.$b()},l.Hc=function(t){return this.c.Hc(t)},l.Ic=function(t){return MD(this.c,t)},l.qj=function(){var t,n,r;if(this.d==null){for(this.d=Me(SAe,p8e,63,2*this.f+1,0,1),r=this.e,this.f=0,n=this.c.Kc();n.e!=n.i.gc();)t=u(n.nj(),133),RH(this,t);this.e=r}},l.Fb=function(t){return fWe(this,t)},l.Hb=function(){return Jme(this.c)},l.Xc=function(t){return this.c.Xc(t)},l.rj=function(){this.c=new I$e(this)},l.dc=function(){return this.f==0},l.Kc=function(){return this.c.Kc()},l.Yc=function(){return this.c.Yc()},l.Zc=function(t){return this.c.Zc(t)},l.sj=function(){return hD(this)},l.tj=function(t,n,r){return new LWe(t,n,r)},l.uj=function(){return new bp},l.Mc=function(t){return Wet(this,t)},l.gc=function(){return this.f},l.bd=function(t,n){return new Zd(this.c,t,n)},l.Pc=function(){return this.c.Pc()},l.Qc=function(t){return this.c.Qc(t)},l.Ib=function(){return Vye(this.c)},l.e=0,l.f=0,O(Qa,"BasicEMap",705),M(1033,63,Od,I$e),l.bi=function(t,n){vVt(this,u(n,133))},l.ei=function(t,n,r){var s;++(s=this,u(n,133),s).a.e},l.fi=function(t,n){wVt(this,u(n,133))},l.gi=function(t,n,r){oKt(this,u(n,133),u(r,133))},l.di=function(t,n){Rtt(this.a)},O(Qa,"BasicEMap/1",1033),M(1034,63,Od,bp),l.ri=function(t){return Me(L3n,wdt,612,t,0,1)},O(Qa,"BasicEMap/2",1034),M(1035,H1,Xu,O$e),l.$b=function(){this.a.c.$b()},l.Hc=function(t){return qie(this.a,t)},l.Kc=function(){return this.a.f==0?(u8(),uN.a):new gze(this.a)},l.Mc=function(t){var n;return n=this.a.f,CH(this.a,t),this.a.f!=n},l.gc=function(){return this.a.f},O(Qa,"BasicEMap/3",1035),M(1036,28,hy,N$e),l.$b=function(){this.a.c.$b()},l.Hc=function(t){return kct(this.a,t)},l.Kc=function(){return this.a.f==0?(u8(),uN.a):new pze(this.a)},l.gc=function(){return this.a.f},O(Qa,"BasicEMap/4",1036),M(1037,H1,Xu,P$e),l.$b=function(){this.a.c.$b()},l.Hc=function(t){var n,r,s,o,h,d,v,x,_;if(this.a.f>0&&we(t,42)&&(this.a.qj(),x=u(t,42),v=x.cd(),o=v==null?0:Xi(v),h=Nbe(this.a,o),n=this.a.d[h],n)){for(r=u(n.g,367),_=n.i,d=0;d<_;++d)if(s=r[d],s.Sh()==o&&s.Fb(x))return!0}return!1},l.Kc=function(){return this.a.f==0?(u8(),uN.a):new tre(this.a)},l.Mc=function(t){return dot(this,t)},l.gc=function(){return this.a.f},O(Qa,"BasicEMap/5",1037),M(613,1,ga,tre),l.Nb=function(t){La(this,t)},l.Ob=function(){return this.b!=-1},l.Pb=function(){var t;if(this.f.e!=this.c)throw J(new uh);if(this.b==-1)throw J(new xc);return this.d=this.a,this.e=this.b,tst(this),t=u(this.f.d[this.d].g[this.e],133),this.vj(t)},l.Qb=function(){if(this.f.e!=this.c)throw J(new uh);if(this.e==-1)throw J(new zu);this.f.c.Mc(Te(this.f.d[this.d],this.e)),this.c=this.f.e,this.e=-1,this.a==this.d&&this.b!=-1&&--this.b},l.vj=function(t){return t},l.a=0,l.b=-1,l.c=0,l.d=0,l.e=0,O(Qa,"BasicEMap/BasicEMapIterator",613),M(1031,613,ga,gze),l.vj=function(t){return t.cd()},O(Qa,"BasicEMap/BasicEMapKeyIterator",1031),M(1032,613,ga,pze),l.vj=function(t){return t.dd()},O(Qa,"BasicEMap/BasicEMapValueIterator",1032),M(1030,1,ow,B$e),l.wc=function(t){B_(this,t)},l.yc=function(t,n,r){return Rie(this,t,n,r)},l.$b=function(){this.a.c.$b()},l._b=function(t){return Kqe(this,t)},l.uc=function(t){return kct(this.a,t)},l.vc=function(){return Xnn(this.a)},l.Fb=function(t){return fWe(this.a,t)},l.xc=function(t){return r1(this.a,t)},l.Hb=function(){return Jme(this.a.c)},l.dc=function(){return this.a.f==0},l.ec=function(){return Qnn(this.a)},l.zc=function(t,n){return qH(this.a,t,n)},l.Bc=function(t){return CH(this.a,t)},l.gc=function(){return this.a.f},l.Ib=function(){return Vye(this.a.c)},l.Cc=function(){return Ynn(this.a)},O(Qa,"BasicEMap/DelegatingMap",1030),M(612,1,{42:1,133:1,612:1},LWe),l.Fb=function(t){var n;return we(t,42)?(n=u(t,42),(this.b!=null?Ci(this.b,n.cd()):je(this.b)===je(n.cd()))&&(this.c!=null?Ci(this.c,n.dd()):je(this.c)===je(n.dd()))):!1},l.Sh=function(){return this.a},l.cd=function(){return this.b},l.dd=function(){return this.c},l.Hb=function(){return this.a^(this.c==null?0:Xi(this.c))},l.Th=function(t){this.a=t},l.Uh=function(t){throw J(new H2)},l.ed=function(t){var n;return n=this.c,this.c=t,n},l.Ib=function(){return this.b+"->"+this.c},l.a=0;var L3n=O(Qa,"BasicEMap/EntryImpl",612);M(536,1,{},kx),O(Qa,"BasicEMap/View",536);var uN;M(768,1,{}),l.Fb=function(t){return J4e((hn(),bo),t)},l.Hb=function(){return hye((hn(),bo))},l.Ib=function(){return Yp((hn(),bo))},O(Qa,"ECollections/BasicEmptyUnmodifiableEList",768),M(1312,1,r0,UB),l.Nb=function(t){La(this,t)},l.Rb=function(t){throw J(new Fr)},l.Ob=function(){return!1},l.Sb=function(){return!1},l.Pb=function(){throw J(new xc)},l.Tb=function(){return 0},l.Ub=function(){throw J(new xc)},l.Vb=function(){return-1},l.Qb=function(){throw J(new Fr)},l.Wb=function(t){throw J(new Fr)},O(Qa,"ECollections/BasicEmptyUnmodifiableEList/1",1312),M(1310,768,{20:1,14:1,15:1,58:1},_He),l.Vc=function(t,n){Bze()},l.Fc=function(t){return Rze()},l.Wc=function(t,n){return Fze()},l.Gc=function(t){return jze()},l.$b=function(){$ze()},l.Hc=function(t){return!1},l.Ic=function(t){return!1},l.Jc=function(t){Da(this,t)},l.Xb=function(t){return B2e((hn(),t)),null},l.Xc=function(t){return-1},l.dc=function(){return!0},l.Kc=function(){return this.a},l.Yc=function(){return this.a},l.Zc=function(t){return this.a},l.ii=function(t,n){return Hze()},l.ji=function(t,n){zze()},l.Lc=function(){return new vn(null,new mn(this,16))},l.$c=function(t){return Gze()},l.Mc=function(t){return qze()},l._c=function(t,n){return Vze()},l.gc=function(){return 0},l.ad=function(t){Y3(this,t)},l.Nc=function(){return new mn(this,16)},l.Oc=function(){return new vn(null,new mn(this,16))},l.bd=function(t,n){return hn(),new Zd(bo,t,n)},l.Pc=function(){return Bve((hn(),bo))},l.Qc=function(t){return hn(),YD(bo,t)},O(Qa,"ECollections/EmptyUnmodifiableEList",1310),M(1311,768,{20:1,14:1,15:1,58:1,589:1},CHe),l.Vc=function(t,n){Bze()},l.Fc=function(t){return Rze()},l.Wc=function(t,n){return Fze()},l.Gc=function(t){return jze()},l.$b=function(){$ze()},l.Hc=function(t){return!1},l.Ic=function(t){return!1},l.Jc=function(t){Da(this,t)},l.Xb=function(t){return B2e((hn(),t)),null},l.Xc=function(t){return-1},l.dc=function(){return!0},l.Kc=function(){return this.a},l.Yc=function(){return this.a},l.Zc=function(t){return this.a},l.ii=function(t,n){return Hze()},l.ji=function(t,n){zze()},l.Lc=function(){return new vn(null,new mn(this,16))},l.$c=function(t){return Gze()},l.Mc=function(t){return qze()},l._c=function(t,n){return Vze()},l.gc=function(){return 0},l.ad=function(t){Y3(this,t)},l.Nc=function(){return new mn(this,16)},l.Oc=function(){return new vn(null,new mn(this,16))},l.bd=function(t,n){return hn(),new Zd(bo,t,n)},l.Pc=function(){return Bve((hn(),bo))},l.Qc=function(t){return hn(),YD(bo,t)},l.sj=function(){return hn(),hn(),l0},O(Qa,"ECollections/EmptyUnmodifiableEMap",1311);var LAe=ss(Qa,"Enumerator"),QV;M(281,1,{281:1},Zse),l.Fb=function(t){var n;return this===t?!0:we(t,281)?(n=u(t,281),this.f==n.f&&YQt(this.i,n.i)&&_ne(this.a,this.f&256?n.f&256?n.a:null:n.f&256?null:n.a)&&_ne(this.d,n.d)&&_ne(this.g,n.g)&&_ne(this.e,n.e)&&Gcn(this,n)):!1},l.Hb=function(){return this.f},l.Ib=function(){return Zct(this)},l.f=0;var X3t=0,Q3t=0,Z3t=0,J3t=0,MAe=0,DAe=0,IAe=0,OAe=0,NAe=0,e4t,KS=0,YS=0,t4t=0,n4t=0,ZV,PAe;O(Qa,"URI",281),M(1091,43,y4,SHe),l.zc=function(t,n){return u(Oo(this,Hr(t),u(n,281)),281)},O(Qa,"URI/URICache",1091),M(497,63,Od,xx,Lj),l.hi=function(){return!0},O(Qa,"UniqueEList",497),M(581,60,q0,D$),O(Qa,"WrappedException",581);var ti=ss(kh,kdt),qy=ss(kh,xdt),ju=ss(kh,Edt),Vy=ss(kh,Tdt),f1=ss(kh,_dt),tf=ss(kh,"EClass"),xfe=ss(kh,"EDataType"),r4t;M(1183,43,y4,AHe),l.xc=function(t){return fa(t)?Uc(this,t):hc($o(this.f,t))},O(kh,"EDataType/Internal/ConversionDelegate/Factory/Registry/Impl",1183);var JV=ss(kh,"EEnum"),J0=ss(kh,Cdt),Eo=ss(kh,Sdt),nf=ss(kh,Adt),rf,Iw=ss(kh,Ldt),Uy=ss(kh,Mdt);M(1029,1,{},qZ),l.Ib=function(){return"NIL"},O(kh,"EStructuralFeature/Internal/DynamicValueHolder/1",1029);var i4t;M(1028,43,y4,LHe),l.xc=function(t){return fa(t)?Uc(this,t):hc($o(this.f,t))},O(kh,"EStructuralFeature/Internal/SettingDelegate/Factory/Registry/Impl",1028);var mu=ss(kh,Ddt),Hk=ss(kh,"EValidator/PatternMatcher"),BAe,RAe,En,Kg,Wy,E2,s4t,a4t,o4t,T2,Yg,_2,Ow,Z1,c4t,u4t,sf,Xg,l4t,Qg,Ky,n5,oo,h4t,f4t,Nw,eU=ss(Wi,"FeatureMap/Entry");M(535,1,{72:1},KF),l.ak=function(){return this.a},l.dd=function(){return this.b},O(Tn,"BasicEObjectImpl/1",535),M(1027,1,Qce,Hqe),l.Wj=function(t){return Ire(this.a,this.b,t)},l.fj=function(){return kXe(this.a,this.b)},l.Wb=function(t){wwe(this.a,this.b,t)},l.Xj=function(){VZt(this.a,this.b)},O(Tn,"BasicEObjectImpl/4",1027),M(1983,1,{108:1}),l.bk=function(t){this.e=t==0?d4t:Me(Yn,yt,1,t,5,1)},l.Ch=function(t){return this.e[t]},l.Dh=function(t,n){this.e[t]=n},l.Eh=function(t){this.e[t]=null},l.ck=function(){return this.c},l.dk=function(){throw J(new Fr)},l.ek=function(){throw J(new Fr)},l.fk=function(){return this.d},l.gk=function(){return this.e!=null},l.hk=function(t){this.c=t},l.ik=function(t){throw J(new Fr)},l.jk=function(t){throw J(new Fr)},l.kk=function(t){this.d=t};var d4t;O(Tn,"BasicEObjectImpl/EPropertiesHolderBaseImpl",1983),M(185,1983,{108:1},ch),l.dk=function(){return this.a},l.ek=function(){return this.b},l.ik=function(t){this.a=t},l.jk=function(t){this.b=t},O(Tn,"BasicEObjectImpl/EPropertiesHolderImpl",185),M(506,97,I1t,Ex),l.Kg=function(){return this.f},l.Pg=function(){return this.k},l.Rg=function(t,n){this.g=t,this.i=n},l.Tg=function(){return this.j&2?this.ph().ck():this.zh()},l.Vg=function(){return this.i},l.Mg=function(){return(this.j&1)!=0},l.eh=function(){return this.g},l.kh=function(){return(this.j&4)!=0},l.ph=function(){return!this.k&&(this.k=new ch),this.k},l.th=function(t){this.ph().hk(t),t?this.j|=2:this.j&=-3},l.vh=function(t){this.ph().jk(t),t?this.j|=4:this.j&=-5},l.zh=function(){return(Rp(),En).S},l.i=0,l.j=1,O(Tn,"EObjectImpl",506),M(780,506,{105:1,92:1,90:1,56:1,108:1,49:1,97:1},wve),l.Ch=function(t){return this.e[t]},l.Dh=function(t,n){this.e[t]=n},l.Eh=function(t){this.e[t]=null},l.Tg=function(){return this.d},l.Yg=function(t){return Ji(this.d,t)},l.$g=function(){return this.d},l.dh=function(){return this.e!=null},l.ph=function(){return!this.k&&(this.k=new WB),this.k},l.th=function(t){this.d=t},l.yh=function(){var t;return this.e==null&&(t=Jn(this.d),this.e=t==0?g4t:Me(Yn,yt,1,t,5,1)),this},l.Ah=function(){return 0};var g4t;O(Tn,"DynamicEObjectImpl",780),M(1376,780,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1},nKe),l.Fb=function(t){return this===t},l.Hb=function(){return xv(this)},l.th=function(t){this.d=t,this.b=dI(t,"key"),this.c=dI(t,jC)},l.Sh=function(){var t;return this.a==-1&&(t=qre(this,this.b),this.a=t==null?0:Xi(t)),this.a},l.cd=function(){return qre(this,this.b)},l.dd=function(){return qre(this,this.c)},l.Th=function(t){this.a=t},l.Uh=function(t){wwe(this,this.b,t)},l.ed=function(t){var n;return n=qre(this,this.c),wwe(this,this.c,t),n},l.a=0,O(Tn,"DynamicEObjectImpl/BasicEMapEntry",1376),M(1377,1,{108:1},WB),l.bk=function(t){throw J(new Fr)},l.Ch=function(t){throw J(new Fr)},l.Dh=function(t,n){throw J(new Fr)},l.Eh=function(t){throw J(new Fr)},l.ck=function(){throw J(new Fr)},l.dk=function(){return this.a},l.ek=function(){return this.b},l.fk=function(){return this.c},l.gk=function(){throw J(new Fr)},l.hk=function(t){throw J(new Fr)},l.ik=function(t){this.a=t},l.jk=function(t){this.b=t},l.kk=function(t){this.c=t},O(Tn,"DynamicEObjectImpl/DynamicEPropertiesHolderImpl",1377),M(510,150,{105:1,92:1,90:1,590:1,147:1,56:1,108:1,49:1,97:1,510:1,150:1,114:1,115:1},KB),l.Qg=function(t){return R3e(this,t)},l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.d;case 2:return r?(!this.b&&(this.b=new Ml((on(),oo),wc,this)),this.b):(!this.b&&(this.b=new Ml((on(),oo),wc,this)),hD(this.b));case 3:return CXe(this);case 4:return!this.a&&(this.a=new Bs(y2,this,4)),this.a;case 5:return!this.c&&(this.c=new $3(y2,this,5)),this.c}return ph(this,t-Jn((on(),Kg)),gn((s=u(_n(this,16),26),s||Kg),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 3:return this.Cb&&(r=(o=this.Db>>16,o>=0?R3e(this,r):this.Cb.ih(this,-1-o,null,r))),Nve(this,u(t,147),r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),Kg)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),Kg)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 2:return!this.b&&(this.b=new Ml((on(),oo),wc,this)),vj(this.b,t,r);case 3:return Nve(this,null,r);case 4:return!this.a&&(this.a=new Bs(y2,this,4)),Xa(this.a,t,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Kg)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Kg)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.d!=null;case 2:return!!this.b&&this.b.f!=0;case 3:return!!CXe(this);case 4:return!!this.a&&this.a.i!=0;case 5:return!!this.c&&this.c.i!=0}return dh(this,t-Jn((on(),Kg)),gn((n=u(_n(this,16),26),n||Kg),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:NQt(this,Hr(n));return;case 2:!this.b&&(this.b=new Ml((on(),oo),wc,this)),sH(this.b,n);return;case 3:zot(this,u(n,147));return;case 4:!this.a&&(this.a=new Bs(y2,this,4)),_r(this.a),!this.a&&(this.a=new Bs(y2,this,4)),fs(this.a,u(n,14));return;case 5:!this.c&&(this.c=new $3(y2,this,5)),_r(this.c),!this.c&&(this.c=new $3(y2,this,5)),fs(this.c,u(n,14));return}yh(this,t-Jn((on(),Kg)),gn((r=u(_n(this,16),26),r||Kg),t),n)},l.zh=function(){return on(),Kg},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:Fme(this,null);return;case 2:!this.b&&(this.b=new Ml((on(),oo),wc,this)),this.b.c.$b();return;case 3:zot(this,null);return;case 4:!this.a&&(this.a=new Bs(y2,this,4)),_r(this.a);return;case 5:!this.c&&(this.c=new $3(y2,this,5)),_r(this.c);return}wh(this,t-Jn((on(),Kg)),gn((n=u(_n(this,16),26),n||Kg),t))},l.Ib=function(){return rrt(this)},l.d=null,O(Tn,"EAnnotationImpl",510),M(151,705,b8e,Nl),l.Xh=function(t,n){bWt(this,t,u(n,42))},l.lk=function(t,n){return lYt(this,u(t,42),n)},l.pi=function(t){return u(u(this.c,69).pi(t),133)},l.Zh=function(){return u(this.c,69).Zh()},l.$h=function(){return u(this.c,69).$h()},l._h=function(t){return u(this.c,69)._h(t)},l.mk=function(t,n){return vj(this,t,n)},l.Wj=function(t){return u(this.c,76).Wj(t)},l.rj=function(){},l.fj=function(){return u(this.c,76).fj()},l.tj=function(t,n,r){var s;return s=u(Gl(this.b).Nh().Jh(this.b),133),s.Th(t),s.Uh(n),s.ed(r),s},l.uj=function(){return new rpe(this)},l.Wb=function(t){sH(this,t)},l.Xj=function(){u(this.c,76).Xj()},O(Wi,"EcoreEMap",151),M(158,151,b8e,Ml),l.qj=function(){var t,n,r,s,o,h;if(this.d==null){for(h=Me(SAe,p8e,63,2*this.f+1,0,1),r=this.c.Kc();r.e!=r.i.gc();)n=u(r.nj(),133),s=n.Sh(),o=(s&Ei)%h.length,t=h[o],!t&&(t=h[o]=new rpe(this)),t.Fc(n);this.d=h}},O(Tn,"EAnnotationImpl/1",158),M(284,438,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,472:1,49:1,97:1,150:1,284:1,114:1,115:1}),l._g=function(t,n,r){var s,o;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Mn(),!!(this.Bb&256);case 3:return Mn(),!!(this.Bb&512);case 4:return ct(this.s);case 5:return ct(this.t);case 6:return Mn(),!!this.$j();case 7:return Mn(),o=this.s,o>=1;case 8:return n?$h(this):this.r;case 9:return this.q}return ph(this,t-Jn(this.zh()),gn((s=u(_n(this,16),26),s||this.zh()),t),n,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 9:return zne(this,r)}return o=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),o.Nj().Rj(this,du(this),n-Jn(this.zh()),t,r)},l.lh=function(t){var n,r;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.$j();case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mv(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mv(this.q).i==0)}return dh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.sh=function(t,n){var r,s;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:this.Lh(Hr(n));return;case 2:Lg(this,It(Mt(n)));return;case 3:Mg(this,It(Mt(n)));return;case 4:Cg(this,u(n,19).a);return;case 5:this.ok(u(n,19).a);return;case 8:cb(this,u(n,138));return;case 9:s=$1(this,u(n,87),null),s&&s.Fi();return}yh(this,t-Jn(this.zh()),gn((r=u(_n(this,16),26),r||this.zh()),t),n)},l.zh=function(){return on(),f4t},l.Bh=function(t){var n,r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:this.Lh(null);return;case 2:Lg(this,!0);return;case 3:Mg(this,!0);return;case 4:Cg(this,0);return;case 5:this.ok(1);return;case 8:cb(this,null);return;case 9:r=$1(this,null,null),r&&r.Fi();return}wh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.Gh=function(){$h(this),this.Bb|=1},l.Yj=function(){return $h(this)},l.Zj=function(){return this.t},l.$j=function(){var t;return t=this.t,t>1||t==-1},l.hi=function(){return(this.Bb&512)!=0},l.nk=function(t,n){return Iye(this,t,n)},l.ok=function(t){Wm(this,t)},l.Ib=function(){return G4e(this)},l.s=0,l.t=1,O(Tn,"ETypedElementImpl",284),M(449,284,{105:1,92:1,90:1,147:1,191:1,56:1,170:1,66:1,108:1,472:1,49:1,97:1,150:1,449:1,284:1,114:1,115:1,677:1}),l.Qg=function(t){return jit(this,t)},l._g=function(t,n,r){var s,o;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Mn(),!!(this.Bb&256);case 3:return Mn(),!!(this.Bb&512);case 4:return ct(this.s);case 5:return ct(this.t);case 6:return Mn(),!!this.$j();case 7:return Mn(),o=this.s,o>=1;case 8:return n?$h(this):this.r;case 9:return this.q;case 10:return Mn(),!!(this.Bb&Sf);case 11:return Mn(),!!(this.Bb&ky);case 12:return Mn(),!!(this.Bb&dy);case 13:return this.j;case 14:return b7(this);case 15:return Mn(),!!(this.Bb&Zu);case 16:return Mn(),!!(this.Bb&Ed);case 17:return Fm(this)}return ph(this,t-Jn(this.zh()),gn((s=u(_n(this,16),26),s||this.zh()),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 17:return this.Cb&&(r=(o=this.Db>>16,o>=0?jit(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,17,r)}return h=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),h.Nj().Qj(this,du(this),n-Jn(this.zh()),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 9:return zne(this,r);case 17:return Kl(this,null,17,r)}return o=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),o.Nj().Rj(this,du(this),n-Jn(this.zh()),t,r)},l.lh=function(t){var n,r;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.$j();case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mv(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mv(this.q).i==0);case 10:return(this.Bb&Sf)==0;case 11:return(this.Bb&ky)!=0;case 12:return(this.Bb&dy)!=0;case 13:return this.j!=null;case 14:return b7(this)!=null;case 15:return(this.Bb&Zu)!=0;case 16:return(this.Bb&Ed)!=0;case 17:return!!Fm(this)}return dh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.sh=function(t,n){var r,s;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:bre(this,Hr(n));return;case 2:Lg(this,It(Mt(n)));return;case 3:Mg(this,It(Mt(n)));return;case 4:Cg(this,u(n,19).a);return;case 5:this.ok(u(n,19).a);return;case 8:cb(this,u(n,138));return;case 9:s=$1(this,u(n,87),null),s&&s.Fi();return;case 10:J8(this,It(Mt(n)));return;case 11:n7(this,It(Mt(n)));return;case 12:e7(this,It(Mt(n)));return;case 13:N2e(this,Hr(n));return;case 15:t7(this,It(Mt(n)));return;case 16:r7(this,It(Mt(n)));return}yh(this,t-Jn(this.zh()),gn((r=u(_n(this,16),26),r||this.zh()),t),n)},l.zh=function(){return on(),h4t},l.Bh=function(t){var n,r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:we(this.Cb,88)&&iy(dl(u(this.Cb,88)),4),au(this,null);return;case 2:Lg(this,!0);return;case 3:Mg(this,!0);return;case 4:Cg(this,0);return;case 5:this.ok(1);return;case 8:cb(this,null);return;case 9:r=$1(this,null,null),r&&r.Fi();return;case 10:J8(this,!0);return;case 11:n7(this,!1);return;case 12:e7(this,!1);return;case 13:this.i=null,X$(this,null);return;case 15:t7(this,!1);return;case 16:r7(this,!1);return}wh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.Gh=function(){m8(Po((Yu(),Oa),this)),$h(this),this.Bb|=1},l.Gj=function(){return this.f},l.zj=function(){return b7(this)},l.Hj=function(){return Fm(this)},l.Lj=function(){return null},l.pk=function(){return this.k},l.aj=function(){return this.n},l.Mj=function(){return UH(this)},l.Nj=function(){var t,n,r,s,o,h,d,v,x;return this.p||(r=Fm(this),(r.i==null&&xd(r),r.i).length,s=this.Lj(),s&&Jn(Fm(s)),o=$h(this),d=o.Bj(),t=d?d.i&1?d==El?Us:d==Lr?Za:d==Xy?W7:d==pa?ma:d==S2?pw:d==a5?bw:d==el?mk:XC:d:null,n=b7(this),v=o.zj(),gon(this),this.Bb&Ed&&((h=q3e((Yu(),Oa),r))&&h!=this||(h=F6(Po(Oa,this))))?this.p=new Gqe(this,h):this.$j()?this.rk()?s?this.Bb&Zu?t?this.sk()?this.p=new K2(47,t,this,s):this.p=new K2(5,t,this,s):this.sk()?this.p=new Q2(46,this,s):this.p=new Q2(4,this,s):t?this.sk()?this.p=new K2(49,t,this,s):this.p=new K2(7,t,this,s):this.sk()?this.p=new Q2(48,this,s):this.p=new Q2(6,this,s):this.Bb&Zu?t?t==Cb?this.p=new yg(50,W3t,this):this.sk()?this.p=new yg(43,t,this):this.p=new yg(1,t,this):this.sk()?this.p=new xg(42,this):this.p=new xg(0,this):t?t==Cb?this.p=new yg(41,W3t,this):this.sk()?this.p=new yg(45,t,this):this.p=new yg(3,t,this):this.sk()?this.p=new xg(44,this):this.p=new xg(2,this):we(o,148)?t==eU?this.p=new xg(40,this):this.Bb&512?this.Bb&Zu?t?this.p=new yg(9,t,this):this.p=new xg(8,this):t?this.p=new yg(11,t,this):this.p=new xg(10,this):this.Bb&Zu?t?this.p=new yg(13,t,this):this.p=new xg(12,this):t?this.p=new yg(15,t,this):this.p=new xg(14,this):s?(x=s.t,x>1||x==-1?this.sk()?this.Bb&Zu?t?this.p=new K2(25,t,this,s):this.p=new Q2(24,this,s):t?this.p=new K2(27,t,this,s):this.p=new Q2(26,this,s):this.Bb&Zu?t?this.p=new K2(29,t,this,s):this.p=new Q2(28,this,s):t?this.p=new K2(31,t,this,s):this.p=new Q2(30,this,s):this.sk()?this.Bb&Zu?t?this.p=new K2(33,t,this,s):this.p=new Q2(32,this,s):t?this.p=new K2(35,t,this,s):this.p=new Q2(34,this,s):this.Bb&Zu?t?this.p=new K2(37,t,this,s):this.p=new Q2(36,this,s):t?this.p=new K2(39,t,this,s):this.p=new Q2(38,this,s)):this.sk()?this.Bb&Zu?t?this.p=new yg(17,t,this):this.p=new xg(16,this):t?this.p=new yg(19,t,this):this.p=new xg(18,this):this.Bb&Zu?t?this.p=new yg(21,t,this):this.p=new xg(20,this):t?this.p=new yg(23,t,this):this.p=new xg(22,this):this.qk()?this.sk()?this.p=new MWe(u(o,26),this,s):this.p=new vwe(u(o,26),this,s):we(o,148)?t==eU?this.p=new xg(40,this):this.Bb&Zu?t?this.p=new AKe(n,v,this,(Gie(),d==Lr?qAe:d==El?jAe:d==S2?VAe:d==Xy?GAe:d==pa?zAe:d==a5?UAe:d==el?$Ae:d==Sh?HAe:_fe)):this.p=new $Ye(u(o,148),n,v,this):t?this.p=new SKe(n,v,this,(Gie(),d==Lr?qAe:d==El?jAe:d==S2?VAe:d==Xy?GAe:d==pa?zAe:d==a5?UAe:d==el?$Ae:d==Sh?HAe:_fe)):this.p=new jYe(u(o,148),n,v,this):this.rk()?s?this.Bb&Zu?this.sk()?this.p=new IWe(u(o,26),this,s):this.p=new cve(u(o,26),this,s):this.sk()?this.p=new DWe(u(o,26),this,s):this.p=new wne(u(o,26),this,s):this.Bb&Zu?this.sk()?this.p=new SUe(u(o,26),this):this.p=new xbe(u(o,26),this):this.sk()?this.p=new CUe(u(o,26),this):this.p=new ine(u(o,26),this):this.sk()?s?this.Bb&Zu?this.p=new OWe(u(o,26),this,s):this.p=new ave(u(o,26),this,s):this.Bb&Zu?this.p=new AUe(u(o,26),this):this.p=new Ebe(u(o,26),this):s?this.Bb&Zu?this.p=new NWe(u(o,26),this,s):this.p=new ove(u(o,26),this,s):this.Bb&Zu?this.p=new LUe(u(o,26),this):this.p=new Mj(u(o,26),this)),this.p},l.Ij=function(){return(this.Bb&Sf)!=0},l.qk=function(){return!1},l.rk=function(){return!1},l.Jj=function(){return(this.Bb&Ed)!=0},l.Oj=function(){return Ure(this)},l.sk=function(){return!1},l.Kj=function(){return(this.Bb&Zu)!=0},l.tk=function(t){this.k=t},l.Lh=function(t){bre(this,t)},l.Ib=function(){return lz(this)},l.e=!1,l.n=0,O(Tn,"EStructuralFeatureImpl",449),M(322,449,{105:1,92:1,90:1,34:1,147:1,191:1,56:1,170:1,66:1,108:1,472:1,49:1,97:1,322:1,150:1,449:1,284:1,114:1,115:1,677:1},Vee),l._g=function(t,n,r){var s,o;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Mn(),!!(this.Bb&256);case 3:return Mn(),!!(this.Bb&512);case 4:return ct(this.s);case 5:return ct(this.t);case 6:return Mn(),!!j4e(this);case 7:return Mn(),o=this.s,o>=1;case 8:return n?$h(this):this.r;case 9:return this.q;case 10:return Mn(),!!(this.Bb&Sf);case 11:return Mn(),!!(this.Bb&ky);case 12:return Mn(),!!(this.Bb&dy);case 13:return this.j;case 14:return b7(this);case 15:return Mn(),!!(this.Bb&Zu);case 16:return Mn(),!!(this.Bb&Ed);case 17:return Fm(this);case 18:return Mn(),!!(this.Bb&_c);case 19:return n?lie(this):$Ze(this)}return ph(this,t-Jn((on(),Wy)),gn((s=u(_n(this,16),26),s||Wy),t),n,r)},l.lh=function(t){var n,r;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return j4e(this);case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mv(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mv(this.q).i==0);case 10:return(this.Bb&Sf)==0;case 11:return(this.Bb&ky)!=0;case 12:return(this.Bb&dy)!=0;case 13:return this.j!=null;case 14:return b7(this)!=null;case 15:return(this.Bb&Zu)!=0;case 16:return(this.Bb&Ed)!=0;case 17:return!!Fm(this);case 18:return(this.Bb&_c)!=0;case 19:return!!$Ze(this)}return dh(this,t-Jn((on(),Wy)),gn((n=u(_n(this,16),26),n||Wy),t))},l.sh=function(t,n){var r,s;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:bre(this,Hr(n));return;case 2:Lg(this,It(Mt(n)));return;case 3:Mg(this,It(Mt(n)));return;case 4:Cg(this,u(n,19).a);return;case 5:wze(this,u(n,19).a);return;case 8:cb(this,u(n,138));return;case 9:s=$1(this,u(n,87),null),s&&s.Fi();return;case 10:J8(this,It(Mt(n)));return;case 11:n7(this,It(Mt(n)));return;case 12:e7(this,It(Mt(n)));return;case 13:N2e(this,Hr(n));return;case 15:t7(this,It(Mt(n)));return;case 16:r7(this,It(Mt(n)));return;case 18:Pie(this,It(Mt(n)));return}yh(this,t-Jn((on(),Wy)),gn((r=u(_n(this,16),26),r||Wy),t),n)},l.zh=function(){return on(),Wy},l.Bh=function(t){var n,r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:we(this.Cb,88)&&iy(dl(u(this.Cb,88)),4),au(this,null);return;case 2:Lg(this,!0);return;case 3:Mg(this,!0);return;case 4:Cg(this,0);return;case 5:this.b=0,Wm(this,1);return;case 8:cb(this,null);return;case 9:r=$1(this,null,null),r&&r.Fi();return;case 10:J8(this,!0);return;case 11:n7(this,!1);return;case 12:e7(this,!1);return;case 13:this.i=null,X$(this,null);return;case 15:t7(this,!1);return;case 16:r7(this,!1);return;case 18:Pie(this,!1);return}wh(this,t-Jn((on(),Wy)),gn((n=u(_n(this,16),26),n||Wy),t))},l.Gh=function(){lie(this),m8(Po((Yu(),Oa),this)),$h(this),this.Bb|=1},l.$j=function(){return j4e(this)},l.nk=function(t,n){return this.b=0,this.a=null,Iye(this,t,n)},l.ok=function(t){wze(this,t)},l.Ib=function(){var t;return this.Db&64?lz(this):(t=new Ph(lz(this)),t.a+=" (iD: ",vg(t,(this.Bb&_c)!=0),t.a+=")",t.a)},l.b=0,O(Tn,"EAttributeImpl",322),M(351,438,{105:1,92:1,90:1,138:1,147:1,191:1,56:1,108:1,49:1,97:1,351:1,150:1,114:1,115:1,676:1}),l.uk=function(t){return t.Tg()==this},l.Qg=function(t){return pse(this,t)},l.Rg=function(t,n){this.w=null,this.Db=n<<16|this.Db&255,this.Cb=t},l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Jv(this);case 4:return this.zj();case 5:return this.F;case 6:return n?Gl(this):x8(this);case 7:return!this.A&&(this.A=new qu(mu,this,7)),this.A}return ph(this,t-Jn(this.zh()),gn((s=u(_n(this,16),26),s||this.zh()),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?pse(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,6,r)}return h=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),h.Nj().Qj(this,du(this),n-Jn(this.zh()),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 6:return Kl(this,null,6,r);case 7:return!this.A&&(this.A=new qu(mu,this,7)),Xa(this.A,t,r)}return o=u(gn((s=u(_n(this,16),26),s||this.zh()),n),66),o.Nj().Rj(this,du(this),n-Jn(this.zh()),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Jv(this);case 4:return this.zj()!=null;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!x8(this);case 7:return!!this.A&&this.A.i!=0}return dh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:l$(this,Hr(n));return;case 2:Vte(this,Hr(n));return;case 5:x7(this,Hr(n));return;case 7:!this.A&&(this.A=new qu(mu,this,7)),_r(this.A),!this.A&&(this.A=new qu(mu,this,7)),fs(this.A,u(n,14));return}yh(this,t-Jn(this.zh()),gn((r=u(_n(this,16),26),r||this.zh()),t),n)},l.zh=function(){return on(),s4t},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:we(this.Cb,179)&&(u(this.Cb,179).tb=null),au(this,null);return;case 2:Y8(this,null),R8(this,this.D);return;case 5:x7(this,null);return;case 7:!this.A&&(this.A=new qu(mu,this,7)),_r(this.A);return}wh(this,t-Jn(this.zh()),gn((n=u(_n(this,16),26),n||this.zh()),t))},l.yj=function(){var t;return this.G==-1&&(this.G=(t=Gl(this),t?Dg(t.Mh(),this):-1)),this.G},l.zj=function(){return null},l.Aj=function(){return Gl(this)},l.vk=function(){return this.v},l.Bj=function(){return Jv(this)},l.Cj=function(){return this.D!=null?this.D:this.B},l.Dj=function(){return this.F},l.wj=function(t){return oae(this,t)},l.wk=function(t){this.v=t},l.xk=function(t){wtt(this,t)},l.yk=function(t){this.C=t},l.Lh=function(t){l$(this,t)},l.Ib=function(){return xH(this)},l.C=null,l.D=null,l.G=-1,O(Tn,"EClassifierImpl",351),M(88,351,{105:1,92:1,90:1,26:1,138:1,147:1,191:1,56:1,108:1,49:1,97:1,88:1,351:1,150:1,473:1,114:1,115:1,676:1},YL),l.uk=function(t){return XKt(this,t.Tg())},l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Jv(this);case 4:return null;case 5:return this.F;case 6:return n?Gl(this):x8(this);case 7:return!this.A&&(this.A=new qu(mu,this,7)),this.A;case 8:return Mn(),!!(this.Bb&256);case 9:return Mn(),!!(this.Bb&512);case 10:return jo(this);case 11:return!this.q&&(this.q=new at(nf,this,11,10)),this.q;case 12:return b4(this);case 13:return fC(this);case 14:return fC(this),this.r;case 15:return b4(this),this.k;case 16:return L4e(this);case 17:return fae(this);case 18:return xd(this);case 19:return rz(this);case 20:return b4(this),this.o;case 21:return!this.s&&(this.s=new at(ju,this,21,17)),this.s;case 22:return jc(this);case 23:return Qse(this)}return ph(this,t-Jn((on(),E2)),gn((s=u(_n(this,16),26),s||E2),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?pse(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,6,r);case 11:return!this.q&&(this.q=new at(nf,this,11,10)),ou(this.q,t,r);case 21:return!this.s&&(this.s=new at(ju,this,21,17)),ou(this.s,t,r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),E2)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),E2)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 6:return Kl(this,null,6,r);case 7:return!this.A&&(this.A=new qu(mu,this,7)),Xa(this.A,t,r);case 11:return!this.q&&(this.q=new at(nf,this,11,10)),Xa(this.q,t,r);case 21:return!this.s&&(this.s=new at(ju,this,21,17)),Xa(this.s,t,r);case 22:return Xa(jc(this),t,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),E2)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),E2)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Jv(this);case 4:return!1;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!x8(this);case 7:return!!this.A&&this.A.i!=0;case 8:return(this.Bb&256)!=0;case 9:return(this.Bb&512)!=0;case 10:return!!this.u&&jc(this.u.a).i!=0&&!(this.n&&ise(this.n));case 11:return!!this.q&&this.q.i!=0;case 12:return b4(this).i!=0;case 13:return fC(this).i!=0;case 14:return fC(this),this.r.i!=0;case 15:return b4(this),this.k.i!=0;case 16:return L4e(this).i!=0;case 17:return fae(this).i!=0;case 18:return xd(this).i!=0;case 19:return rz(this).i!=0;case 20:return b4(this),!!this.o;case 21:return!!this.s&&this.s.i!=0;case 22:return!!this.n&&ise(this.n);case 23:return Qse(this).i!=0}return dh(this,t-Jn((on(),E2)),gn((n=u(_n(this,16),26),n||E2),t))},l.oh=function(t){var n;return n=this.i==null||this.q&&this.q.i!=0?null:dI(this,t),n||a6e(this,t)},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:l$(this,Hr(n));return;case 2:Vte(this,Hr(n));return;case 5:x7(this,Hr(n));return;case 7:!this.A&&(this.A=new qu(mu,this,7)),_r(this.A),!this.A&&(this.A=new qu(mu,this,7)),fs(this.A,u(n,14));return;case 8:Nye(this,It(Mt(n)));return;case 9:Pye(this,It(Mt(n)));return;case 10:pC(jo(this)),fs(jo(this),u(n,14));return;case 11:!this.q&&(this.q=new at(nf,this,11,10)),_r(this.q),!this.q&&(this.q=new at(nf,this,11,10)),fs(this.q,u(n,14));return;case 21:!this.s&&(this.s=new at(ju,this,21,17)),_r(this.s),!this.s&&(this.s=new at(ju,this,21,17)),fs(this.s,u(n,14));return;case 22:_r(jc(this)),fs(jc(this),u(n,14));return}yh(this,t-Jn((on(),E2)),gn((r=u(_n(this,16),26),r||E2),t),n)},l.zh=function(){return on(),E2},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:we(this.Cb,179)&&(u(this.Cb,179).tb=null),au(this,null);return;case 2:Y8(this,null),R8(this,this.D);return;case 5:x7(this,null);return;case 7:!this.A&&(this.A=new qu(mu,this,7)),_r(this.A);return;case 8:Nye(this,!1);return;case 9:Pye(this,!1);return;case 10:this.u&&pC(this.u);return;case 11:!this.q&&(this.q=new at(nf,this,11,10)),_r(this.q);return;case 21:!this.s&&(this.s=new at(ju,this,21,17)),_r(this.s);return;case 22:this.n&&_r(this.n);return}wh(this,t-Jn((on(),E2)),gn((n=u(_n(this,16),26),n||E2),t))},l.Gh=function(){var t,n;if(b4(this),fC(this),L4e(this),fae(this),xd(this),rz(this),Qse(this),A_(dQt(dl(this))),this.s)for(t=0,n=this.s.i;t=0;--n)Te(this,n);return r3e(this,t)},l.Xj=function(){_r(this)},l.oi=function(t,n){return Het(this,t,n)},O(Wi,"EcoreEList",622),M(496,622,Zo,UM),l.ai=function(){return!1},l.aj=function(){return this.c},l.bj=function(){return!1},l.Fk=function(){return!0},l.hi=function(){return!0},l.li=function(t,n){return n},l.ni=function(){return!1},l.c=0,O(Wi,"EObjectEList",496),M(85,496,Zo,Bs),l.bj=function(){return!0},l.Dk=function(){return!1},l.rk=function(){return!0},O(Wi,"EObjectContainmentEList",85),M(545,85,Zo,aj),l.ci=function(){this.b=!0},l.fj=function(){return this.b},l.Xj=function(){var t;_r(this),Ll(this.e)?(t=this.b,this.b=!1,_i(this.e,new xf(this.e,2,this.c,t,!1))):this.b=!1},l.b=!1,O(Wi,"EObjectContainmentEList/Unsettable",545),M(1140,545,Zo,_Ke),l.ii=function(t,n){var r,s;return r=u(q_(this,t,n),87),Ll(this.e)&&Vx(this,new dD(this.a,7,(on(),a4t),ct(n),(s=r.c,we(s,88)?u(s,26):sf),t)),r},l.jj=function(t,n){return tcn(this,u(t,87),n)},l.kj=function(t,n){return ecn(this,u(t,87),n)},l.lj=function(t,n,r){return nhn(this,u(t,87),u(n,87),r)},l.Zi=function(t,n,r,s,o){switch(t){case 3:return x_(this,t,n,r,s,this.i>1);case 5:return x_(this,t,n,r,s,this.i-u(r,15).gc()>0);default:return new N0(this.e,t,this.c,n,r,s,!0)}},l.ij=function(){return!0},l.fj=function(){return ise(this)},l.Xj=function(){_r(this)},O(Tn,"EClassImpl/1",1140),M(1154,1153,g8e),l.ui=function(t){var n,r,s,o,h,d,v;if(r=t.xi(),r!=8){if(s=Fcn(t),s==0)switch(r){case 1:case 9:{v=t.Bi(),v!=null&&(n=dl(u(v,473)),!n.c&&(n.c=new gm),N$(n.c,t.Ai())),d=t.zi(),d!=null&&(o=u(d,473),o.Bb&1||(n=dl(o),!n.c&&(n.c=new gm),Br(n.c,u(t.Ai(),26))));break}case 3:{d=t.zi(),d!=null&&(o=u(d,473),o.Bb&1||(n=dl(o),!n.c&&(n.c=new gm),Br(n.c,u(t.Ai(),26))));break}case 5:{if(d=t.zi(),d!=null)for(h=u(d,14).Kc();h.Ob();)o=u(h.Pb(),473),o.Bb&1||(n=dl(o),!n.c&&(n.c=new gm),Br(n.c,u(t.Ai(),26)));break}case 4:{v=t.Bi(),v!=null&&(o=u(v,473),o.Bb&1||(n=dl(o),!n.c&&(n.c=new gm),N$(n.c,t.Ai())));break}case 6:{if(v=t.Bi(),v!=null)for(h=u(v,14).Kc();h.Ob();)o=u(h.Pb(),473),o.Bb&1||(n=dl(o),!n.c&&(n.c=new gm),N$(n.c,t.Ai()));break}}this.Hk(s)}},l.Hk=function(t){Cct(this,t)},l.b=63,O(Tn,"ESuperAdapter",1154),M(1155,1154,g8e,R$e),l.Hk=function(t){iy(this,t)},O(Tn,"EClassImpl/10",1155),M(1144,696,Zo),l.Vh=function(t,n){return Cse(this,t,n)},l.Wh=function(t){return xit(this,t)},l.Xh=function(t,n){$D(this,t,n)},l.Yh=function(t){cD(this,t)},l.pi=function(t){return fme(this,t)},l.mi=function(t,n){return Vre(this,t,n)},l.lk=function(t,n){throw J(new Fr)},l.Zh=function(){return new C6(this)},l.$h=function(){return new NM(this)},l._h=function(t){return _D(this,t)},l.mk=function(t,n){throw J(new Fr)},l.Wj=function(t){return this},l.fj=function(){return this.i!=0},l.Wb=function(t){throw J(new Fr)},l.Xj=function(){throw J(new Fr)},O(Wi,"EcoreEList/UnmodifiableEList",1144),M(319,1144,Zo,B3),l.ni=function(){return!1},O(Wi,"EcoreEList/UnmodifiableEList/FastCompare",319),M(1147,319,Zo,lnt),l.Xc=function(t){var n,r,s;if(we(t,170)&&(n=u(t,170),r=n.aj(),r!=-1)){for(s=this.i;r4)if(this.wj(t)){if(this.rk()){if(s=u(t,49),r=s.Ug(),v=r==this.b&&(this.Dk()?s.Og(s.Vg(),u(gn(Su(this.b),this.aj()).Yj(),26).Bj())==go(u(gn(Su(this.b),this.aj()),18)).n:-1-s.Vg()==this.aj()),this.Ek()&&!v&&!r&&s.Zg()){for(o=0;o1||s==-1)):!1},l.Dk=function(){var t,n,r;return n=gn(Su(this.b),this.aj()),we(n,99)?(t=u(n,18),r=go(t),!!r):!1},l.Ek=function(){var t,n;return n=gn(Su(this.b),this.aj()),we(n,99)?(t=u(n,18),(t.Bb&so)!=0):!1},l.Xc=function(t){var n,r,s,o;if(s=this.Qi(t),s>=0)return s;if(this.Fk()){for(r=0,o=this.Vi();r=0;--t)xI(this,t,this.Oi(t));return this.Wi()},l.Qc=function(t){var n;if(this.Ek())for(n=this.Vi()-1;n>=0;--n)xI(this,n,this.Oi(n));return this.Xi(t)},l.Xj=function(){pC(this)},l.oi=function(t,n){return EJe(this,t,n)},O(Wi,"DelegatingEcoreEList",742),M(1150,742,w8e,$Ue),l.Hi=function(t,n){TKt(this,t,u(n,26))},l.Ii=function(t){wWt(this,u(t,26))},l.Oi=function(t){var n,r;return n=u(Te(jc(this.a),t),87),r=n.c,we(r,88)?u(r,26):(on(),sf)},l.Ti=function(t){var n,r;return n=u(ay(jc(this.a),t),87),r=n.c,we(r,88)?u(r,26):(on(),sf)},l.Ui=function(t,n){return _un(this,t,u(n,26))},l.ai=function(){return!1},l.Zi=function(t,n,r,s,o){return null},l.Ji=function(){return new j$e(this)},l.Ki=function(){_r(jc(this.a))},l.Li=function(t){return trt(this,t)},l.Mi=function(t){var n,r;for(r=t.Kc();r.Ob();)if(n=r.Pb(),!trt(this,n))return!1;return!0},l.Ni=function(t){var n,r,s;if(we(t,15)&&(s=u(t,15),s.gc()==jc(this.a).i)){for(n=s.Kc(),r=new rr(this);n.Ob();)if(je(n.Pb())!==je(pr(r)))return!1;return!0}return!1},l.Pi=function(){var t,n,r,s,o;for(r=1,n=new rr(jc(this.a));n.e!=n.i.gc();)t=u(pr(n),87),s=(o=t.c,we(o,88)?u(o,26):(on(),sf)),r=31*r+(s?xv(s):0);return r},l.Qi=function(t){var n,r,s,o;for(s=0,r=new rr(jc(this.a));r.e!=r.i.gc();){if(n=u(pr(r),87),je(t)===je((o=n.c,we(o,88)?u(o,26):(on(),sf))))return s;++s}return-1},l.Ri=function(){return jc(this.a).i==0},l.Si=function(){return null},l.Vi=function(){return jc(this.a).i},l.Wi=function(){var t,n,r,s,o,h;for(h=jc(this.a).i,o=Me(Yn,yt,1,h,5,1),r=0,n=new rr(jc(this.a));n.e!=n.i.gc();)t=u(pr(n),87),o[r++]=(s=t.c,we(s,88)?u(s,26):(on(),sf));return o},l.Xi=function(t){var n,r,s,o,h,d,v;for(v=jc(this.a).i,t.lengthv&&cs(t,v,null),s=0,r=new rr(jc(this.a));r.e!=r.i.gc();)n=u(pr(r),87),h=(d=n.c,we(d,88)?u(d,26):(on(),sf)),cs(t,s++,h);return t},l.Yi=function(){var t,n,r,s,o;for(o=new bg,o.a+="[",t=jc(this.a),n=0,s=jc(this.a).i;n>16,o>=0?pse(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,6,r);case 9:return!this.a&&(this.a=new at(J0,this,9,5)),ou(this.a,t,r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),T2)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),T2)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 6:return Kl(this,null,6,r);case 7:return!this.A&&(this.A=new qu(mu,this,7)),Xa(this.A,t,r);case 9:return!this.a&&(this.a=new at(J0,this,9,5)),Xa(this.a,t,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),T2)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),T2)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Jv(this);case 4:return!!yye(this);case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!x8(this);case 7:return!!this.A&&this.A.i!=0;case 8:return(this.Bb&256)==0;case 9:return!!this.a&&this.a.i!=0}return dh(this,t-Jn((on(),T2)),gn((n=u(_n(this,16),26),n||T2),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:l$(this,Hr(n));return;case 2:Vte(this,Hr(n));return;case 5:x7(this,Hr(n));return;case 7:!this.A&&(this.A=new qu(mu,this,7)),_r(this.A),!this.A&&(this.A=new qu(mu,this,7)),fs(this.A,u(n,14));return;case 8:bH(this,It(Mt(n)));return;case 9:!this.a&&(this.a=new at(J0,this,9,5)),_r(this.a),!this.a&&(this.a=new at(J0,this,9,5)),fs(this.a,u(n,14));return}yh(this,t-Jn((on(),T2)),gn((r=u(_n(this,16),26),r||T2),t),n)},l.zh=function(){return on(),T2},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:we(this.Cb,179)&&(u(this.Cb,179).tb=null),au(this,null);return;case 2:Y8(this,null),R8(this,this.D);return;case 5:x7(this,null);return;case 7:!this.A&&(this.A=new qu(mu,this,7)),_r(this.A);return;case 8:bH(this,!0);return;case 9:!this.a&&(this.a=new at(J0,this,9,5)),_r(this.a);return}wh(this,t-Jn((on(),T2)),gn((n=u(_n(this,16),26),n||T2),t))},l.Gh=function(){var t,n;if(this.a)for(t=0,n=this.a.i;t>16==5?u(this.Cb,671):null}return ph(this,t-Jn((on(),Yg)),gn((s=u(_n(this,16),26),s||Yg),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 5:return this.Cb&&(r=(o=this.Db>>16,o>=0?Wit(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,5,r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),Yg)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),Yg)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 5:return Kl(this,null,5,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Yg)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Yg)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.d!=0;case 3:return!!this.b;case 4:return this.c!=null;case 5:return!!(this.Db>>16==5&&u(this.Cb,671))}return dh(this,t-Jn((on(),Yg)),gn((n=u(_n(this,16),26),n||Yg),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:au(this,Hr(n));return;case 2:Qre(this,u(n,19).a);return;case 3:zat(this,u(n,1940));return;case 4:Jre(this,Hr(n));return}yh(this,t-Jn((on(),Yg)),gn((r=u(_n(this,16),26),r||Yg),t),n)},l.zh=function(){return on(),Yg},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:au(this,null);return;case 2:Qre(this,0);return;case 3:zat(this,null);return;case 4:Jre(this,null);return}wh(this,t-Jn((on(),Yg)),gn((n=u(_n(this,16),26),n||Yg),t))},l.Ib=function(){var t;return t=this.c,t??this.zb},l.b=null,l.c=null,l.d=0,O(Tn,"EEnumLiteralImpl",573);var M3n=ss(Tn,"EFactoryImpl/InternalEDateTimeFormat");M(489,1,{2015:1},aM),O(Tn,"EFactoryImpl/1ClientInternalEDateTimeFormat",489),M(241,115,{105:1,92:1,90:1,87:1,56:1,108:1,49:1,97:1,241:1,114:1,115:1},uv),l.Sg=function(t,n,r){var s;return r=Kl(this,t,n,r),this.e&&we(t,170)&&(s=nz(this,this.e),s!=this.c&&(r=E7(this,s,r))),r},l._g=function(t,n,r){var s;switch(t){case 0:return this.f;case 1:return!this.d&&(this.d=new Bs(Eo,this,1)),this.d;case 2:return n?dz(this):this.c;case 3:return this.b;case 4:return this.e;case 5:return n?ose(this):this.a}return ph(this,t-Jn((on(),Ow)),gn((s=u(_n(this,16),26),s||Ow),t),n,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return Vnt(this,null,r);case 1:return!this.d&&(this.d=new Bs(Eo,this,1)),Xa(this.d,t,r);case 3:return qnt(this,null,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Ow)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Ow)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.f;case 1:return!!this.d&&this.d.i!=0;case 2:return!!this.c;case 3:return!!this.b;case 4:return!!this.e;case 5:return!!this.a}return dh(this,t-Jn((on(),Ow)),gn((n=u(_n(this,16),26),n||Ow),t))},l.sh=function(t,n){var r;switch(t){case 0:hst(this,u(n,87));return;case 1:!this.d&&(this.d=new Bs(Eo,this,1)),_r(this.d),!this.d&&(this.d=new Bs(Eo,this,1)),fs(this.d,u(n,14));return;case 3:J3e(this,u(n,87));return;case 4:b4e(this,u(n,836));return;case 5:I8(this,u(n,138));return}yh(this,t-Jn((on(),Ow)),gn((r=u(_n(this,16),26),r||Ow),t),n)},l.zh=function(){return on(),Ow},l.Bh=function(t){var n;switch(t){case 0:hst(this,null);return;case 1:!this.d&&(this.d=new Bs(Eo,this,1)),_r(this.d);return;case 3:J3e(this,null);return;case 4:b4e(this,null);return;case 5:I8(this,null);return}wh(this,t-Jn((on(),Ow)),gn((n=u(_n(this,16),26),n||Ow),t))},l.Ib=function(){var t;return t=new Fl(_f(this)),t.a+=" (expression: ",bae(this,t),t.a+=")",t.a};var FAe;O(Tn,"EGenericTypeImpl",241),M(1969,1964,yG),l.Xh=function(t,n){RUe(this,t,n)},l.lk=function(t,n){return RUe(this,this.gc(),t),n},l.pi=function(t){return s1(this.Gi(),t)},l.Zh=function(){return this.$h()},l.Gi=function(){return new G$e(this)},l.$h=function(){return this._h(0)},l._h=function(t){return this.Gi().Zc(t)},l.mk=function(t,n){return Xm(this,t,!0),n},l.ii=function(t,n){var r,s;return s=vse(this,n),r=this.Zc(t),r.Rb(s),s},l.ji=function(t,n){var r;Xm(this,n,!0),r=this.Zc(t),r.Rb(n)},O(Wi,"AbstractSequentialInternalEList",1969),M(486,1969,yG,OM),l.pi=function(t){return s1(this.Gi(),t)},l.Zh=function(){return this.b==null?(wg(),wg(),lN):this.Jk()},l.Gi=function(){return new cVe(this.a,this.b)},l.$h=function(){return this.b==null?(wg(),wg(),lN):this.Jk()},l._h=function(t){var n,r;if(this.b==null){if(t<0||t>1)throw J(new Do($C+t+", size=0"));return wg(),wg(),lN}for(r=this.Jk(),n=0;n0;)if(n=this.c[--this.d],(!this.e||n.Gj()!=AE||n.aj()!=0)&&(!this.Mk()||this.b.mh(n))){if(h=this.b.bh(n,this.Lk()),this.f=(ho(),u(n,66).Oj()),this.f||n.$j()){if(this.Lk()?(s=u(h,15),this.k=s):(s=u(h,69),this.k=this.j=s),we(this.k,54)?(this.o=this.k.gc(),this.n=this.o):this.p=this.j?this.j._h(this.k.gc()):this.k.Zc(this.k.gc()),this.p?rat(this,this.p):pat(this))return o=this.p?this.p.Ub():this.j?this.j.pi(--this.n):this.k.Xb(--this.n),this.f?(t=u(o,72),t.ak(),r=t.dd(),this.i=r):(r=o,this.i=r),this.g=-3,!0}else if(h!=null)return this.k=null,this.p=null,r=h,this.i=r,this.g=-2,!0}return this.k=null,this.p=null,this.g=-1,!1}else return o=this.p?this.p.Ub():this.j?this.j.pi(--this.n):this.k.Xb(--this.n),this.f?(t=u(o,72),t.ak(),r=t.dd(),this.i=r):(r=o,this.i=r),this.g=-3,!0}},l.Pb=function(){return aH(this)},l.Tb=function(){return this.a},l.Ub=function(){var t;if(this.g<-1||this.Sb())return--this.a,this.g=0,t=this.i,this.Sb(),t;throw J(new xc)},l.Vb=function(){return this.a-1},l.Qb=function(){throw J(new Fr)},l.Lk=function(){return!1},l.Wb=function(t){throw J(new Fr)},l.Mk=function(){return!0},l.a=0,l.d=0,l.f=!1,l.g=0,l.n=0,l.o=0;var lN;O(Wi,"EContentsEList/FeatureIteratorImpl",279),M(697,279,kG,kbe),l.Lk=function(){return!0},O(Wi,"EContentsEList/ResolvingFeatureIteratorImpl",697),M(1157,697,kG,_Ue),l.Mk=function(){return!1},O(Tn,"ENamedElementImpl/1/1",1157),M(1158,279,kG,TUe),l.Mk=function(){return!1},O(Tn,"ENamedElementImpl/1/2",1158),M(36,143,XI,Hm,Tre,oa,jre,N0,xf,_me,JXe,Cme,eQe,Xwe,tQe,Lme,nQe,Qwe,rQe,Sme,iQe,p_,dD,nre,Ame,sQe,Zwe,aQe),l._i=function(){return ume(this)},l.gj=function(){var t;return t=ume(this),t?t.zj():null},l.yi=function(t){return this.b==-1&&this.a&&(this.b=this.c.Xg(this.a.aj(),this.a.Gj())),this.c.Og(this.b,t)},l.Ai=function(){return this.c},l.hj=function(){var t;return t=ume(this),t?t.Kj():!1},l.b=-1,O(Tn,"ENotificationImpl",36),M(399,284,{105:1,92:1,90:1,147:1,191:1,56:1,59:1,108:1,472:1,49:1,97:1,150:1,399:1,284:1,114:1,115:1},Uee),l.Qg=function(t){return Xit(this,t)},l._g=function(t,n,r){var s,o,h;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Mn(),!!(this.Bb&256);case 3:return Mn(),!!(this.Bb&512);case 4:return ct(this.s);case 5:return ct(this.t);case 6:return Mn(),h=this.t,h>1||h==-1;case 7:return Mn(),o=this.s,o>=1;case 8:return n?$h(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?u(this.Cb,26):null;case 11:return!this.d&&(this.d=new qu(mu,this,11)),this.d;case 12:return!this.c&&(this.c=new at(Iw,this,12,10)),this.c;case 13:return!this.a&&(this.a=new jM(this,this)),this.a;case 14:return gl(this)}return ph(this,t-Jn((on(),Xg)),gn((s=u(_n(this,16),26),s||Xg),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 10:return this.Cb&&(r=(o=this.Db>>16,o>=0?Xit(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,10,r);case 12:return!this.c&&(this.c=new at(Iw,this,12,10)),ou(this.c,t,r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),Xg)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),Xg)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 9:return zne(this,r);case 10:return Kl(this,null,10,r);case 11:return!this.d&&(this.d=new qu(mu,this,11)),Xa(this.d,t,r);case 12:return!this.c&&(this.c=new at(Iw,this,12,10)),Xa(this.c,t,r);case 14:return Xa(gl(this),t,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Xg)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Xg)),t,r)},l.lh=function(t){var n,r,s;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return s=this.t,s>1||s==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mv(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mv(this.q).i==0);case 10:return!!(this.Db>>16==10&&u(this.Cb,26));case 11:return!!this.d&&this.d.i!=0;case 12:return!!this.c&&this.c.i!=0;case 13:return!!this.a&&gl(this.a.a).i!=0&&!(this.b&&sse(this.b));case 14:return!!this.b&&sse(this.b)}return dh(this,t-Jn((on(),Xg)),gn((n=u(_n(this,16),26),n||Xg),t))},l.sh=function(t,n){var r,s;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:au(this,Hr(n));return;case 2:Lg(this,It(Mt(n)));return;case 3:Mg(this,It(Mt(n)));return;case 4:Cg(this,u(n,19).a);return;case 5:Wm(this,u(n,19).a);return;case 8:cb(this,u(n,138));return;case 9:s=$1(this,u(n,87),null),s&&s.Fi();return;case 11:!this.d&&(this.d=new qu(mu,this,11)),_r(this.d),!this.d&&(this.d=new qu(mu,this,11)),fs(this.d,u(n,14));return;case 12:!this.c&&(this.c=new at(Iw,this,12,10)),_r(this.c),!this.c&&(this.c=new at(Iw,this,12,10)),fs(this.c,u(n,14));return;case 13:!this.a&&(this.a=new jM(this,this)),pC(this.a),!this.a&&(this.a=new jM(this,this)),fs(this.a,u(n,14));return;case 14:_r(gl(this)),fs(gl(this),u(n,14));return}yh(this,t-Jn((on(),Xg)),gn((r=u(_n(this,16),26),r||Xg),t),n)},l.zh=function(){return on(),Xg},l.Bh=function(t){var n,r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:au(this,null);return;case 2:Lg(this,!0);return;case 3:Mg(this,!0);return;case 4:Cg(this,0);return;case 5:Wm(this,1);return;case 8:cb(this,null);return;case 9:r=$1(this,null,null),r&&r.Fi();return;case 11:!this.d&&(this.d=new qu(mu,this,11)),_r(this.d);return;case 12:!this.c&&(this.c=new at(Iw,this,12,10)),_r(this.c);return;case 13:this.a&&pC(this.a);return;case 14:this.b&&_r(this.b);return}wh(this,t-Jn((on(),Xg)),gn((n=u(_n(this,16),26),n||Xg),t))},l.Gh=function(){var t,n;if(this.c)for(t=0,n=this.c.i;tv&&cs(t,v,null),s=0,r=new rr(gl(this.a));r.e!=r.i.gc();)n=u(pr(r),87),h=(d=n.c,d||(on(),Z1)),cs(t,s++,h);return t},l.Yi=function(){var t,n,r,s,o;for(o=new bg,o.a+="[",t=gl(this.a),n=0,s=gl(this.a).i;n1);case 5:return x_(this,t,n,r,s,this.i-u(r,15).gc()>0);default:return new N0(this.e,t,this.c,n,r,s,!0)}},l.ij=function(){return!0},l.fj=function(){return sse(this)},l.Xj=function(){_r(this)},O(Tn,"EOperationImpl/2",1341),M(498,1,{1938:1,498:1},zqe),O(Tn,"EPackageImpl/1",498),M(16,85,Zo,at),l.zk=function(){return this.d},l.Ak=function(){return this.b},l.Dk=function(){return!0},l.b=0,O(Wi,"EObjectContainmentWithInverseEList",16),M(353,16,Zo,S6),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectContainmentWithInverseEList/Resolving",353),M(298,353,Zo,Pm),l.ci=function(){this.a.tb=null},O(Tn,"EPackageImpl/2",298),M(1228,1,{},YB),O(Tn,"EPackageImpl/3",1228),M(718,43,y4,Epe),l._b=function(t){return fa(t)?rre(this,t):!!$o(this.f,t)},O(Tn,"EPackageRegistryImpl",718),M(509,284,{105:1,92:1,90:1,147:1,191:1,56:1,2017:1,108:1,472:1,49:1,97:1,150:1,509:1,284:1,114:1,115:1},Wee),l.Qg=function(t){return Qit(this,t)},l._g=function(t,n,r){var s,o,h;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Mn(),!!(this.Bb&256);case 3:return Mn(),!!(this.Bb&512);case 4:return ct(this.s);case 5:return ct(this.t);case 6:return Mn(),h=this.t,h>1||h==-1;case 7:return Mn(),o=this.s,o>=1;case 8:return n?$h(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?u(this.Cb,59):null}return ph(this,t-Jn((on(),Ky)),gn((s=u(_n(this,16),26),s||Ky),t),n,r)},l.hh=function(t,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),ou(this.Ab,t,r);case 10:return this.Cb&&(r=(o=this.Db>>16,o>=0?Qit(this,r):this.Cb.ih(this,-1-o,null,r))),Kl(this,t,10,r)}return h=u(gn((s=u(_n(this,16),26),s||(on(),Ky)),n),66),h.Nj().Qj(this,du(this),n-Jn((on(),Ky)),t,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 9:return zne(this,r);case 10:return Kl(this,null,10,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Ky)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Ky)),t,r)},l.lh=function(t){var n,r,s;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return s=this.t,s>1||s==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mv(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mv(this.q).i==0);case 10:return!!(this.Db>>16==10&&u(this.Cb,59))}return dh(this,t-Jn((on(),Ky)),gn((n=u(_n(this,16),26),n||Ky),t))},l.zh=function(){return on(),Ky},O(Tn,"EParameterImpl",509),M(99,449,{105:1,92:1,90:1,147:1,191:1,56:1,18:1,170:1,66:1,108:1,472:1,49:1,97:1,150:1,99:1,449:1,284:1,114:1,115:1,677:1},Cbe),l._g=function(t,n,r){var s,o,h,d;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Mn(),!!(this.Bb&256);case 3:return Mn(),!!(this.Bb&512);case 4:return ct(this.s);case 5:return ct(this.t);case 6:return Mn(),d=this.t,d>1||d==-1;case 7:return Mn(),o=this.s,o>=1;case 8:return n?$h(this):this.r;case 9:return this.q;case 10:return Mn(),!!(this.Bb&Sf);case 11:return Mn(),!!(this.Bb&ky);case 12:return Mn(),!!(this.Bb&dy);case 13:return this.j;case 14:return b7(this);case 15:return Mn(),!!(this.Bb&Zu);case 16:return Mn(),!!(this.Bb&Ed);case 17:return Fm(this);case 18:return Mn(),!!(this.Bb&_c);case 19:return Mn(),h=go(this),!!(h&&h.Bb&_c);case 20:return Mn(),!!(this.Bb&so);case 21:return n?go(this):this.b;case 22:return n?uye(this):AZe(this);case 23:return!this.a&&(this.a=new $3(Vy,this,23)),this.a}return ph(this,t-Jn((on(),n5)),gn((s=u(_n(this,16),26),s||n5),t),n,r)},l.lh=function(t){var n,r,s,o;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return o=this.t,o>1||o==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mv(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mv(this.q).i==0);case 10:return(this.Bb&Sf)==0;case 11:return(this.Bb&ky)!=0;case 12:return(this.Bb&dy)!=0;case 13:return this.j!=null;case 14:return b7(this)!=null;case 15:return(this.Bb&Zu)!=0;case 16:return(this.Bb&Ed)!=0;case 17:return!!Fm(this);case 18:return(this.Bb&_c)!=0;case 19:return s=go(this),!!s&&(s.Bb&_c)!=0;case 20:return(this.Bb&so)==0;case 21:return!!this.b;case 22:return!!AZe(this);case 23:return!!this.a&&this.a.i!=0}return dh(this,t-Jn((on(),n5)),gn((n=u(_n(this,16),26),n||n5),t))},l.sh=function(t,n){var r,s;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:bre(this,Hr(n));return;case 2:Lg(this,It(Mt(n)));return;case 3:Mg(this,It(Mt(n)));return;case 4:Cg(this,u(n,19).a);return;case 5:Wm(this,u(n,19).a);return;case 8:cb(this,u(n,138));return;case 9:s=$1(this,u(n,87),null),s&&s.Fi();return;case 10:J8(this,It(Mt(n)));return;case 11:n7(this,It(Mt(n)));return;case 12:e7(this,It(Mt(n)));return;case 13:N2e(this,Hr(n));return;case 15:t7(this,It(Mt(n)));return;case 16:r7(this,It(Mt(n)));return;case 18:Men(this,It(Mt(n)));return;case 20:$ye(this,It(Mt(n)));return;case 21:jme(this,u(n,18));return;case 23:!this.a&&(this.a=new $3(Vy,this,23)),_r(this.a),!this.a&&(this.a=new $3(Vy,this,23)),fs(this.a,u(n,14));return}yh(this,t-Jn((on(),n5)),gn((r=u(_n(this,16),26),r||n5),t),n)},l.zh=function(){return on(),n5},l.Bh=function(t){var n,r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:we(this.Cb,88)&&iy(dl(u(this.Cb,88)),4),au(this,null);return;case 2:Lg(this,!0);return;case 3:Mg(this,!0);return;case 4:Cg(this,0);return;case 5:Wm(this,1);return;case 8:cb(this,null);return;case 9:r=$1(this,null,null),r&&r.Fi();return;case 10:J8(this,!0);return;case 11:n7(this,!1);return;case 12:e7(this,!1);return;case 13:this.i=null,X$(this,null);return;case 15:t7(this,!1);return;case 16:r7(this,!1);return;case 18:jye(this,!1),we(this.Cb,88)&&iy(dl(u(this.Cb,88)),2);return;case 20:$ye(this,!0);return;case 21:jme(this,null);return;case 23:!this.a&&(this.a=new $3(Vy,this,23)),_r(this.a);return}wh(this,t-Jn((on(),n5)),gn((n=u(_n(this,16),26),n||n5),t))},l.Gh=function(){uye(this),m8(Po((Yu(),Oa),this)),$h(this),this.Bb|=1},l.Lj=function(){return go(this)},l.qk=function(){var t;return t=go(this),!!t&&(t.Bb&_c)!=0},l.rk=function(){return(this.Bb&_c)!=0},l.sk=function(){return(this.Bb&so)!=0},l.nk=function(t,n){return this.c=null,Iye(this,t,n)},l.Ib=function(){var t;return this.Db&64?lz(this):(t=new Ph(lz(this)),t.a+=" (containment: ",vg(t,(this.Bb&_c)!=0),t.a+=", resolveProxies: ",vg(t,(this.Bb&so)!=0),t.a+=")",t.a)},O(Tn,"EReferenceImpl",99),M(548,115,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1,548:1,114:1,115:1},UZ),l.Fb=function(t){return this===t},l.cd=function(){return this.b},l.dd=function(){return this.c},l.Hb=function(){return xv(this)},l.Uh=function(t){PQt(this,Hr(t))},l.ed=function(t){return EQt(this,Hr(t))},l._g=function(t,n,r){var s;switch(t){case 0:return this.b;case 1:return this.c}return ph(this,t-Jn((on(),oo)),gn((s=u(_n(this,16),26),s||oo),t),n,r)},l.lh=function(t){var n;switch(t){case 0:return this.b!=null;case 1:return this.c!=null}return dh(this,t-Jn((on(),oo)),gn((n=u(_n(this,16),26),n||oo),t))},l.sh=function(t,n){var r;switch(t){case 0:BQt(this,Hr(n));return;case 1:Bme(this,Hr(n));return}yh(this,t-Jn((on(),oo)),gn((r=u(_n(this,16),26),r||oo),t),n)},l.zh=function(){return on(),oo},l.Bh=function(t){var n;switch(t){case 0:Pme(this,null);return;case 1:Bme(this,null);return}wh(this,t-Jn((on(),oo)),gn((n=u(_n(this,16),26),n||oo),t))},l.Sh=function(){var t;return this.a==-1&&(t=this.b,this.a=t==null?0:Ig(t)),this.a},l.Th=function(t){this.a=t},l.Ib=function(){var t;return this.Db&64?_f(this):(t=new Ph(_f(this)),t.a+=" (key: ",To(t,this.b),t.a+=", value: ",To(t,this.c),t.a+=")",t.a)},l.a=-1,l.b=null,l.c=null;var wc=O(Tn,"EStringToStringMapEntryImpl",548),b4t=ss(Wi,"FeatureMap/Entry/Internal");M(565,1,xG),l.Ok=function(t){return this.Pk(u(t,49))},l.Pk=function(t){return this.Ok(t)},l.Fb=function(t){var n,r;return this===t?!0:we(t,72)?(n=u(t,72),n.ak()==this.c?(r=this.dd(),r==null?n.dd()==null:Ci(r,n.dd())):!1):!1},l.ak=function(){return this.c},l.Hb=function(){var t;return t=this.dd(),Xi(this.c)^(t==null?0:Xi(t))},l.Ib=function(){var t,n;return t=this.c,n=Gl(t.Hj()).Ph(),t.ne(),(n!=null&&n.length!=0?n+":"+t.ne():t.ne())+"="+this.dd()},O(Tn,"EStructuralFeatureImpl/BasicFeatureMapEntry",565),M(776,565,xG,Pbe),l.Pk=function(t){return new Pbe(this.c,t)},l.dd=function(){return this.a},l.Qk=function(t,n,r){return Zin(this,t,this.a,n,r)},l.Rk=function(t,n,r){return Jin(this,t,this.a,n,r)},O(Tn,"EStructuralFeatureImpl/ContainmentUpdatingFeatureMapEntry",776),M(1314,1,{},Gqe),l.Pj=function(t,n,r,s,o){var h;return h=u(A8(t,this.b),215),h.nl(this.a).Wj(s)},l.Qj=function(t,n,r,s,o){var h;return h=u(A8(t,this.b),215),h.el(this.a,s,o)},l.Rj=function(t,n,r,s,o){var h;return h=u(A8(t,this.b),215),h.fl(this.a,s,o)},l.Sj=function(t,n,r){var s;return s=u(A8(t,this.b),215),s.nl(this.a).fj()},l.Tj=function(t,n,r,s){var o;o=u(A8(t,this.b),215),o.nl(this.a).Wb(s)},l.Uj=function(t,n,r){return u(A8(t,this.b),215).nl(this.a)},l.Vj=function(t,n,r){var s;s=u(A8(t,this.b),215),s.nl(this.a).Xj()},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateFeatureMapDelegator",1314),M(89,1,{},yg,K2,xg,Q2),l.Pj=function(t,n,r,s,o){var h;if(h=n.Ch(r),h==null&&n.Dh(r,h=Ez(this,t)),!o)switch(this.e){case 50:case 41:return u(h,589).sj();case 40:return u(h,215).kl()}return h},l.Qj=function(t,n,r,s,o){var h,d;return d=n.Ch(r),d==null&&n.Dh(r,d=Ez(this,t)),h=u(d,69).lk(s,o),h},l.Rj=function(t,n,r,s,o){var h;return h=n.Ch(r),h!=null&&(o=u(h,69).mk(s,o)),o},l.Sj=function(t,n,r){var s;return s=n.Ch(r),s!=null&&u(s,76).fj()},l.Tj=function(t,n,r,s){var o;o=u(n.Ch(r),76),!o&&n.Dh(r,o=Ez(this,t)),o.Wb(s)},l.Uj=function(t,n,r){var s,o;return o=n.Ch(r),o==null&&n.Dh(r,o=Ez(this,t)),we(o,76)?u(o,76):(s=u(n.Ch(r),15),new z$e(s))},l.Vj=function(t,n,r){var s;s=u(n.Ch(r),76),!s&&n.Dh(r,s=Ez(this,t)),s.Xj()},l.b=0,l.e=0,O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateMany",89),M(504,1,{}),l.Qj=function(t,n,r,s,o){throw J(new Fr)},l.Rj=function(t,n,r,s,o){throw J(new Fr)},l.Uj=function(t,n,r){return new FYe(this,t,n,r)};var b0;O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingle",504),M(1331,1,Qce,FYe),l.Wj=function(t){return this.a.Pj(this.c,this.d,this.b,t,!0)},l.fj=function(){return this.a.Sj(this.c,this.d,this.b)},l.Wb=function(t){this.a.Tj(this.c,this.d,this.b,t)},l.Xj=function(){this.a.Vj(this.c,this.d,this.b)},l.b=0,O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingle/1",1331),M(769,504,{},vwe),l.Pj=function(t,n,r,s,o){return rae(t,t.eh(),t.Vg())==this.b?this.sk()&&s?Hse(t):t.eh():null},l.Qj=function(t,n,r,s,o){var h,d;return t.eh()&&(o=(h=t.Vg(),h>=0?t.Qg(o):t.eh().ih(t,-1-h,null,o))),d=Ji(t.Tg(),this.e),t.Sg(s,d,o)},l.Rj=function(t,n,r,s,o){var h;return h=Ji(t.Tg(),this.e),t.Sg(null,h,o)},l.Sj=function(t,n,r){var s;return s=Ji(t.Tg(),this.e),!!t.eh()&&t.Vg()==s},l.Tj=function(t,n,r,s){var o,h,d,v,x;if(s!=null&&!oae(this.a,s))throw J(new Wx(EG+(we(s,56)?Q3e(u(s,56).Tg()):kme(pl(s)))+TG+this.a+"'"));if(o=t.eh(),d=Ji(t.Tg(),this.e),je(s)!==je(o)||t.Vg()!=d&&s!=null){if(o7(t,u(s,56)))throw J(new Ln(FC+t.Ib()));x=null,o&&(x=(h=t.Vg(),h>=0?t.Qg(x):t.eh().ih(t,-1-h,null,x))),v=u(s,49),v&&(x=v.gh(t,Ji(v.Tg(),this.b),null,x)),x=t.Sg(v,d,x),x&&x.Fi()}else t.Lg()&&t.Mg()&&_i(t,new oa(t,1,d,s,s))},l.Vj=function(t,n,r){var s,o,h,d;s=t.eh(),s?(d=(o=t.Vg(),o>=0?t.Qg(null):t.eh().ih(t,-1-o,null,null)),h=Ji(t.Tg(),this.e),d=t.Sg(null,h,d),d&&d.Fi()):t.Lg()&&t.Mg()&&_i(t,new p_(t,1,this.e,null,null))},l.sk=function(){return!1},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainer",769),M(1315,769,{},MWe),l.sk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainerResolving",1315),M(563,504,{}),l.Pj=function(t,n,r,s,o){var h;return h=n.Ch(r),h==null?this.b:je(h)===je(b0)?null:h},l.Sj=function(t,n,r){var s;return s=n.Ch(r),s!=null&&(je(s)===je(b0)||!Ci(s,this.b))},l.Tj=function(t,n,r,s){var o,h;t.Lg()&&t.Mg()?(o=(h=n.Ch(r),h==null?this.b:je(h)===je(b0)?null:h),s==null?this.c!=null?(n.Dh(r,null),s=this.b):this.b!=null?n.Dh(r,b0):n.Dh(r,null):(this.Sk(s),n.Dh(r,s)),_i(t,this.d.Tk(t,1,this.e,o,s))):s==null?this.c!=null?n.Dh(r,null):this.b!=null?n.Dh(r,b0):n.Dh(r,null):(this.Sk(s),n.Dh(r,s))},l.Vj=function(t,n,r){var s,o;t.Lg()&&t.Mg()?(s=(o=n.Ch(r),o==null?this.b:je(o)===je(b0)?null:o),n.Eh(r),_i(t,this.d.Tk(t,1,this.e,s,this.b))):n.Eh(r)},l.Sk=function(t){throw J(new Z$e)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData",563),M(M4,1,{},XB),l.Tk=function(t,n,r,s,o){return new p_(t,n,r,s,o)},l.Uk=function(t,n,r,s,o,h){return new nre(t,n,r,s,o,h)};var jAe,$Ae,HAe,zAe,GAe,qAe,VAe,_fe,UAe;O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator",M4),M(1332,M4,{},QB),l.Tk=function(t,n,r,s,o){return new Zwe(t,n,r,It(Mt(s)),It(Mt(o)))},l.Uk=function(t,n,r,s,o,h){return new aQe(t,n,r,It(Mt(s)),It(Mt(o)),h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/1",1332),M(1333,M4,{},ZB),l.Tk=function(t,n,r,s,o){return new _me(t,n,r,u(s,217).a,u(o,217).a)},l.Uk=function(t,n,r,s,o,h){return new JXe(t,n,r,u(s,217).a,u(o,217).a,h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/2",1333),M(1334,M4,{},_x),l.Tk=function(t,n,r,s,o){return new Cme(t,n,r,u(s,172).a,u(o,172).a)},l.Uk=function(t,n,r,s,o,h){return new eQe(t,n,r,u(s,172).a,u(o,172).a,h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/3",1334),M(1335,M4,{},JB),l.Tk=function(t,n,r,s,o){return new Xwe(t,n,r,Ue(ft(s)),Ue(ft(o)))},l.Uk=function(t,n,r,s,o,h){return new tQe(t,n,r,Ue(ft(s)),Ue(ft(o)),h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/4",1335),M(1336,M4,{},eR),l.Tk=function(t,n,r,s,o){return new Lme(t,n,r,u(s,155).a,u(o,155).a)},l.Uk=function(t,n,r,s,o,h){return new nQe(t,n,r,u(s,155).a,u(o,155).a,h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/5",1336),M(1337,M4,{},WZ),l.Tk=function(t,n,r,s,o){return new Qwe(t,n,r,u(s,19).a,u(o,19).a)},l.Uk=function(t,n,r,s,o,h){return new rQe(t,n,r,u(s,19).a,u(o,19).a,h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/6",1337),M(1338,M4,{},Cx),l.Tk=function(t,n,r,s,o){return new Sme(t,n,r,u(s,162).a,u(o,162).a)},l.Uk=function(t,n,r,s,o,h){return new iQe(t,n,r,u(s,162).a,u(o,162).a,h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/7",1338),M(1339,M4,{},Sx),l.Tk=function(t,n,r,s,o){return new Ame(t,n,r,u(s,184).a,u(o,184).a)},l.Uk=function(t,n,r,s,o,h){return new sQe(t,n,r,u(s,184).a,u(o,184).a,h)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/8",1339),M(1317,563,{},jYe),l.Sk=function(t){if(!this.a.wj(t))throw J(new Wx(EG+pl(t)+TG+this.a+"'"))},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataDynamic",1317),M(1318,563,{},SKe),l.Sk=function(t){},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataStatic",1318),M(770,563,{}),l.Sj=function(t,n,r){var s;return s=n.Ch(r),s!=null},l.Tj=function(t,n,r,s){var o,h;t.Lg()&&t.Mg()?(o=!0,h=n.Ch(r),h==null?(o=!1,h=this.b):je(h)===je(b0)&&(h=null),s==null?this.c!=null?(n.Dh(r,null),s=this.b):n.Dh(r,b0):(this.Sk(s),n.Dh(r,s)),_i(t,this.d.Uk(t,1,this.e,h,s,!o))):s==null?this.c!=null?n.Dh(r,null):n.Dh(r,b0):(this.Sk(s),n.Dh(r,s))},l.Vj=function(t,n,r){var s,o;t.Lg()&&t.Mg()?(s=!0,o=n.Ch(r),o==null?(s=!1,o=this.b):je(o)===je(b0)&&(o=null),n.Eh(r),_i(t,this.d.Uk(t,2,this.e,o,this.b,s))):n.Eh(r)},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettable",770),M(1319,770,{},$Ye),l.Sk=function(t){if(!this.a.wj(t))throw J(new Wx(EG+pl(t)+TG+this.a+"'"))},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableDynamic",1319),M(1320,770,{},AKe),l.Sk=function(t){},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableStatic",1320),M(398,504,{},Mj),l.Pj=function(t,n,r,s,o){var h,d,v,x,_;if(_=n.Ch(r),this.Kj()&&je(_)===je(b0))return null;if(this.sk()&&s&&_!=null){if(v=u(_,49),v.kh()&&(x=Up(t,v),v!=x)){if(!oae(this.a,x))throw J(new Wx(EG+pl(x)+TG+this.a+"'"));n.Dh(r,_=x),this.rk()&&(h=u(x,49),d=v.ih(t,this.b?Ji(v.Tg(),this.b):-1-Ji(t.Tg(),this.e),null,null),!h.eh()&&(d=h.gh(t,this.b?Ji(h.Tg(),this.b):-1-Ji(t.Tg(),this.e),null,d)),d&&d.Fi()),t.Lg()&&t.Mg()&&_i(t,new p_(t,9,this.e,v,x))}return _}else return _},l.Qj=function(t,n,r,s,o){var h,d;return d=n.Ch(r),je(d)===je(b0)&&(d=null),n.Dh(r,s),this.bj()?je(d)!==je(s)&&d!=null&&(h=u(d,49),o=h.ih(t,Ji(h.Tg(),this.b),null,o)):this.rk()&&d!=null&&(o=u(d,49).ih(t,-1-Ji(t.Tg(),this.e),null,o)),t.Lg()&&t.Mg()&&(!o&&(o=new _p(4)),o.Ei(new p_(t,1,this.e,d,s))),o},l.Rj=function(t,n,r,s,o){var h;return h=n.Ch(r),je(h)===je(b0)&&(h=null),n.Eh(r),t.Lg()&&t.Mg()&&(!o&&(o=new _p(4)),this.Kj()?o.Ei(new p_(t,2,this.e,h,null)):o.Ei(new p_(t,1,this.e,h,null))),o},l.Sj=function(t,n,r){var s;return s=n.Ch(r),s!=null},l.Tj=function(t,n,r,s){var o,h,d,v,x;if(s!=null&&!oae(this.a,s))throw J(new Wx(EG+(we(s,56)?Q3e(u(s,56).Tg()):kme(pl(s)))+TG+this.a+"'"));x=n.Ch(r),v=x!=null,this.Kj()&&je(x)===je(b0)&&(x=null),d=null,this.bj()?je(x)!==je(s)&&(x!=null&&(o=u(x,49),d=o.ih(t,Ji(o.Tg(),this.b),null,d)),s!=null&&(o=u(s,49),d=o.gh(t,Ji(o.Tg(),this.b),null,d))):this.rk()&&je(x)!==je(s)&&(x!=null&&(d=u(x,49).ih(t,-1-Ji(t.Tg(),this.e),null,d)),s!=null&&(d=u(s,49).gh(t,-1-Ji(t.Tg(),this.e),null,d))),s==null&&this.Kj()?n.Dh(r,b0):n.Dh(r,s),t.Lg()&&t.Mg()?(h=new nre(t,1,this.e,x,s,this.Kj()&&!v),d?(d.Ei(h),d.Fi()):_i(t,h)):d&&d.Fi()},l.Vj=function(t,n,r){var s,o,h,d,v;v=n.Ch(r),d=v!=null,this.Kj()&&je(v)===je(b0)&&(v=null),h=null,v!=null&&(this.bj()?(s=u(v,49),h=s.ih(t,Ji(s.Tg(),this.b),null,h)):this.rk()&&(h=u(v,49).ih(t,-1-Ji(t.Tg(),this.e),null,h))),n.Eh(r),t.Lg()&&t.Mg()?(o=new nre(t,this.Kj()?2:1,this.e,v,null,d),h?(h.Ei(o),h.Fi()):_i(t,o)):h&&h.Fi()},l.bj=function(){return!1},l.rk=function(){return!1},l.sk=function(){return!1},l.Kj=function(){return!1},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObject",398),M(564,398,{},ine),l.rk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainment",564),M(1323,564,{},CUe),l.sk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentResolving",1323),M(772,564,{},xbe),l.Kj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettable",772),M(1325,772,{},SUe),l.sk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettableResolving",1325),M(640,564,{},wne),l.bj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverse",640),M(1324,640,{},DWe),l.sk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseResolving",1324),M(773,640,{},cve),l.Kj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettable",773),M(1326,773,{},IWe),l.sk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettableResolving",1326),M(641,398,{},Ebe),l.sk=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolving",641),M(1327,641,{},AUe),l.Kj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingUnsettable",1327),M(774,641,{},ave),l.bj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverse",774),M(1328,774,{},OWe),l.Kj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverseUnsettable",1328),M(1321,398,{},LUe),l.Kj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectUnsettable",1321),M(771,398,{},ove),l.bj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverse",771),M(1322,771,{},NWe),l.Kj=function(){return!0},O(Tn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverseUnsettable",1322),M(775,565,xG,rwe),l.Pk=function(t){return new rwe(this.a,this.c,t)},l.dd=function(){return this.b},l.Qk=function(t,n,r){return Jnn(this,t,this.b,r)},l.Rk=function(t,n,r){return ern(this,t,this.b,r)},O(Tn,"EStructuralFeatureImpl/InverseUpdatingFeatureMapEntry",775),M(1329,1,Qce,z$e),l.Wj=function(t){return this.a},l.fj=function(){return we(this.a,95)?u(this.a,95).fj():!this.a.dc()},l.Wb=function(t){this.a.$b(),this.a.Gc(u(t,15))},l.Xj=function(){we(this.a,95)?u(this.a,95).Xj():this.a.$b()},O(Tn,"EStructuralFeatureImpl/SettingMany",1329),M(1330,565,xG,KQe),l.Ok=function(t){return new one((Fi(),JS),this.b.Ih(this.a,t))},l.dd=function(){return null},l.Qk=function(t,n,r){return r},l.Rk=function(t,n,r){return r},O(Tn,"EStructuralFeatureImpl/SimpleContentFeatureMapEntry",1330),M(642,565,xG,one),l.Ok=function(t){return new one(this.c,t)},l.dd=function(){return this.a},l.Qk=function(t,n,r){return r},l.Rk=function(t,n,r){return r},O(Tn,"EStructuralFeatureImpl/SimpleFeatureMapEntry",642),M(391,497,Od,gm),l.ri=function(t){return Me(tf,yt,26,t,0,1)},l.ni=function(){return!1},O(Tn,"ESuperAdapter/1",391),M(444,438,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,836:1,49:1,97:1,150:1,444:1,114:1,115:1},RL),l._g=function(t,n,r){var s;switch(t){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),this.Ab;case 1:return this.zb;case 2:return!this.a&&(this.a=new h_(this,Eo,this)),this.a}return ph(this,t-Jn((on(),Nw)),gn((s=u(_n(this,16),26),s||Nw),t),n,r)},l.jh=function(t,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new at(ti,this,0,3)),Xa(this.Ab,t,r);case 2:return!this.a&&(this.a=new h_(this,Eo,this)),Xa(this.a,t,r)}return o=u(gn((s=u(_n(this,16),26),s||(on(),Nw)),n),66),o.Nj().Rj(this,du(this),n-Jn((on(),Nw)),t,r)},l.lh=function(t){var n;switch(t){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return!!this.a&&this.a.i!=0}return dh(this,t-Jn((on(),Nw)),gn((n=u(_n(this,16),26),n||Nw),t))},l.sh=function(t,n){var r;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab),!this.Ab&&(this.Ab=new at(ti,this,0,3)),fs(this.Ab,u(n,14));return;case 1:au(this,Hr(n));return;case 2:!this.a&&(this.a=new h_(this,Eo,this)),_r(this.a),!this.a&&(this.a=new h_(this,Eo,this)),fs(this.a,u(n,14));return}yh(this,t-Jn((on(),Nw)),gn((r=u(_n(this,16),26),r||Nw),t),n)},l.zh=function(){return on(),Nw},l.Bh=function(t){var n;switch(t){case 0:!this.Ab&&(this.Ab=new at(ti,this,0,3)),_r(this.Ab);return;case 1:au(this,null);return;case 2:!this.a&&(this.a=new h_(this,Eo,this)),_r(this.a);return}wh(this,t-Jn((on(),Nw)),gn((n=u(_n(this,16),26),n||Nw),t))},O(Tn,"ETypeParameterImpl",444),M(445,85,Zo,h_),l.cj=function(t,n){return efn(this,u(t,87),n)},l.dj=function(t,n){return tfn(this,u(t,87),n)},O(Tn,"ETypeParameterImpl/1",445),M(634,43,y4,Kee),l.ec=function(){return new rF(this)},O(Tn,"ETypeParameterImpl/2",634),M(556,H1,Xu,rF),l.Fc=function(t){return tWe(this,u(t,87))},l.Gc=function(t){var n,r,s;for(s=!1,r=t.Kc();r.Ob();)n=u(r.Pb(),87),Si(this.a,n,"")==null&&(s=!0);return s},l.$b=function(){sl(this.a)},l.Hc=function(t){return Il(this.a,t)},l.Kc=function(){var t;return t=new ob(new dg(this.a).a),new iF(t)},l.Mc=function(t){return HZe(this,t)},l.gc=function(){return MT(this.a)},O(Tn,"ETypeParameterImpl/2/1",556),M(557,1,ga,iF),l.Nb=function(t){La(this,t)},l.Pb=function(){return u($v(this.a).cd(),87)},l.Ob=function(){return this.a.b},l.Qb=function(){wJe(this.a)},O(Tn,"ETypeParameterImpl/2/1/1",557),M(1276,43,y4,IHe),l._b=function(t){return fa(t)?rre(this,t):!!$o(this.f,t)},l.xc=function(t){var n,r;return n=fa(t)?Uc(this,t):hc($o(this.f,t)),we(n,837)?(r=u(n,837),n=r._j(),Si(this,u(t,235),n),n):n??(t==null?(hte(),w4t):null)},O(Tn,"EValidatorRegistryImpl",1276),M(1313,704,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,1941:1,49:1,97:1,150:1,114:1,115:1},KZ),l.Ih=function(t,n){switch(t.yj()){case 21:case 22:case 23:case 24:case 26:case 31:case 32:case 37:case 38:case 39:case 40:case 43:case 44:case 48:case 49:case 20:return n==null?null:Qo(n);case 25:return cin(n);case 27:return _rn(n);case 28:return Crn(n);case 29:return n==null?null:PVe(WS[0],u(n,199));case 41:return n==null?"":Cp(u(n,290));case 42:return Qo(n);case 50:return Hr(n);default:throw J(new Ln($7+t.ne()+dw))}},l.Jh=function(t){var n,r,s,o,h,d,v,x,_,L,P,z,q,W,X,le;switch(t.G==-1&&(t.G=(z=Gl(t),z?Dg(z.Mh(),t):-1)),t.G){case 0:return r=new Vee,r;case 1:return n=new KB,n;case 2:return s=new YL,s;case 4:return o=new sF,o;case 5:return h=new DHe,h;case 6:return d=new tHe,d;case 7:return v=new RR,v;case 10:return _=new Ex,_;case 11:return L=new Uee,L;case 12:return P=new rXe,P;case 13:return q=new Wee,q;case 14:return W=new Cbe,W;case 17:return X=new UZ,X;case 18:return x=new uv,x;case 19:return le=new RL,le;default:throw J(new Ln(Pce+t.zb+dw))}},l.Kh=function(t,n){switch(t.yj()){case 20:return n==null?null:new Vpe(n);case 21:return n==null?null:new Ip(n);case 23:case 22:return n==null?null:dcn(n);case 26:case 24:return n==null?null:xD(Wl(n,-128,127)<<24>>24);case 25:return T0n(n);case 27:return Xun(n);case 28:return Qun(n);case 29:return mfn(n);case 32:case 31:return n==null?null:ry(n);case 38:case 37:return n==null?null:new hpe(n);case 40:case 39:return n==null?null:ct(Wl(n,$a,Ei));case 41:return null;case 42:return n==null,null;case 44:case 43:return n==null?null:lb(xz(n));case 49:case 48:return n==null?null:Z8(Wl(n,_G,32767)<<16>>16);case 50:return n;default:throw J(new Ln($7+t.ne()+dw))}},O(Tn,"EcoreFactoryImpl",1313),M(547,179,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,1939:1,49:1,97:1,150:1,179:1,547:1,114:1,115:1,675:1},yYe),l.gb=!1,l.hb=!1;var WAe,v4t=!1;O(Tn,"EcorePackageImpl",547),M(1184,1,{837:1},YZ),l._j=function(){return sUe(),m4t},O(Tn,"EcorePackageImpl/1",1184),M(1193,1,li,XZ),l.wj=function(t){return we(t,147)},l.xj=function(t){return Me(aN,yt,147,t,0,1)},O(Tn,"EcorePackageImpl/10",1193),M(1194,1,li,QZ),l.wj=function(t){return we(t,191)},l.xj=function(t){return Me(bfe,yt,191,t,0,1)},O(Tn,"EcorePackageImpl/11",1194),M(1195,1,li,ZZ),l.wj=function(t){return we(t,56)},l.xj=function(t){return Me(y2,yt,56,t,0,1)},O(Tn,"EcorePackageImpl/12",1195),M(1196,1,li,JZ),l.wj=function(t){return we(t,399)},l.xj=function(t){return Me(nf,v8e,59,t,0,1)},O(Tn,"EcorePackageImpl/13",1196),M(1197,1,li,eJ),l.wj=function(t){return we(t,235)},l.xj=function(t){return Me(h1,yt,235,t,0,1)},O(Tn,"EcorePackageImpl/14",1197),M(1198,1,li,tJ),l.wj=function(t){return we(t,509)},l.xj=function(t){return Me(Iw,yt,2017,t,0,1)},O(Tn,"EcorePackageImpl/15",1198),M(1199,1,li,tR),l.wj=function(t){return we(t,99)},l.xj=function(t){return Me(Uy,L4,18,t,0,1)},O(Tn,"EcorePackageImpl/16",1199),M(1200,1,li,nJ),l.wj=function(t){return we(t,170)},l.xj=function(t){return Me(ju,L4,170,t,0,1)},O(Tn,"EcorePackageImpl/17",1200),M(1201,1,li,rJ),l.wj=function(t){return we(t,472)},l.xj=function(t){return Me(qy,yt,472,t,0,1)},O(Tn,"EcorePackageImpl/18",1201),M(1202,1,li,iJ),l.wj=function(t){return we(t,548)},l.xj=function(t){return Me(wc,wdt,548,t,0,1)},O(Tn,"EcorePackageImpl/19",1202),M(1185,1,li,nR),l.wj=function(t){return we(t,322)},l.xj=function(t){return Me(Vy,L4,34,t,0,1)},O(Tn,"EcorePackageImpl/2",1185),M(1203,1,li,Ax),l.wj=function(t){return we(t,241)},l.xj=function(t){return Me(Eo,Pdt,87,t,0,1)},O(Tn,"EcorePackageImpl/20",1203),M(1204,1,li,z9),l.wj=function(t){return we(t,444)},l.xj=function(t){return Me(mu,yt,836,t,0,1)},O(Tn,"EcorePackageImpl/21",1204),M(1205,1,li,rR),l.wj=function(t){return Cm(t)},l.xj=function(t){return Me(Us,Qe,476,t,8,1)},O(Tn,"EcorePackageImpl/22",1205),M(1206,1,li,sJ),l.wj=function(t){return we(t,190)},l.xj=function(t){return Me(el,Qe,190,t,0,2)},O(Tn,"EcorePackageImpl/23",1206),M(1207,1,li,iR),l.wj=function(t){return we(t,217)},l.xj=function(t){return Me(mk,Qe,217,t,0,1)},O(Tn,"EcorePackageImpl/24",1207),M(1208,1,li,sR),l.wj=function(t){return we(t,172)},l.xj=function(t){return Me(XC,Qe,172,t,0,1)},O(Tn,"EcorePackageImpl/25",1208),M(1209,1,li,aJ),l.wj=function(t){return we(t,199)},l.xj=function(t){return Me(FG,Qe,199,t,0,1)},O(Tn,"EcorePackageImpl/26",1209),M(1210,1,li,G9),l.wj=function(t){return!1},l.xj=function(t){return Me(hLe,yt,2110,t,0,1)},O(Tn,"EcorePackageImpl/27",1210),M(1211,1,li,pm),l.wj=function(t){return Sm(t)},l.xj=function(t){return Me(ma,Qe,333,t,7,1)},O(Tn,"EcorePackageImpl/28",1211),M(1212,1,li,aR),l.wj=function(t){return we(t,58)},l.xj=function(t){return Me(CAe,gy,58,t,0,1)},O(Tn,"EcorePackageImpl/29",1212),M(1186,1,li,oR),l.wj=function(t){return we(t,510)},l.xj=function(t){return Me(ti,{3:1,4:1,5:1,1934:1},590,t,0,1)},O(Tn,"EcorePackageImpl/3",1186),M(1213,1,li,oJ),l.wj=function(t){return we(t,573)},l.xj=function(t){return Me(LAe,yt,1940,t,0,1)},O(Tn,"EcorePackageImpl/30",1213),M(1214,1,li,cJ),l.wj=function(t){return we(t,153)},l.xj=function(t){return Me(ZAe,gy,153,t,0,1)},O(Tn,"EcorePackageImpl/31",1214),M(1215,1,li,q9),l.wj=function(t){return we(t,72)},l.xj=function(t){return Me(eU,qdt,72,t,0,1)},O(Tn,"EcorePackageImpl/32",1215),M(1216,1,li,cR),l.wj=function(t){return we(t,155)},l.xj=function(t){return Me(W7,Qe,155,t,0,1)},O(Tn,"EcorePackageImpl/33",1216),M(1217,1,li,uR),l.wj=function(t){return we(t,19)},l.xj=function(t){return Me(Za,Qe,19,t,0,1)},O(Tn,"EcorePackageImpl/34",1217),M(1218,1,li,kc),l.wj=function(t){return we(t,290)},l.xj=function(t){return Me(M8e,yt,290,t,0,1)},O(Tn,"EcorePackageImpl/35",1218),M(1219,1,li,uJ),l.wj=function(t){return we(t,162)},l.xj=function(t){return Me(pw,Qe,162,t,0,1)},O(Tn,"EcorePackageImpl/36",1219),M(1220,1,li,lR),l.wj=function(t){return we(t,83)},l.xj=function(t){return Me(D8e,yt,83,t,0,1)},O(Tn,"EcorePackageImpl/37",1220),M(1221,1,li,V9),l.wj=function(t){return we(t,591)},l.xj=function(t){return Me(KAe,yt,591,t,0,1)},O(Tn,"EcorePackageImpl/38",1221),M(1222,1,li,lJ),l.wj=function(t){return!1},l.xj=function(t){return Me(fLe,yt,2111,t,0,1)},O(Tn,"EcorePackageImpl/39",1222),M(1187,1,li,hJ),l.wj=function(t){return we(t,88)},l.xj=function(t){return Me(tf,yt,26,t,0,1)},O(Tn,"EcorePackageImpl/4",1187),M(1223,1,li,U9),l.wj=function(t){return we(t,184)},l.xj=function(t){return Me(bw,Qe,184,t,0,1)},O(Tn,"EcorePackageImpl/40",1223),M(1224,1,li,hR),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(Tn,"EcorePackageImpl/41",1224),M(1225,1,li,W9),l.wj=function(t){return we(t,588)},l.xj=function(t){return Me(AAe,yt,588,t,0,1)},O(Tn,"EcorePackageImpl/42",1225),M(1226,1,li,K9),l.wj=function(t){return!1},l.xj=function(t){return Me(dLe,Qe,2112,t,0,1)},O(Tn,"EcorePackageImpl/43",1226),M(1227,1,li,Uf),l.wj=function(t){return we(t,42)},l.xj=function(t){return Me(Cb,Sz,42,t,0,1)},O(Tn,"EcorePackageImpl/44",1227),M(1188,1,li,FL),l.wj=function(t){return we(t,138)},l.xj=function(t){return Me(f1,yt,138,t,0,1)},O(Tn,"EcorePackageImpl/5",1188),M(1189,1,li,jL),l.wj=function(t){return we(t,148)},l.xj=function(t){return Me(xfe,yt,148,t,0,1)},O(Tn,"EcorePackageImpl/6",1189),M(1190,1,li,J5),l.wj=function(t){return we(t,457)},l.xj=function(t){return Me(JV,yt,671,t,0,1)},O(Tn,"EcorePackageImpl/7",1190),M(1191,1,li,fJ),l.wj=function(t){return we(t,573)},l.xj=function(t){return Me(J0,yt,678,t,0,1)},O(Tn,"EcorePackageImpl/8",1191),M(1192,1,li,dJ),l.wj=function(t){return we(t,471)},l.xj=function(t){return Me(US,yt,471,t,0,1)},O(Tn,"EcorePackageImpl/9",1192),M(1025,1982,vdt,XHe),l.bi=function(t,n){jan(this,u(n,415))},l.fi=function(t,n){fat(this,t,u(n,415))},O(Tn,"MinimalEObjectImpl/1ArrayDelegatingAdapterList",1025),M(1026,143,XI,hYe),l.Ai=function(){return this.a.a},O(Tn,"MinimalEObjectImpl/1ArrayDelegatingAdapterList/1",1026),M(1053,1052,{},SVe),O("org.eclipse.emf.ecore.plugin","EcorePlugin",1053);var KAe=ss(Vdt,"Resource");M(781,1378,Udt),l.Yk=function(t){},l.Zk=function(t){},l.Vk=function(){return!this.a&&(this.a=new $ee(this)),this.a},l.Wk=function(t){var n,r,s,o,h;if(s=t.length,s>0)if(zr(0,t.length),t.charCodeAt(0)==47){for(h=new su(4),o=1,n=1;n0&&(t=t.substr(0,r)));return odn(this,t)},l.Xk=function(){return this.c},l.Ib=function(){var t;return Cp(this.gm)+"@"+(t=Xi(this)>>>0,t.toString(16))+" uri='"+this.d+"'"},l.b=!1,O(Zce,"ResourceImpl",781),M(1379,781,Udt,q$e),O(Zce,"BinaryResourceImpl",1379),M(1169,694,Uce),l.si=function(t){return we(t,56)?zJt(this,u(t,56)):we(t,591)?new rr(u(t,591).Vk()):je(t)===je(this.f)?u(t,14).Kc():(u8(),uN.a)},l.Ob=function(){return z4e(this)},l.a=!1,O(Wi,"EcoreUtil/ContentTreeIterator",1169),M(1380,1169,Uce,zKe),l.si=function(t){return je(t)===je(this.f)?u(t,15).Kc():new _Qe(u(t,56))},O(Zce,"ResourceImpl/5",1380),M(648,1994,Ndt,$ee),l.Hc=function(t){return this.i<=4?u7(this,t):we(t,49)&&u(t,49).Zg()==this.a},l.bi=function(t,n){t==this.i-1&&(this.a.b||(this.a.b=!0))},l.di=function(t,n){t==0?this.a.b||(this.a.b=!0):Nre(this,t,n)},l.fi=function(t,n){},l.gi=function(t,n,r){},l.aj=function(){return 2},l.Ai=function(){return this.a},l.bj=function(){return!0},l.cj=function(t,n){var r;return r=u(t,49),n=r.wh(this.a,n),n},l.dj=function(t,n){var r;return r=u(t,49),r.wh(null,n)},l.ej=function(){return!1},l.hi=function(){return!0},l.ri=function(t){return Me(y2,yt,56,t,0,1)},l.ni=function(){return!1},O(Zce,"ResourceImpl/ContentsEList",648),M(957,1964,A7,G$e),l.Zc=function(t){return this.a._h(t)},l.gc=function(){return this.a.gc()},O(Wi,"AbstractSequentialInternalEList/1",957);var YAe,XAe,Oa,QAe;M(624,1,{},qWe);var tU,nU;O(Wi,"BasicExtendedMetaData",624),M(1160,1,{},qqe),l.$k=function(){return null},l._k=function(){return this.a==-2&&fg(this,gfn(this.d,this.b)),this.a},l.al=function(){return null},l.bl=function(){return hn(),hn(),bo},l.ne=function(){return this.c==G7&&_3(this,Grt(this.d,this.b)),this.c},l.cl=function(){return 0},l.a=-2,l.c=G7,O(Wi,"BasicExtendedMetaData/EClassExtendedMetaDataImpl",1160),M(1161,1,{},hQe),l.$k=function(){return this.a==(C8(),tU)&&Qge(this,Mgn(this.f,this.b)),this.a},l._k=function(){return 0},l.al=function(){return this.c==(C8(),tU)&&Eee(this,Dgn(this.f,this.b)),this.c},l.bl=function(){return!this.d&&Tee(this,M2n(this.f,this.b)),this.d},l.ne=function(){return this.e==G7&&UR(this,Grt(this.f,this.b)),this.e},l.cl=function(){return this.g==-2&&WR(this,Ohn(this.f,this.b)),this.g},l.e=G7,l.g=-2,O(Wi,"BasicExtendedMetaData/EDataTypeExtendedMetaDataImpl",1161),M(1159,1,{},Uqe),l.b=!1,l.c=!1,O(Wi,"BasicExtendedMetaData/EPackageExtendedMetaDataImpl",1159),M(1162,1,{},lQe),l.c=-2,l.e=G7,l.f=G7,O(Wi,"BasicExtendedMetaData/EStructuralFeatureExtendedMetaDataImpl",1162),M(585,622,Zo,xj),l.aj=function(){return this.c},l.Fk=function(){return!1},l.li=function(t,n){return n},l.c=0,O(Wi,"EDataTypeEList",585);var ZAe=ss(Wi,"FeatureMap");M(75,585,{3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,76:1,153:1,215:1,1937:1,69:1,95:1},ds),l.Vc=function(t,n){Cgn(this,t,u(n,72))},l.Fc=function(t){return V0n(this,u(t,72))},l.Yh=function(t){DZt(this,u(t,72))},l.cj=function(t,n){return hYt(this,u(t,72),n)},l.dj=function(t,n){return Ybe(this,u(t,72),n)},l.ii=function(t,n){return K2n(this,t,n)},l.li=function(t,n){return Swn(this,t,u(n,72))},l._c=function(t,n){return bpn(this,t,u(n,72))},l.jj=function(t,n){return fYt(this,u(t,72),n)},l.kj=function(t,n){return pWe(this,u(t,72),n)},l.lj=function(t,n,r){return bhn(this,u(t,72),u(n,72),r)},l.oi=function(t,n){return Tse(this,t,u(n,72))},l.dl=function(t,n){return M5e(this,t,n)},l.Wc=function(t,n){var r,s,o,h,d,v,x,_,L;for(_=new jv(n.gc()),o=n.Kc();o.Ob();)if(s=u(o.Pb(),72),h=s.ak(),G0(this.e,h))(!h.hi()||!v$(this,h,s.dd())&&!u7(_,s))&&Br(_,s);else{for(L=pu(this.e.Tg(),h),r=u(this.g,119),d=!0,v=0;v=0;)if(n=t[this.c],this.k.rl(n.ak()))return this.j=this.f?n:n.dd(),this.i=-2,!0;return this.i=-1,this.g=-1,!1},O(Wi,"BasicFeatureMap/FeatureEIterator",410),M(662,410,r0,Gte),l.Lk=function(){return!0},O(Wi,"BasicFeatureMap/ResolvingFeatureEIterator",662),M(955,486,yG,RVe),l.Gi=function(){return this},O(Wi,"EContentsEList/1",955),M(956,486,yG,cVe),l.Lk=function(){return!1},O(Wi,"EContentsEList/2",956),M(954,279,kG,FVe),l.Nk=function(t){},l.Ob=function(){return!1},l.Sb=function(){return!1},O(Wi,"EContentsEList/FeatureIteratorImpl/1",954),M(825,585,Zo,ebe),l.ci=function(){this.a=!0},l.fj=function(){return this.a},l.Xj=function(){var t;_r(this),Ll(this.e)?(t=this.a,this.a=!1,_i(this.e,new xf(this.e,2,this.c,t,!1))):this.a=!1},l.a=!1,O(Wi,"EDataTypeEList/Unsettable",825),M(1849,585,Zo,UVe),l.hi=function(){return!0},O(Wi,"EDataTypeUniqueEList",1849),M(1850,825,Zo,WVe),l.hi=function(){return!0},O(Wi,"EDataTypeUniqueEList/Unsettable",1850),M(139,85,Zo,qu),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectContainmentEList/Resolving",139),M(1163,545,Zo,VVe),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectContainmentEList/Unsettable/Resolving",1163),M(748,16,Zo,zbe),l.ci=function(){this.a=!0},l.fj=function(){return this.a},l.Xj=function(){var t;_r(this),Ll(this.e)?(t=this.a,this.a=!1,_i(this.e,new xf(this.e,2,this.c,t,!1))):this.a=!1},l.a=!1,O(Wi,"EObjectContainmentWithInverseEList/Unsettable",748),M(1173,748,Zo,nWe),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectContainmentWithInverseEList/Unsettable/Resolving",1173),M(743,496,Zo,J2e),l.ci=function(){this.a=!0},l.fj=function(){return this.a},l.Xj=function(){var t;_r(this),Ll(this.e)?(t=this.a,this.a=!1,_i(this.e,new xf(this.e,2,this.c,t,!1))):this.a=!1},l.a=!1,O(Wi,"EObjectEList/Unsettable",743),M(328,496,Zo,$3),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectResolvingEList",328),M(1641,743,Zo,KVe),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectResolvingEList/Unsettable",1641),M(1381,1,{},gJ);var w4t;O(Wi,"EObjectValidator",1381),M(546,496,Zo,Hj),l.zk=function(){return this.d},l.Ak=function(){return this.b},l.bj=function(){return!0},l.Dk=function(){return!0},l.b=0,O(Wi,"EObjectWithInverseEList",546),M(1176,546,Zo,rWe),l.Ck=function(){return!0},O(Wi,"EObjectWithInverseEList/ManyInverse",1176),M(625,546,Zo,une),l.ci=function(){this.a=!0},l.fj=function(){return this.a},l.Xj=function(){var t;_r(this),Ll(this.e)?(t=this.a,this.a=!1,_i(this.e,new xf(this.e,2,this.c,t,!1))):this.a=!1},l.a=!1,O(Wi,"EObjectWithInverseEList/Unsettable",625),M(1175,625,Zo,iWe),l.Ck=function(){return!0},O(Wi,"EObjectWithInverseEList/Unsettable/ManyInverse",1175),M(749,546,Zo,Gbe),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectWithInverseResolvingEList",749),M(31,749,Zo,wn),l.Ck=function(){return!0},O(Wi,"EObjectWithInverseResolvingEList/ManyInverse",31),M(750,625,Zo,qbe),l.Ek=function(){return!0},l.li=function(t,n){return rk(this,t,u(n,56))},O(Wi,"EObjectWithInverseResolvingEList/Unsettable",750),M(1174,750,Zo,sWe),l.Ck=function(){return!0},O(Wi,"EObjectWithInverseResolvingEList/Unsettable/ManyInverse",1174),M(1164,622,Zo),l.ai=function(){return(this.b&1792)==0},l.ci=function(){this.b|=1},l.Bk=function(){return(this.b&4)!=0},l.bj=function(){return(this.b&40)!=0},l.Ck=function(){return(this.b&16)!=0},l.Dk=function(){return(this.b&8)!=0},l.Ek=function(){return(this.b&ky)!=0},l.rk=function(){return(this.b&32)!=0},l.Fk=function(){return(this.b&Sf)!=0},l.wj=function(t){return this.d?$Qe(this.d,t):this.ak().Yj().wj(t)},l.fj=function(){return this.b&2?(this.b&1)!=0:this.i!=0},l.hi=function(){return(this.b&128)!=0},l.Xj=function(){var t;_r(this),this.b&2&&(Ll(this.e)?(t=(this.b&1)!=0,this.b&=-2,Vx(this,new xf(this.e,2,Ji(this.e.Tg(),this.ak()),t,!1))):this.b&=-2)},l.ni=function(){return(this.b&1536)==0},l.b=0,O(Wi,"EcoreEList/Generic",1164),M(1165,1164,Zo,YYe),l.ak=function(){return this.a},O(Wi,"EcoreEList/Dynamic",1165),M(747,63,Od,rpe),l.ri=function(t){return TD(this.a.a,t)},O(Wi,"EcoreEMap/1",747),M(746,85,Zo,zve),l.bi=function(t,n){RH(this.b,u(n,133))},l.di=function(t,n){Rtt(this.b)},l.ei=function(t,n,r){var s;++(s=this.b,u(n,133),s).e},l.fi=function(t,n){Oie(this.b,u(n,133))},l.gi=function(t,n,r){Oie(this.b,u(r,133)),je(r)===je(n)&&u(r,133).Th(yWt(u(n,133).cd())),RH(this.b,u(n,133))},O(Wi,"EcoreEMap/DelegateEObjectContainmentEList",746),M(1171,151,b8e,Xet),O(Wi,"EcoreEMap/Unsettable",1171),M(1172,746,Zo,aWe),l.ci=function(){this.a=!0},l.fj=function(){return this.a},l.Xj=function(){var t;_r(this),Ll(this.e)?(t=this.a,this.a=!1,_i(this.e,new xf(this.e,2,this.c,t,!1))):this.a=!1},l.a=!1,O(Wi,"EcoreEMap/Unsettable/UnsettableDelegateEObjectContainmentEList",1172),M(1168,228,y4,ZKe),l.a=!1,l.b=!1,O(Wi,"EcoreUtil/Copier",1168),M(745,1,ga,_Qe),l.Nb=function(t){La(this,t)},l.Ob=function(){return Ert(this)},l.Pb=function(){var t;return Ert(this),t=this.b,this.b=null,t},l.Qb=function(){this.a.Qb()},O(Wi,"EcoreUtil/ProperContentIterator",745),M(1382,1381,{},FR);var m4t;O(Wi,"EcoreValidator",1382);var y4t;ss(Wi,"FeatureMapUtil/Validator"),M(1260,1,{1942:1},pJ),l.rl=function(t){return!0},O(Wi,"FeatureMapUtil/1",1260),M(757,1,{1942:1},s6e),l.rl=function(t){var n;return this.c==t?!0:(n=Mt(er(this.a,t)),n==null?h2n(this,t)?(OZe(this.a,t,(Mn(),U7)),!0):(OZe(this.a,t,(Mn(),Sb)),!1):n==(Mn(),U7))},l.e=!1;var Cfe;O(Wi,"FeatureMapUtil/BasicValidator",757),M(758,43,y4,Y2e),O(Wi,"FeatureMapUtil/BasicValidator/Cache",758),M(501,52,{20:1,28:1,52:1,14:1,15:1,58:1,76:1,69:1,95:1},DM),l.Vc=function(t,n){Zot(this.c,this.b,t,n)},l.Fc=function(t){return M5e(this.c,this.b,t)},l.Wc=function(t,n){return Cvn(this.c,this.b,t,n)},l.Gc=function(t){return t_(this,t)},l.Xh=function(t,n){Wrn(this.c,this.b,t,n)},l.lk=function(t,n){return T5e(this.c,this.b,t,n)},l.pi=function(t){return bz(this.c,this.b,t,!1)},l.Zh=function(){return mVe(this.c,this.b)},l.$h=function(){return oWt(this.c,this.b)},l._h=function(t){return Znn(this.c,this.b,t)},l.mk=function(t,n){return FUe(this,t,n)},l.$b=function(){d6(this)},l.Hc=function(t){return v$(this.c,this.b,t)},l.Ic=function(t){return Qin(this.c,this.b,t)},l.Xb=function(t){return bz(this.c,this.b,t,!0)},l.Wj=function(t){return this},l.Xc=function(t){return unn(this.c,this.b,t)},l.dc=function(){return YF(this)},l.fj=function(){return!qD(this.c,this.b)},l.Kc=function(){return Prn(this.c,this.b)},l.Yc=function(){return Brn(this.c,this.b)},l.Zc=function(t){return Kan(this.c,this.b,t)},l.ii=function(t,n){return but(this.c,this.b,t,n)},l.ji=function(t,n){Unn(this.c,this.b,t,n)},l.$c=function(t){return Yst(this.c,this.b,t)},l.Mc=function(t){return I2n(this.c,this.b,t)},l._c=function(t,n){return xut(this.c,this.b,t,n)},l.Wb=function(t){JH(this.c,this.b),t_(this,u(t,15))},l.gc=function(){return oon(this.c,this.b)},l.Pc=function(){return atn(this.c,this.b)},l.Qc=function(t){return lnn(this.c,this.b,t)},l.Ib=function(){var t,n;for(n=new bg,n.a+="[",t=mVe(this.c,this.b);Eie(t);)To(n,r_(PH(t))),Eie(t)&&(n.a+=io);return n.a+="]",n.a},l.Xj=function(){JH(this.c,this.b)},O(Wi,"FeatureMapUtil/FeatureEList",501),M(627,36,XI,_re),l.yi=function(t){return z_(this,t)},l.Di=function(t){var n,r,s,o,h,d,v;switch(this.d){case 1:case 2:{if(h=t.Ai(),je(h)===je(this.c)&&z_(this,null)==t.yi(null))return this.g=t.zi(),t.xi()==1&&(this.d=1),!0;break}case 3:{switch(o=t.xi(),o){case 3:{if(h=t.Ai(),je(h)===je(this.c)&&z_(this,null)==t.yi(null))return this.d=5,n=new jv(2),Br(n,this.g),Br(n,t.zi()),this.g=n,!0;break}}break}case 5:{switch(o=t.xi(),o){case 3:{if(h=t.Ai(),je(h)===je(this.c)&&z_(this,null)==t.yi(null))return r=u(this.g,14),r.Fc(t.zi()),!0;break}}break}case 4:{switch(o=t.xi(),o){case 3:{if(h=t.Ai(),je(h)===je(this.c)&&z_(this,null)==t.yi(null))return this.d=1,this.g=t.zi(),!0;break}case 4:{if(h=t.Ai(),je(h)===je(this.c)&&z_(this,null)==t.yi(null))return this.d=6,v=new jv(2),Br(v,this.n),Br(v,t.Bi()),this.n=v,d=ie(re(Lr,1),Jr,25,15,[this.o,t.Ci()]),this.g=d,!0;break}}break}case 6:{switch(o=t.xi(),o){case 4:{if(h=t.Ai(),je(h)===je(this.c)&&z_(this,null)==t.yi(null))return r=u(this.n,14),r.Fc(t.Bi()),d=u(this.g,48),s=Me(Lr,Jr,25,d.length+1,15,1),Hc(d,0,s,0,d.length),s[d.length]=t.Ci(),this.g=s,!0;break}}break}}return!1},O(Wi,"FeatureMapUtil/FeatureENotificationImpl",627),M(552,501,{20:1,28:1,52:1,14:1,15:1,58:1,76:1,153:1,215:1,1937:1,69:1,95:1},Cj),l.dl=function(t,n){return M5e(this.c,t,n)},l.el=function(t,n,r){return T5e(this.c,t,n,r)},l.fl=function(t,n,r){return W5e(this.c,t,n,r)},l.gl=function(){return this},l.hl=function(t,n){return kI(this.c,t,n)},l.il=function(t){return u(bz(this.c,this.b,t,!1),72).ak()},l.jl=function(t){return u(bz(this.c,this.b,t,!1),72).dd()},l.kl=function(){return this.a},l.ll=function(t){return!qD(this.c,t)},l.ml=function(t,n){vz(this.c,t,n)},l.nl=function(t){return rtt(this.c,t)},l.ol=function(t){Sit(this.c,t)},O(Wi,"FeatureMapUtil/FeatureFeatureMap",552),M(1259,1,Qce,Wqe),l.Wj=function(t){return bz(this.b,this.a,-1,t)},l.fj=function(){return!qD(this.b,this.a)},l.Wb=function(t){vz(this.b,this.a,t)},l.Xj=function(){JH(this.b,this.a)},O(Wi,"FeatureMapUtil/FeatureValue",1259);var zk,Sfe,Afe,Gk,k4t,hN=ss(LG,"AnyType");M(666,60,q0,nte),O(LG,"InvalidDatatypeValueException",666);var rU=ss(LG,Kdt),fN=ss(LG,Ydt),JAe=ss(LG,Xdt),x4t,Sc,eLe,zb,E4t,T4t,_4t,C4t,S4t,A4t,L4t,M4t,D4t,I4t,O4t,r5,N4t,i5,QS,P4t,Pw,dN,gN,B4t,ZS,JS;M(830,506,{105:1,92:1,90:1,56:1,49:1,97:1,843:1},Tpe),l._g=function(t,n,r){switch(t){case 0:return r?(!this.c&&(this.c=new ds(this,0)),this.c):(!this.c&&(this.c=new ds(this,0)),this.c.b);case 1:return r?(!this.c&&(this.c=new ds(this,0)),u(Wc(this.c,(Fi(),zb)),153)):(!this.c&&(this.c=new ds(this,0)),u(u(Wc(this.c,(Fi(),zb)),153),215)).kl();case 2:return r?(!this.b&&(this.b=new ds(this,2)),this.b):(!this.b&&(this.b=new ds(this,2)),this.b.b)}return ph(this,t-Jn(this.zh()),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():this.zh(),t),n,r)},l.jh=function(t,n,r){var s;switch(n){case 0:return!this.c&&(this.c=new ds(this,0)),vI(this.c,t,r);case 1:return(!this.c&&(this.c=new ds(this,0)),u(u(Wc(this.c,(Fi(),zb)),153),69)).mk(t,r);case 2:return!this.b&&(this.b=new ds(this,2)),vI(this.b,t,r)}return s=u(gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():this.zh(),n),66),s.Nj().Rj(this,vme(this),n-Jn(this.zh()),t,r)},l.lh=function(t){switch(t){case 0:return!!this.c&&this.c.i!=0;case 1:return!(!this.c&&(this.c=new ds(this,0)),u(Wc(this.c,(Fi(),zb)),153)).dc();case 2:return!!this.b&&this.b.i!=0}return dh(this,t-Jn(this.zh()),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():this.zh(),t))},l.sh=function(t,n){switch(t){case 0:!this.c&&(this.c=new ds(this,0)),XM(this.c,n);return;case 1:(!this.c&&(this.c=new ds(this,0)),u(u(Wc(this.c,(Fi(),zb)),153),215)).Wb(n);return;case 2:!this.b&&(this.b=new ds(this,2)),XM(this.b,n);return}yh(this,t-Jn(this.zh()),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():this.zh(),t),n)},l.zh=function(){return Fi(),eLe},l.Bh=function(t){switch(t){case 0:!this.c&&(this.c=new ds(this,0)),_r(this.c);return;case 1:(!this.c&&(this.c=new ds(this,0)),u(Wc(this.c,(Fi(),zb)),153)).$b();return;case 2:!this.b&&(this.b=new ds(this,2)),_r(this.b);return}wh(this,t-Jn(this.zh()),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():this.zh(),t))},l.Ib=function(){var t;return this.j&4?_f(this):(t=new Ph(_f(this)),t.a+=" (mixed: ",QT(t,this.c),t.a+=", anyAttribute: ",QT(t,this.b),t.a+=")",t.a)},O(As,"AnyTypeImpl",830),M(667,506,{105:1,92:1,90:1,56:1,49:1,97:1,2021:1,667:1},fR),l._g=function(t,n,r){switch(t){case 0:return this.a;case 1:return this.b}return ph(this,t-Jn((Fi(),r5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():r5,t),n,r)},l.lh=function(t){switch(t){case 0:return this.a!=null;case 1:return this.b!=null}return dh(this,t-Jn((Fi(),r5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():r5,t))},l.sh=function(t,n){switch(t){case 0:Aee(this,Hr(n));return;case 1:Jge(this,Hr(n));return}yh(this,t-Jn((Fi(),r5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():r5,t),n)},l.zh=function(){return Fi(),r5},l.Bh=function(t){switch(t){case 0:this.a=null;return;case 1:this.b=null;return}wh(this,t-Jn((Fi(),r5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():r5,t))},l.Ib=function(){var t;return this.j&4?_f(this):(t=new Ph(_f(this)),t.a+=" (data: ",To(t,this.a),t.a+=", target: ",To(t,this.b),t.a+=")",t.a)},l.a=null,l.b=null,O(As,"ProcessingInstructionImpl",667),M(668,830,{105:1,92:1,90:1,56:1,49:1,97:1,843:1,2022:1,668:1},NHe),l._g=function(t,n,r){switch(t){case 0:return r?(!this.c&&(this.c=new ds(this,0)),this.c):(!this.c&&(this.c=new ds(this,0)),this.c.b);case 1:return r?(!this.c&&(this.c=new ds(this,0)),u(Wc(this.c,(Fi(),zb)),153)):(!this.c&&(this.c=new ds(this,0)),u(u(Wc(this.c,(Fi(),zb)),153),215)).kl();case 2:return r?(!this.b&&(this.b=new ds(this,2)),this.b):(!this.b&&(this.b=new ds(this,2)),this.b.b);case 3:return!this.c&&(this.c=new ds(this,0)),Hr(kI(this.c,(Fi(),QS),!0));case 4:return Vbe(this.a,(!this.c&&(this.c=new ds(this,0)),Hr(kI(this.c,(Fi(),QS),!0))));case 5:return this.a}return ph(this,t-Jn((Fi(),i5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():i5,t),n,r)},l.lh=function(t){switch(t){case 0:return!!this.c&&this.c.i!=0;case 1:return!(!this.c&&(this.c=new ds(this,0)),u(Wc(this.c,(Fi(),zb)),153)).dc();case 2:return!!this.b&&this.b.i!=0;case 3:return!this.c&&(this.c=new ds(this,0)),Hr(kI(this.c,(Fi(),QS),!0))!=null;case 4:return Vbe(this.a,(!this.c&&(this.c=new ds(this,0)),Hr(kI(this.c,(Fi(),QS),!0))))!=null;case 5:return!!this.a}return dh(this,t-Jn((Fi(),i5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():i5,t))},l.sh=function(t,n){switch(t){case 0:!this.c&&(this.c=new ds(this,0)),XM(this.c,n);return;case 1:(!this.c&&(this.c=new ds(this,0)),u(u(Wc(this.c,(Fi(),zb)),153),215)).Wb(n);return;case 2:!this.b&&(this.b=new ds(this,2)),XM(this.b,n);return;case 3:Mwe(this,Hr(n));return;case 4:Mwe(this,Ube(this.a,n));return;case 5:Ac(this,u(n,148));return}yh(this,t-Jn((Fi(),i5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():i5,t),n)},l.zh=function(){return Fi(),i5},l.Bh=function(t){switch(t){case 0:!this.c&&(this.c=new ds(this,0)),_r(this.c);return;case 1:(!this.c&&(this.c=new ds(this,0)),u(Wc(this.c,(Fi(),zb)),153)).$b();return;case 2:!this.b&&(this.b=new ds(this,2)),_r(this.b);return;case 3:!this.c&&(this.c=new ds(this,0)),vz(this.c,(Fi(),QS),null);return;case 4:Mwe(this,Ube(this.a,null));return;case 5:this.a=null;return}wh(this,t-Jn((Fi(),i5)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():i5,t))},O(As,"SimpleAnyTypeImpl",668),M(669,506,{105:1,92:1,90:1,56:1,49:1,97:1,2023:1,669:1},OHe),l._g=function(t,n,r){switch(t){case 0:return r?(!this.a&&(this.a=new ds(this,0)),this.a):(!this.a&&(this.a=new ds(this,0)),this.a.b);case 1:return r?(!this.b&&(this.b=new Nl((on(),oo),wc,this,1)),this.b):(!this.b&&(this.b=new Nl((on(),oo),wc,this,1)),hD(this.b));case 2:return r?(!this.c&&(this.c=new Nl((on(),oo),wc,this,2)),this.c):(!this.c&&(this.c=new Nl((on(),oo),wc,this,2)),hD(this.c));case 3:return!this.a&&(this.a=new ds(this,0)),Wc(this.a,(Fi(),dN));case 4:return!this.a&&(this.a=new ds(this,0)),Wc(this.a,(Fi(),gN));case 5:return!this.a&&(this.a=new ds(this,0)),Wc(this.a,(Fi(),ZS));case 6:return!this.a&&(this.a=new ds(this,0)),Wc(this.a,(Fi(),JS))}return ph(this,t-Jn((Fi(),Pw)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():Pw,t),n,r)},l.jh=function(t,n,r){var s;switch(n){case 0:return!this.a&&(this.a=new ds(this,0)),vI(this.a,t,r);case 1:return!this.b&&(this.b=new Nl((on(),oo),wc,this,1)),vj(this.b,t,r);case 2:return!this.c&&(this.c=new Nl((on(),oo),wc,this,2)),vj(this.c,t,r);case 5:return!this.a&&(this.a=new ds(this,0)),FUe(Wc(this.a,(Fi(),ZS)),t,r)}return s=u(gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():(Fi(),Pw),n),66),s.Nj().Rj(this,vme(this),n-Jn((Fi(),Pw)),t,r)},l.lh=function(t){switch(t){case 0:return!!this.a&&this.a.i!=0;case 1:return!!this.b&&this.b.f!=0;case 2:return!!this.c&&this.c.f!=0;case 3:return!this.a&&(this.a=new ds(this,0)),!YF(Wc(this.a,(Fi(),dN)));case 4:return!this.a&&(this.a=new ds(this,0)),!YF(Wc(this.a,(Fi(),gN)));case 5:return!this.a&&(this.a=new ds(this,0)),!YF(Wc(this.a,(Fi(),ZS)));case 6:return!this.a&&(this.a=new ds(this,0)),!YF(Wc(this.a,(Fi(),JS)))}return dh(this,t-Jn((Fi(),Pw)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():Pw,t))},l.sh=function(t,n){switch(t){case 0:!this.a&&(this.a=new ds(this,0)),XM(this.a,n);return;case 1:!this.b&&(this.b=new Nl((on(),oo),wc,this,1)),sH(this.b,n);return;case 2:!this.c&&(this.c=new Nl((on(),oo),wc,this,2)),sH(this.c,n);return;case 3:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),dN))),!this.a&&(this.a=new ds(this,0)),t_(Wc(this.a,dN),u(n,14));return;case 4:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),gN))),!this.a&&(this.a=new ds(this,0)),t_(Wc(this.a,gN),u(n,14));return;case 5:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),ZS))),!this.a&&(this.a=new ds(this,0)),t_(Wc(this.a,ZS),u(n,14));return;case 6:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),JS))),!this.a&&(this.a=new ds(this,0)),t_(Wc(this.a,JS),u(n,14));return}yh(this,t-Jn((Fi(),Pw)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():Pw,t),n)},l.zh=function(){return Fi(),Pw},l.Bh=function(t){switch(t){case 0:!this.a&&(this.a=new ds(this,0)),_r(this.a);return;case 1:!this.b&&(this.b=new Nl((on(),oo),wc,this,1)),this.b.c.$b();return;case 2:!this.c&&(this.c=new Nl((on(),oo),wc,this,2)),this.c.c.$b();return;case 3:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),dN)));return;case 4:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),gN)));return;case 5:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),ZS)));return;case 6:!this.a&&(this.a=new ds(this,0)),d6(Wc(this.a,(Fi(),JS)));return}wh(this,t-Jn((Fi(),Pw)),gn(this.j&2?(!this.k&&(this.k=new ch),this.k).ck():Pw,t))},l.Ib=function(){var t;return this.j&4?_f(this):(t=new Ph(_f(this)),t.a+=" (mixed: ",QT(t,this.a),t.a+=")",t.a)},O(As,"XMLTypeDocumentRootImpl",669),M(1919,704,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1,2024:1},bm),l.Ih=function(t,n){switch(t.yj()){case 7:case 8:case 9:case 10:case 16:case 22:case 23:case 24:case 25:case 26:case 32:case 33:case 34:case 36:case 37:case 44:case 45:case 50:case 51:case 53:case 55:case 56:case 57:case 58:case 60:case 61:case 4:return n==null?null:Qo(n);case 19:case 28:case 29:case 35:case 38:case 39:case 41:case 46:case 52:case 54:case 5:return Hr(n);case 6:return _Kt(u(n,190));case 12:case 47:case 49:case 11:return ult(this,t,n);case 13:return n==null?null:fvn(u(n,240));case 15:case 14:return n==null?null:xZt(Ue(ft(n)));case 17:return fst((Fi(),n));case 18:return fst(n);case 21:case 20:return n==null?null:EZt(u(n,155).a);case 27:return CKt(u(n,190));case 30:return Ait((Fi(),u(n,15)));case 31:return Ait(u(n,15));case 40:return AKt((Fi(),n));case 42:return dst((Fi(),n));case 43:return dst(n);case 59:case 48:return SKt((Fi(),n));default:throw J(new Ln($7+t.ne()+dw))}},l.Jh=function(t){var n,r,s,o,h;switch(t.G==-1&&(t.G=(r=Gl(t),r?Dg(r.Mh(),t):-1)),t.G){case 0:return n=new Tpe,n;case 1:return s=new fR,s;case 2:return o=new NHe,o;case 3:return h=new OHe,h;default:throw J(new Ln(Pce+t.zb+dw))}},l.Kh=function(t,n){var r,s,o,h,d,v,x,_,L,P,z,q,W,X,le,Ce;switch(t.yj()){case 5:case 52:case 4:return n;case 6:return zcn(n);case 8:case 7:return n==null?null:Lhn(n);case 9:return n==null?null:xD(Wl((s=Xc(n,!0),s.length>0&&(zr(0,s.length),s.charCodeAt(0)==43)?s.substr(1):s),-128,127)<<24>>24);case 10:return n==null?null:xD(Wl((o=Xc(n,!0),o.length>0&&(zr(0,o.length),o.charCodeAt(0)==43)?o.substr(1):o),-128,127)<<24>>24);case 11:return Hr(aw(this,(Fi(),_4t),n));case 12:return Hr(aw(this,(Fi(),C4t),n));case 13:return n==null?null:new Vpe(Xc(n,!0));case 15:case 14:return X0n(n);case 16:return Hr(aw(this,(Fi(),S4t),n));case 17:return Nrt((Fi(),n));case 18:return Nrt(n);case 28:case 29:case 35:case 38:case 39:case 41:case 54:case 19:return Xc(n,!0);case 21:case 20:return sgn(n);case 22:return Hr(aw(this,(Fi(),A4t),n));case 23:return Hr(aw(this,(Fi(),L4t),n));case 24:return Hr(aw(this,(Fi(),M4t),n));case 25:return Hr(aw(this,(Fi(),D4t),n));case 26:return Hr(aw(this,(Fi(),I4t),n));case 27:return Rcn(n);case 30:return Prt((Fi(),n));case 31:return Prt(n);case 32:return n==null?null:ct(Wl((L=Xc(n,!0),L.length>0&&(zr(0,L.length),L.charCodeAt(0)==43)?L.substr(1):L),$a,Ei));case 33:return n==null?null:new Ip((P=Xc(n,!0),P.length>0&&(zr(0,P.length),P.charCodeAt(0)==43)?P.substr(1):P));case 34:return n==null?null:ct(Wl((z=Xc(n,!0),z.length>0&&(zr(0,z.length),z.charCodeAt(0)==43)?z.substr(1):z),$a,Ei));case 36:return n==null?null:lb(xz((q=Xc(n,!0),q.length>0&&(zr(0,q.length),q.charCodeAt(0)==43)?q.substr(1):q)));case 37:return n==null?null:lb(xz((W=Xc(n,!0),W.length>0&&(zr(0,W.length),W.charCodeAt(0)==43)?W.substr(1):W)));case 40:return Jon((Fi(),n));case 42:return Brt((Fi(),n));case 43:return Brt(n);case 44:return n==null?null:new Ip((X=Xc(n,!0),X.length>0&&(zr(0,X.length),X.charCodeAt(0)==43)?X.substr(1):X));case 45:return n==null?null:new Ip((le=Xc(n,!0),le.length>0&&(zr(0,le.length),le.charCodeAt(0)==43)?le.substr(1):le));case 46:return Xc(n,!1);case 47:return Hr(aw(this,(Fi(),O4t),n));case 59:case 48:return Zon((Fi(),n));case 49:return Hr(aw(this,(Fi(),N4t),n));case 50:return n==null?null:Z8(Wl((Ce=Xc(n,!0),Ce.length>0&&(zr(0,Ce.length),Ce.charCodeAt(0)==43)?Ce.substr(1):Ce),_G,32767)<<16>>16);case 51:return n==null?null:Z8(Wl((h=Xc(n,!0),h.length>0&&(zr(0,h.length),h.charCodeAt(0)==43)?h.substr(1):h),_G,32767)<<16>>16);case 53:return Hr(aw(this,(Fi(),P4t),n));case 55:return n==null?null:Z8(Wl((d=Xc(n,!0),d.length>0&&(zr(0,d.length),d.charCodeAt(0)==43)?d.substr(1):d),_G,32767)<<16>>16);case 56:return n==null?null:Z8(Wl((v=Xc(n,!0),v.length>0&&(zr(0,v.length),v.charCodeAt(0)==43)?v.substr(1):v),_G,32767)<<16>>16);case 57:return n==null?null:lb(xz((x=Xc(n,!0),x.length>0&&(zr(0,x.length),x.charCodeAt(0)==43)?x.substr(1):x)));case 58:return n==null?null:lb(xz((_=Xc(n,!0),_.length>0&&(zr(0,_.length),_.charCodeAt(0)==43)?_.substr(1):_)));case 60:return n==null?null:ct(Wl((r=Xc(n,!0),r.length>0&&(zr(0,r.length),r.charCodeAt(0)==43)?r.substr(1):r),$a,Ei));case 61:return n==null?null:ct(Wl(Xc(n,!0),$a,Ei));default:throw J(new Ln($7+t.ne()+dw))}};var R4t,tLe,F4t,nLe;O(As,"XMLTypeFactoryImpl",1919),M(586,179,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1,1945:1,586:1},mYe),l.N=!1,l.O=!1;var j4t=!1;O(As,"XMLTypePackageImpl",586),M(1852,1,{837:1},e6),l._j=function(){return F5e(),K4t},O(As,"XMLTypePackageImpl/1",1852),M(1861,1,li,w1),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/10",1861),M(1862,1,li,dR),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/11",1862),M(1863,1,li,gR),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/12",1863),M(1864,1,li,pR),l.wj=function(t){return Sm(t)},l.xj=function(t){return Me(ma,Qe,333,t,7,1)},O(As,"XMLTypePackageImpl/13",1864),M(1865,1,li,bR),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/14",1865),M(1866,1,li,vR),l.wj=function(t){return we(t,15)},l.xj=function(t){return Me(Eh,gy,15,t,0,1)},O(As,"XMLTypePackageImpl/15",1866),M(1867,1,li,wR),l.wj=function(t){return we(t,15)},l.xj=function(t){return Me(Eh,gy,15,t,0,1)},O(As,"XMLTypePackageImpl/16",1867),M(1868,1,li,Wf),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/17",1868),M(1869,1,li,xu),l.wj=function(t){return we(t,155)},l.xj=function(t){return Me(W7,Qe,155,t,0,1)},O(As,"XMLTypePackageImpl/18",1869),M(1870,1,li,bJ),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/19",1870),M(1853,1,li,vJ),l.wj=function(t){return we(t,843)},l.xj=function(t){return Me(hN,yt,843,t,0,1)},O(As,"XMLTypePackageImpl/2",1853),M(1871,1,li,wJ),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/20",1871),M(1872,1,li,Eu),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/21",1872),M(1873,1,li,Y9),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/22",1873),M(1874,1,li,mR),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/23",1874),M(1875,1,li,yR),l.wj=function(t){return we(t,190)},l.xj=function(t){return Me(el,Qe,190,t,0,2)},O(As,"XMLTypePackageImpl/24",1875),M(1876,1,li,t6),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/25",1876),M(1877,1,li,mJ),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/26",1877),M(1878,1,li,Lx),l.wj=function(t){return we(t,15)},l.xj=function(t){return Me(Eh,gy,15,t,0,1)},O(As,"XMLTypePackageImpl/27",1878),M(1879,1,li,yJ),l.wj=function(t){return we(t,15)},l.xj=function(t){return Me(Eh,gy,15,t,0,1)},O(As,"XMLTypePackageImpl/28",1879),M(1880,1,li,kR),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/29",1880),M(1854,1,li,kJ),l.wj=function(t){return we(t,667)},l.xj=function(t){return Me(rU,yt,2021,t,0,1)},O(As,"XMLTypePackageImpl/3",1854),M(1881,1,li,xJ),l.wj=function(t){return we(t,19)},l.xj=function(t){return Me(Za,Qe,19,t,0,1)},O(As,"XMLTypePackageImpl/30",1881),M(1882,1,li,X9),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/31",1882),M(1883,1,li,xR),l.wj=function(t){return we(t,162)},l.xj=function(t){return Me(pw,Qe,162,t,0,1)},O(As,"XMLTypePackageImpl/32",1883),M(1884,1,li,$L),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/33",1884),M(1885,1,li,Q9),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/34",1885),M(1886,1,li,EJ),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/35",1886),M(1887,1,li,TJ),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/36",1887),M(1888,1,li,HL),l.wj=function(t){return we(t,15)},l.xj=function(t){return Me(Eh,gy,15,t,0,1)},O(As,"XMLTypePackageImpl/37",1888),M(1889,1,li,Z9),l.wj=function(t){return we(t,15)},l.xj=function(t){return Me(Eh,gy,15,t,0,1)},O(As,"XMLTypePackageImpl/38",1889),M(1890,1,li,m1),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/39",1890),M(1855,1,li,Mx),l.wj=function(t){return we(t,668)},l.xj=function(t){return Me(fN,yt,2022,t,0,1)},O(As,"XMLTypePackageImpl/4",1855),M(1891,1,li,_J),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/40",1891),M(1892,1,li,Dx),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/41",1892),M(1893,1,li,zL),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/42",1893),M(1894,1,li,j2),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/43",1894),M(1895,1,li,J9),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/44",1895),M(1896,1,li,GL),l.wj=function(t){return we(t,184)},l.xj=function(t){return Me(bw,Qe,184,t,0,1)},O(As,"XMLTypePackageImpl/45",1896),M(1897,1,li,Kf),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/46",1897),M(1898,1,li,eT),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/47",1898),M(1899,1,li,y1),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/48",1899),M(e2,1,li,k1),l.wj=function(t){return we(t,184)},l.xj=function(t){return Me(bw,Qe,184,t,0,1)},O(As,"XMLTypePackageImpl/49",e2),M(1856,1,li,CJ),l.wj=function(t){return we(t,669)},l.xj=function(t){return Me(JAe,yt,2023,t,0,1)},O(As,"XMLTypePackageImpl/5",1856),M(1901,1,li,SJ),l.wj=function(t){return we(t,162)},l.xj=function(t){return Me(pw,Qe,162,t,0,1)},O(As,"XMLTypePackageImpl/50",1901),M(1902,1,li,x3),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/51",1902),M(1903,1,li,Ix),l.wj=function(t){return we(t,19)},l.xj=function(t){return Me(Za,Qe,19,t,0,1)},O(As,"XMLTypePackageImpl/52",1903),M(1857,1,li,Ox),l.wj=function(t){return fa(t)},l.xj=function(t){return Me(mt,Qe,2,t,6,1)},O(As,"XMLTypePackageImpl/6",1857),M(1858,1,li,tT),l.wj=function(t){return we(t,190)},l.xj=function(t){return Me(el,Qe,190,t,0,2)},O(As,"XMLTypePackageImpl/7",1858),M(1859,1,li,AJ),l.wj=function(t){return Cm(t)},l.xj=function(t){return Me(Us,Qe,476,t,8,1)},O(As,"XMLTypePackageImpl/8",1859),M(1860,1,li,n6),l.wj=function(t){return we(t,217)},l.xj=function(t){return Me(mk,Qe,217,t,0,1)},O(As,"XMLTypePackageImpl/9",1860);var J1,Zg,eA,iU,fe;M(50,60,q0,$r),O($g,"RegEx/ParseException",50),M(820,1,{},qL),l.sl=function(t){return tr*16)throw J(new $r(Ur((jr(),odt))));r=r*16+o}while(!0);if(this.a!=125)throw J(new $r(Ur((jr(),cdt))));if(r>q7)throw J(new $r(Ur((jr(),udt))));t=r}else{if(o=0,this.c!=0||(o=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(r=o,mi(this),this.c!=0||(o=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));r=r*16+o,t=r}break;case 117:if(s=0,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));n=n*16+s,t=n;break;case 118:if(mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,mi(this),this.c!=0||(s=fb(this.a))<0)throw J(new $r(Ur((jr(),jg))));if(n=n*16+s,n>q7)throw J(new $r(Ur((jr(),"parser.descappe.4"))));t=n;break;case 65:case 90:case 122:throw J(new $r(Ur((jr(),ldt))))}return t},l.ul=function(t){var n,r;switch(t){case 100:r=(this.e&32)==32?Zp("Nd",!0):(yi(),sU);break;case 68:r=(this.e&32)==32?Zp("Nd",!1):(yi(),cLe);break;case 119:r=(this.e&32)==32?Zp("IsWord",!0):(yi(),DE);break;case 87:r=(this.e&32)==32?Zp("IsWord",!1):(yi(),lLe);break;case 115:r=(this.e&32)==32?Zp("IsSpace",!0):(yi(),qk);break;case 83:r=(this.e&32)==32?Zp("IsSpace",!1):(yi(),uLe);break;default:throw J(new tc((n=t,l0t+n.toString(16))))}return r},l.vl=function(t){var n,r,s,o,h,d,v,x,_,L,P,z;for(this.b=1,mi(this),n=null,this.c==0&&this.a==94?(mi(this),t?L=(yi(),yi(),new Hl(5)):(n=(yi(),yi(),new Hl(4)),Yc(n,0,q7),L=new Hl(4))):L=(yi(),yi(),new Hl(4)),o=!0;(z=this.c)!=1&&!(z==0&&this.a==93&&!o);){if(o=!1,r=this.a,s=!1,z==10)switch(r){case 100:case 68:case 119:case 87:case 115:case 83:ly(L,this.ul(r)),s=!0;break;case 105:case 73:case 99:case 67:r=this.Ll(L,r),r<0&&(s=!0);break;case 112:case 80:if(P=$4e(this,r),!P)throw J(new $r(Ur((jr(),Kce))));ly(L,P),s=!0;break;default:r=this.tl()}else if(z==20){if(d=o8(this.i,58,this.d),d<0)throw J(new $r(Ur((jr(),l8e))));if(v=!0,Ma(this.i,this.d)==94&&(++this.d,v=!1),h=jl(this.i,this.d,d),x=yJe(h,v,(this.e&512)==512),!x)throw J(new $r(Ur((jr(),ndt))));if(ly(L,x),s=!0,d+1>=this.j||Ma(this.i,d+1)!=93)throw J(new $r(Ur((jr(),l8e))));this.d=d+2}if(mi(this),!s)if(this.c!=0||this.a!=45)Yc(L,r,r);else{if(mi(this),(z=this.c)==1)throw J(new $r(Ur((jr(),wG))));z==0&&this.a==93?(Yc(L,r,r),Yc(L,45,45)):(_=this.a,z==10&&(_=this.tl()),mi(this),Yc(L,r,_))}(this.e&Sf)==Sf&&this.c==0&&this.a==44&&mi(this)}if(this.c==1)throw J(new $r(Ur((jr(),wG))));return n&&(bC(n,L),L=n),l4(L),gC(L),this.b=0,mi(this),L},l.wl=function(){var t,n,r,s;for(r=this.vl(!1);(s=this.c)!=7;)if(t=this.a,s==0&&(t==45||t==38)||s==4){if(mi(this),this.c!=9)throw J(new $r(Ur((jr(),idt))));if(n=this.vl(!1),s==4)ly(r,n);else if(t==45)bC(r,n);else if(t==38)rlt(r,n);else throw J(new tc("ASSERT"))}else throw J(new $r(Ur((jr(),sdt))));return mi(this),r},l.xl=function(){var t,n;return t=this.a-48,n=(yi(),yi(),new cre(12,null,t)),!this.g&&(this.g=new oF),aF(this.g,new ipe(t)),mi(this),n},l.yl=function(){return mi(this),yi(),z4t},l.zl=function(){return mi(this),yi(),H4t},l.Al=function(){throw J(new $r(Ur((jr(),xh))))},l.Bl=function(){throw J(new $r(Ur((jr(),xh))))},l.Cl=function(){return mi(this),ean()},l.Dl=function(){return mi(this),yi(),q4t},l.El=function(){return mi(this),yi(),U4t},l.Fl=function(){var t;if(this.d>=this.j||((t=Ma(this.i,this.d++))&65504)!=64)throw J(new $r(Ur((jr(),J1t))));return mi(this),yi(),yi(),new Yd(0,t-64)},l.Gl=function(){return mi(this),Rbn()},l.Hl=function(){return mi(this),yi(),W4t},l.Il=function(){var t;return t=(yi(),yi(),new Yd(0,105)),mi(this),t},l.Jl=function(){return mi(this),yi(),V4t},l.Kl=function(){return mi(this),yi(),G4t},l.Ll=function(t,n){return this.tl()},l.Ml=function(){return mi(this),yi(),aLe},l.Nl=function(){var t,n,r,s,o;if(this.d+1>=this.j)throw J(new $r(Ur((jr(),X1t))));if(s=-1,n=null,t=Ma(this.i,this.d),49<=t&&t<=57){if(s=t-48,!this.g&&(this.g=new oF),aF(this.g,new ipe(s)),++this.d,Ma(this.i,this.d)!=41)throw J(new $r(Ur((jr(),Tb))));++this.d}else switch(t==63&&--this.d,mi(this),n=u6e(this),n.e){case 20:case 21:case 22:case 23:break;case 8:if(this.c!=7)throw J(new $r(Ur((jr(),Tb))));break;default:throw J(new $r(Ur((jr(),Q1t))))}if(mi(this),o=Xv(this),r=null,o.e==2){if(o.em()!=2)throw J(new $r(Ur((jr(),Z1t))));r=o.am(1),o=o.am(0)}if(this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),yi(),yi(),new ZJe(s,n,o,r)},l.Ol=function(){return mi(this),yi(),oLe},l.Pl=function(){var t;if(mi(this),t=zj(24,Xv(this)),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Ql=function(){var t;if(mi(this),t=zj(20,Xv(this)),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Rl=function(){var t;if(mi(this),t=zj(22,Xv(this)),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Sl=function(){var t,n,r,s,o;for(t=0,r=0,n=-1;this.d=this.j)throw J(new $r(Ur((jr(),c8e))));if(n==45){for(++this.d;this.d=this.j)throw J(new $r(Ur((jr(),c8e))))}if(n==58){if(++this.d,mi(this),s=rYe(Xv(this),t,r),this.c!=7)throw J(new $r(Ur((jr(),Tb))));mi(this)}else if(n==41)++this.d,mi(this),s=rYe(Xv(this),t,r);else throw J(new $r(Ur((jr(),Y1t))));return s},l.Tl=function(){var t;if(mi(this),t=zj(21,Xv(this)),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Ul=function(){var t;if(mi(this),t=zj(23,Xv(this)),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Vl=function(){var t,n;if(mi(this),t=this.f++,n=Pne(Xv(this),t),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),n},l.Wl=function(){var t;if(mi(this),t=Pne(Xv(this),0),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Xl=function(t){return mi(this),this.c==5?(mi(this),Ij(t,(yi(),yi(),new $m(9,t)))):Ij(t,(yi(),yi(),new $m(3,t)))},l.Yl=function(t){var n;return mi(this),n=(yi(),yi(),new e_(2)),this.c==5?(mi(this),pb(n,nA),pb(n,t)):(pb(n,t),pb(n,nA)),n},l.Zl=function(t){return mi(this),this.c==5?(mi(this),yi(),yi(),new $m(9,t)):(yi(),yi(),new $m(3,t))},l.a=0,l.b=0,l.c=0,l.d=0,l.e=0,l.f=1,l.g=null,l.j=0,O($g,"RegEx/RegexParser",820),M(1824,820,{},PHe),l.sl=function(t){return!1},l.tl=function(){return y5e(this)},l.ul=function(t){return m7(t)},l.vl=function(t){return Ylt(this)},l.wl=function(){throw J(new $r(Ur((jr(),xh))))},l.xl=function(){throw J(new $r(Ur((jr(),xh))))},l.yl=function(){throw J(new $r(Ur((jr(),xh))))},l.zl=function(){throw J(new $r(Ur((jr(),xh))))},l.Al=function(){return mi(this),m7(67)},l.Bl=function(){return mi(this),m7(73)},l.Cl=function(){throw J(new $r(Ur((jr(),xh))))},l.Dl=function(){throw J(new $r(Ur((jr(),xh))))},l.El=function(){throw J(new $r(Ur((jr(),xh))))},l.Fl=function(){return mi(this),m7(99)},l.Gl=function(){throw J(new $r(Ur((jr(),xh))))},l.Hl=function(){throw J(new $r(Ur((jr(),xh))))},l.Il=function(){return mi(this),m7(105)},l.Jl=function(){throw J(new $r(Ur((jr(),xh))))},l.Kl=function(){throw J(new $r(Ur((jr(),xh))))},l.Ll=function(t,n){return ly(t,m7(n)),-1},l.Ml=function(){return mi(this),yi(),yi(),new Yd(0,94)},l.Nl=function(){throw J(new $r(Ur((jr(),xh))))},l.Ol=function(){return mi(this),yi(),yi(),new Yd(0,36)},l.Pl=function(){throw J(new $r(Ur((jr(),xh))))},l.Ql=function(){throw J(new $r(Ur((jr(),xh))))},l.Rl=function(){throw J(new $r(Ur((jr(),xh))))},l.Sl=function(){throw J(new $r(Ur((jr(),xh))))},l.Tl=function(){throw J(new $r(Ur((jr(),xh))))},l.Ul=function(){throw J(new $r(Ur((jr(),xh))))},l.Vl=function(){var t;if(mi(this),t=Pne(Xv(this),0),this.c!=7)throw J(new $r(Ur((jr(),Tb))));return mi(this),t},l.Wl=function(){throw J(new $r(Ur((jr(),xh))))},l.Xl=function(t){return mi(this),Ij(t,(yi(),yi(),new $m(3,t)))},l.Yl=function(t){var n;return mi(this),n=(yi(),yi(),new e_(2)),pb(n,t),pb(n,nA),n},l.Zl=function(t){return mi(this),yi(),yi(),new $m(3,t)};var s5=null,LE=null;O($g,"RegEx/ParserForXMLSchema",1824),M(117,1,V7,cv),l.$l=function(t){throw J(new tc("Not supported."))},l._l=function(){return-1},l.am=function(t){return null},l.bm=function(){return null},l.cm=function(t){},l.dm=function(t){},l.em=function(){return 0},l.Ib=function(){return this.fm(0)},l.fm=function(t){return this.e==11?".":""},l.e=0;var rLe,ME,tA,$4t,iLe,Yy=null,sU,Lfe=null,sLe,nA,Mfe=null,aLe,oLe,cLe,uLe,lLe,H4t,qk,z4t,G4t,q4t,V4t,DE,U4t,W4t,D3n=O($g,"RegEx/Token",117);M(136,117,{3:1,136:1,117:1},Hl),l.fm=function(t){var n,r,s;if(this.e==4)if(this==sLe)r=".";else if(this==sU)r="\\d";else if(this==DE)r="\\w";else if(this==qk)r="\\s";else{for(s=new bg,s.a+="[",n=0;n0&&(s.a+=","),this.b[n]===this.b[n+1]?To(s,yI(this.b[n])):(To(s,yI(this.b[n])),s.a+="-",To(s,yI(this.b[n+1])));s.a+="]",r=s.a}else if(this==cLe)r="\\D";else if(this==lLe)r="\\W";else if(this==uLe)r="\\S";else{for(s=new bg,s.a+="[^",n=0;n0&&(s.a+=","),this.b[n]===this.b[n+1]?To(s,yI(this.b[n])):(To(s,yI(this.b[n])),s.a+="-",To(s,yI(this.b[n+1])));s.a+="]",r=s.a}return r},l.a=!1,l.c=!1,O($g,"RegEx/RangeToken",136),M(584,1,{584:1},ipe),l.a=0,O($g,"RegEx/RegexParser/ReferencePosition",584),M(583,1,{3:1,583:1},Uze),l.Fb=function(t){var n;return t==null||!we(t,583)?!1:(n=u(t,583),an(this.b,n.b)&&this.a==n.a)},l.Hb=function(){return Ig(this.b+"/"+g5e(this.a))},l.Ib=function(){return this.c.fm(this.a)},l.a=0,O($g,"RegEx/RegularExpression",583),M(223,117,V7,Yd),l._l=function(){return this.a},l.fm=function(t){var n,r,s;switch(this.e){case 0:switch(this.a){case 124:case 42:case 43:case 63:case 40:case 41:case 46:case 91:case 123:case 92:s="\\"+cne(this.a&Ss);break;case 12:s="\\f";break;case 10:s="\\n";break;case 13:s="\\r";break;case 9:s="\\t";break;case 27:s="\\e";break;default:this.a>=so?(r=(n=this.a>>>0,"0"+n.toString(16)),s="\\v"+jl(r,r.length-6,r.length)):s=""+cne(this.a&Ss)}break;case 8:this==aLe||this==oLe?s=""+cne(this.a&Ss):s="\\"+cne(this.a&Ss);break;default:s=null}return s},l.a=0,O($g,"RegEx/Token/CharToken",223),M(309,117,V7,$m),l.am=function(t){return this.a},l.cm=function(t){this.b=t},l.dm=function(t){this.c=t},l.em=function(){return 1},l.fm=function(t){var n;if(this.e==3)if(this.c<0&&this.b<0)n=this.a.fm(t)+"*";else if(this.c==this.b)n=this.a.fm(t)+"{"+this.c+"}";else if(this.c>=0&&this.b>=0)n=this.a.fm(t)+"{"+this.c+","+this.b+"}";else if(this.c>=0&&this.b<0)n=this.a.fm(t)+"{"+this.c+",}";else throw J(new tc("Token#toString(): CLOSURE "+this.c+io+this.b));else if(this.c<0&&this.b<0)n=this.a.fm(t)+"*?";else if(this.c==this.b)n=this.a.fm(t)+"{"+this.c+"}?";else if(this.c>=0&&this.b>=0)n=this.a.fm(t)+"{"+this.c+","+this.b+"}?";else if(this.c>=0&&this.b<0)n=this.a.fm(t)+"{"+this.c+",}?";else throw J(new tc("Token#toString(): NONGREEDYCLOSURE "+this.c+io+this.b));return n},l.b=0,l.c=0,O($g,"RegEx/Token/ClosureToken",309),M(821,117,V7,Xve),l.am=function(t){return t==0?this.a:this.b},l.em=function(){return 2},l.fm=function(t){var n;return this.b.e==3&&this.b.am(0)==this.a?n=this.a.fm(t)+"+":this.b.e==9&&this.b.am(0)==this.a?n=this.a.fm(t)+"+?":n=this.a.fm(t)+(""+this.b.fm(t)),n},O($g,"RegEx/Token/ConcatToken",821),M(1822,117,V7,ZJe),l.am=function(t){if(t==0)return this.d;if(t==1)return this.b;throw J(new tc("Internal Error: "+t))},l.em=function(){return this.b?2:1},l.fm=function(t){var n;return this.c>0?n="(?("+this.c+")":this.a.e==8?n="(?("+this.a+")":n="(?"+this.a,this.b?n+=this.d+"|"+this.b+")":n+=this.d+")",n},l.c=0,O($g,"RegEx/Token/ConditionToken",1822),M(1823,117,V7,ZXe),l.am=function(t){return this.b},l.em=function(){return 1},l.fm=function(t){return"(?"+(this.a==0?"":g5e(this.a))+(this.c==0?"":g5e(this.c))+":"+this.b.fm(t)+")"},l.a=0,l.c=0,O($g,"RegEx/Token/ModifierToken",1823),M(822,117,V7,nwe),l.am=function(t){return this.a},l.em=function(){return 1},l.fm=function(t){var n;switch(n=null,this.e){case 6:this.b==0?n="(?:"+this.a.fm(t)+")":n="("+this.a.fm(t)+")";break;case 20:n="(?="+this.a.fm(t)+")";break;case 21:n="(?!"+this.a.fm(t)+")";break;case 22:n="(?<="+this.a.fm(t)+")";break;case 23:n="(?"+this.a.fm(t)+")"}return n},l.b=0,O($g,"RegEx/Token/ParenToken",822),M(521,117,{3:1,117:1,521:1},cre),l.bm=function(){return this.b},l.fm=function(t){return this.e==12?"\\"+this.a:Vdn(this.b)},l.a=0,O($g,"RegEx/Token/StringToken",521),M(465,117,V7,e_),l.$l=function(t){pb(this,t)},l.am=function(t){return u(Lv(this.a,t),117)},l.em=function(){return this.a?this.a.a.c.length:0},l.fm=function(t){var n,r,s,o,h;if(this.e==1){if(this.a.a.c.length==2)n=u(Lv(this.a,0),117),r=u(Lv(this.a,1),117),r.e==3&&r.am(0)==n?o=n.fm(t)+"+":r.e==9&&r.am(0)==n?o=n.fm(t)+"+?":o=n.fm(t)+(""+r.fm(t));else{for(h=new bg,s=0;s=this.c.b:this.a<=this.c.b},l.Sb=function(){return this.b>0},l.Tb=function(){return this.b},l.Vb=function(){return this.b-1},l.Qb=function(){throw J(new pg(v0t))},l.a=0,l.b=0,O(L8e,"ExclusiveRange/RangeIterator",254);var Sh=v8(mG,"C"),Lr=v8(qC,"I"),El=v8(sk,"Z"),S2=v8(VC,"J"),el=v8(HC,"B"),pa=v8(zC,"D"),Xy=v8(GC,"F"),a5=v8(UC,"S"),I3n=ss("org.eclipse.elk.core.labels","ILabelManager"),hLe=ss(Qa,"DiagnosticChain"),fLe=ss(Vdt,"ResourceSet"),dLe=O(Qa,"InvocationTargetException",null),Y4t=(fF(),Enn),X4t=X4t=fhn;win(hVt),qin("permProps",[[[IG,OG],[NG,"gecko1_8"]],[[IG,OG],[NG,"ie10"]],[[IG,OG],[NG,"ie8"]],[[IG,OG],[NG,"ie9"]],[[IG,OG],[NG,"safari"]]]),X4t(null,"elk",null)}).call(this)}).call(this,typeof Wk<"u"?Wk:typeof self<"u"?self:typeof window<"u"?window:{})},{}],3:[function(f,p,w){function y(B,R){if(!(B instanceof R))throw new TypeError("Cannot call a class as a function")}function b(B,R){if(!B)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return R&&(typeof R=="object"||typeof R=="function")?R:B}function E(B,R){if(typeof R!="function"&&R!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof R);B.prototype=Object.create(R&&R.prototype,{constructor:{value:B,enumerable:!1,writable:!0,configurable:!0}}),R&&(Object.setPrototypeOf?Object.setPrototypeOf(B,R):B.__proto__=R)}var S=f("./elk-api.js").default,N=function(B){E(R,B);function R(){var j=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};y(this,R);var $=Object.assign({},j),V=!1;try{f.resolve("web-worker"),V=!0}catch{}if(j.workerUrl)if(V){var Q=f("web-worker");$.workerFactory=function(se){return new Q(se)}}else console.warn(`Web worker requested but 'web-worker' package not installed. +Consider installing the package or pass your own 'workerFactory' to ELK's constructor. +... Falling back to non-web worker version.`);if(!$.workerFactory){var oe=f("./elk-worker.min.js"),ce=oe.Worker;$.workerFactory=function(se){return new ce(se)}}return b(this,(R.__proto__||Object.getPrototypeOf(R)).call(this,$))}return R}(S);Object.defineProperty(p.exports,"__esModule",{value:!0}),p.exports=N,N.default=N},{"./elk-api.js":1,"./elk-worker.min.js":2,"web-worker":4}],4:[function(f,p,w){p.exports=Worker},{}]},{},[3])(3)})})(qGt);const VGt=xLe(Mge),HFe=new VGt;let Zb={};const UGt={};let O5={};const WGt=async function(i,a,f,p,w,y,b){const S=f.select(`[id="${a}"]`).insert("g").attr("class","nodes"),N=Object.keys(i);return await Promise.all(N.map(async function(B){const R=i[B];let j="default";R.classes.length>0&&(j=R.classes.join(" ")),j=j+" flowchart-label";const $=Yw(R.styles);let V=R.text!==void 0?R.text:R.id;const Q={width:0,height:0},oe=[{id:R.id+"-west",layoutOptions:{"port.side":"WEST"}},{id:R.id+"-east",layoutOptions:{"port.side":"EAST"}},{id:R.id+"-south",layoutOptions:{"port.side":"SOUTH"}},{id:R.id+"-north",layoutOptions:{"port.side":"NORTH"}}];let ce=0,se="",ge={};switch(R.type){case"round":ce=5,se="rect";break;case"square":se="rect";break;case"diamond":se="question",ge={portConstraints:"FIXED_SIDE"};break;case"hexagon":se="hexagon";break;case"odd":se="rect_left_inv_arrow";break;case"lean_right":se="lean_right";break;case"lean_left":se="lean_left";break;case"trapezoid":se="trapezoid";break;case"inv_trapezoid":se="inv_trapezoid";break;case"odd_right":se="rect_left_inv_arrow";break;case"circle":se="circle";break;case"ellipse":se="ellipse";break;case"stadium":se="stadium";break;case"subroutine":se="subroutine";break;case"cylinder":se="cylinder";break;case"group":se="rect";break;case"doublecircle":se="doublecircle";break;default:se="rect"}const ye={labelStyle:$.labelStyle,shape:se,labelText:V,labelType:R.labelType,rx:ce,ry:ce,class:j,style:$.style,id:R.id,link:R.link,linkTarget:R.linkTarget,tooltip:w.db.getTooltip(R.id)||"",domId:w.db.lookUpDomId(R.id),haveCallback:R.haveCallback,width:R.type==="group"?500:void 0,dir:R.dir,type:R.type,props:R.props,padding:Tt().flowchart.padding};let ke,Ae;if(ye.type!=="group")Ae=await KBe(S,ye,R.dir),ke=Ae.node().getBBox();else{p.createElementNS("http://www.w3.org/2000/svg","text");const{shapeSvg:ve,bbox:te}=await jd(S,ye,void 0,!0);Q.width=te.width,Q.wrappingWidth=Tt().flowchart.wrappingWidth,Q.height=te.height,Q.labelNode=ve.node(),ye.labelData=Q}const de={id:R.id,ports:R.type==="diamond"?oe:[],layoutOptions:ge,labelText:V,labelData:Q,domId:w.db.lookUpDomId(R.id),width:ke==null?void 0:ke.width,height:ke==null?void 0:ke.height,type:R.type,el:Ae,parent:y.parentById[R.id]};O5[ye.id]=de})),b},zFe=(i,a,f)=>{const p={TB:{in:{north:"north"},out:{south:"west",west:"east",east:"south"}},LR:{in:{west:"west"},out:{east:"south",south:"north",north:"east"}},RL:{in:{east:"east"},out:{west:"north",north:"south",south:"west"}},BT:{in:{south:"south"},out:{north:"east",east:"west",west:"north"}}};return p.TD=p.TB,Fe.info("abc88",f,a,i),p[f][a][i]},GFe=(i,a,f)=>{if(Fe.info("getNextPort abc88",{node:i,edgeDirection:a,graphDirection:f}),!Zb[i])switch(f){case"TB":case"TD":Zb[i]={inPosition:"north",outPosition:"south"};break;case"BT":Zb[i]={inPosition:"south",outPosition:"north"};break;case"RL":Zb[i]={inPosition:"east",outPosition:"west"};break;case"LR":Zb[i]={inPosition:"west",outPosition:"east"};break}const p=a==="in"?Zb[i].inPosition:Zb[i].outPosition;return a==="in"?Zb[i].inPosition=zFe(Zb[i].inPosition,a,f):Zb[i].outPosition=zFe(Zb[i].outPosition,a,f),p},KGt=(i,a)=>{let f=i.start,p=i.end;const w=f,y=p,b=O5[f],E=O5[p];return!b||!E?{source:f,target:p}:(b.type==="diamond"&&(f=`${f}-${GFe(f,"out",a)}`),E.type==="diamond"&&(p=`${p}-${GFe(p,"in",a)}`),{source:f,target:p,sourceId:w,targetId:y})},YGt=function(i,a,f,p){Fe.info("abc78 edges = ",i);const w=p.insert("g").attr("class","edgeLabels");let y={},b=a.db.getDirection(),E,S;if(i.defaultStyle!==void 0){const N=Yw(i.defaultStyle);E=N.style,S=N.labelStyle}return i.forEach(function(N){var B="L-"+N.start+"-"+N.end;y[B]===void 0?(y[B]=0,Fe.info("abc78 new entry",B,y[B])):(y[B]++,Fe.info("abc78 new entry",B,y[B]));let R=B+"-"+y[B];Fe.info("abc78 new link id to be used is",B,R,y[B]);var j="LS-"+N.start,$="LE-"+N.end;const V={style:"",labelStyle:""};switch(V.minlen=N.length||1,N.type==="arrow_open"?V.arrowhead="none":V.arrowhead="normal",V.arrowTypeStart="arrow_open",V.arrowTypeEnd="arrow_open",N.type){case"double_arrow_cross":V.arrowTypeStart="arrow_cross";case"arrow_cross":V.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":V.arrowTypeStart="arrow_point";case"arrow_point":V.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":V.arrowTypeStart="arrow_circle";case"arrow_circle":V.arrowTypeEnd="arrow_circle";break}let Q="",oe="";switch(N.stroke){case"normal":Q="fill:none;",E!==void 0&&(Q=E),S!==void 0&&(oe=S),V.thickness="normal",V.pattern="solid";break;case"dotted":V.thickness="normal",V.pattern="dotted",V.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":V.thickness="thick",V.pattern="solid",V.style="stroke-width: 3.5px;fill:none;";break}if(N.style!==void 0){const Ae=Yw(N.style);Q=Ae.style,oe=Ae.labelStyle}V.style=V.style+=Q,V.labelStyle=V.labelStyle+=oe,N.interpolate!==void 0?V.curve=Ub(N.interpolate,ng):i.defaultInterpolate!==void 0?V.curve=Ub(i.defaultInterpolate,ng):V.curve=Ub(UGt.curve,ng),N.text===void 0?N.style!==void 0&&(V.arrowheadStyle="fill: #333"):(V.arrowheadStyle="fill: #333",V.labelpos="c"),V.labelType=N.labelType,V.label=N.text.replace(Wa.lineBreakRegex,` +`),N.style===void 0&&(V.style=V.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),V.labelStyle=V.labelStyle.replace("color:","fill:"),V.id=R,V.classes="flowchart-link "+j+" "+$;const ce=QBe(w,V),{source:se,target:ge,sourceId:ye,targetId:ke}=KGt(N,b);Fe.debug("abc78 source and target",se,ge),f.edges.push({id:"e"+N.start+N.end,sources:[se],targets:[ge],sourceId:ye,targetId:ke,labelEl:ce,labels:[{width:V.width,height:V.height,orgWidth:V.width,orgHeight:V.height,text:V.label,layoutOptions:{"edgeLabels.inline":"true","edgeLabels.placement":"CENTER"}}],edgeData:V})}),f},XGt=function(i,a,f,p){let w="";switch(p&&(w=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,w=w.replace(/\(/g,"\\("),w=w.replace(/\)/g,"\\)")),a.arrowTypeStart){case"arrow_cross":i.attr("marker-start","url("+w+"#"+f+"-crossStart)");break;case"arrow_point":i.attr("marker-start","url("+w+"#"+f+"-pointStart)");break;case"arrow_barb":i.attr("marker-start","url("+w+"#"+f+"-barbStart)");break;case"arrow_circle":i.attr("marker-start","url("+w+"#"+f+"-circleStart)");break;case"aggregation":i.attr("marker-start","url("+w+"#"+f+"-aggregationStart)");break;case"extension":i.attr("marker-start","url("+w+"#"+f+"-extensionStart)");break;case"composition":i.attr("marker-start","url("+w+"#"+f+"-compositionStart)");break;case"dependency":i.attr("marker-start","url("+w+"#"+f+"-dependencyStart)");break;case"lollipop":i.attr("marker-start","url("+w+"#"+f+"-lollipopStart)");break}switch(a.arrowTypeEnd){case"arrow_cross":i.attr("marker-end","url("+w+"#"+f+"-crossEnd)");break;case"arrow_point":i.attr("marker-end","url("+w+"#"+f+"-pointEnd)");break;case"arrow_barb":i.attr("marker-end","url("+w+"#"+f+"-barbEnd)");break;case"arrow_circle":i.attr("marker-end","url("+w+"#"+f+"-circleEnd)");break;case"aggregation":i.attr("marker-end","url("+w+"#"+f+"-aggregationEnd)");break;case"extension":i.attr("marker-end","url("+w+"#"+f+"-extensionEnd)");break;case"composition":i.attr("marker-end","url("+w+"#"+f+"-compositionEnd)");break;case"dependency":i.attr("marker-end","url("+w+"#"+f+"-dependencyEnd)");break;case"lollipop":i.attr("marker-end","url("+w+"#"+f+"-lollipopEnd)");break}},QGt=function(i,a){Fe.info("Extracting classes"),a.db.clear("ver-2");try{return a.parse(i),a.db.getClasses()}catch{return{}}},ZGt=function(i){const a={parentById:{},childrenById:{}},f=i.getSubGraphs();return Fe.info("Subgraphs - ",f),f.forEach(function(p){p.nodes.forEach(function(w){a.parentById[w]=p.id,a.childrenById[p.id]===void 0&&(a.childrenById[p.id]=[]),a.childrenById[p.id].push(w)})}),f.forEach(function(p){p.id,a.parentById[p.id]!==void 0&&a.parentById[p.id]}),a},JGt=function(i,a,f){const p=GGt(i,a,f);if(p===void 0||p==="root")return{x:0,y:0};const w=O5[p].offset;return{x:w.posX,y:w.posY}},eqt=function(i,a,f,p,w){const y=JGt(a.sourceId,a.targetId,w),b=a.sections[0].startPoint,E=a.sections[0].endPoint,N=(a.sections[0].bendPoints?a.sections[0].bendPoints:[]).map(oe=>[oe.x+y.x,oe.y+y.y]),B=[[b.x+y.x,b.y+y.y],...N,[E.x+y.x,E.y+y.y]],R=WE().curve(ng),j=i.insert("path").attr("d",R(B)).attr("class","path").attr("fill","none"),$=i.insert("g").attr("class","edgeLabel"),V=Cr($.node().appendChild(a.labelEl)),Q=V.node().firstChild.getBoundingClientRect();V.attr("width",Q.width),V.attr("height",Q.height),$.attr("transform",`translate(${a.labels[0].x+y.x}, ${a.labels[0].y+y.y})`),XGt(j,f,p.type,p.arrowMarkerAbsolute)},qFe=(i,a)=>{i.forEach(f=>{f.children||(f.children=[]);const p=a.childrenById[f.id];p&&p.forEach(w=>{f.children.push(O5[w])}),qFe(f.children,a)})},tqt=async function(i,a,f,p){var de;p.db.clear(),O5={},Zb={},p.db.setGen("gen-2"),p.parser.parse(i);const w=Cr("body").append("div").attr("style","height:400px").attr("id","cy");let y={id:"root",layoutOptions:{"elk.hierarchyHandling":"INCLUDE_CHILDREN","org.eclipse.elk.padding":"[top=100, left=100, bottom=110, right=110]","elk.layered.spacing.edgeNodeBetweenLayers":"30","elk.direction":"DOWN"},children:[],edges:[]};switch(Fe.info("Drawing flowchart using v3 renderer",HFe),p.db.getDirection()){case"BT":y.layoutOptions["elk.direction"]="UP";break;case"TB":y.layoutOptions["elk.direction"]="DOWN";break;case"LR":y.layoutOptions["elk.direction"]="RIGHT";break;case"RL":y.layoutOptions["elk.direction"]="LEFT";break}const{securityLevel:E,flowchart:S}=Tt();let N;E==="sandbox"&&(N=Cr("#i"+a));const B=Cr(E==="sandbox"?N.nodes()[0].contentDocument.body:"body"),R=E==="sandbox"?N.nodes()[0].contentDocument:document,j=B.select(`[id="${a}"]`);vBe(j,["point","circle","cross"],p.type,p.arrowMarkerAbsolute);const V=p.db.getVertices();let Q;const oe=p.db.getSubGraphs();Fe.info("Subgraphs - ",oe);for(let ve=oe.length-1;ve>=0;ve--)Q=oe[ve],p.db.addVertex(Q.id,{text:Q.title,type:Q.labelType},"group",void 0,Q.classes,Q.dir);const ce=j.insert("g").attr("class","subgraphs"),se=ZGt(p.db);y=await WGt(V,a,B,R,p,se,y);const ge=j.insert("g").attr("class","edges edgePath"),ye=p.db.getEdges();y=YGt(ye,p,y,j),Object.keys(O5).forEach(ve=>{const te=O5[ve];te.parent||y.children.push(te),se.childrenById[ve]!==void 0&&(te.labels=[{text:te.labelText,layoutOptions:{"nodeLabels.placement":"[H_CENTER, V_TOP, INSIDE]"},width:te.labelData.width,height:te.labelData.height}],delete te.x,delete te.y,delete te.width,delete te.height)}),qFe(y.children,se),Fe.info("after layout",JSON.stringify(y,null,2));const Ae=await HFe.layout(y);VFe(0,0,Ae.children,j,ce,p,0),Fe.info("after layout",Ae),(de=Ae.edges)==null||de.map(ve=>{eqt(ge,ve,ve.edgeData,p,se)}),YE({},j,S.diagramPadding,S.useMaxWidth),w.remove()},VFe=(i,a,f,p,w,y,b)=>{f.forEach(function(E){if(E)if(O5[E.id].offset={posX:E.x+i,posY:E.y+a,x:i,y:a,depth:b,width:E.width,height:E.height},E.type==="group"){const S=w.insert("g").attr("class","subgraph");S.insert("rect").attr("class","subgraph subgraph-lvl-"+b%5+" node").attr("x",E.x+i).attr("y",E.y+a).attr("width",E.width).attr("height",E.height);const N=S.insert("g").attr("class","label"),B=Tt().flowchart.htmlLabels?E.labelData.width/2:0;N.attr("transform",`translate(${E.labels[0].x+i+E.x+B}, ${E.labels[0].y+a+E.y+3})`),N.node().appendChild(E.labelData.labelNode),Fe.info("Id (UGH)= ",E.type,E.labels)}else Fe.info("Id (UGH)= ",E.id),E.el.attr("transform",`translate(${E.x+i+E.width/2}, ${E.y+a+E.height/2})`)}),f.forEach(function(E){E&&E.type==="group"&&VFe(i+E.x,a+E.y,E.children,p,w,y,b+1)})},nqt={getClasses:QGt,draw:tqt},rqt=i=>{let a="";for(let f=0;f<5;f++)a+=` + .subgraph-lvl-${f} { + fill: ${i[`surface${f}`]}; + stroke: ${i[`surfacePeer${f}`]}; + } + `;return a},iqt=Object.freeze(Object.defineProperty({__proto__:null,diagram:{db:hMt,renderer:nqt,parser:Dde,styles:i=>`.label { + font-family: ${i.fontFamily}; + color: ${i.nodeTextColor||i.textColor}; + } + .cluster-label text { + fill: ${i.titleColor}; + } + .cluster-label span { + color: ${i.titleColor}; + } + + .label text,span { + fill: ${i.nodeTextColor||i.textColor}; + color: ${i.nodeTextColor||i.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.85; + background-color: ${i.edgeLabelBackground}; + fill: ${i.edgeLabelBackground}; + } + text-align: center; + } + + .cluster rect { + fill: ${i.clusterBkg}; + stroke: ${i.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${i.titleColor}; + } + + .cluster span { + color: ${i.titleColor}; + } + /* .cluster div { + color: ${i.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${i.fontFamily}; + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } + .subgraph { + stroke-width:2; + rx:3; + } + // .subgraph-lvl-1 { + // fill:#ccc; + // // stroke:black; + // } + + .flowchart-label text { + text-anchor: middle; + } + + ${rqt(i)} +`}},Symbol.toStringTag,{value:"Module"}));var Dge=function(){var i=function(oe,ce,se,ge){for(se=se||{},ge=oe.length;ge--;se[oe[ge]]=ce);return se},a=[1,2],f=[1,5],p=[6,9,11,17,18,20,22,23,26,27,28],w=[1,15],y=[1,16],b=[1,17],E=[1,18],S=[1,19],N=[1,23],B=[1,24],R=[1,27],j=[4,6,9,11,17,18,20,22,23,26,27,28],$={trace:function(){},yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,acc_title:18,acc_title_value:19,acc_descr:20,acc_descr_value:21,acc_descr_multiline_value:22,section:23,period_statement:24,event_statement:25,period:26,event:27,open_directive:28,type_directive:29,arg_directive:30,close_directive:31,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"acc_title",19:"acc_title_value",20:"acc_descr",21:"acc_descr_value",22:"acc_descr_multiline_value",23:"section",26:"period",27:"event",28:"open_directive",29:"type_directive",30:"arg_directive",31:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[24,1],[25,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(ce,se,ge,ye,ke,Ae,de){var ve=Ae.length-1;switch(ke){case 1:return Ae[ve-1];case 3:this.$=[];break;case 4:Ae[ve-1].push(Ae[ve]),this.$=Ae[ve-1];break;case 5:case 6:this.$=Ae[ve];break;case 7:case 8:this.$=[];break;case 11:ye.getCommonDb().setDiagramTitle(Ae[ve].substr(6)),this.$=Ae[ve].substr(6);break;case 12:this.$=Ae[ve].trim(),ye.getCommonDb().setAccTitle(this.$);break;case 13:case 14:this.$=Ae[ve].trim(),ye.getCommonDb().setAccDescription(this.$);break;case 15:ye.addSection(Ae[ve].substr(8)),this.$=Ae[ve].substr(8);break;case 19:ye.addTask(Ae[ve],0,""),this.$=Ae[ve];break;case 20:ye.addEvent(Ae[ve].substr(2)),this.$=Ae[ve];break;case 21:ye.parseDirective("%%{","open_directive");break;case 22:ye.parseDirective(Ae[ve],"type_directive");break;case 23:Ae[ve]=Ae[ve].trim().replace(/'/g,'"'),ye.parseDirective(Ae[ve],"arg_directive");break;case 24:ye.parseDirective("}%%","close_directive","timeline");break}},table:[{3:1,4:a,7:3,12:4,28:f},{1:[3]},i(p,[2,3],{5:6}),{3:7,4:a,7:3,12:4,28:f},{13:8,29:[1,9]},{29:[2,21]},{6:[1,10],7:22,8:11,9:[1,12],10:13,11:[1,14],12:4,17:w,18:y,20:b,22:E,23:S,24:20,25:21,26:N,27:B,28:f},{1:[2,2]},{14:25,15:[1,26],31:R},i([15,31],[2,22]),i(p,[2,8],{1:[2,1]}),i(p,[2,4]),{7:22,10:28,12:4,17:w,18:y,20:b,22:E,23:S,24:20,25:21,26:N,27:B,28:f},i(p,[2,6]),i(p,[2,7]),i(p,[2,11]),{19:[1,29]},{21:[1,30]},i(p,[2,14]),i(p,[2,15]),i(p,[2,16]),i(p,[2,17]),i(p,[2,18]),i(p,[2,19]),i(p,[2,20]),{11:[1,31]},{16:32,30:[1,33]},{11:[2,24]},i(p,[2,5]),i(p,[2,12]),i(p,[2,13]),i(j,[2,9]),{14:34,31:R},{31:[2,23]},{11:[1,35]},i(j,[2,10])],defaultActions:{5:[2,21],7:[2,2],27:[2,24],33:[2,23]},parseError:function(ce,se){if(se.recoverable)this.trace(ce);else{var ge=new Error(ce);throw ge.hash=se,ge}},parse:function(ce){var se=this,ge=[0],ye=[],ke=[null],Ae=[],de=this.table,ve="",te=0,xe=0,De=2,he=1,Ie=Ae.slice.call(arguments,1),ee=Object.create(this.lexer),rt={yy:{}};for(var me in this.yy)Object.prototype.hasOwnProperty.call(this.yy,me)&&(rt.yy[me]=this.yy[me]);ee.setInput(ce,rt.yy),rt.yy.lexer=ee,rt.yy.parser=this,typeof ee.yylloc>"u"&&(ee.yylloc={});var gt=ee.yylloc;Ae.push(gt);var pe=ee.options&&ee.options.ranges;typeof rt.yy.parseError=="function"?this.parseError=rt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Et(){var vt;return vt=ye.pop()||ee.lex()||he,typeof vt!="number"&&(vt instanceof Array&&(ye=vt,vt=ye.pop()),vt=se.symbols_[vt]||vt),vt}for(var wt,jt,At,Bt,cn={},Nn,Ot,oi,kt;;){if(jt=ge[ge.length-1],this.defaultActions[jt]?At=this.defaultActions[jt]:((wt===null||typeof wt>"u")&&(wt=Et()),At=de[jt]&&de[jt][wt]),typeof At>"u"||!At.length||!At[0]){var Dt="";kt=[];for(Nn in de[jt])this.terminals_[Nn]&&Nn>De&&kt.push("'"+this.terminals_[Nn]+"'");ee.showPosition?Dt="Parse error on line "+(te+1)+`: +`+ee.showPosition()+` +Expecting `+kt.join(", ")+", got '"+(this.terminals_[wt]||wt)+"'":Dt="Parse error on line "+(te+1)+": Unexpected "+(wt==he?"end of input":"'"+(this.terminals_[wt]||wt)+"'"),this.parseError(Dt,{text:ee.match,token:this.terminals_[wt]||wt,line:ee.yylineno,loc:gt,expected:kt})}if(At[0]instanceof Array&&At.length>1)throw new Error("Parse Error: multiple actions possible at state: "+jt+", token: "+wt);switch(At[0]){case 1:ge.push(wt),ke.push(ee.yytext),Ae.push(ee.yylloc),ge.push(At[1]),wt=null,xe=ee.yyleng,ve=ee.yytext,te=ee.yylineno,gt=ee.yylloc;break;case 2:if(Ot=this.productions_[At[1]][1],cn.$=ke[ke.length-Ot],cn._$={first_line:Ae[Ae.length-(Ot||1)].first_line,last_line:Ae[Ae.length-1].last_line,first_column:Ae[Ae.length-(Ot||1)].first_column,last_column:Ae[Ae.length-1].last_column},pe&&(cn._$.range=[Ae[Ae.length-(Ot||1)].range[0],Ae[Ae.length-1].range[1]]),Bt=this.performAction.apply(cn,[ve,xe,te,rt.yy,At[1],ke,Ae].concat(Ie)),typeof Bt<"u")return Bt;Ot&&(ge=ge.slice(0,-1*Ot*2),ke=ke.slice(0,-1*Ot),Ae=Ae.slice(0,-1*Ot)),ge.push(this.productions_[At[1]][0]),ke.push(cn.$),Ae.push(cn._$),oi=de[ge[ge.length-2]][ge[ge.length-1]],ge.push(oi);break;case 3:return!0}}return!0}},V=function(){var oe={EOF:1,parseError:function(se,ge){if(this.yy.parser)this.yy.parser.parseError(se,ge);else throw new Error(se)},setInput:function(ce,se){return this.yy=se||this.yy||{},this._input=ce,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ce=this._input[0];this.yytext+=ce,this.yyleng++,this.offset++,this.match+=ce,this.matched+=ce;var se=ce.match(/(?:\r\n?|\n).*/g);return se?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ce},unput:function(ce){var se=ce.length,ge=ce.split(/(?:\r\n?|\n)/g);this._input=ce+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-se),this.offset-=se;var ye=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ge.length-1&&(this.yylineno-=ge.length-1);var ke=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ge?(ge.length===ye.length?this.yylloc.first_column:0)+ye[ye.length-ge.length].length-ge[0].length:this.yylloc.first_column-se},this.options.ranges&&(this.yylloc.range=[ke[0],ke[0]+this.yyleng-se]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(ce){this.unput(this.match.slice(ce))},pastInput:function(){var ce=this.matched.substr(0,this.matched.length-this.match.length);return(ce.length>20?"...":"")+ce.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var ce=this.match;return ce.length<20&&(ce+=this._input.substr(0,20-ce.length)),(ce.substr(0,20)+(ce.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var ce=this.pastInput(),se=new Array(ce.length+1).join("-");return ce+this.upcomingInput()+` +`+se+"^"},test_match:function(ce,se){var ge,ye,ke;if(this.options.backtrack_lexer&&(ke={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ke.yylloc.range=this.yylloc.range.slice(0))),ye=ce[0].match(/(?:\r\n?|\n).*/g),ye&&(this.yylineno+=ye.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ye?ye[ye.length-1].length-ye[ye.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ce[0].length},this.yytext+=ce[0],this.match+=ce[0],this.matches=ce,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ce[0].length),this.matched+=ce[0],ge=this.performAction.call(this,this.yy,this,se,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ge)return ge;if(this._backtrack){for(var Ae in ke)this[Ae]=ke[Ae];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ce,se,ge,ye;this._more||(this.yytext="",this.match="");for(var ke=this._currentRules(),Ae=0;Aese[0].length)){if(se=ge,ye=Ae,this.options.backtrack_lexer){if(ce=this.test_match(ge,ke[Ae]),ce!==!1)return ce;if(this._backtrack){se=!1;continue}else return!1}else if(!this.options.flex)break}return se?(ce=this.test_match(se,ke[ye]),ce!==!1?ce:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var se=this.next();return se||this.lex()},begin:function(se){this.conditionStack.push(se)},popState:function(){var se=this.conditionStack.length-1;return se>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(se){return se=this.conditionStack.length-1-Math.abs(se||0),se>=0?this.conditionStack[se]:"INITIAL"},pushState:function(se){this.begin(se)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(se,ge,ye,ke){switch(ye){case 0:return this.begin("open_directive"),28;case 1:return this.begin("type_directive"),29;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),31;case 4:return 30;case 5:break;case 6:break;case 7:return 11;case 8:break;case 9:break;case 10:return 4;case 11:return 17;case 12:return this.begin("acc_title"),18;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),20;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:return 23;case 20:return 27;case 21:return 26;case 22:return 6;case 23:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?::\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23],inclusive:!0}}};return oe}();$.lexer=V;function Q(){this.yy={}}return Q.prototype=$,$.Parser=Q,new Q}();Dge.parser=Dge;const sqt=Dge;let gL="",UFe=0;const Ige=[],WK=[],pL=[],WFe=()=>kIe,KFe=(i,a,f)=>{rde(globalThis,i,a,f)},YFe=function(){Ige.length=0,WK.length=0,gL="",pL.length=0,rp()},XFe=function(i){gL=i,Ige.push(i)},QFe=function(){return Ige},ZFe=function(){let i=nje();const a=100;let f=0;for(;!i&&ff.id===UFe-1).events.push(i)},tje=function(i){const a={section:gL,type:gL,description:i,task:i,classes:[]};WK.push(a)},nje=function(){const i=function(f){return pL[f].processed};let a=!0;for(const[f,p]of pL.entries())i(f),a=a&&p.processed;return a},aqt=Object.freeze(Object.defineProperty({__proto__:null,addEvent:eje,addSection:XFe,addTask:JFe,addTaskOrg:tje,clear:YFe,default:{clear:YFe,getCommonDb:WFe,addSection:XFe,getSections:QFe,getTasks:ZFe,addTask:JFe,addTaskOrg:tje,addEvent:eje,parseDirective:KFe},getCommonDb:WFe,getSections:QFe,getTasks:ZFe,parseDirective:KFe},Symbol.toStringTag,{value:"Module"})),oqt=12,KK=function(i,a){const f=i.append("rect");return f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),f.attr("rx",a.rx),f.attr("ry",a.ry),a.class!==void 0&&f.attr("class",a.class),f},cqt=function(i,a){const p=i.append("circle").attr("cx",a.cx).attr("cy",a.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),w=i.append("g");w.append("circle").attr("cx",a.cx-15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),w.append("circle").attr("cx",a.cx+15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function y(S){const N=CA().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",N).attr("transform","translate("+a.cx+","+(a.cy+2)+")")}function b(S){const N=CA().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",N).attr("transform","translate("+a.cx+","+(a.cy+7)+")")}function E(S){S.append("line").attr("class","mouth").attr("stroke",2).attr("x1",a.cx-5).attr("y1",a.cy+7).attr("x2",a.cx+5).attr("y2",a.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.score>3?y(w):a.score<3?b(w):E(w),p},uqt=function(i,a){const f=i.append("circle");return f.attr("cx",a.cx),f.attr("cy",a.cy),f.attr("class","actor-"+a.pos),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("r",a.r),f.class!==void 0&&f.attr("class",f.class),a.title!==void 0&&f.append("title").text(a.title),f},rje=function(i,a){const f=a.text.replace(//gi," "),p=i.append("text");p.attr("x",a.x),p.attr("y",a.y),p.attr("class","legend"),p.style("text-anchor",a.anchor),a.class!==void 0&&p.attr("class",a.class);const w=p.append("tspan");return w.attr("x",a.x+a.textMargin*2),w.text(f),p},lqt=function(i,a){function f(w,y,b,E,S){return w+","+y+" "+(w+b)+","+y+" "+(w+b)+","+(y+E-S)+" "+(w+b-S*1.2)+","+(y+E)+" "+w+","+(y+E)}const p=i.append("polygon");p.attr("points",f(a.x,a.y,50,20,7)),p.attr("class","labelBox"),a.y=a.y+a.labelMargin,a.x=a.x+.5*a.labelMargin,rje(i,a)},hqt=function(i,a,f){const p=i.append("g"),w=Oge();w.x=a.x,w.y=a.y,w.fill=a.fill,w.width=f.width,w.height=f.height,w.class="journey-section section-type-"+a.num,w.rx=3,w.ry=3,KK(p,w),sje(f)(a.text,p,w.x,w.y,w.width,w.height,{class:"journey-section section-type-"+a.num},f,a.colour)};let ije=-1;const fqt=function(i,a,f){const p=a.x+f.width/2,w=i.append("g");ije++;const y=300+5*30;w.append("line").attr("id","task"+ije).attr("x1",p).attr("y1",a.y).attr("x2",p).attr("y2",y).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),cqt(w,{cx:p,cy:300+(5-a.score)*30,score:a.score});const b=Oge();b.x=a.x,b.y=a.y,b.fill=a.fill,b.width=f.width,b.height=f.height,b.class="task task-type-"+a.num,b.rx=3,b.ry=3,KK(w,b),a.x+14,sje(f)(a.task,w,b.x,b.y,b.width,b.height,{class:"task"},f,a.colour)},dqt=function(i,a){KK(i,{x:a.startx,y:a.starty,width:a.stopx-a.startx,height:a.stopy-a.starty,fill:a.fill,class:"rect"}).lower()},gqt=function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},Oge=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},sje=function(){function i(w,y,b,E,S,N,B,R){const j=y.append("text").attr("x",b+S/2).attr("y",E+N/2+5).style("font-color",R).style("text-anchor","middle").text(w);p(j,B)}function a(w,y,b,E,S,N,B,R,j){const{taskFontSize:$,taskFontFamily:V}=R,Q=w.split(//gi);for(let oe=0;oe)/).reverse(),w,y=[],b=1.1,E=f.attr("y"),S=parseFloat(f.attr("dy")),N=f.text(null).append("tspan").attr("x",0).attr("y",E).attr("dy",S+"em");for(let B=0;Ba||w==="
")&&(y.pop(),N.text(y.join(" ").trim()),w==="
"?y=[""]:y=[w],N=f.append("tspan").attr("x",0).attr("y",E).attr("dy",b+"em").text(w))})}const bqt=function(i,a,f,p){const w=f%oqt-1,y=i.append("g");a.section=w,y.attr("class",(a.class?a.class+" ":"")+"timeline-node "+("section-"+w));const b=y.append("g"),E=y.append("g"),N=E.append("text").text(a.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(aje,a.width).node().getBBox(),B=p.fontSize&&p.fontSize.replace?p.fontSize.replace("px",""):p.fontSize;return a.height=N.height+B*1.1*.5+a.padding,a.height=Math.max(a.height,a.maxHeight),a.width=a.width+2*a.padding,E.attr("transform","translate("+a.width/2+", "+a.padding/2+")"),wqt(b,a,w),a},vqt=function(i,a,f){const p=i.append("g"),y=p.append("text").text(a.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(aje,a.width).node().getBBox(),b=f.fontSize&&f.fontSize.replace?f.fontSize.replace("px",""):f.fontSize;return p.remove(),y.height+b*1.1*.5+a.padding},wqt=function(i,a,f){i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+a.type).attr("d",`M0 ${a.height-5} v${-a.height+2*5} q0,-5 5,-5 h${a.width-2*5} q5,0 5,5 v${a.height-5} H0 Z`),i.append("line").attr("class","node-line-"+f).attr("x1",0).attr("y1",a.height).attr("x2",a.width).attr("y2",a.height)},v9={drawRect:KK,drawCircle:uqt,drawSection:hqt,drawText:rje,drawLabel:lqt,drawTask:fqt,drawBackgroundRect:dqt,getTextObj:gqt,getNoteRect:Oge,initGraphics:pqt,drawNode:bqt,getVirtualNodeHeight:vqt},mqt=function(i,a,f,p){var te,xe,De,he;const w=Tt(),y=w.leftMargin??50;(xe=(te=p.db).clear)==null||xe.call(te),p.parser.parse(i+` +`),Fe.debug("timeline",p.db);const b=w.securityLevel;let E;b==="sandbox"&&(E=Cr("#i"+a));const N=Cr(b==="sandbox"?E.nodes()[0].contentDocument.body:"body").select("#"+a);N.append("g");const B=p.db.getTasks(),R=p.db.getCommonDb().getDiagramTitle();Fe.debug("task",B),v9.initGraphics(N);const j=p.db.getSections();Fe.debug("sections",j);let $=0,V=0,Q=0,oe=0,ce=50+y,se=50;oe=50;let ge=0,ye=!0;j.forEach(function(Ie){const ee={number:ge,descr:Ie,section:ge,width:150,padding:20,maxHeight:$},rt=v9.getVirtualNodeHeight(N,ee,w);Fe.debug("sectionHeight before draw",rt),$=Math.max($,rt+20)});let ke=0,Ae=0;Fe.debug("tasks.length",B.length);for(const[Ie,ee]of B.entries()){const rt={number:Ie,descr:ee,section:ee.section,width:150,padding:20,maxHeight:V},me=v9.getVirtualNodeHeight(N,rt,w);Fe.debug("taskHeight before draw",me),V=Math.max(V,me+20),ke=Math.max(ke,ee.events.length);let gt=0;for(let pe=0;pe0?j.forEach(Ie=>{const ee=B.filter(pe=>pe.section===Ie),rt={number:ge,descr:Ie,section:ge,width:200*Math.max(ee.length,1)-50,padding:20,maxHeight:$};Fe.debug("sectionNode",rt);const me=N.append("g"),gt=v9.drawNode(me,rt,ge,w);Fe.debug("sectionNode output",gt),me.attr("transform",`translate(${ce}, ${oe})`),se+=$+50,ee.length>0&&oje(N,ee,ge,ce,se,V,w,ke,Ae,$,!1),ce+=200*Math.max(ee.length,1),se=oe,ge++}):(ye=!1,oje(N,B,ge,ce,se,V,w,ke,Ae,$,!0));const de=N.node().getBBox();Fe.debug("bounds",de),R&&N.append("text").text(R).attr("x",de.width/2-y).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),Q=ye?$+V+150:V+100,N.append("g").attr("class","lineWrapper").append("line").attr("x1",y).attr("y1",Q).attr("x2",de.width+3*y).attr("y2",Q).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),YE(void 0,N,((De=w.timeline)==null?void 0:De.padding)??50,((he=w.timeline)==null?void 0:he.useMaxWidth)??!1)},oje=function(i,a,f,p,w,y,b,E,S,N,B){var R;for(const j of a){const $={descr:j.task,section:f,number:f,width:150,padding:20,maxHeight:y};Fe.debug("taskNode",$);const V=i.append("g").attr("class","taskWrapper"),oe=v9.drawNode(V,$,f,b).height;if(Fe.debug("taskHeight after draw",oe),V.attr("transform",`translate(${p}, ${w})`),y=Math.max(y,oe),j.events){const ce=i.append("g").attr("class","lineWrapper");let se=y;w+=100,se=se+yqt(i,j.events,f,p,w,b),w-=100,ce.append("line").attr("x1",p+190/2).attr("y1",w+y).attr("x2",p+190/2).attr("y2",w+y+(B?y:N)+S+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}p=p+200,B&&!((R=b.timeline)!=null&&R.disableMulticolor)&&f++}w=w-10},yqt=function(i,a,f,p,w,y){let b=0;const E=w;w=w+100;for(const S of a){const N={descr:S,section:f,number:f,width:150,padding:20,maxHeight:50};Fe.debug("eventNode",N);const B=i.append("g").attr("class","eventWrapper"),j=v9.drawNode(B,N,f,y).height;b=b+j,B.attr("transform",`translate(${p}, ${w})`),w=w+10+j}return w=E,b},kqt={setConf:()=>{},draw:mqt},xqt=i=>{let a="";for(let f=0;f` + .edge { + stroke-width: 3; + } + ${xqt(i)} + .section-root rect, .section-root path, .section-root circle { + fill: ${i.git0}; + } + .section-root text { + fill: ${i.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .eventWrapper { + filter: brightness(120%); + } +`}},Symbol.toStringTag,{value:"Module"}));var Nge=function(){var i=function(ye,ke,Ae,de){for(Ae=Ae||{},de=ye.length;de--;Ae[ye[de]]=ke);return Ae},a=[1,4],f=[1,13],p=[1,12],w=[1,15],y=[1,16],b=[1,20],E=[1,19],S=[6,7,8],N=[1,26],B=[1,24],R=[1,25],j=[6,7,11],$=[1,6,13,15,16,19,22],V=[1,33],Q=[1,34],oe=[1,6,7,11,13,15,16,19,22],ce={trace:function(){},yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:function(ke,Ae,de,ve,te,xe,De){var he=xe.length-1;switch(te){case 6:case 7:return ve;case 8:ve.getLogger().trace("Stop NL ");break;case 9:ve.getLogger().trace("Stop EOF ");break;case 11:ve.getLogger().trace("Stop NL2 ");break;case 12:ve.getLogger().trace("Stop EOF2 ");break;case 15:ve.getLogger().info("Node: ",xe[he].id),ve.addNode(xe[he-1].length,xe[he].id,xe[he].descr,xe[he].type);break;case 16:ve.getLogger().trace("Icon: ",xe[he]),ve.decorateNode({icon:xe[he]});break;case 17:case 21:ve.decorateNode({class:xe[he]});break;case 18:ve.getLogger().trace("SPACELIST");break;case 19:ve.getLogger().trace("Node: ",xe[he].id),ve.addNode(0,xe[he].id,xe[he].descr,xe[he].type);break;case 20:ve.decorateNode({icon:xe[he]});break;case 25:ve.getLogger().trace("node found ..",xe[he-2]),this.$={id:xe[he-1],descr:xe[he-1],type:ve.getType(xe[he-2],xe[he])};break;case 26:this.$={id:xe[he],descr:xe[he],type:ve.nodeType.DEFAULT};break;case 27:ve.getLogger().trace("node found ..",xe[he-3]),this.$={id:xe[he-3],descr:xe[he-1],type:ve.getType(xe[he-2],xe[he])};break}},table:[{3:1,4:2,5:3,6:[1,5],8:a},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:a},{6:f,7:[1,10],9:9,12:11,13:p,14:14,15:w,16:y,17:17,18:18,19:b,22:E},i(S,[2,3]),{1:[2,2]},i(S,[2,4]),i(S,[2,5]),{1:[2,6],6:f,12:21,13:p,14:14,15:w,16:y,17:17,18:18,19:b,22:E},{6:f,9:22,12:11,13:p,14:14,15:w,16:y,17:17,18:18,19:b,22:E},{6:N,7:B,10:23,11:R},i(j,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:b,22:E}),i(j,[2,18]),i(j,[2,19]),i(j,[2,20]),i(j,[2,21]),i(j,[2,23]),i(j,[2,24]),i(j,[2,26],{19:[1,30]}),{20:[1,31]},{6:N,7:B,10:32,11:R},{1:[2,7],6:f,12:21,13:p,14:14,15:w,16:y,17:17,18:18,19:b,22:E},i($,[2,14],{7:V,11:Q}),i(oe,[2,8]),i(oe,[2,9]),i(oe,[2,10]),i(j,[2,15]),i(j,[2,16]),i(j,[2,17]),{20:[1,35]},{21:[1,36]},i($,[2,13],{7:V,11:Q}),i(oe,[2,11]),i(oe,[2,12]),{21:[1,37]},i(j,[2,25]),i(j,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:function(ke,Ae){if(Ae.recoverable)this.trace(ke);else{var de=new Error(ke);throw de.hash=Ae,de}},parse:function(ke){var Ae=this,de=[0],ve=[],te=[null],xe=[],De=this.table,he="",Ie=0,ee=0,rt=2,me=1,gt=xe.slice.call(arguments,1),pe=Object.create(this.lexer),Et={yy:{}};for(var wt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,wt)&&(Et.yy[wt]=this.yy[wt]);pe.setInput(ke,Et.yy),Et.yy.lexer=pe,Et.yy.parser=this,typeof pe.yylloc>"u"&&(pe.yylloc={});var jt=pe.yylloc;xe.push(jt);var At=pe.options&&pe.options.ranges;typeof Et.yy.parseError=="function"?this.parseError=Et.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Bt(){var Lt;return Lt=ve.pop()||pe.lex()||me,typeof Lt!="number"&&(Lt instanceof Array&&(ve=Lt,Lt=ve.pop()),Lt=Ae.symbols_[Lt]||Lt),Lt}for(var cn,Nn,Ot,oi,kt={},Dt,vt,Nt,ze;;){if(Nn=de[de.length-1],this.defaultActions[Nn]?Ot=this.defaultActions[Nn]:((cn===null||typeof cn>"u")&&(cn=Bt()),Ot=De[Nn]&&De[Nn][cn]),typeof Ot>"u"||!Ot.length||!Ot[0]){var Xe="";ze=[];for(Dt in De[Nn])this.terminals_[Dt]&&Dt>rt&&ze.push("'"+this.terminals_[Dt]+"'");pe.showPosition?Xe="Parse error on line "+(Ie+1)+`: +`+pe.showPosition()+` +Expecting `+ze.join(", ")+", got '"+(this.terminals_[cn]||cn)+"'":Xe="Parse error on line "+(Ie+1)+": Unexpected "+(cn==me?"end of input":"'"+(this.terminals_[cn]||cn)+"'"),this.parseError(Xe,{text:pe.match,token:this.terminals_[cn]||cn,line:pe.yylineno,loc:jt,expected:ze})}if(Ot[0]instanceof Array&&Ot.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Nn+", token: "+cn);switch(Ot[0]){case 1:de.push(cn),te.push(pe.yytext),xe.push(pe.yylloc),de.push(Ot[1]),cn=null,ee=pe.yyleng,he=pe.yytext,Ie=pe.yylineno,jt=pe.yylloc;break;case 2:if(vt=this.productions_[Ot[1]][1],kt.$=te[te.length-vt],kt._$={first_line:xe[xe.length-(vt||1)].first_line,last_line:xe[xe.length-1].last_line,first_column:xe[xe.length-(vt||1)].first_column,last_column:xe[xe.length-1].last_column},At&&(kt._$.range=[xe[xe.length-(vt||1)].range[0],xe[xe.length-1].range[1]]),oi=this.performAction.apply(kt,[he,ee,Ie,Et.yy,Ot[1],te,xe].concat(gt)),typeof oi<"u")return oi;vt&&(de=de.slice(0,-1*vt*2),te=te.slice(0,-1*vt),xe=xe.slice(0,-1*vt)),de.push(this.productions_[Ot[1]][0]),te.push(kt.$),xe.push(kt._$),Nt=De[de[de.length-2]][de[de.length-1]],de.push(Nt);break;case 3:return!0}}return!0}},se=function(){var ye={EOF:1,parseError:function(Ae,de){if(this.yy.parser)this.yy.parser.parseError(Ae,de);else throw new Error(Ae)},setInput:function(ke,Ae){return this.yy=Ae||this.yy||{},this._input=ke,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ke=this._input[0];this.yytext+=ke,this.yyleng++,this.offset++,this.match+=ke,this.matched+=ke;var Ae=ke.match(/(?:\r\n?|\n).*/g);return Ae?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ke},unput:function(ke){var Ae=ke.length,de=ke.split(/(?:\r\n?|\n)/g);this._input=ke+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ae),this.offset-=Ae;var ve=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),de.length-1&&(this.yylineno-=de.length-1);var te=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:de?(de.length===ve.length?this.yylloc.first_column:0)+ve[ve.length-de.length].length-de[0].length:this.yylloc.first_column-Ae},this.options.ranges&&(this.yylloc.range=[te[0],te[0]+this.yyleng-Ae]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(ke){this.unput(this.match.slice(ke))},pastInput:function(){var ke=this.matched.substr(0,this.matched.length-this.match.length);return(ke.length>20?"...":"")+ke.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var ke=this.match;return ke.length<20&&(ke+=this._input.substr(0,20-ke.length)),(ke.substr(0,20)+(ke.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var ke=this.pastInput(),Ae=new Array(ke.length+1).join("-");return ke+this.upcomingInput()+` +`+Ae+"^"},test_match:function(ke,Ae){var de,ve,te;if(this.options.backtrack_lexer&&(te={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(te.yylloc.range=this.yylloc.range.slice(0))),ve=ke[0].match(/(?:\r\n?|\n).*/g),ve&&(this.yylineno+=ve.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ve?ve[ve.length-1].length-ve[ve.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ke[0].length},this.yytext+=ke[0],this.match+=ke[0],this.matches=ke,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ke[0].length),this.matched+=ke[0],de=this.performAction.call(this,this.yy,this,Ae,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),de)return de;if(this._backtrack){for(var xe in te)this[xe]=te[xe];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ke,Ae,de,ve;this._more||(this.yytext="",this.match="");for(var te=this._currentRules(),xe=0;xeAe[0].length)){if(Ae=de,ve=xe,this.options.backtrack_lexer){if(ke=this.test_match(de,te[xe]),ke!==!1)return ke;if(this._backtrack){Ae=!1;continue}else return!1}else if(!this.options.flex)break}return Ae?(ke=this.test_match(Ae,te[ve]),ke!==!1?ke:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Ae=this.next();return Ae||this.lex()},begin:function(Ae){this.conditionStack.push(Ae)},popState:function(){var Ae=this.conditionStack.length-1;return Ae>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Ae){return Ae=this.conditionStack.length-1-Math.abs(Ae||0),Ae>=0?this.conditionStack[Ae]:"INITIAL"},pushState:function(Ae){this.begin(Ae)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Ae,de,ve,te){switch(ve){case 0:return Ae.getLogger().trace("Found comment",de.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:this.popState();break;case 5:Ae.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return Ae.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:Ae.getLogger().trace("end icon"),this.popState();break;case 10:return Ae.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return Ae.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return Ae.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return Ae.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:return this.begin("NODE"),19;case 15:return this.begin("NODE"),19;case 16:return this.begin("NODE"),19;case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:Ae.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return Ae.getLogger().trace("description:",de.yytext),"NODE_DESCR";case 26:this.popState();break;case 27:return this.popState(),Ae.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),Ae.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),Ae.getLogger().trace("node end ...",de.yytext),"NODE_DEND";case 30:return this.popState(),Ae.getLogger().trace("node end (("),"NODE_DEND";case 31:return this.popState(),Ae.getLogger().trace("node end (-"),"NODE_DEND";case 32:return this.popState(),Ae.getLogger().trace("node end (-"),"NODE_DEND";case 33:return this.popState(),Ae.getLogger().trace("node end (("),"NODE_DEND";case 34:return this.popState(),Ae.getLogger().trace("node end (("),"NODE_DEND";case 35:return Ae.getLogger().trace("Long description:",de.yytext),20;case 36:return Ae.getLogger().trace("Long description:",de.yytext),20}},rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\-\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return ye}();ce.lexer=se;function ge(){this.yy={}}return ge.prototype=ce,ce.Parser=ge,new ge}();Nge.parser=Nge;const Tqt=Nge,zP=i=>ep(i,Tt());let Jb=[],cje=0,Pge={};const _qt=()=>{Jb=[],cje=0,Pge={}},Cqt=function(i){for(let a=Jb.length-1;a>=0;a--)if(Jb[a].levelJb.length>0?Jb[0]:null,Aqt=(i,a,f,p)=>{Fe.info("addNode",i,a,f,p);const w=Tt(),y={id:cje++,nodeId:zP(a),level:i,descr:zP(f),type:p,children:[],width:Tt().mindmap.maxNodeWidth};switch(y.type){case nl.ROUNDED_RECT:y.padding=2*w.mindmap.padding;break;case nl.RECT:y.padding=2*w.mindmap.padding;break;case nl.HEXAGON:y.padding=2*w.mindmap.padding;break;default:y.padding=w.mindmap.padding}const b=Cqt(i);if(b)b.children.push(y),Jb.push(y);else if(Jb.length===0)Jb.push(y);else{let E=new Error('There can be only one root. No parent could be found for ("'+y.descr+'")');throw E.hash={text:"branch "+name,token:"branch "+name,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+name+'"']},E}},nl={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Lqt=(i,a)=>{switch(Fe.debug("In get type",i,a),i){case"[":return nl.RECT;case"(":return a===")"?nl.ROUNDED_RECT:nl.CLOUD;case"((":return nl.CIRCLE;case")":return nl.CLOUD;case"))":return nl.BANG;case"{{":return nl.HEXAGON;default:return nl.DEFAULT}},uje=(i,a)=>{Pge[i]=a},Mqt=i=>{const a=Jb[Jb.length-1];i&&i.icon&&(a.icon=zP(i.icon)),i&&i.class&&(a.class=zP(i.class))},w9=i=>{switch(i){case nl.DEFAULT:return"no-border";case nl.RECT:return"rect";case nl.ROUNDED_RECT:return"rounded-rect";case nl.CIRCLE:return"circle";case nl.CLOUD:return"cloud";case nl.BANG:return"bang";case nl.HEXAGON:return"hexgon";default:return"no-border"}};let lje;const Dqt=i=>{lje=i},Iqt=()=>Fe,Oqt=i=>Jb[i],Bge=i=>Pge[i],Nqt=Object.freeze(Object.defineProperty({__proto__:null,addNode:Aqt,clear:_qt,decorateNode:Mqt,getElementById:Bge,getLogger:Iqt,getMindmap:Sqt,getNodeById:Oqt,getType:Lqt,nodeType:nl,get parseError(){return lje},sanitizeText:zP,setElementForId:uje,setErrorHandler:Dqt,type2Str:w9},Symbol.toStringTag,{value:"Module"})),hje=12,Pqt=function(i,a,f){i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+w9(a.type)).attr("d",`M0 ${a.height-5} v${-a.height+2*5} q0,-5 5,-5 h${a.width-2*5} q5,0 5,5 v${a.height-5} H0 Z`),i.append("line").attr("class","node-line-"+f).attr("x1",0).attr("y1",a.height).attr("x2",a.width).attr("y2",a.height)},Bqt=function(i,a){i.append("rect").attr("id","node-"+a.id).attr("class","node-bkg node-"+w9(a.type)).attr("height",a.height).attr("width",a.width)},Rqt=function(i,a){const f=a.width,p=a.height,w=.15*f,y=.25*f,b=.35*f,E=.2*f;i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+w9(a.type)).attr("d",`M0 0 a${w},${w} 0 0,1 ${f*.25},${-1*f*.1} + a${b},${b} 1 0,1 ${f*.4},${-1*f*.1} + a${y},${y} 1 0,1 ${f*.35},${1*f*.2} + + a${w},${w} 1 0,1 ${f*.15},${1*p*.35} + a${E},${E} 1 0,1 ${-1*f*.15},${1*p*.65} + + a${y},${w} 1 0,1 ${-1*f*.25},${f*.15} + a${b},${b} 1 0,1 ${-1*f*.5},0 + a${w},${w} 1 0,1 ${-1*f*.25},${-1*f*.15} + + a${w},${w} 1 0,1 ${-1*f*.1},${-1*p*.35} + a${E},${E} 1 0,1 ${f*.1},${-1*p*.65} + + H0 V0 Z`)},Fqt=function(i,a){const f=a.width,p=a.height,w=.15*f;i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+w9(a.type)).attr("d",`M0 0 a${w},${w} 1 0,0 ${f*.25},${-1*p*.1} + a${w},${w} 1 0,0 ${f*.25},0 + a${w},${w} 1 0,0 ${f*.25},0 + a${w},${w} 1 0,0 ${f*.25},${1*p*.1} + + a${w},${w} 1 0,0 ${f*.15},${1*p*.33} + a${w*.8},${w*.8} 1 0,0 0,${1*p*.34} + a${w},${w} 1 0,0 ${-1*f*.15},${1*p*.33} + + a${w},${w} 1 0,0 ${-1*f*.25},${p*.15} + a${w},${w} 1 0,0 ${-1*f*.25},0 + a${w},${w} 1 0,0 ${-1*f*.25},0 + a${w},${w} 1 0,0 ${-1*f*.25},${-1*p*.15} + + a${w},${w} 1 0,0 ${-1*f*.1},${-1*p*.33} + a${w*.8},${w*.8} 1 0,0 0,${-1*p*.34} + a${w},${w} 1 0,0 ${f*.1},${-1*p*.33} + + H0 V0 Z`)},jqt=function(i,a){i.append("circle").attr("id","node-"+a.id).attr("class","node-bkg node-"+w9(a.type)).attr("r",a.width/2)};function $qt(i,a,f,p,w){return i.insert("polygon",":first-child").attr("points",p.map(function(y){return y.x+","+y.y}).join(" ")).attr("transform","translate("+(w.width-a)/2+", "+f+")")}const Hqt=function(i,a){const f=a.height,w=f/4,y=a.width-a.padding+2*w,b=[{x:w,y:0},{x:y-w,y:0},{x:y,y:-f/2},{x:y-w,y:-f},{x:w,y:-f},{x:0,y:-f/2}];$qt(i,y,f,b,a)},zqt=function(i,a){i.append("rect").attr("id","node-"+a.id).attr("class","node-bkg node-"+w9(a.type)).attr("height",a.height).attr("rx",a.padding).attr("ry",a.padding).attr("width",a.width)},fje={drawNode:function(i,a,f,p){const w=p.htmlLabels,y=f%(hje-1),b=i.append("g");a.section=y;let E="section-"+y;y<0&&(E+=" section-root"),b.attr("class",(a.class?a.class+" ":"")+"mindmap-node "+E);const S=b.append("g"),N=b.append("g"),B=a.descr.replace(/()/g,` +`);dK(N,B,{useHtmlLabels:w,width:a.width,classes:"mindmap-node-label"}),w||N.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");const R=N.node().getBBox(),j=p.fontSize.replace?p.fontSize.replace("px",""):p.fontSize;if(a.height=R.height+j*1.1*.5+a.padding,a.width=R.width+2*a.padding,a.icon)if(a.type===nl.CIRCLE)a.height+=50,a.width+=50,b.append("foreignObject").attr("height","50px").attr("width",a.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+y+" "+a.icon),N.attr("transform","translate("+a.width/2+", "+(a.height/2-1.5*a.padding)+")");else{a.width+=50;const $=a.height;a.height=Math.max($,60);const V=Math.abs(a.height-$);b.append("foreignObject").attr("width","60px").attr("height",a.height).attr("style","text-align: center;margin-top:"+V/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+y+" "+a.icon),N.attr("transform","translate("+(25+a.width/2)+", "+(V/2+a.padding/2)+")")}else if(w){const $=(a.width-R.width)/2,V=(a.height-R.height)/2;N.attr("transform","translate("+$+", "+V+")")}else{const $=a.width/2,V=a.padding/2;N.attr("transform","translate("+$+", "+V+")")}switch(a.type){case nl.DEFAULT:Pqt(S,a,y);break;case nl.ROUNDED_RECT:zqt(S,a);break;case nl.RECT:Bqt(S,a);break;case nl.CIRCLE:S.attr("transform","translate("+a.width/2+", "+ +a.height/2+")"),jqt(S,a);break;case nl.CLOUD:Rqt(S,a);break;case nl.BANG:Fqt(S,a);break;case nl.HEXAGON:Hqt(S,a);break}return uje(a.id,b),a.height},positionNode:function(i){const a=Bge(i.id),f=i.x||0,p=i.y||0;a.attr("transform","translate("+f+","+p+")")},drawEdge:function(a,f,p,w,y){const b=y%(hje-1),E=p.x+p.width/2,S=p.y+p.height/2,N=f.x+f.width/2,B=f.y+f.height/2,R=N>E?E+Math.abs(E-N)/2:E-Math.abs(E-N)/2,j=B>S?S+Math.abs(S-B)/2:S-Math.abs(S-B)/2,$=N>E?Math.abs(E-R)/2+E:-Math.abs(E-R)/2+E,V=B>S?Math.abs(S-j)/2+S:-Math.abs(S-j)/2+S;a.append("path").attr("d",p.direction==="TB"||p.direction==="BT"?`M${E},${S} Q${E},${V} ${R},${j} T${N},${B}`:`M${E},${S} Q${$},${S} ${R},${j} T${N},${B}`).attr("class","edge section-edge-"+b+" edge-depth-"+w)}};var Rge={},Gqt={get exports(){return Rge},set exports(i){Rge=i}};(function(i,a){(function(f,p){i.exports=p()})(Wk,function(){function f(m){return f=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(g){return typeof g}:function(g){return g&&typeof Symbol=="function"&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},f(m)}function p(m,g){if(!(m instanceof g))throw new TypeError("Cannot call a class as a function")}function w(m,g){for(var k=0;km.length)&&(g=m.length);for(var k=0,T=new Array(g);k"u"?null:window,V=$?$.navigator:null;$&&$.document;var Q=f(""),oe=f({}),ce=f(function(){}),se=typeof HTMLElement>"u"?"undefined":f(HTMLElement),ge=function(g){return g&&g.instanceString&&ke(g.instanceString)?g.instanceString():null},ye=function(g){return g!=null&&f(g)==Q},ke=function(g){return g!=null&&f(g)===ce},Ae=function(g){return!he(g)&&(Array.isArray?Array.isArray(g):g!=null&&g instanceof Array)},de=function(g){return g!=null&&f(g)===oe&&!Ae(g)&&g.constructor===Object},ve=function(g){return g!=null&&f(g)===oe},te=function(g){return g!=null&&f(g)===f(1)&&!isNaN(g)},xe=function(g){return te(g)&&Math.floor(g)===g},De=function(g){if(se!=="undefined")return g!=null&&g instanceof HTMLElement},he=function(g){return Ie(g)||ee(g)},Ie=function(g){return ge(g)==="collection"&&g._private.single},ee=function(g){return ge(g)==="collection"&&!g._private.single},rt=function(g){return ge(g)==="core"},me=function(g){return ge(g)==="stylesheet"},gt=function(g){return ge(g)==="event"},pe=function(g){return g==null?!0:!!(g===""||g.match(/^\s+$/))},Et=function(g){return typeof HTMLElement>"u"?!1:g instanceof HTMLElement},wt=function(g){return de(g)&&te(g.x1)&&te(g.x2)&&te(g.y1)&&te(g.y2)},jt=function(g){return ve(g)&&ke(g.then)},At=function(){return V&&V.userAgent.match(/msie|trident|edge/i)},Bt=function(g,k){k||(k=function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var D=[],I=0;Ik?1:0},Bn=function(g,k){return-1*Ge(g,k)},Oe=Object.assign!=null?Object.assign.bind(Object):function(m){for(var g=arguments,k=1;k1&&(_e-=1),_e<1/6?ae+(ue-ae)*6*_e:_e<1/2?ue:_e<2/3?ae+(ue-ae)*(2/3-_e)*6:ae}var U=new RegExp("^"+Nt+"$").exec(g);if(U){if(T=parseInt(U[1]),T<0?T=(360- -1*T%360)%360:T>360&&(T=T%360),T/=360,A=parseFloat(U[2]),A<0||A>100||(A=A/100,D=parseFloat(U[3]),D<0||D>100)||(D=D/100,I=U[4],I!==void 0&&(I=parseFloat(I),I<0||I>1)))return;if(A===0)F=H=C=Math.round(D*255);else{var Z=D<.5?D*(1+A):D+A-D*A,ne=2*D-Z;F=Math.round(255*G(ne,Z,T+1/3)),H=Math.round(255*G(ne,Z,T)),C=Math.round(255*G(ne,Z,T-1/3))}k=[F,H,C,I]}return k},hi=function(g){var k,T=new RegExp("^"+Dt+"$").exec(g);if(T){k=[];for(var A=[],D=1;D<=3;D++){var I=T[D];if(I[I.length-1]==="%"&&(A[D]=!0),I=parseFloat(I),A[D]&&(I=I/100*255),I<0||I>255)return;k.push(Math.floor(I))}var F=A[1]||A[2]||A[3],H=A[1]&&A[2]&&A[3];if(F&&!H)return;var C=T[4];if(C!==void 0){if(C=parseFloat(C),C<0||C>1)return;k.push(C)}}return k},Sr=function(g){return Xn[g.toLowerCase()]},Zn=function(g){return(Ae(g)?g:null)||Sr(g)||Ri(g)||hi(g)||tn(g)},Xn={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},ir=function(g){for(var k=g.map,T=g.keys,A=T.length,D=0;D=g||Re<0||U&&Ze>=D}function be(){var qe=Er();if(_e(qe))return Se(qe);F=setTimeout(be,ue(qe))}function Se(qe){return F=void 0,Z&&T?ne(qe):(T=A=void 0,I)}function Le(){F!==void 0&&clearTimeout(F),C=0,T=H=A=F=void 0}function Be(){return F===void 0?I:Se(Er())}function Ke(){var qe=Er(),Re=_e(qe);if(T=arguments,A=this,H=qe,Re){if(F===void 0)return ae(H);if(U)return clearTimeout(F),F=setTimeout(be,g),ne(H)}return F===void 0&&(F=setTimeout(be,g)),I}return Ke.cancel=Le,Ke.flush=Be,Ke}var im=bL,ug=$?$.performance:null,rs=ug&&ug.now?function(){return ug.now()}:function(){return Date.now()},Ps=function(){if($){if($.requestAnimationFrame)return function(m){$.requestAnimationFrame(m)};if($.mozRequestAnimationFrame)return function(m){$.mozRequestAnimationFrame(m)};if($.webkitRequestAnimationFrame)return function(m){$.webkitRequestAnimationFrame(m)};if($.msRequestAnimationFrame)return function(m){$.msRequestAnimationFrame(m)}}return function(m){m&&setTimeout(function(){m(rs())},1e3/60)}}(),Aa=function(g){return Ps(g)},pi=rs,Rc=9261,_t=65599,hp=5381,Gt=function(g){for(var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Rc,T=k,A;A=g.next(),!A.done;)T=T*_t+A.value|0;return T},ff=function(g){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Rc;return k*_t+g|0},sm=function(g){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:hp;return(k<<5)+k+g|0},m9=function(g,k){return g*2097152+k},fp=function(g){return g[0]*2097152+g[1]},N5=function(g,k){return[ff(g[0],k[0]),sm(g[1],k[1])]},ah=function(g,k){var T={value:0,done:!1},A=0,D=g.length,I={next:function(){return A=0&&!(g[A]===k&&(g.splice(A,1),T));A--);},wL=function(g){g.splice(0,g.length)},qP=function(g,k){for(var T=0;T"u"?"undefined":f(Set))!==eY?Set:tY,x9=function(g,k){var T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(g===void 0||k===void 0||!rt(g)){yc("An element must have a core reference and parameters set");return}var A=k.group;if(A==null&&(k.data&&k.data.source!=null&&k.data.target!=null?A="edges":A="nodes"),A!=="nodes"&&A!=="edges"){yc("An element must be of type `nodes` or `edges`; you specified `"+A+"`");return}this.length=1,this[0]=this;var D=this._private={cy:g,single:!0,data:k.data||{},position:k.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:A,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!k.selected,selectable:k.selectable===void 0?!0:!!k.selectable,locked:!!k.locked,grabbed:!1,grabbable:k.grabbable===void 0?!0:!!k.grabbable,pannable:k.pannable===void 0?A==="edges":!!k.pannable,active:!1,classes:new R5,animation:{current:[],queue:[]},rscratch:{},scratch:k.scratch||{},edges:[],children:[],parent:k.parent&&k.parent.isNode()?k.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(D.position.x==null&&(D.position.x=0),D.position.y==null&&(D.position.y=0),k.renderedPosition){var I=k.renderedPosition,F=g.pan(),H=g.zoom();D.position={x:(I.x-F.x)/H,y:(I.y-F.y)/H}}var C=[];Ae(k.classes)?C=k.classes:ye(k.classes)&&(C=k.classes.split(/\s+/));for(var G=0,U=C.length;GSe?1:0},G=function(be,Se,Le,Be,Ke){var qe;if(Le==null&&(Le=0),Ke==null&&(Ke=T),Le<0)throw new Error("lo must be non-negative");for(Be==null&&(Be=be.length);Leot;0<=ot?$e++:$e--)Ze.push($e);return Ze}.apply(this).reverse(),Re=[],Be=0,Ke=qe.length;Beut;0<=ut?++Ze:--Ze)Je.push(I(be,Le));return Je},ue=function(be,Se,Le,Be){var Ke,qe,Re;for(Be==null&&(Be=T),Ke=be[Le];Le>Se;){if(Re=Le-1>>1,qe=be[Re],Be(Ke,qe)<0){be[Le]=qe,Le=Re;continue}break}return be[Le]=Ke},_e=function(be,Se,Le){var Be,Ke,qe,Re,Ze;for(Le==null&&(Le=T),Ke=be.length,Ze=Se,qe=be[Se],Be=2*Se+1;Be0;){var qe=Se.pop(),Re=_e(qe),Ze=qe.id();if(Z[Ze]=Re,Re!==1/0)for(var $e=qe.neighborhood().intersect(ae),ot=0;ot<$e.length;ot++){var ut=$e[ot],Je=ut.id(),Ct=Ke(qe,ut),lt=Re+Ct.dist;lt<_e(ut)&&(be(ut,lt),U[Je]={node:qe,edge:Ct.edge})}}return{distanceTo:function(Rt){var $t=ye(Rt)?ae.filter(Rt)[0]:Rt[0];return Z[$t.id()]},pathTo:function(Rt){var $t=ye(Rt)?ae.filter(Rt)[0]:Rt[0],bn=[],Cn=$t,Kn=Cn.id();if($t.length>0)for(bn.unshift($t);U[Kn];){var kn=U[Kn];bn.unshift(kn.edge),bn.unshift(kn.node),Cn=kn.node,Kn=Cn.id()}return F.spawn(bn)}}}},sY={kruskal:function(g){g=g||function(Le){return 1};for(var k=this.byGroup(),T=k.nodes,A=k.edges,D=T.length,I=new Array(D),F=T,H=function(Be){for(var Ke=0;Ke0;){if(Ke(),Re++,Be===G){for(var Ze=[],$e=D,ot=G,ut=be[ot];Ze.unshift($e),ut!=null&&Ze.unshift(ut),$e=_e[ot],$e!=null;)ot=$e.id(),ut=be[ot];return{found:!0,distance:U[Be],path:this.spawn(Ze),steps:Re}}ne[Be]=!0;for(var Je=Le._private.edges,Ct=0;Ctut&&(ae[ot]=ut,Se[ot]=$e,Le[ot]=Ke),!D){var Je=$e*G+Ze;!D&&ae[Je]>ut&&(ae[Je]=ut,Se[Je]=Ze,Le[Je]=Ke)}}}for(var Ct=0;Ct1&&arguments[1]!==void 0?arguments[1]:I,eo=Le(Di),sa=[],Ks=eo;;){if(Ks==null)return k.spawn();var Ar=Se(Ks),We=Ar.edge,On=Ar.pred;if(sa.unshift(Ks[0]),Ks.same(es)&&sa.length>0)break;We!=null&&sa.unshift(We),Ks=On}return H.spawn(sa)},qe=0;qe=0;G--){var U=C[G],Z=U[1],ne=U[2];(k[Z]===F&&k[ne]===H||k[Z]===H&&k[ne]===F)&&C.splice(G,1)}for(var ae=0;aeA;){var D=Math.floor(Math.random()*k.length);k=dY(D,g,k),T--}return k},gY={kargerStein:function(){var g=this,k=this.byGroup(),T=k.nodes,A=k.edges;A.unmergeBy(function(bn){return bn.isLoop()});var D=T.length,I=A.length,F=Math.ceil(Math.pow(Math.log(D)/Math.LN2,2)),H=Math.floor(D/fY);if(D<2){yc("At least 2 nodes are required for Karger-Stein algorithm");return}for(var C=[],G=0;G1&&arguments[1]!==void 0?arguments[1]:0,T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:g.length,A=1/0,D=k;D1&&arguments[1]!==void 0?arguments[1]:0,T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:g.length,A=-1/0,D=k;D1&&arguments[1]!==void 0?arguments[1]:0,T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:g.length,A=0,D=0,I=k;I1&&arguments[1]!==void 0?arguments[1]:0,T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:g.length,A=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,D=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,I=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;A?g=g.slice(k,T):(T0&&g.splice(0,k));for(var F=0,H=g.length-1;H>=0;H--){var C=g[H];I?isFinite(C)||(g[H]=-1/0,F++):g.splice(H,1)}D&&g.sort(function(Z,ne){return Z-ne});var G=g.length,U=Math.floor(G/2);return G%2!==0?g[U+1+F]:(g[U-1+F]+g[U+F])/2},yY=function(g){return Math.PI*g/180},T9=function(g,k){return Math.atan2(k,g)-Math.PI/2},yL=Math.log2||function(m){return Math.log(m)/Math.log(2)},WP=function(g){return g>0?1:g<0?-1:0},v3=function(g,k){return Math.sqrt(w3(g,k))},w3=function(g,k){var T=k.x-g.x,A=k.y-g.y;return T*T+A*A},kY=function(g){for(var k=g.length,T=0,A=0;A=g.x1&&g.y2>=g.y1)return{x1:g.x1,y1:g.y1,x2:g.x2,y2:g.y2,w:g.x2-g.x1,h:g.y2-g.y1};if(g.w!=null&&g.h!=null&&g.w>=0&&g.h>=0)return{x1:g.x1,y1:g.y1,x2:g.x1+g.w,y2:g.y1+g.h,w:g.w,h:g.h}}},EY=function(g){return{x1:g.x1,x2:g.x2,w:g.w,y1:g.y1,y2:g.y2,h:g.h}},TY=function(g){g.x1=1/0,g.y1=1/0,g.x2=-1/0,g.y2=-1/0,g.w=0,g.h=0},_Y=function(g,k){g.x1=Math.min(g.x1,k.x1),g.x2=Math.max(g.x2,k.x2),g.w=g.x2-g.x1,g.y1=Math.min(g.y1,k.y1),g.y2=Math.max(g.y2,k.y2),g.h=g.y2-g.y1},CY=function(g,k,T){g.x1=Math.min(g.x1,k),g.x2=Math.max(g.x2,k),g.w=g.x2-g.x1,g.y1=Math.min(g.y1,T),g.y2=Math.max(g.y2,T),g.h=g.y2-g.y1},_9=function(g){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return g.x1-=k,g.x2+=k,g.y1-=k,g.y2+=k,g.w=g.x2-g.x1,g.h=g.y2-g.y1,g},kL=function(g){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],T,A,D,I;if(k.length===1)T=A=D=I=k[0];else if(k.length===2)T=D=k[0],I=A=k[1];else if(k.length===4){var F=E(k,4);T=F[0],A=F[1],D=F[2],I=F[3]}return g.x1-=I,g.x2+=A,g.y1-=T,g.y2+=D,g.w=g.x2-g.x1,g.h=g.y2-g.y1,g},KP=function(g,k){g.x1=k.x1,g.y1=k.y1,g.x2=k.x2,g.y2=k.y2,g.w=g.x2-g.x1,g.h=g.y2-g.y1},xL=function(g,k){return!(g.x1>k.x2||k.x1>g.x2||g.x2k.y2||k.y1>g.y2)},$5=function(g,k,T){return g.x1<=k&&k<=g.x2&&g.y1<=T&&T<=g.y2},SY=function(g,k){return $5(g,k.x,k.y)},YP=function(g,k){return $5(g,k.x1,k.y1)&&$5(g,k.x2,k.y2)},XP=function(g,k,T,A,D,I,F){var H=wx(D,I),C=D/2,G=I/2,U;{var Z=T-C+H-F,ne=A-G-F,ae=T+C-H+F,ue=ne;if(U=lm(g,k,T,A,Z,ne,ae,ue,!1),U.length>0)return U}{var _e=T+C+F,be=A-G+H-F,Se=_e,Le=A+G-H+F;if(U=lm(g,k,T,A,_e,be,Se,Le,!1),U.length>0)return U}{var Be=T-C+H-F,Ke=A+G+F,qe=T+C-H+F,Re=Ke;if(U=lm(g,k,T,A,Be,Ke,qe,Re,!1),U.length>0)return U}{var Ze=T-C-F,$e=A-G+H-F,ot=Ze,ut=A+G-H+F;if(U=lm(g,k,T,A,Ze,$e,ot,ut,!1),U.length>0)return U}var Je;{var Ct=T-C+H,lt=A-G+H;if(Je=bx(g,k,T,A,Ct,lt,H+F),Je.length>0&&Je[0]<=Ct&&Je[1]<=lt)return[Je[0],Je[1]]}{var un=T+C-H,Rt=A-G+H;if(Je=bx(g,k,T,A,un,Rt,H+F),Je.length>0&&Je[0]>=un&&Je[1]<=Rt)return[Je[0],Je[1]]}{var $t=T+C-H,bn=A+G-H;if(Je=bx(g,k,T,A,$t,bn,H+F),Je.length>0&&Je[0]>=$t&&Je[1]>=bn)return[Je[0],Je[1]]}{var Cn=T-C+H,Kn=A+G-H;if(Je=bx(g,k,T,A,Cn,Kn,H+F),Je.length>0&&Je[0]<=Cn&&Je[1]>=Kn)return[Je[0],Je[1]]}return[]},AY=function(g,k,T,A,D,I,F){var H=F,C=Math.min(T,D),G=Math.max(T,D),U=Math.min(A,I),Z=Math.max(A,I);return C-H<=g&&g<=G+H&&U-H<=k&&k<=Z+H},LY=function(g,k,T,A,D,I,F,H,C){var G={x1:Math.min(T,F,D)-C,x2:Math.max(T,F,D)+C,y1:Math.min(A,H,I)-C,y2:Math.max(A,H,I)+C};return!(gG.x2||kG.y2)},MY=function(g,k,T,A){T-=A;var D=k*k-4*g*T;if(D<0)return[];var I=Math.sqrt(D),F=2*g,H=(-k+I)/F,C=(-k-I)/F;return[H,C]},DY=function(g,k,T,A,D){var I=1e-5;g===0&&(g=I),k/=g,T/=g,A/=g;var F,H,C,G,U,Z,ne,ae;if(H=(3*T-k*k)/9,C=-(27*A)+k*(9*T-2*(k*k)),C/=54,F=H*H*H+C*C,D[1]=0,ne=k/3,F>0){U=C+Math.sqrt(F),U=U<0?-Math.pow(-U,1/3):Math.pow(U,1/3),Z=C-Math.sqrt(F),Z=Z<0?-Math.pow(-Z,1/3):Math.pow(Z,1/3),D[0]=-ne+U+Z,ne+=(U+Z)/2,D[4]=D[2]=-ne,ne=Math.sqrt(3)*(-Z+U)/2,D[3]=ne,D[5]=-ne;return}if(D[5]=D[3]=0,F===0){ae=C<0?-Math.pow(-C,1/3):Math.pow(C,1/3),D[0]=-ne+2*ae,D[4]=D[2]=-(ae+ne);return}H=-H,G=H*H*H,G=Math.acos(C/Math.sqrt(G)),ae=2*Math.sqrt(H),D[0]=-ne+ae*Math.cos(G/3),D[2]=-ne+ae*Math.cos((G+2*Math.PI)/3),D[4]=-ne+ae*Math.cos((G+4*Math.PI)/3)},IY=function(g,k,T,A,D,I,F,H){var C=1*T*T-4*T*D+2*T*F+4*D*D-4*D*F+F*F+A*A-4*A*I+2*A*H+4*I*I-4*I*H+H*H,G=1*9*T*D-3*T*T-3*T*F-6*D*D+3*D*F+9*A*I-3*A*A-3*A*H-6*I*I+3*I*H,U=1*3*T*T-6*T*D+T*F-T*g+2*D*D+2*D*g-F*g+3*A*A-6*A*I+A*H-A*k+2*I*I+2*I*k-H*k,Z=1*T*D-T*T+T*g-D*g+A*I-A*A+A*k-I*k,ne=[];DY(C,G,U,Z,ne);for(var ae=1e-7,ue=[],_e=0;_e<6;_e+=2)Math.abs(ne[_e+1])=0&&ne[_e]<=1&&ue.push(ne[_e]);ue.push(1),ue.push(0);for(var be=-1,Se,Le,Be,Ke=0;Ke=0?BeC?(g-D)*(g-D)+(k-I)*(k-I):G-Z},Gd=function(g,k,T){for(var A,D,I,F,H,C=0,G=0;G=g&&g>=I||A<=g&&g<=I)H=(g-A)/(I-A)*(F-D)+D,H>k&&C++;else continue;return C%2!==0},tv=function(g,k,T,A,D,I,F,H,C){var G=new Array(T.length),U;H[0]!=null?(U=Math.atan(H[1]/H[0]),H[0]<0?U=U+Math.PI/2:U=-U-Math.PI/2):U=H;for(var Z=Math.cos(-U),ne=Math.sin(-U),ae=0;ae0){var _e=ZP(G,-C);ue=QP(_e)}else ue=G;return Gd(g,k,ue)},NY=function(g,k,T,A,D,I,F){for(var H=new Array(T.length),C=I/2,G=F/2,U=_L(I,F),Z=U*U,ne=0;ne=0&&_e<=1&&Se.push(_e),be>=0&&be<=1&&Se.push(be),Se.length===0)return[];var Le=Se[0]*H[0]+g,Be=Se[0]*H[1]+k;if(Se.length>1){if(Se[0]==Se[1])return[Le,Be];var Ke=Se[1]*H[0]+g,qe=Se[1]*H[1]+k;return[Le,Be,Ke,qe]}else return[Le,Be]},EL=function(g,k,T){return k<=g&&g<=T||T<=g&&g<=k?g:g<=k&&k<=T||T<=k&&k<=g?k:T},lm=function(g,k,T,A,D,I,F,H,C){var G=g-D,U=T-g,Z=F-D,ne=k-I,ae=A-k,ue=H-I,_e=Z*ne-ue*G,be=U*ne-ae*G,Se=ue*U-Z*ae;if(Se!==0){var Le=_e/Se,Be=be/Se,Ke=.001,qe=0-Ke,Re=1+Ke;return qe<=Le&&Le<=Re&&qe<=Be&&Be<=Re?[g+Le*U,k+Le*ae]:C?[g+Le*U,k+Le*ae]:[]}else return _e===0||be===0?EL(g,T,F)===F?[F,H]:EL(g,T,D)===D?[D,I]:EL(D,F,T)===T?[T,A]:[]:[]},vx=function(g,k,T,A,D,I,F,H){var C=[],G,U=new Array(T.length),Z=!0;I==null&&(Z=!1);var ne;if(Z){for(var ae=0;ae0){var ue=ZP(U,-H);ne=QP(ue)}else ne=U}else ne=T;for(var _e,be,Se,Le,Be=0;Be2){for(var Rt=[C[0],C[1]],$t=Math.pow(Rt[0]-g,2)+Math.pow(Rt[1]-k,2),bn=1;bnG&&(G=Be)},get:function(Le){return C[Le]}},Z=0;Z0?Rt=un.edgesTo(lt)[0]:Rt=lt.edgesTo(un)[0];var $t=A(Rt);lt=lt.id(),Ze[lt]>Ze[Je]+$t&&(Ze[lt]=Ze[Je]+$t,$e.nodes.indexOf(lt)<0?$e.push(lt):$e.updateItem(lt),Re[lt]=0,qe[lt]=[]),Ze[lt]==Ze[Je]+$t&&(Re[lt]=Re[lt]+Re[Je],qe[lt].push(Je))}else for(var bn=0;bn0;){for(var Wn=Ke.pop(),sr=0;sr0&&F.push(T[H]);F.length!==0&&D.push(A.collection(F))}return D},YY=function(g,k){for(var T=0;T5&&arguments[5]!==void 0?arguments[5]:ZY,F=A,H,C,G=0;G=2?mx(g,k,T,0,cB,JY):mx(g,k,T,0,oB)},squaredEuclidean:function(g,k,T){return mx(g,k,T,0,cB)},manhattan:function(g,k,T){return mx(g,k,T,0,oB)},max:function(g,k,T){return mx(g,k,T,-1/0,eX)}};G5["squared-euclidean"]=G5.squaredEuclidean,G5.squaredeuclidean=G5.squaredEuclidean;function S9(m,g,k,T,A,D){var I;return ke(m)?I=m:I=G5[m]||G5.euclidean,g===0&&ke(m)?I(A,D):I(g,k,T,A,D)}var tX=Vf({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),AL=function(g){return tX(g)},A9=function(g,k,T,A,D){var I=D!=="kMedoids",F=I?function(U){return T[U]}:function(U){return A[U](T)},H=function(Z){return A[Z](k)},C=T,G=k;return S9(g,A.length,F,H,C,G)},LL=function(g,k,T){for(var A=T.length,D=new Array(A),I=new Array(A),F=new Array(k),H=null,C=0;CT)return!1}return!0},iX=function(g,k,T){for(var A=0;AF&&(F=k[C][G],H=G);D[H].push(g[C])}for(var U=0;U=D.threshold||D.mode==="dendrogram"&&g.length===1)return!1;var ae=k[I],ue=k[A[I]],_e;D.mode==="dendrogram"?_e={left:ae,right:ue,key:ae.key}:_e={value:ae.value.concat(ue.value),key:ae.key},g[ae.index]=_e,g.splice(ue.index,1),k[ae.key]=_e;for(var be=0;beT[ue.key][Se.key]&&(H=T[ue.key][Se.key])):D.linkage==="max"?(H=T[ae.key][Se.key],T[ae.key][Se.key]0&&A.push(D);return A},bB=function(g,k,T){for(var A=[],D=0;DF&&(I=C,F=k[D*g+C])}I>0&&A.push(I)}for(var G=0;GC&&(H=G,C=U)}T[D]=I[H]}return A=bB(g,k,T),A},vB=function(g){for(var k=this.cy(),T=this.nodes(),A=wX(g),D={},I=0;I=ut?(Je=ut,ut=lt,Ct=un):lt>Je&&(Je=lt);for(var Rt=0;Rt0?1:0;Re[$e%A.minIterations*F+Wn]=sr,kn+=sr}if(kn>0&&($e>=A.minIterations-1||$e==A.maxIterations-1)){for(var yr=0,hr=0;hr1||qe>1)&&(F=!0),U[Le]=[],Se.outgoers().forEach(function(Ze){Ze.isEdge()&&U[Le].push(Ze.id())})}else Z[Le]=[void 0,Se.target().id()]}):I.forEach(function(Se){var Le=Se.id();if(Se.isNode()){var Be=Se.degree(!0);Be%2&&(H?C?F=!0:C=Le:H=Le),U[Le]=[],Se.connectedEdges().forEach(function(Ke){return U[Le].push(Ke.id())})}else Z[Le]=[Se.source().id(),Se.target().id()]});var ne={found:!1,trail:void 0};if(F)return ne;if(C&&H)if(D){if(G&&C!=G)return ne;G=C}else{if(G&&C!=G&&H!=G)return ne;G||(G=C)}else G||(G=I[0].id());var ae=function(Le){for(var Be=Le,Ke=[Le],qe,Re,Ze;U[Be].length;)qe=U[Be].shift(),Re=Z[qe][0],Ze=Z[qe][1],Be!=Ze?(U[Ze]=U[Ze].filter(function($e){return $e!=qe}),Be=Ze):!D&&Be!=Re&&(U[Re]=U[Re].filter(function($e){return $e!=qe}),Be=Re),Ke.unshift(qe),Ke.unshift(Be);return Ke},ue=[],_e=[];for(_e=ae(G);_e.length!=1;)U[_e[0]].length==0?(ue.unshift(I.getElementById(_e.shift())),ue.unshift(I.getElementById(_e.shift()))):_e=ae(_e.shift()).concat(_e);ue.unshift(I.getElementById(_e.shift()));for(var be in U)if(U[be].length)return ne;return ne.found=!0,ne.trail=this.spawn(ue,!0),ne}},M9=function(){var g=this,k={},T=0,A=0,D=[],I=[],F={},H=function(Z,ne){for(var ae=I.length-1,ue=[],_e=g.spawn();I[ae].x!=Z||I[ae].y!=ne;)ue.push(I.pop().edge),ae--;ue.push(I.pop().edge),ue.forEach(function(be){var Se=be.connectedNodes().intersection(g);_e.merge(be),Se.forEach(function(Le){var Be=Le.id(),Ke=Le.connectedEdges().intersection(g);_e.merge(Le),k[Be].cutVertex?_e.merge(Ke.filter(function(qe){return qe.isLoop()})):_e.merge(Ke)})}),D.push(_e)},C=function U(Z,ne,ae){Z===ae&&(A+=1),k[ne]={id:T,low:T++,cutVertex:!1};var ue=g.getElementById(ne).connectedEdges().intersection(g);if(ue.size()===0)D.push(g.spawn(g.getElementById(ne)));else{var _e,be,Se,Le;ue.forEach(function(Be){_e=Be.source().id(),be=Be.target().id(),Se=_e===ne?be:_e,Se!==ae&&(Le=Be.id(),F[Le]||(F[Le]=!0,I.push({x:ne,y:Se,edge:Be})),Se in k?k[ne].low=Math.min(k[ne].low,k[Se].id):(U(Z,Se,ne),k[ne].low=Math.min(k[ne].low,k[Se].low),k[ne].id<=k[Se].low&&(k[ne].cutVertex=!0,H(ne,Se))))})}};g.forEach(function(U){if(U.isNode()){var Z=U.id();Z in k||(A=0,C(Z,Z),k[Z].cutVertex=A>1)}});var G=Object.keys(k).filter(function(U){return k[U].cutVertex}).map(function(U){return g.getElementById(U)});return{cut:g.spawn(G),components:D}},CX={hopcroftTarjanBiconnected:M9,htbc:M9,htb:M9,hopcroftTarjanBiconnectedComponents:M9},D9=function(){var g=this,k={},T=0,A=[],D=[],I=g.spawn(g),F=function H(C){D.push(C),k[C]={index:T,low:T++,explored:!1};var G=g.getElementById(C).connectedEdges().intersection(g);if(G.forEach(function(ue){var _e=ue.target().id();_e!==C&&(_e in k||H(_e),k[_e].explored||(k[C].low=Math.min(k[C].low,k[_e].low)))}),k[C].index===k[C].low){for(var U=g.spawn();;){var Z=D.pop();if(U.merge(g.getElementById(Z)),k[Z].low=k[C].index,k[Z].explored=!0,Z===C)break}var ne=U.edgesWith(U),ae=U.merge(ne);A.push(ae),I=I.difference(ae)}};return g.forEach(function(H){if(H.isNode()){var C=H.id();C in k||F(C)}}),{cut:I,components:A}},SX={tarjanStronglyConnected:D9,tsc:D9,tscc:D9,tarjanStronglyConnectedComponents:D9},wB={};[dx,iY,sY,oY,uY,hY,gY,jY,H5,z5,SL,QY,lX,bX,EX,_X,CX,SX].forEach(function(m){Oe(wB,m)});/*! +Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable +Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) +Licensed under The MIT License (http://opensource.org/licenses/MIT) +*/var mB=0,yB=1,kB=2,nv=function m(g){if(!(this instanceof m))return new m(g);this.id="Thenable/1.0.7",this.state=mB,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof g=="function"&&g.call(this,this.fulfill.bind(this),this.reject.bind(this))};nv.prototype={fulfill:function(g){return xB(this,yB,"fulfillValue",g)},reject:function(g){return xB(this,kB,"rejectReason",g)},then:function(g,k){var T=this,A=new nv;return T.onFulfilled.push(_B(g,A,"fulfill")),T.onRejected.push(_B(k,A,"reject")),EB(T),A.proxy}};var xB=function(g,k,T,A){return g.state===mB&&(g.state=k,g[T]=A,EB(g)),g},EB=function(g){g.state===yB?TB(g,"onFulfilled",g.fulfillValue):g.state===kB&&TB(g,"onRejected",g.rejectReason)},TB=function(g,k,T){if(g[k].length!==0){var A=g[k];g[k]=[];var D=function(){for(var F=0;F0}},clearQueue:function(){return function(){var k=this,T=k.length!==void 0,A=T?k:[k],D=this._private.cy||this;if(!D.styleEnabled())return this;for(var I=0;I-1}var AQ=SQ;function LQ(m,g){var k=this.__data__,T=N9(k,m);return T<0?(++this.size,k.push([m,g])):k[T][1]=g,this}var MQ=LQ;function U5(m){var g=-1,k=m==null?0:m.length;for(this.clear();++g-1&&m%1==0&&m0&&this.spawn(A).updateStyle().emit("class"),k},addClass:function(g){return this.toggleClass(g,!0)},hasClass:function(g){var k=this[0];return k!=null&&k._private.classes.has(g)},toggleClass:function(g,k){Ae(g)||(g=g.match(/\S+/g)||[]);for(var T=this,A=k===void 0,D=[],I=0,F=T.length;I0&&this.spawn(D).updateStyle().emit("class"),T},removeClass:function(g){return this.toggleClass(g,!1)},flashClass:function(g,k){var T=this;if(k==null)k=250;else if(k===0)return T;return T.addClass(g),setTimeout(function(){T.removeClass(g)},k),T}};F9.className=F9.classNames=F9.classes;var lc={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:kt,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};lc.variable="(?:[\\w-.]|(?:\\\\"+lc.metaChar+"))+",lc.className="(?:[\\w-]|(?:\\\\"+lc.metaChar+"))+",lc.value=lc.string+"|"+lc.number,lc.id=lc.variable,function(){var m,g,k;for(m=lc.comparatorOp.split("|"),k=0;k=0)&&g!=="="&&(lc.comparatorOp+="|\\!"+g)}();var iu=function(){return{checks:[]}},Ki={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},PL=[{selector:":selected",matches:function(g){return g.selected()}},{selector:":unselected",matches:function(g){return!g.selected()}},{selector:":selectable",matches:function(g){return g.selectable()}},{selector:":unselectable",matches:function(g){return!g.selectable()}},{selector:":locked",matches:function(g){return g.locked()}},{selector:":unlocked",matches:function(g){return!g.locked()}},{selector:":visible",matches:function(g){return g.visible()}},{selector:":hidden",matches:function(g){return!g.visible()}},{selector:":transparent",matches:function(g){return g.transparent()}},{selector:":grabbed",matches:function(g){return g.grabbed()}},{selector:":free",matches:function(g){return!g.grabbed()}},{selector:":removed",matches:function(g){return g.removed()}},{selector:":inside",matches:function(g){return!g.removed()}},{selector:":grabbable",matches:function(g){return g.grabbable()}},{selector:":ungrabbable",matches:function(g){return!g.grabbable()}},{selector:":animated",matches:function(g){return g.animated()}},{selector:":unanimated",matches:function(g){return!g.animated()}},{selector:":parent",matches:function(g){return g.isParent()}},{selector:":childless",matches:function(g){return g.isChildless()}},{selector:":child",matches:function(g){return g.isChild()}},{selector:":orphan",matches:function(g){return g.isOrphan()}},{selector:":nonorphan",matches:function(g){return g.isChild()}},{selector:":compound",matches:function(g){return g.isNode()?g.isParent():g.source().isParent()||g.target().isParent()}},{selector:":loop",matches:function(g){return g.isLoop()}},{selector:":simple",matches:function(g){return g.isSimple()}},{selector:":active",matches:function(g){return g.active()}},{selector:":inactive",matches:function(g){return!g.active()}},{selector:":backgrounding",matches:function(g){return g.backgrounding()}},{selector:":nonbackgrounding",matches:function(g){return!g.backgrounding()}}].sort(function(m,g){return Bn(m.selector,g.selector)}),MZ=function(){for(var m={},g,k=0;k0&&G.edgeCount>0)return Vo("The selector `"+g+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(G.edgeCount>1)return Vo("The selector `"+g+"` is invalid because it uses multiple edge selectors"),!1;G.edgeCount===1&&Vo("The selector `"+g+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},BZ=function(){if(this.toStringCache!=null)return this.toStringCache;for(var g=function(G){return G??""},k=function(G){return ye(G)?'"'+G+'"':g(G)},T=function(G){return" "+G+" "},A=function(G,U){var Z=G.type,ne=G.value;switch(Z){case Ki.GROUP:{var ae=g(ne);return ae.substring(0,ae.length-1)}case Ki.DATA_COMPARE:{var ue=G.field,_e=G.operator;return"["+ue+T(g(_e))+k(ne)+"]"}case Ki.DATA_BOOL:{var be=G.operator,Se=G.field;return"["+g(be)+Se+"]"}case Ki.DATA_EXIST:{var Le=G.field;return"["+Le+"]"}case Ki.META_COMPARE:{var Be=G.operator,Ke=G.field;return"[["+Ke+T(g(Be))+k(ne)+"]]"}case Ki.STATE:return ne;case Ki.ID:return"#"+ne;case Ki.CLASS:return"."+ne;case Ki.PARENT:case Ki.CHILD:return D(G.parent,U)+T(">")+D(G.child,U);case Ki.ANCESTOR:case Ki.DESCENDANT:return D(G.ancestor,U)+" "+D(G.descendant,U);case Ki.COMPOUND_SPLIT:{var qe=D(G.left,U),Re=D(G.subject,U),Ze=D(G.right,U);return qe+(qe.length>0?" ":"")+Re+Ze}case Ki.TRUE:return""}},D=function(G,U){return G.checks.reduce(function(Z,ne,ae){return Z+(U===G&&ae===0?"$":"")+A(ne,U)},"")},I="",F=0;F1&&F=0&&(k=k.replace("!",""),U=!0),k.indexOf("@")>=0&&(k=k.replace("@",""),G=!0),(D||F||G)&&(H=!D&&!I?"":""+g,C=""+T),G&&(g=H=H.toLowerCase(),T=C=C.toLowerCase()),k){case"*=":A=H.indexOf(C)>=0;break;case"$=":A=H.indexOf(C,H.length-C.length)>=0;break;case"^=":A=H.indexOf(C)===0;break;case"=":A=g===T;break;case">":Z=!0,A=g>T;break;case">=":Z=!0,A=g>=T;break;case"<":Z=!0,A=g0;){var G=A.shift();g(G),D.add(G.id()),F&&T(A,D,G)}return m}function kx(m,g,k){if(k.isParent())for(var T=k._private.children,A=0;A1&&arguments[1]!==void 0?arguments[1]:!0;return j9(this,m,g,kx)};function qB(m,g,k){if(k.isChild()){var T=k._private.parent;g.has(T.id())||m.push(T)}}Y5.forEachUp=function(m){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return j9(this,m,g,qB)};function qZ(m,g,k){qB(m,g,k),kx(m,g,k)}Y5.forEachUpAndDown=function(m){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return j9(this,m,g,qZ)},Y5.ancestors=Y5.parents;var xx,VB;xx=VB={data:Fc.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Fc.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Fc.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Fc.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Fc.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Fc.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var g=this[0];if(g)return g._private.data.id}},xx.attr=xx.data,xx.removeAttr=xx.removeData;var VZ=VB,$9={};function X5(m){return function(g){var k=this;if(g===void 0&&(g=!0),k.length!==0)if(k.isNode()&&!k.removed()){for(var T=0,A=k[0],D=A._private.edges,I=0;Ig}),minIndegree:Q5("indegree",function(m,g){return mg}),minOutdegree:Q5("outdegree",function(m,g){return mg})}),Oe($9,{totalDegree:function(g){for(var k=0,T=this.nodes(),A=0;A0,Z=U;U&&(G=G[0]);var ne=Z?G.position():{x:0,y:0};k!==void 0?C.position(g,k+ne[g]):D!==void 0&&C.position({x:D.x+ne.x,y:D.y+ne.y})}else{var ae=T.position(),ue=F?T.parent():null,_e=ue&&ue.length>0,be=_e;_e&&(ue=ue[0]);var Se=be?ue.position():{x:0,y:0};return D={x:ae.x-Se.x,y:ae.y-Se.y},g===void 0?D:D[g]}else if(!I)return;return this}},bp.modelPosition=bp.point=bp.position,bp.modelPositions=bp.points=bp.positions,bp.renderedPoint=bp.renderedPosition,bp.relativePoint=bp.relativePosition;var KB=UB,Z5,F2;Z5=F2={},F2.renderedBoundingBox=function(m){var g=this.boundingBox(m),k=this.cy(),T=k.zoom(),A=k.pan(),D=g.x1*T+A.x,I=g.x2*T+A.x,F=g.y1*T+A.y,H=g.y2*T+A.y;return{x1:D,x2:I,y1:F,y2:H,w:I-D,h:H-F}},F2.dirtyCompoundBoundsCache=function(){var m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,g=this.cy();return!g.styleEnabled()||!g.hasCompoundNodes()?this:(this.forEachUp(function(k){if(k.isParent()){var T=k._private;T.compoundBoundsClean=!1,T.bbCache=null,m||k.emitAndNotify("bounds")}}),this)},F2.updateCompoundBounds=function(){var m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,g=this.cy();if(!g.styleEnabled()||!g.hasCompoundNodes())return this;if(!m&&g.batching())return this;function k(I){if(!I.isParent())return;var F=I._private,H=I.children(),C=I.pstyle("compound-sizing-wrt-labels").value==="include",G={width:{val:I.pstyle("min-width").pfValue,left:I.pstyle("min-width-bias-left"),right:I.pstyle("min-width-bias-right")},height:{val:I.pstyle("min-height").pfValue,top:I.pstyle("min-height-bias-top"),bottom:I.pstyle("min-height-bias-bottom")}},U=H.boundingBox({includeLabels:C,includeOverlays:!1,useCache:!1}),Z=F.position;(U.w===0||U.h===0)&&(U={w:I.pstyle("width").pfValue,h:I.pstyle("height").pfValue},U.x1=Z.x-U.w/2,U.x2=Z.x+U.w/2,U.y1=Z.y-U.h/2,U.y2=Z.y+U.h/2);function ne($e,ot,ut){var Je=0,Ct=0,lt=ot+ut;return $e>0&<>0&&(Je=ot/lt*$e,Ct=ut/lt*$e),{biasDiff:Je,biasComplementDiff:Ct}}function ae($e,ot,ut,Je){if(ut.units==="%")switch(Je){case"width":return $e>0?ut.pfValue*$e:0;case"height":return ot>0?ut.pfValue*ot:0;case"average":return $e>0&&ot>0?ut.pfValue*($e+ot)/2:0;case"min":return $e>0&&ot>0?$e>ot?ut.pfValue*ot:ut.pfValue*$e:0;case"max":return $e>0&&ot>0?$e>ot?ut.pfValue*$e:ut.pfValue*ot:0;default:return 0}else return ut.units==="px"?ut.pfValue:0}var ue=G.width.left.value;G.width.left.units==="px"&&G.width.val>0&&(ue=ue*100/G.width.val);var _e=G.width.right.value;G.width.right.units==="px"&&G.width.val>0&&(_e=_e*100/G.width.val);var be=G.height.top.value;G.height.top.units==="px"&&G.height.val>0&&(be=be*100/G.height.val);var Se=G.height.bottom.value;G.height.bottom.units==="px"&&G.height.val>0&&(Se=Se*100/G.height.val);var Le=ne(G.width.val-U.w,ue,_e),Be=Le.biasDiff,Ke=Le.biasComplementDiff,qe=ne(G.height.val-U.h,be,Se),Re=qe.biasDiff,Ze=qe.biasComplementDiff;F.autoPadding=ae(U.w,U.h,I.pstyle("padding"),I.pstyle("padding-relative-to").value),F.autoWidth=Math.max(U.w,G.width.val),Z.x=(-Be+U.x1+U.x2+Ke)/2,F.autoHeight=Math.max(U.h,G.height.val),Z.y=(-Re+U.y1+U.y2+Ze)/2}for(var T=0;Tg.x2?A:g.x2,g.y1=Tg.y2?D:g.y2,g.w=g.x2-g.x1,g.h=g.y2-g.y1)},k3=function(g,k){return k==null?g:vp(g,k.x1,k.y1,k.x2,k.y2)},Tx=function(g,k,T){return gp(g,k,T)},H9=function(g,k,T){if(!k.cy().headless()){var A=k._private,D=A.rstyle,I=D.arrowWidth/2,F=k.pstyle(T+"-arrow-shape").value,H,C;if(F!=="none"){T==="source"?(H=D.srcX,C=D.srcY):T==="target"?(H=D.tgtX,C=D.tgtY):(H=D.midX,C=D.midY);var G=A.arrowBounds=A.arrowBounds||{},U=G[T]=G[T]||{};U.x1=H-I,U.y1=C-I,U.x2=H+I,U.y2=C+I,U.w=U.x2-U.x1,U.h=U.y2-U.y1,_9(U,1),vp(g,U.x1,U.y1,U.x2,U.y2)}}},YB=function(g,k,T){if(!k.cy().headless()){var A;T?A=T+"-":A="";var D=k._private,I=D.rstyle,F=k.pstyle(A+"label").strValue;if(F){var H=k.pstyle("text-halign"),C=k.pstyle("text-valign"),G=Tx(I,"labelWidth",T),U=Tx(I,"labelHeight",T),Z=Tx(I,"labelX",T),ne=Tx(I,"labelY",T),ae=k.pstyle(A+"text-margin-x").pfValue,ue=k.pstyle(A+"text-margin-y").pfValue,_e=k.isEdge(),be=k.pstyle(A+"text-rotation"),Se=k.pstyle("text-outline-width").pfValue,Le=k.pstyle("text-border-width").pfValue,Be=Le/2,Ke=k.pstyle("text-background-padding").pfValue,qe=2,Re=U,Ze=G,$e=Ze/2,ot=Re/2,ut,Je,Ct,lt;if(_e)ut=Z-$e,Je=Z+$e,Ct=ne-ot,lt=ne+ot;else{switch(H.value){case"left":ut=Z-Ze,Je=Z;break;case"center":ut=Z-$e,Je=Z+$e;break;case"right":ut=Z,Je=Z+Ze;break}switch(C.value){case"top":Ct=ne-Re,lt=ne;break;case"center":Ct=ne-ot,lt=ne+ot;break;case"bottom":Ct=ne,lt=ne+Re;break}}ut+=ae-Math.max(Se,Be)-Ke-qe,Je+=ae+Math.max(Se,Be)+Ke+qe,Ct+=ue-Math.max(Se,Be)-Ke-qe,lt+=ue+Math.max(Se,Be)+Ke+qe;var un=T||"main",Rt=D.labelBounds,$t=Rt[un]=Rt[un]||{};$t.x1=ut,$t.y1=Ct,$t.x2=Je,$t.y2=lt,$t.w=Je-ut,$t.h=lt-Ct;var bn=_e&&be.strValue==="autorotate",Cn=be.pfValue!=null&&be.pfValue!==0;if(bn||Cn){var Kn=bn?Tx(D.rstyle,"labelAngle",T):be.pfValue,kn=Math.cos(Kn),Wn=Math.sin(Kn),sr=(ut+Je)/2,yr=(Ct+lt)/2;if(!_e){switch(H.value){case"left":sr=Je;break;case"right":sr=ut;break}switch(C.value){case"top":yr=lt;break;case"bottom":yr=Ct;break}}var hr=function(Ba,Li){return Ba=Ba-sr,Li=Li-yr,{x:Ba*kn-Li*Wn+sr,y:Ba*Wn+Li*kn+yr}},nr=hr(ut,Ct),fn=hr(ut,lt),vr=hr(Je,Ct),gr=hr(Je,lt);ut=Math.min(nr.x,fn.x,vr.x,gr.x),Je=Math.max(nr.x,fn.x,vr.x,gr.x),Ct=Math.min(nr.y,fn.y,vr.y,gr.y),lt=Math.max(nr.y,fn.y,vr.y,gr.y)}var ni=un+"Rot",Ti=Rt[ni]=Rt[ni]||{};Ti.x1=ut,Ti.y1=Ct,Ti.x2=Je,Ti.y2=lt,Ti.w=Je-ut,Ti.h=lt-Ct,vp(g,ut,Ct,Je,lt),vp(D.labelBounds.all,ut,Ct,Je,lt)}return g}},UZ=function(g,k){var T=g._private.cy,A=T.styleEnabled(),D=T.headless(),I=zd(),F=g._private,H=g.isNode(),C=g.isEdge(),G,U,Z,ne,ae,ue,_e=F.rstyle,be=H&&A?g.pstyle("bounds-expansion").pfValue:[0],Se=function(Ts){return Ts.pstyle("display").value!=="none"},Le=!A||Se(g)&&(!C||Se(g.source())&&Se(g.target()));if(Le){var Be=0,Ke=0;A&&k.includeOverlays&&(Be=g.pstyle("overlay-opacity").value,Be!==0&&(Ke=g.pstyle("overlay-padding").value));var qe=0,Re=0;A&&k.includeUnderlays&&(qe=g.pstyle("underlay-opacity").value,qe!==0&&(Re=g.pstyle("underlay-padding").value));var Ze=Math.max(Ke,Re),$e=0,ot=0;if(A&&($e=g.pstyle("width").pfValue,ot=$e/2),H&&k.includeNodes){var ut=g.position();ae=ut.x,ue=ut.y;var Je=g.outerWidth(),Ct=Je/2,lt=g.outerHeight(),un=lt/2;G=ae-Ct,U=ae+Ct,Z=ue-un,ne=ue+un,vp(I,G,Z,U,ne)}else if(C&&k.includeEdges)if(A&&!D){var Rt=g.pstyle("curve-style").strValue;if(G=Math.min(_e.srcX,_e.midX,_e.tgtX),U=Math.max(_e.srcX,_e.midX,_e.tgtX),Z=Math.min(_e.srcY,_e.midY,_e.tgtY),ne=Math.max(_e.srcY,_e.midY,_e.tgtY),G-=ot,U+=ot,Z-=ot,ne+=ot,vp(I,G,Z,U,ne),Rt==="haystack"){var $t=_e.haystackPts;if($t&&$t.length===2){if(G=$t[0].x,Z=$t[0].y,U=$t[1].x,ne=$t[1].y,G>U){var bn=G;G=U,U=bn}if(Z>ne){var Cn=Z;Z=ne,ne=Cn}vp(I,G-ot,Z-ot,U+ot,ne+ot)}}else if(Rt==="bezier"||Rt==="unbundled-bezier"||Rt==="segments"||Rt==="taxi"){var Kn;switch(Rt){case"bezier":case"unbundled-bezier":Kn=_e.bezierPts;break;case"segments":case"taxi":Kn=_e.linePts;break}if(Kn!=null)for(var kn=0;knU){var fn=G;G=U,U=fn}if(Z>ne){var vr=Z;Z=ne,ne=vr}G-=ot,U+=ot,Z-=ot,ne+=ot,vp(I,G,Z,U,ne)}if(A&&k.includeEdges&&C&&(H9(I,g,"mid-source"),H9(I,g,"mid-target"),H9(I,g,"source"),H9(I,g,"target")),A){var gr=g.pstyle("ghost").value==="yes";if(gr){var ni=g.pstyle("ghost-offset-x").pfValue,Ti=g.pstyle("ghost-offset-y").pfValue;vp(I,I.x1+ni,I.y1+Ti,I.x2+ni,I.y2+Ti)}}var ia=F.bodyBounds=F.bodyBounds||{};KP(ia,I),kL(ia,be),_9(ia,1),A&&(G=I.x1,U=I.x2,Z=I.y1,ne=I.y2,vp(I,G-Ze,Z-Ze,U+Ze,ne+Ze));var Ba=F.overlayBounds=F.overlayBounds||{};KP(Ba,I),kL(Ba,be),_9(Ba,1);var Li=F.labelBounds=F.labelBounds||{};Li.all!=null?TY(Li.all):Li.all=zd(),A&&k.includeLabels&&(k.includeMainLabels&&YB(I,g,null),C&&(k.includeSourceLabels&&YB(I,g,"source"),k.includeTargetLabels&&YB(I,g,"target")))}return I.x1=E0(I.x1),I.y1=E0(I.y1),I.x2=E0(I.x2),I.y2=E0(I.y2),I.w=E0(I.x2-I.x1),I.h=E0(I.y2-I.y1),I.w>0&&I.h>0&&Le&&(kL(I,be),_9(I,1)),I},XB=function(g){var k=0,T=function(I){return(I?1:0)<0&&arguments[0]!==void 0?arguments[0]:aJ,g=arguments.length>1?arguments[1]:void 0,k=0;k=0;F--)I(F);return this},pm.removeAllListeners=function(){return this.removeListener("*")},pm.emit=pm.trigger=function(m,g,k){var T=this.listeners,A=T.length;return this.emitting++,Ae(g)||(g=[g]),oJ(this,function(D,I){k!=null&&(T=[{event:I.event,type:I.type,namespace:I.namespace,callback:k}],A=T.length);for(var F=function(G){var U=T[G];if(U.type===I.type&&(!U.namespace||U.namespace===I.namespace||U.namespace===sJ)&&D.eventMatches(D.context,U,I)){var Z=[I];g!=null&&qP(Z,g),D.beforeEmit(D.context,U,I),U.conf&&U.conf.one&&(D.listeners=D.listeners.filter(function(ue){return ue!==U}));var ne=D.callbackContext(D.context,U,I),ae=U.callback.apply(ne,Z);D.afterEmit(D.context,U,I),ae===!1&&(I.stopPropagation(),I.preventDefault())}},H=0;H1&&!I){var F=this.length-1,H=this[F],C=H._private.data.id;this[F]=void 0,this[g]=H,D.set(C,{ele:H,index:g})}return this.length--,this},unmergeOne:function(g){g=g[0];var k=this._private,T=g._private.data.id,A=k.map,D=A.get(T);if(!D)return this;var I=D.index;return this.unmergeAt(I),this},unmerge:function(g){var k=this._private.cy;if(!g)return this;if(g&&ye(g)){var T=g;g=k.mutableElements().filter(T)}for(var A=0;A=0;k--){var T=this[k];g(T)&&this.unmergeAt(k)}return this},map:function(g,k){for(var T=[],A=this,D=0;DT&&(T=H,A=F)}return{value:T,ele:A}},min:function(g,k){for(var T=1/0,A,D=this,I=0;I=0&&D"u"?"undefined":f(Symbol))!=g&&f(Symbol.iterator)!=g;k&&(V9[Symbol.iterator]=function(){var T=this,A={value:void 0,done:!1},D=0,I=this.length;return b({next:function(){return D1&&arguments[1]!==void 0?arguments[1]:!0,T=this[0],A=T.cy();if(A.styleEnabled()&&T){this.cleanStyle();var D=T._private.style[g];return D??(k?A.style().getDefaultProperty(g):null)}},numericStyle:function(g){var k=this[0];if(k.cy().styleEnabled()&&k){var T=k.pstyle(g);return T.pfValue!==void 0?T.pfValue:T.value}},numericStyleUnits:function(g){var k=this[0];if(k.cy().styleEnabled()&&k)return k.pstyle(g).units},renderedStyle:function(g){var k=this.cy();if(!k.styleEnabled())return this;var T=this[0];if(T)return k.style().getRenderedStyle(T,g)},style:function(g,k){var T=this.cy();if(!T.styleEnabled())return this;var A=!1,D=T.style();if(de(g)){var I=g;D.applyBypass(this,I,A),this.emitAndNotify("style")}else if(ye(g))if(k===void 0){var F=this[0];return F?D.getStylePropertyValue(F,g):void 0}else D.applyBypass(this,g,k,A),this.emitAndNotify("style");else if(g===void 0){var H=this[0];return H?D.getRawStyle(H):void 0}return this},removeStyle:function(g){var k=this.cy();if(!k.styleEnabled())return this;var T=!1,A=k.style(),D=this;if(g===void 0)for(var I=0;I0&&g.push(G[0]),g.push(F[0])}return this.spawn(g,!0).filter(m)},"neighborhood"),closedNeighborhood:function(g){return this.neighborhood().add(this).filter(g)},openNeighborhood:function(g){return this.neighborhood(g)}}),w1.neighbourhood=w1.neighborhood,w1.closedNeighbourhood=w1.closedNeighborhood,w1.openNeighbourhood=w1.openNeighborhood,Oe(w1,{source:ld(function(g){var k=this[0],T;return k&&(T=k._private.source||k.cy().collection()),T&&g?T.filter(g):T},"source"),target:ld(function(g){var k=this[0],T;return k&&(T=k._private.target||k.cy().collection()),T&&g?T.filter(g):T},"target"),sources:bR({attr:"source"}),targets:bR({attr:"target"})});function bR(m){return function(k){for(var T=[],A=0;A0);return I},component:function(){var g=this[0];return g.cy().mutableElements().components(g)[0]}}),w1.componentsOf=w1.components;var Wf=function(g,k){var T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,A=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(g===void 0){yc("A collection must have a reference to the core");return}var D=new R2,I=!1;if(!k)k=[];else if(k.length>0&&de(k[0])&&!Ie(k[0])){I=!0;for(var F=[],H=new R5,C=0,G=k.length;C0&&arguments[0]!==void 0?arguments[0]:!0,g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,k=this,T=k.cy(),A=T._private,D=[],I=[],F,H=0,C=k.length;H0){for(var Cn=F.length===k.length?k:new Wf(T,F),Kn=0;Kn0&&arguments[0]!==void 0?arguments[0]:!0,g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,k=this,T=[],A={},D=k._private.cy;function I(lt){for(var un=lt._private.edges,Rt=0;Rt0&&(m?ut.emitAndNotify("remove"):g&&ut.emit("remove"));for(var Je=0;Je0?Je=lt:ut=lt;while(Math.abs(Ct)>I&&++un=D?Se(ot,un):Rt===0?un:Be(ot,ut,ut+C)}var qe=!1;function Re(){qe=!0,(m!==g||k!==T)&&Le()}var Ze=function(ut){return qe||Re(),m===g&&k===T?ut:ut===0?0:ut===1?1:_e(Ke(ut),g,T)};Ze.getControlPoints=function(){return[{x:m,y:g},{x:k,y:T}]};var $e="generateBezier("+[m,g,k,T]+")";return Ze.toString=function(){return $e},Ze}/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */var wJ=function(){function m(T){return-T.tension*T.x-T.friction*T.v}function g(T,A,D){var I={x:T.x+D.dx*A,v:T.v+D.dv*A,tension:T.tension,friction:T.friction};return{dx:I.v,dv:m(I)}}function k(T,A){var D={dx:T.v,dv:m(T)},I=g(T,A*.5,D),F=g(T,A*.5,I),H=g(T,A,F),C=1/6*(D.dx+2*(I.dx+F.dx)+H.dx),G=1/6*(D.dv+2*(I.dv+F.dv)+H.dv);return T.x=T.x+C*A,T.v=T.v+G*A,T}return function T(A,D,I){var F={x:-1,v:0,tension:null,friction:null},H=[0],C=0,G=1/1e4,U=16/1e3,Z,ne,ae;for(A=parseFloat(A)||500,D=parseFloat(D)||20,I=I||null,F.tension=A,F.friction=D,Z=I!==null,Z?(C=T(A,D),ne=C/I*U):ne=U;ae=k(ae||F,ne),H.push(1+ae.x),C+=16,Math.abs(ae.x)>G&&Math.abs(ae.v)>G;);return Z?function(ue){return H[ue*(H.length-1)|0]}:C}}(),Eu=function(g,k,T,A){var D=vJ(g,k,T,A);return function(I,F,H){return I+(F-I)*D(H)}},Y9={linear:function(g,k,T){return g+(k-g)*T},ease:Eu(.25,.1,.25,1),"ease-in":Eu(.42,0,1,1),"ease-out":Eu(0,0,.58,1),"ease-in-out":Eu(.42,0,.58,1),"ease-in-sine":Eu(.47,0,.745,.715),"ease-out-sine":Eu(.39,.575,.565,1),"ease-in-out-sine":Eu(.445,.05,.55,.95),"ease-in-quad":Eu(.55,.085,.68,.53),"ease-out-quad":Eu(.25,.46,.45,.94),"ease-in-out-quad":Eu(.455,.03,.515,.955),"ease-in-cubic":Eu(.55,.055,.675,.19),"ease-out-cubic":Eu(.215,.61,.355,1),"ease-in-out-cubic":Eu(.645,.045,.355,1),"ease-in-quart":Eu(.895,.03,.685,.22),"ease-out-quart":Eu(.165,.84,.44,1),"ease-in-out-quart":Eu(.77,0,.175,1),"ease-in-quint":Eu(.755,.05,.855,.06),"ease-out-quint":Eu(.23,1,.32,1),"ease-in-out-quint":Eu(.86,0,.07,1),"ease-in-expo":Eu(.95,.05,.795,.035),"ease-out-expo":Eu(.19,1,.22,1),"ease-in-out-expo":Eu(1,0,0,1),"ease-in-circ":Eu(.6,.04,.98,.335),"ease-out-circ":Eu(.075,.82,.165,1),"ease-in-out-circ":Eu(.785,.135,.15,.86),spring:function(g,k,T){if(T===0)return Y9.linear;var A=wJ(g,k,T);return function(D,I,F){return D+(I-D)*A(F)}},"cubic-bezier":Eu};function mR(m,g,k,T,A){if(T===1||g===k)return k;var D=A(g,k,T);return m==null||((m.roundValue||m.color)&&(D=Math.round(D)),m.min!==void 0&&(D=Math.max(D,m.min)),m.max!==void 0&&(D=Math.min(D,m.max))),D}function yR(m,g){return m.pfValue!=null||m.value!=null?m.pfValue!=null&&(g==null||g.type.units!=="%")?m.pfValue:m.value:m}function t6(m,g,k,T,A){var D=A!=null?A.type:null;k<0?k=0:k>1&&(k=1);var I=yR(m,A),F=yR(g,A);if(te(I)&&te(F))return mR(D,I,F,k,T);if(Ae(I)&&Ae(F)){for(var H=[],C=0;C0?(ne==="spring"&&ae.push(I.duration),I.easingImpl=Y9[ne].apply(null,ae)):I.easingImpl=Y9[ne]}var ue=I.easingImpl,_e;if(I.duration===0?_e=1:_e=(k-H)/I.duration,I.applying&&(_e=I.progress),_e<0?_e=0:_e>1&&(_e=1),I.delay==null){var be=I.startPosition,Se=I.position;if(Se&&A&&!m.locked()){var Le={};Lx(be.x,Se.x)&&(Le.x=t6(be.x,Se.x,_e,ue)),Lx(be.y,Se.y)&&(Le.y=t6(be.y,Se.y,_e,ue)),m.position(Le)}var Be=I.startPan,Ke=I.pan,qe=D.pan,Re=Ke!=null&&T;Re&&(Lx(Be.x,Ke.x)&&(qe.x=t6(Be.x,Ke.x,_e,ue)),Lx(Be.y,Ke.y)&&(qe.y=t6(Be.y,Ke.y,_e,ue)),m.emit("pan"));var Ze=I.startZoom,$e=I.zoom,ot=$e!=null&&T;ot&&(Lx(Ze,$e)&&(D.zoom=px(D.minZoom,t6(Ze,$e,_e,ue),D.maxZoom)),m.emit("zoom")),(Re||ot)&&m.emit("viewport");var ut=I.style;if(ut&&ut.length>0&&A){for(var Je=0;Je=0;Re--){var Ze=qe[Re];Ze()}qe.splice(0,qe.length)},Se=ne.length-1;Se>=0;Se--){var Le=ne[Se],Be=Le._private;if(Be.stopped){ne.splice(Se,1),Be.hooked=!1,Be.playing=!1,Be.started=!1,be(Be.frames);continue}!Be.playing&&!Be.applying||(Be.playing&&Be.applying&&(Be.applying=!1),Be.started||yJ(G,Le,m),mJ(G,Le,m,U),Be.applying&&(Be.applying=!1),be(Be.frames),Be.step!=null&&Be.step(m),Le.completed()&&(ne.splice(Se,1),Be.hooked=!1,Be.playing=!1,Be.started=!1,be(Be.completes)),ue=!0)}return!U&&ne.length===0&&ae.length===0&&T.push(G),ue}for(var D=!1,I=0;I0?g.notify("draw",k):g.notify("draw")),k.unmerge(T),g.emit("step")}var kJ={animate:Fc.animate(),animation:Fc.animation(),animated:Fc.animated(),clearQueue:Fc.clearQueue(),delay:Fc.delay(),delayAnimation:Fc.delayAnimation(),stop:Fc.stop(),addToAnimationPool:function(g){var k=this;k.styleEnabled()&&k._private.aniEles.merge(g)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var g=this;if(g._private.animationsRunning=!0,!g.styleEnabled())return;function k(){g._private.animationsRunning&&Aa(function(D){kR(D,g),k()})}var T=g.renderer();T&&T.beforeRender?T.beforeRender(function(D,I){kR(I,g)},T.beforeRenderPriorities.animations):k()}},xJ={qualifierCompare:function(g,k){return g==null||k==null?g==null&&k==null:g.sameText(k)},eventMatches:function(g,k,T){var A=k.qualifier;return A!=null?g!==T.target&&Ie(T.target)&&A.matches(T.target):!0},addEventFields:function(g,k){k.cy=g,k.target=g},callbackContext:function(g,k,T){return k.qualifier!=null?T.target:g}},X9=function(g){return ye(g)?new dm(g):g},xR={createEmitter:function(){var g=this._private;return g.emitter||(g.emitter=new G9(xJ,this)),this},emitter:function(){return this._private.emitter},on:function(g,k,T){return this.emitter().on(g,X9(k),T),this},removeListener:function(g,k,T){return this.emitter().removeListener(g,X9(k),T),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(g,k,T){return this.emitter().one(g,X9(k),T),this},once:function(g,k,T){return this.emitter().one(g,X9(k),T),this},emit:function(g,k){return this.emitter().emit(g,k),this},emitAndNotify:function(g,k){return this.emit(g),this.notify(g,k),this}};Fc.eventAliasesOn(xR);var $L={png:function(g){var k=this._private.renderer;return g=g||{},k.png(g)},jpg:function(g){var k=this._private.renderer;return g=g||{},g.bg=g.bg||"#fff",k.jpg(g)}};$L.jpeg=$L.jpg;var Q9={layout:function(g){var k=this;if(g==null){yc("Layout options must be specified to make a layout");return}if(g.name==null){yc("A `name` must be specified to make a layout");return}var T=g.name,A=k.extension("layout",T);if(A==null){yc("No such layout `"+T+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var D;ye(g.eles)?D=k.$(g.eles):D=g.eles!=null?g.eles:k.$();var I=new A(Oe({},g,{cy:k,eles:D}));return I}};Q9.createLayout=Q9.makeLayout=Q9.layout;var EJ={notify:function(g,k){var T=this._private;if(this.batching()){T.batchNotifications=T.batchNotifications||{};var A=T.batchNotifications[g]=T.batchNotifications[g]||this.collection();k!=null&&A.merge(k);return}if(T.notificationsEnabled){var D=this.renderer();this.destroyed()||!D||D.notify(g,k)}},notifications:function(g){var k=this._private;return g===void 0?k.notificationsEnabled:(k.notificationsEnabled=!!g,this)},noNotifications:function(g){this.notifications(!1),g(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var g=this._private;return g.batchCount==null&&(g.batchCount=0),g.batchCount===0&&(g.batchStyleEles=this.collection(),g.batchNotifications={}),g.batchCount++,this},endBatch:function(){var g=this._private;if(g.batchCount===0)return this;if(g.batchCount--,g.batchCount===0){g.batchStyleEles.updateStyle();var k=this.renderer();Object.keys(g.batchNotifications).forEach(function(T){var A=g.batchNotifications[T];A.empty()?k.notify(T):k.notify(T,A)})}return this},batch:function(g){return this.startBatch(),g(),this.endBatch(),this},batchData:function(g){var k=this;return this.batch(function(){for(var T=Object.keys(g),A=0;A0;)k.removeChild(k.childNodes[0]);g._private.renderer=null,g.mutableElements().forEach(function(T){var A=T._private;A.rscratch={},A.rstyle={},A.animation.current=[],A.animation.queue=[]})},onRender:function(g){return this.on("render",g)},offRender:function(g){return this.off("render",g)}};HL.invalidateDimensions=HL.resize;var Z9={collection:function(g,k){return ye(g)?this.$(g):he(g)?g.collection():Ae(g)?(k||(k={}),new Wf(this,g,k.unique,k.removed)):new Wf(this)},nodes:function(g){var k=this.$(function(T){return T.isNode()});return g?k.filter(g):k},edges:function(g){var k=this.$(function(T){return T.isEdge()});return g?k.filter(g):k},$:function(g){var k=this._private.elements;return g?k.filter(g):k.spawnSelf()},mutableElements:function(){return this._private.elements}};Z9.elements=Z9.filter=Z9.$;var m1={},Mx="t",_J="f";m1.apply=function(m){for(var g=this,k=g._private,T=k.cy,A=T.collection(),D=0;D0;if(Z||U&&ne){var ae=void 0;Z&&ne||Z?ae=C.properties:ne&&(ae=C.mappedProperties);for(var ue=0;ue1&&(Be=1),F.color){var qe=T.valueMin[0],Re=T.valueMax[0],Ze=T.valueMin[1],$e=T.valueMax[1],ot=T.valueMin[2],ut=T.valueMax[2],Je=T.valueMin[3]==null?1:T.valueMin[3],Ct=T.valueMax[3]==null?1:T.valueMax[3],lt=[Math.round(qe+(Re-qe)*Be),Math.round(Ze+($e-Ze)*Be),Math.round(ot+(ut-ot)*Be),Math.round(Je+(Ct-Je)*Be)];D={bypass:T.bypass,name:T.name,value:lt,strValue:"rgb("+lt[0]+", "+lt[1]+", "+lt[2]+")"}}else if(F.number){var un=T.valueMin+(T.valueMax-T.valueMin)*Be;D=this.parse(T.name,un,T.bypass,Z)}else return!1;if(!D)return ue(),!1;D.mapping=T,T=D;break}case I.data:{for(var Rt=T.field.split("."),$t=U.data,bn=0;bn0&&D>0){for(var F={},H=!1,C=0;C0?m.delayAnimation(I).play().promise().then(Le):Le()}).then(function(){return m.animation({style:F,duration:D,easing:m.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){k.removeBypasses(m,A),m.emitAndNotify("style"),T.transitioning=!1})}else T.transitioning&&(this.removeBypasses(m,A),m.emitAndNotify("style"),T.transitioning=!1)},m1.checkTrigger=function(m,g,k,T,A,D){var I=this.properties[g],F=A(I);F!=null&&F(k,T)&&D(I)},m1.checkZOrderTrigger=function(m,g,k,T){var A=this;this.checkTrigger(m,g,k,T,function(D){return D.triggersZOrder},function(){A._private.cy.notify("zorder",m)})},m1.checkBoundsTrigger=function(m,g,k,T){this.checkTrigger(m,g,k,T,function(A){return A.triggersBounds},function(A){m.dirtyCompoundBoundsCache(),m.dirtyBoundingBoxCache(),A.triggersBoundsOfParallelBeziers&&(g==="curve-style"&&(k==="bezier"||T==="bezier")||g==="display"&&(k==="none"||T==="none"))&&m.parallelEdges().forEach(function(D){D.isBundledBezier()&&D.dirtyBoundingBoxCache()})})},m1.checkTriggers=function(m,g,k,T){m.dirtyStyleCache(),this.checkZOrderTrigger(m,g,k,T),this.checkBoundsTrigger(m,g,k,T)};var Dx={};Dx.applyBypass=function(m,g,k,T){var A=this,D=[],I=!0;if(g==="*"||g==="**"){if(k!==void 0)for(var F=0;FA.length?T=T.substr(A.length):T=""}function H(){D.length>I.length?D=D.substr(I.length):D=""}for(;;){var C=T.match(/^\s*$/);if(C)break;var G=T.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!G){Vo("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+T);break}A=G[0];var U=G[1];if(U!=="core"){var Z=new dm(U);if(Z.invalid){Vo("Skipping parsing of block: Invalid selector found in string stylesheet: "+U),F();continue}}var ne=G[2],ae=!1;D=ne;for(var ue=[];;){var _e=D.match(/^\s*$/);if(_e)break;var be=D.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!be){Vo("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+ne),ae=!0;break}I=be[0];var Se=be[1],Le=be[2],Be=g.properties[Se];if(!Be){Vo("Skipping property: Invalid property name in: "+I),H();continue}var Ke=k.parse(Se,Le);if(!Ke){Vo("Skipping property: Invalid property definition in: "+I),H();continue}ue.push({name:Se,val:Le}),H()}if(ae){F();break}k.selector(U);for(var qe=0;qe=7&&g[0]==="d"&&(G=new RegExp(F.data.regex).exec(g))){if(k)return!1;var Z=F.data;return{name:m,value:G,strValue:""+g,mapped:Z,field:G[1],bypass:k}}else if(g.length>=10&&g[0]==="m"&&(U=new RegExp(F.mapData.regex).exec(g))){if(k||C.multiple)return!1;var ne=F.mapData;if(!(C.color||C.number))return!1;var ae=this.parse(m,U[4]);if(!ae||ae.mapped)return!1;var ue=this.parse(m,U[5]);if(!ue||ue.mapped)return!1;if(ae.pfValue===ue.pfValue||ae.strValue===ue.strValue)return Vo("`"+m+": "+g+"` is not a valid mapper because the output range is zero; converting to `"+m+": "+ae.strValue+"`"),this.parse(m,ae.strValue);if(C.color){var _e=ae.value,be=ue.value,Se=_e[0]===be[0]&&_e[1]===be[1]&&_e[2]===be[2]&&(_e[3]===be[3]||(_e[3]==null||_e[3]===1)&&(be[3]==null||be[3]===1));if(Se)return!1}return{name:m,value:U,strValue:""+g,mapped:ne,field:U[1],fieldMin:parseFloat(U[2]),fieldMax:parseFloat(U[3]),valueMin:ae.value,valueMax:ue.value,bypass:k}}}if(C.multiple&&T!=="multiple"){var Le;if(H?Le=g.split(/\s+/):Ae(g)?Le=g:Le=[g],C.evenMultiple&&Le.length%2!==0)return null;for(var Be=[],Ke=[],qe=[],Re="",Ze=!1,$e=0;$e0?" ":"")+ot.strValue}return C.validate&&!C.validate(Be,Ke)?null:C.singleEnum&&Ze?Be.length===1&&ye(Be[0])?{name:m,value:Be[0],strValue:Be[0],bypass:k}:null:{name:m,value:Be,pfValue:qe,strValue:Re,bypass:k,units:Ke}}var ut=function(){for(var gr=0;grC.max||C.strictMax&&g===C.max))return null;var Rt={name:m,value:g,strValue:""+g+(Je||""),units:Je,bypass:k};return C.unitless||Je!=="px"&&Je!=="em"?Rt.pfValue=g:Rt.pfValue=Je==="px"||!Je?g:this.getEmSizeInPixels()*g,(Je==="ms"||Je==="s")&&(Rt.pfValue=Je==="ms"?g:1e3*g),(Je==="deg"||Je==="rad")&&(Rt.pfValue=Je==="rad"?g:yY(g)),Je==="%"&&(Rt.pfValue=g/100),Rt}else if(C.propList){var $t=[],bn=""+g;if(bn!=="none"){for(var Cn=bn.split(/\s*,\s*|\s+/),Kn=0;Kn0&&F>0&&!isNaN(T.w)&&!isNaN(T.h)&&T.w>0&&T.h>0){H=Math.min((I-2*k)/T.w,(F-2*k)/T.h),H=H>this._private.maxZoom?this._private.maxZoom:H,H=H=T.minZoom&&(T.maxZoom=k),this},minZoom:function(g){return g===void 0?this._private.minZoom:this.zoomRange({min:g})},maxZoom:function(g){return g===void 0?this._private.maxZoom:this.zoomRange({max:g})},getZoomedViewport:function(g){var k=this._private,T=k.pan,A=k.zoom,D,I,F=!1;if(k.zoomingEnabled||(F=!0),te(g)?I=g:de(g)&&(I=g.level,g.position!=null?D=E9(g.position,A,T):g.renderedPosition!=null&&(D=g.renderedPosition),D!=null&&!k.panningEnabled&&(F=!0)),I=I>k.maxZoom?k.maxZoom:I,I=Ik.maxZoom||!k.zoomingEnabled?I=!0:(k.zoom=H,D.push("zoom"))}if(A&&(!I||!g.cancelOnFailedZoom)&&k.panningEnabled){var C=g.pan;te(C.x)&&(k.pan.x=C.x,F=!1),te(C.y)&&(k.pan.y=C.y,F=!1),F||D.push("pan")}return D.length>0&&(D.push("viewport"),this.emit(D.join(" ")),this.notify("viewport")),this},center:function(g){var k=this.getCenterPan(g);return k&&(this._private.pan=k,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(g,k){if(this._private.panningEnabled){if(ye(g)){var T=g;g=this.mutableElements().filter(T)}else he(g)||(g=this.mutableElements());if(g.length!==0){var A=g.boundingBox(),D=this.width(),I=this.height();k=k===void 0?this._private.zoom:k;var F={x:(D-k*(A.x1+A.x2))/2,y:(I-k*(A.y1+A.y2))/2};return F}}},reset:function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},invalidateSize:function(){this._private.sizeCache=null},size:function(){var g=this._private,k=g.container;return g.sizeCache=g.sizeCache||(k?function(){var T=$.getComputedStyle(k),A=function(I){return parseFloat(T.getPropertyValue(I))};return{width:k.clientWidth-A("padding-left")-A("padding-right"),height:k.clientHeight-A("padding-top")-A("padding-bottom")}}():{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var g=this._private.pan,k=this._private.zoom,T=this.renderedExtent(),A={x1:(T.x1-g.x)/k,x2:(T.x2-g.x)/k,y1:(T.y1-g.y)/k,y2:(T.y2-g.y)/k};return A.w=A.x2-A.x1,A.h=A.y2-A.y1,A},renderedExtent:function(){var g=this.width(),k=this.height();return{x1:0,y1:0,x2:g,y2:k,w:g,h:k}},multiClickDebounceTime:function(g){if(g)this._private.multiClickDebounceTime=g;else return this._private.multiClickDebounceTime;return this}};x3.centre=x3.center,x3.autolockNodes=x3.autolock,x3.autoungrabifyNodes=x3.autoungrabify;var Ix={data:Fc.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Fc.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Fc.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Fc.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Ix.attr=Ix.data,Ix.removeAttr=Ix.removeData;var Ox=function(g){var k=this;g=Oe({},g);var T=g.container;T&&!De(T)&&De(T[0])&&(T=T[0]);var A=T?T._cyreg:null;A=A||{},A&&A.cy&&(A.cy.destroy(),A={});var D=A.readies=A.readies||[];T&&(T._cyreg=A),A.cy=k;var I=$!==void 0&&T!==void 0&&!g.headless,F=g;F.layout=Oe({name:I?"grid":"null"},F.layout),F.renderer=Oe({name:I?"canvas":"null"},F.renderer);var H=function(ae,ue,_e){return ue!==void 0?ue:_e!==void 0?_e:ae},C=this._private={container:T,ready:!1,options:F,elements:new Wf(this),listeners:[],aniEles:new Wf(this),data:F.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:H(!0,F.zoomingEnabled),userZoomingEnabled:H(!0,F.userZoomingEnabled),panningEnabled:H(!0,F.panningEnabled),userPanningEnabled:H(!0,F.userPanningEnabled),boxSelectionEnabled:H(!0,F.boxSelectionEnabled),autolock:H(!1,F.autolock,F.autolockNodes),autoungrabify:H(!1,F.autoungrabify,F.autoungrabifyNodes),autounselectify:H(!1,F.autounselectify),styleEnabled:F.styleEnabled===void 0?I:F.styleEnabled,zoom:te(F.zoom)?F.zoom:1,pan:{x:de(F.pan)&&te(F.pan.x)?F.pan.x:0,y:de(F.pan)&&te(F.pan.y)?F.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:H(250,F.multiClickDebounceTime)};this.createEmitter(),this.selectionType(F.selectionType),this.zoomRange({min:F.minZoom,max:F.maxZoom});var G=function(ae,ue){var _e=ae.some(jt);if(_e)return q5.all(ae).then(ue);ue(ae)};C.styleEnabled&&k.setStyle([]);var U=Oe({},F,F.renderer);k.initRenderer(U);var Z=function(ae,ue,_e){k.notifications(!1);var be=k.mutableElements();be.length>0&&be.remove(),ae!=null&&(de(ae)||Ae(ae))&&k.add(ae),k.one("layoutready",function(Le){k.notifications(!0),k.emit(Le),k.one("load",ue),k.emitAndNotify("load")}).one("layoutstop",function(){k.one("done",_e),k.emit("done")});var Se=Oe({},k._private.options.layout);Se.eles=k.elements(),k.layout(Se).run()};G([F.style,F.elements],function(ne){var ae=ne[0],ue=ne[1];C.styleEnabled&&k.style().append(ae),Z(ue,function(){k.startAnimationLoop(),C.ready=!0,ke(F.ready)&&k.on("ready",F.ready);for(var _e=0;_e0,H=zd(g.boundingBox?g.boundingBox:{x1:0,y1:0,w:k.width(),h:k.height()}),C;if(he(g.roots))C=g.roots;else if(Ae(g.roots)){for(var G=[],U=0;U0;){var un=lt(),Rt=ot(un,Je);if(Rt)un.outgoers().filter(function(Li){return Li.isNode()&&T.has(Li)}).forEach(Ct);else if(Rt===null){Vo("Detected double maximal shift for node `"+un.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}$e();var $t=0;if(g.avoidOverlap)for(var bn=0;bn0&&be[0].length<=3?Ks/2:0),On=2*Math.PI/be[Yi].length*Di;return Yi===0&&be[0].length===1&&(We=1),{x:Ti.x+We*Math.cos(On),y:Ti.y+We*Math.sin(On)}}else{var Ar={x:Ti.x+(Di+1-(es+1)/2)*eo,y:(Yi+1)*sa};return Ar}};return T.nodes().layoutPositions(this,g,Ba),this};var LJ={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(g,k){return!0},ready:void 0,stop:void 0,transform:function(g,k){return k}};function nT(m){this.options=Oe({},LJ,m)}nT.prototype.run=function(){var m=this.options,g=m,k=m.cy,T=g.eles,A=g.counterclockwise!==void 0?!g.counterclockwise:g.clockwise,D=T.nodes().not(":parent");g.sort&&(D=D.sort(g.sort));for(var I=zd(g.boundingBox?g.boundingBox:{x1:0,y1:0,w:k.width(),h:k.height()}),F={x:I.x1+I.w/2,y:I.y1+I.h/2},H=g.sweep===void 0?2*Math.PI-2*Math.PI/D.length:g.sweep,C=H/Math.max(1,D.length-1),G,U=0,Z=0;Z1&&g.avoidOverlap){U*=1.75;var be=Math.cos(C)-Math.cos(0),Se=Math.sin(C)-Math.sin(0),Le=Math.sqrt(U*U/(be*be+Se*Se));G=Math.max(Le,G)}var Be=function(qe,Re){var Ze=g.startAngle+Re*C*(A?1:-1),$e=G*Math.cos(Ze),ot=G*Math.sin(Ze),ut={x:F.x+$e,y:F.y+ot};return ut};return T.nodes().layoutPositions(this,g,Be),this};var MJ={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(g){return g.degree()},levelWidth:function(g){return g.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(g,k){return!0},ready:void 0,stop:void 0,transform:function(g,k){return k}};function TR(m){this.options=Oe({},MJ,m)}TR.prototype.run=function(){for(var m=this.options,g=m,k=g.counterclockwise!==void 0?!g.counterclockwise:g.clockwise,T=m.cy,A=g.eles,D=A.nodes().not(":parent"),I=zd(g.boundingBox?g.boundingBox:{x1:0,y1:0,w:T.width(),h:T.height()}),F={x:I.x1+I.w/2,y:I.y1+I.h/2},H=[],C=0,G=0;G0){var Ke=Math.abs(Se[0].value-Be.value);Ke>=_e&&(Se=[],be.push(Se))}Se.push(Be)}var qe=C+g.minNodeSpacing;if(!g.avoidOverlap){var Re=be.length>0&&be[0].length>1,Ze=Math.min(I.w,I.h)/2-qe,$e=Ze/(be.length+Re?1:0);qe=Math.min(qe,$e)}for(var ot=0,ut=0;ut1&&g.avoidOverlap){var un=Math.cos(lt)-Math.cos(0),Rt=Math.sin(lt)-Math.sin(0),$t=Math.sqrt(qe*qe/(un*un+Rt*Rt));ot=Math.max($t,ot)}Je.r=ot,ot+=qe}if(g.equidistant){for(var bn=0,Cn=0,Kn=0;Kn=m.numIter||(FJ(T,m),T.temperature=T.temperature*m.coolingFactor,T.temperature=m.animationThreshold&&D(),Aa(U)}};G()}else{for(;C;)C=I(H),H++;SR(T,m),F()}return this},rT.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},rT.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var IJ=function(g,k,T){for(var A=T.eles.edges(),D=T.eles.nodes(),I={isCompound:g.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:D.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:A.size(),temperature:T.initialTemp,clientWidth:g.width(),clientHeight:g.width(),boundingBox:zd(T.boundingBox?T.boundingBox:{x1:0,y1:0,w:g.width(),h:g.height()})},F=T.eles.components(),H={},C=0;C0){I.graphSet.push(Re);for(var C=0;CA.count?0:A.graph},NJ=function m(g,k,T,A){var D=A.graphSet[T];if(-10)var U=A.nodeOverlap*G,Z=Math.sqrt(F*F+H*H),ne=U*F/Z,ae=U*H/Z;else var ue=iT(g,F,H),_e=iT(k,-1*F,-1*H),be=_e.x-ue.x,Se=_e.y-ue.y,Le=be*be+Se*Se,Z=Math.sqrt(Le),U=(g.nodeRepulsion+k.nodeRepulsion)/Le,ne=U*be/Z,ae=U*Se/Z;g.isLocked||(g.offsetX-=ne,g.offsetY-=ae),k.isLocked||(k.offsetX+=ne,k.offsetY+=ae)}},HJ=function(g,k,T,A){if(T>0)var D=g.maxX-k.minX;else var D=k.maxX-g.minX;if(A>0)var I=g.maxY-k.minY;else var I=k.maxY-g.minY;return D>=0&&I>=0?Math.sqrt(D*D+I*I):0},iT=function(g,k,T){var A=g.positionX,D=g.positionY,I=g.height||1,F=g.width||1,H=T/k,C=I/F,G={};return k===0&&0T?(G.x=A,G.y=D+I/2,G):0k&&-1*C<=H&&H<=C?(G.x=A-F/2,G.y=D-F*T/2/k,G):0=C)?(G.x=A+I*k/2/T,G.y=D+I/2,G):(0>T&&(H<=-1*C||H>=C)&&(G.x=A-I*k/2/T,G.y=D-I/2),G)},zJ=function(g,k){for(var T=0;TT){var _e=k.gravity*ne/ue,be=k.gravity*ae/ue;Z.offsetX+=_e,Z.offsetY+=be}}}}},qJ=function(g,k){var T=[],A=0,D=-1;for(T.push.apply(T,g.graphSet[0]),D+=g.graphSet[0].length;A<=D;){var I=T[A++],F=g.idToIndex[I],H=g.layoutNodes[F],C=H.children;if(0T)var D={x:T*g/A,y:T*k/A};else var D={x:g,y:k};return D},WJ=function m(g,k){var T=g.parentId;if(T!=null){var A=k.layoutNodes[k.idToIndex[T]],D=!1;if((A.maxX==null||g.maxX+A.padRight>A.maxX)&&(A.maxX=g.maxX+A.padRight,D=!0),(A.minX==null||g.minX-A.padLeftA.maxY)&&(A.maxY=g.maxY+A.padBottom,D=!0),(A.minY==null||g.minY-A.padTopbe&&(ae+=_e+k.componentSpacing,ne=0,ue=0,_e=0)}}},KJ={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(g){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(g,k){return!0},ready:void 0,stop:void 0,transform:function(g,k){return k}};function AR(m){this.options=Oe({},KJ,m)}AR.prototype.run=function(){var m=this.options,g=m,k=m.cy,T=g.eles,A=T.nodes().not(":parent");g.sort&&(A=A.sort(g.sort));var D=zd(g.boundingBox?g.boundingBox:{x1:0,y1:0,w:k.width(),h:k.height()});if(D.h===0||D.w===0)T.nodes().layoutPositions(this,g,function(sr){return{x:D.x1,y:D.y1}});else{var I=A.size(),F=Math.sqrt(I*D.h/D.w),H=Math.round(F),C=Math.round(D.w/D.h*F),G=function(yr){if(yr==null)return Math.min(H,C);var hr=Math.min(H,C);hr==H?H=yr:C=yr},U=function(yr){if(yr==null)return Math.max(H,C);var hr=Math.max(H,C);hr==H?H=yr:C=yr},Z=g.rows,ne=g.cols!=null?g.cols:g.columns;if(Z!=null&&ne!=null)H=Z,C=ne;else if(Z!=null&&ne==null)H=Z,C=Math.ceil(I/H);else if(Z==null&&ne!=null)C=ne,H=Math.ceil(I/C);else if(C*H>I){var ae=G(),ue=U();(ae-1)*ue>=I?G(ae-1):(ue-1)*ae>=I&&U(ue-1)}else for(;C*H=I?U(be+1):G(_e+1)}var Se=D.w/C,Le=D.h/H;if(g.condense&&(Se=0,Le=0),g.avoidOverlap)for(var Be=0;Be=C&&(un=0,lt++)},$t={},bn=0;bn(un=OY(m,g,Rt[$t],Rt[$t+1],Rt[$t+2],Rt[$t+3])))return _e(Re,un),!0}else if($e.edgeType==="bezier"||$e.edgeType==="multibezier"||$e.edgeType==="self"||$e.edgeType==="compound"){for(var Rt=$e.allpts,$t=0;$t+5<$e.allpts.length;$t+=4)if(LY(m,g,Rt[$t],Rt[$t+1],Rt[$t+2],Rt[$t+3],Rt[$t+4],Rt[$t+5],lt)&&Ct>(un=IY(m,g,Rt[$t],Rt[$t+1],Rt[$t+2],Rt[$t+3],Rt[$t+4],Rt[$t+5])))return _e(Re,un),!0}for(var bn=bn||Ze.source,Cn=Cn||Ze.target,Kn=A.getArrowWidth(ot,ut),kn=[{name:"source",x:$e.arrowStartX,y:$e.arrowStartY,angle:$e.srcArrowAngle},{name:"target",x:$e.arrowEndX,y:$e.arrowEndY,angle:$e.tgtArrowAngle},{name:"mid-source",x:$e.midX,y:$e.midY,angle:$e.midsrcArrowAngle},{name:"mid-target",x:$e.midX,y:$e.midY,angle:$e.midtgtArrowAngle}],$t=0;$t0&&(be(bn),be(Cn))}function Le(Re,Ze,$e){return gp(Re,Ze,$e)}function Be(Re,Ze){var $e=Re._private,ot=Z,ut;Ze?ut=Ze+"-":ut="",Re.boundingBox();var Je=$e.labelBounds[Ze||"main"],Ct=Re.pstyle(ut+"label").value,lt=Re.pstyle("text-events").strValue==="yes";if(!(!lt||!Ct)){var un=Le($e.rscratch,"labelX",Ze),Rt=Le($e.rscratch,"labelY",Ze),$t=Le($e.rscratch,"labelAngle",Ze),bn=Re.pstyle(ut+"text-margin-x").pfValue,Cn=Re.pstyle(ut+"text-margin-y").pfValue,Kn=Je.x1-ot-bn,kn=Je.x2+ot-bn,Wn=Je.y1-ot-Cn,sr=Je.y2+ot-Cn;if($t){var yr=Math.cos($t),hr=Math.sin($t),nr=function(Ba,Li){return Ba=Ba-un,Li=Li-Rt,{x:Ba*yr-Li*hr+un,y:Ba*hr+Li*yr+Rt}},fn=nr(Kn,Wn),vr=nr(Kn,sr),gr=nr(kn,Wn),ni=nr(kn,sr),Ti=[fn.x+bn,fn.y+Cn,gr.x+bn,gr.y+Cn,ni.x+bn,ni.y+Cn,vr.x+bn,vr.y+Cn];if(Gd(m,g,Ti))return _e(Re),!0}else if($5(Je,m,g))return _e(Re),!0}}for(var Ke=I.length-1;Ke>=0;Ke--){var qe=I[Ke];qe.isNode()?be(qe)||Be(qe):Se(qe)||Be(qe)||Be(qe,"source")||Be(qe,"target")}return F},E3.getAllInBox=function(m,g,k,T){var A=this.getCachedZSortedEles().interactive,D=[],I=Math.min(m,k),F=Math.max(m,k),H=Math.min(g,T),C=Math.max(g,T);m=I,k=F,g=H,T=C;for(var G=zd({x1:m,y1:g,x2:k,y2:T}),U=0;U0?Math.max(is-Uo,0):Math.min(is+Uo,0)},Ct=Je(ot,Ze),lt=Je(ut,$e),un=!1;Se===C?be=Math.abs(Ct)>Math.abs(lt)?A:T:Se===H||Se===F?(be=T,un=!0):(Se===D||Se===I)&&(be=A,un=!0);var Rt=be===T,$t=Rt?lt:Ct,bn=Rt?ut:ot,Cn=WP(bn),Kn=!1;!(un&&(Be||qe))&&(Se===F&&bn<0||Se===H&&bn>0||Se===D&&bn>0||Se===I&&bn<0)&&(Cn*=-1,$t=Cn*Math.abs($t),Kn=!0);var kn;if(Be){var Wn=Ke<0?1+Ke:Ke;kn=Wn*$t}else{var sr=Ke<0?$t:0;kn=sr+Ke*Cn}var yr=function(is){return Math.abs(is)=Math.abs($t)},hr=yr(kn),nr=yr(Math.abs($t)-Math.abs(kn)),fn=hr||nr;if(fn&&!Kn)if(Rt){var vr=Math.abs(bn)<=Z/2,gr=Math.abs(ot)<=ne/2;if(vr){var ni=(G.x1+G.x2)/2,Ti=G.y1,ia=G.y2;k.segpts=[ni,Ti,ni,ia]}else if(gr){var Ba=(G.y1+G.y2)/2,Li=G.x1,wi=G.x2;k.segpts=[Li,Ba,wi,Ba]}else k.segpts=[G.x1,G.y2]}else{var Ts=Math.abs(bn)<=U/2,Yi=Math.abs(ut)<=ae/2;if(Ts){var Di=(G.y1+G.y2)/2,es=G.x1,eo=G.x2;k.segpts=[es,Di,eo,Di]}else if(Yi){var sa=(G.x1+G.x2)/2,Ks=G.y1,Ar=G.y2;k.segpts=[sa,Ks,sa,Ar]}else k.segpts=[G.x2,G.y1]}else if(Rt){var We=G.y1+kn+(_e?Z/2*Cn:0),On=G.x1,Ir=G.x2;k.segpts=[On,We,Ir,We]}else{var ar=G.x1+kn+(_e?U/2*Cn:0),or=G.y1,qa=G.y2;k.segpts=[ar,or,ar,qa]}},hd.tryToCorrectInvalidPoints=function(m,g){var k=m._private.rscratch;if(k.edgeType==="bezier"){var T=g.srcPos,A=g.tgtPos,D=g.srcW,I=g.srcH,F=g.tgtW,H=g.tgtH,C=g.srcShape,G=g.tgtShape,U=!te(k.startX)||!te(k.startY),Z=!te(k.arrowStartX)||!te(k.arrowStartY),ne=!te(k.endX)||!te(k.endY),ae=!te(k.arrowEndX)||!te(k.arrowEndY),ue=3,_e=this.getArrowWidth(m.pstyle("width").pfValue,m.pstyle("arrow-scale").value)*this.arrowShapeWidth,be=ue*_e,Se=v3({x:k.ctrlpts[0],y:k.ctrlpts[1]},{x:k.startX,y:k.startY}),Le=Selt.poolIndex()){var un=Ct;Ct=lt,lt=un}var Rt=$e.srcPos=Ct.position(),$t=$e.tgtPos=lt.position(),bn=$e.srcW=Ct.outerWidth(),Cn=$e.srcH=Ct.outerHeight(),Kn=$e.tgtW=lt.outerWidth(),kn=$e.tgtH=lt.outerHeight(),Wn=$e.srcShape=k.nodeShapes[g.getNodeShape(Ct)],sr=$e.tgtShape=k.nodeShapes[g.getNodeShape(lt)];$e.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var yr=0;yr<$e.eles.length;yr++){var hr=$e.eles[yr],nr=hr[0]._private.rscratch,fn=hr.pstyle("curve-style").value,vr=fn==="unbundled-bezier"||fn==="segments"||fn==="taxi",gr=!Ct.same(hr.source());if(!$e.calculatedIntersection&&Ct!==lt&&($e.hasBezier||$e.hasUnbundled)){$e.calculatedIntersection=!0;var ni=Wn.intersectLine(Rt.x,Rt.y,bn,Cn,$t.x,$t.y,0),Ti=$e.srcIntn=ni,ia=sr.intersectLine($t.x,$t.y,Kn,kn,Rt.x,Rt.y,0),Ba=$e.tgtIntn=ia,Li=$e.intersectionPts={x1:ni[0],x2:ia[0],y1:ni[1],y2:ia[1]},wi=$e.posPts={x1:Rt.x,x2:$t.x,y1:Rt.y,y2:$t.y},Ts=ia[1]-ni[1],Yi=ia[0]-ni[0],Di=Math.sqrt(Yi*Yi+Ts*Ts),es=$e.vector={x:Yi,y:Ts},eo=$e.vectorNorm={x:es.x/Di,y:es.y/Di},sa={x:-eo.y,y:eo.x};$e.nodesOverlap=!te(Di)||sr.checkPoint(ni[0],ni[1],0,Kn,kn,$t.x,$t.y)||Wn.checkPoint(ia[0],ia[1],0,bn,Cn,Rt.x,Rt.y),$e.vectorNormInverse=sa,ot={nodesOverlap:$e.nodesOverlap,dirCounts:$e.dirCounts,calculatedIntersection:!0,hasBezier:$e.hasBezier,hasUnbundled:$e.hasUnbundled,eles:$e.eles,srcPos:$t,tgtPos:Rt,srcW:Kn,srcH:kn,tgtW:bn,tgtH:Cn,srcIntn:Ba,tgtIntn:Ti,srcShape:sr,tgtShape:Wn,posPts:{x1:wi.x2,y1:wi.y2,x2:wi.x1,y2:wi.y1},intersectionPts:{x1:Li.x2,y1:Li.y2,x2:Li.x1,y2:Li.y1},vector:{x:-es.x,y:-es.y},vectorNorm:{x:-eo.x,y:-eo.y},vectorNormInverse:{x:-sa.x,y:-sa.y}}}var Ks=gr?ot:$e;nr.nodesOverlap=Ks.nodesOverlap,nr.srcIntn=Ks.srcIntn,nr.tgtIntn=Ks.tgtIntn,A&&(Ct.isParent()||Ct.isChild()||lt.isParent()||lt.isChild())&&(Ct.parents().anySame(lt)||lt.parents().anySame(Ct)||Ct.same(lt)&&Ct.isParent())?g.findCompoundLoopPoints(hr,Ks,yr,vr):Ct===lt?g.findLoopPoints(hr,Ks,yr,vr):fn==="segments"?g.findSegmentsPoints(hr,Ks):fn==="taxi"?g.findTaxiPoints(hr,Ks):fn==="straight"||!vr&&$e.eles.length%2===1&&yr===Math.floor($e.eles.length/2)?g.findStraightEdgePoints(hr):g.findBezierPoints(hr,Ks,yr,vr,gr),g.findEndpoints(hr),g.tryToCorrectInvalidPoints(hr,Ks),g.checkForInvalidEdgeWarning(hr),g.storeAllpts(hr),g.storeEdgeProjections(hr),g.calculateArrowAngles(hr),g.recalculateEdgeLabelProjections(hr),g.calculateLabelAngles(hr)}},Ke=0;Ke0){var vr=D,gr=w3(vr,F5(k)),ni=w3(vr,F5(fn)),Ti=gr;if(ni2){var ia=w3(vr,{x:fn[2],y:fn[3]});ia0){var On=I,Ir=w3(On,F5(k)),ar=w3(On,F5(We)),or=Ir;if(ar2){var qa=w3(On,{x:We[2],y:We[3]});qa=ae||Re){_e={cp:Be,segment:qe};break}}if(_e)break}var Ze=_e.cp,$e=_e.segment,ot=(ae-be)/$e.length,ut=$e.t1-$e.t0,Je=ne?$e.t0+ut*ot:$e.t1-ut*ot;Je=px(0,Je,1),g=j5(Ze.p0,Ze.p1,Ze.p2,Je),Z=RR(Ze.p0,Ze.p1,Ze.p2,Je);break}case"straight":case"segments":case"haystack":{for(var Ct=0,lt,un,Rt,$t,bn=T.allpts.length,Cn=0;Cn+3=ae));Cn+=2);var Kn=ae-un,kn=Kn/lt;kn=px(0,kn,1),g=xY(Rt,$t,kn),Z=BR(Rt,$t);break}}I("labelX",U,g.x),I("labelY",U,g.y),I("labelAutoAngle",U,Z)}};C("source"),C("target"),this.applyLabelDimensions(m)}},wp.applyLabelDimensions=function(m){this.applyPrefixedLabelDimensions(m),m.isEdge()&&(this.applyPrefixedLabelDimensions(m,"source"),this.applyPrefixedLabelDimensions(m,"target"))},wp.applyPrefixedLabelDimensions=function(m,g){var k=m._private,T=this.getLabelText(m,g),A=this.calculateLabelDimensions(m,T),D=m.pstyle("line-height").pfValue,I=m.pstyle("text-wrap").strValue,F=gp(k.rscratch,"labelWrapCachedLines",g)||[],H=I!=="wrap"?1:Math.max(F.length,1),C=A.height/H,G=C*D,U=A.width,Z=A.height+(H-1)*(D-1)*C;um(k.rstyle,"labelWidth",g,U),um(k.rscratch,"labelWidth",g,U),um(k.rstyle,"labelHeight",g,Z),um(k.rscratch,"labelHeight",g,Z),um(k.rscratch,"labelLineHeight",g,G)},wp.getLabelText=function(m,g){var k=m._private,T=g?g+"-":"",A=m.pstyle(T+"label").strValue,D=m.pstyle("text-transform").value,I=function(Kn,kn){return kn?(um(k.rscratch,Kn,g,kn),kn):gp(k.rscratch,Kn,g)};if(!A)return"";D=="none"||(D=="uppercase"?A=A.toUpperCase():D=="lowercase"&&(A=A.toLowerCase()));var F=m.pstyle("text-wrap").value;if(F==="wrap"){var H=I("labelKey");if(H!=null&&I("labelWrapKey")===H)return I("labelWrapCachedText");for(var C="​",G=A.split(` +`),U=m.pstyle("text-max-width").pfValue,Z=m.pstyle("text-overflow-wrap").value,ne=Z==="anywhere",ae=[],ue=/[\s\u200b]+/,_e=ne?"":" ",be=0;beU){for(var qe=Se.split(ue),Re="",Ze=0;ZeCt)break;lt+=A[$t],$t===A.length-1&&(Rt=!0)}return Rt||(lt+=un),lt}return A},wp.getLabelJustification=function(m){var g=m.pstyle("text-justification").strValue,k=m.pstyle("text-halign").strValue;if(g==="auto")if(m.isNode())switch(k){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return g},wp.calculateLabelDimensions=function(m,g){var k=this,T=od(g,m._private.labelDimsKey),A=k.labelDimCache||(k.labelDimCache=[]),D=A[T];if(D!=null)return D;var I=0,F=m.pstyle("font-style").strValue,H=m.pstyle("font-size").pfValue,C=m.pstyle("font-family").strValue,G=m.pstyle("font-weight").strValue,U=this.labelCalcCanvas,Z=this.labelCalcCanvasContext;if(!U){U=this.labelCalcCanvas=document.createElement("canvas"),Z=this.labelCalcCanvasContext=U.getContext("2d");var ne=U.style;ne.position="absolute",ne.left="-9999px",ne.top="-9999px",ne.zIndex="-1",ne.visibility="hidden",ne.pointerEvents="none"}Z.font="".concat(F," ").concat(G," ").concat(H,"px ").concat(C);for(var ae=0,ue=0,_e=g.split(` +`),be=0;be<_e.length;be++){var Se=_e[be],Le=Z.measureText(Se),Be=Math.ceil(Le.width),Ke=H;ae=Math.max(Be,ae),ue+=Ke}return ae+=I,ue+=I,A[T]={width:ae,height:ue}},wp.calculateLabelAngle=function(m,g){var k=m._private,T=k.rscratch,A=m.isEdge(),D=g?g+"-":"",I=m.pstyle(D+"text-rotation"),F=I.strValue;return F==="none"?0:A&&F==="autorotate"?T.labelAutoAngle:F==="autorotate"?0:I.pfValue},wp.calculateLabelAngles=function(m){var g=this,k=m.isEdge(),T=m._private,A=T.rscratch;A.labelAngle=g.calculateLabelAngle(m),k&&(A.sourceLabelAngle=g.calculateLabelAngle(m,"source"),A.targetLabelAngle=g.calculateLabelAngle(m,"target"))};var ch={},YL=28,FR=!1;ch.getNodeShape=function(m){var g=this,k=m.pstyle("shape").value;if(k==="cutrectangle"&&(m.width()1&&arguments[1]!==void 0?arguments[1]:!0;if(g.merge(I),F)for(var H=0;H=m.desktopTapThreshold2}var ov=T(We);Yf&&(m.hoverData.tapholdCancelled=!0);var mm=function(){var $2=m.hoverData.dragDelta=m.hoverData.dragDelta||[];$2.length===0?($2.push(lo[0]),$2.push(lo[1])):($2[0]+=lo[0],$2[1]+=lo[1])};Ir=!0,k(uo,["mousemove","vmousemove","tapdrag"],We,{x:qr[0],y:qr[1]});var l6=function(){m.data.bgActivePosistion=void 0,m.hoverData.selecting||ar.emit({originalEvent:We,type:"boxstart",position:{x:qr[0],y:qr[1]}}),qc[4]=1,m.hoverData.selecting=!0,m.redrawHint("select",!0),m.redraw()};if(m.hoverData.which===3){if(Yf){var S3={originalEvent:We,type:"cxtdrag",position:{x:qr[0],y:qr[1]}};Ra?Ra.emit(S3):ar.emit(S3),m.hoverData.cxtDragged=!0,(!m.hoverData.cxtOver||uo!==m.hoverData.cxtOver)&&(m.hoverData.cxtOver&&m.hoverData.cxtOver.emit({originalEvent:We,type:"cxtdragout",position:{x:qr[0],y:qr[1]}}),m.hoverData.cxtOver=uo,uo&&uo.emit({originalEvent:We,type:"cxtdragover",position:{x:qr[0],y:qr[1]}}))}}else if(m.hoverData.dragging){if(Ir=!0,ar.panningEnabled()&&ar.userPanningEnabled()){var h6;if(m.hoverData.justStartedPan){var gT=m.hoverData.mdownPos;h6={x:(qr[0]-gT[0])*or,y:(qr[1]-gT[1])*or},m.hoverData.justStartedPan=!1}else h6={x:lo[0]*or,y:lo[1]*or};ar.panBy(h6),ar.emit("dragpan"),m.hoverData.dragged=!0}qr=m.projectIntoViewport(We.clientX,We.clientY)}else if(qc[4]==1&&(Ra==null||Ra.pannable())){if(Yf){if(!m.hoverData.dragging&&ar.boxSelectionEnabled()&&(ov||!ar.panningEnabled()||!ar.userPanningEnabled()))l6();else if(!m.hoverData.selecting&&ar.panningEnabled()&&ar.userPanningEnabled()){var A3=A(Ra,m.hoverData.downs);A3&&(m.hoverData.dragging=!0,m.hoverData.justStartedPan=!0,qc[4]=0,m.data.bgActivePosistion=F5(is),m.redrawHint("select",!0),m.redraw())}Ra&&Ra.pannable()&&Ra.active()&&Ra.unactivate()}}else{if(Ra&&Ra.pannable()&&Ra.active()&&Ra.unactivate(),(!Ra||!Ra.grabbed())&&uo!=Lc&&(Lc&&k(Lc,["mouseout","tapdragout"],We,{x:qr[0],y:qr[1]}),uo&&k(uo,["mouseover","tapdragover"],We,{x:qr[0],y:qr[1]}),m.hoverData.last=uo),Ra)if(Yf){if(ar.boxSelectionEnabled()&&ov)Ra&&Ra.grabbed()&&(ue(Sl),Ra.emit("freeon"),Sl.emit("free"),m.dragData.didDrag&&(Ra.emit("dragfreeon"),Sl.emit("dragfree"))),l6();else if(Ra&&Ra.grabbed()&&m.nodeIsDraggable(Ra)){var qd=!m.dragData.didDrag;qd&&m.redrawHint("eles",!0),m.dragData.didDrag=!0,m.hoverData.draggingEles||ne(Sl,{inDragLayer:!0});var _1={x:0,y:0};if(te(lo[0])&&te(lo[1])&&(_1.x+=lo[0],_1.y+=lo[1],qd)){var Vd=m.hoverData.dragDelta;Vd&&te(Vd[0])&&te(Vd[1])&&(_1.x+=Vd[0],_1.y+=Vd[1])}m.hoverData.draggingEles=!0,Sl.silentShift(_1).emit("position drag"),m.redrawHint("drag",!0),m.redraw()}}else mm();Ir=!0}if(qc[2]=qr[0],qc[3]=qr[1],Ir)return We.stopPropagation&&We.stopPropagation(),We.preventDefault&&We.preventDefault(),!1}},!1);var $e,ot,ut;m.registerBinding(window,"mouseup",function(We){var On=m.hoverData.capture;if(On){m.hoverData.capture=!1;var Ir=m.cy,ar=m.projectIntoViewport(We.clientX,We.clientY),or=m.selection,qa=m.findNearestElement(ar[0],ar[1],!0,!1),qr=m.dragData.possibleDragElements,is=m.hoverData.down,Uo=T(We);if(m.data.bgActivePosistion&&(m.redrawHint("select",!0),m.redraw()),m.hoverData.tapholdCancelled=!0,m.data.bgActivePosistion=void 0,is&&is.unactivate(),m.hoverData.which===3){var qc={originalEvent:We,type:"cxttapend",position:{x:ar[0],y:ar[1]}};if(is?is.emit(qc):Ir.emit(qc),!m.hoverData.cxtDragged){var uo={originalEvent:We,type:"cxttap",position:{x:ar[0],y:ar[1]}};is?is.emit(uo):Ir.emit(uo)}m.hoverData.cxtDragged=!1,m.hoverData.which=null}else if(m.hoverData.which===1){if(k(qa,["mouseup","tapend","vmouseup"],We,{x:ar[0],y:ar[1]}),!m.dragData.didDrag&&!m.hoverData.dragged&&!m.hoverData.selecting&&!m.hoverData.isOverThresholdDrag&&(k(is,["click","tap","vclick"],We,{x:ar[0],y:ar[1]}),ot=!1,We.timeStamp-ut<=Ir.multiClickDebounceTime()?($e&&clearTimeout($e),ot=!0,ut=null,k(is,["dblclick","dbltap","vdblclick"],We,{x:ar[0],y:ar[1]})):($e=setTimeout(function(){ot||k(is,["oneclick","onetap","voneclick"],We,{x:ar[0],y:ar[1]})},Ir.multiClickDebounceTime()),ut=We.timeStamp)),is==null&&!m.dragData.didDrag&&!m.hoverData.selecting&&!m.hoverData.dragged&&!T(We)&&(Ir.$(g).unselect(["tapunselect"]),qr.length>0&&m.redrawHint("eles",!0),m.dragData.possibleDragElements=qr=Ir.collection()),qa==is&&!m.dragData.didDrag&&!m.hoverData.selecting&&qa!=null&&qa._private.selectable&&(m.hoverData.dragging||(Ir.selectionType()==="additive"||Uo?qa.selected()?qa.unselect(["tapunselect"]):qa.select(["tapselect"]):Uo||(Ir.$(g).unmerge(qa).unselect(["tapunselect"]),qa.select(["tapselect"]))),m.redrawHint("eles",!0)),m.hoverData.selecting){var Lc=Ir.collection(m.getAllInBox(or[0],or[1],or[2],or[3]));m.redrawHint("select",!0),Lc.length>0&&m.redrawHint("eles",!0),Ir.emit({type:"boxend",originalEvent:We,position:{x:ar[0],y:ar[1]}});var Ra=function(Yf){return Yf.selectable()&&!Yf.selected()};Ir.selectionType()==="additive"||Uo||Ir.$(g).unmerge(Lc).unselect(),Lc.emit("box").stdFilter(Ra).select().emit("boxselect"),m.redraw()}if(m.hoverData.dragging&&(m.hoverData.dragging=!1,m.redrawHint("select",!0),m.redrawHint("eles",!0),m.redraw()),!or[4]){m.redrawHint("drag",!0),m.redrawHint("eles",!0);var lo=is&&is.grabbed();ue(qr),lo&&(is.emit("freeon"),qr.emit("free"),m.dragData.didDrag&&(is.emit("dragfreeon"),qr.emit("dragfree")))}}or[4]=0,m.hoverData.down=null,m.hoverData.cxtStarted=!1,m.hoverData.draggingEles=!1,m.hoverData.selecting=!1,m.hoverData.isOverThresholdDrag=!1,m.dragData.didDrag=!1,m.hoverData.dragged=!1,m.hoverData.dragDelta=[],m.hoverData.mdownPos=null,m.hoverData.mdownGPos=null}},!1);var Je=function(We){if(!m.scrollingPage){var On=m.cy,Ir=On.zoom(),ar=On.pan(),or=m.projectIntoViewport(We.clientX,We.clientY),qa=[or[0]*Ir+ar.x,or[1]*Ir+ar.y];if(m.hoverData.draggingEles||m.hoverData.dragging||m.hoverData.cxtStarted||Re()){We.preventDefault();return}if(On.panningEnabled()&&On.userPanningEnabled()&&On.zoomingEnabled()&&On.userZoomingEnabled()){We.preventDefault(),m.data.wheelZooming=!0,clearTimeout(m.data.wheelTimeout),m.data.wheelTimeout=setTimeout(function(){m.data.wheelZooming=!1,m.redrawHint("eles",!0),m.redraw()},150);var qr;We.deltaY!=null?qr=We.deltaY/-250:We.wheelDeltaY!=null?qr=We.wheelDeltaY/1e3:qr=We.wheelDelta/1e3,qr=qr*m.wheelSensitivity;var is=We.deltaMode===1;is&&(qr*=33);var Uo=On.zoom()*Math.pow(10,qr);We.type==="gesturechange"&&(Uo=m.gestureStartZoom*We.scale),On.zoom({level:Uo,renderedPosition:{x:qa[0],y:qa[1]}}),On.emit(We.type==="gesturechange"?"pinchzoom":"scrollzoom")}}};m.registerBinding(m.container,"wheel",Je,!0),m.registerBinding(window,"scroll",function(We){m.scrollingPage=!0,clearTimeout(m.scrollingPageTimeout),m.scrollingPageTimeout=setTimeout(function(){m.scrollingPage=!1},250)},!0),m.registerBinding(m.container,"gesturestart",function(We){m.gestureStartZoom=m.cy.zoom(),m.hasTouchStarted||We.preventDefault()},!0),m.registerBinding(m.container,"gesturechange",function(Ar){m.hasTouchStarted||Je(Ar)},!0),m.registerBinding(m.container,"mouseout",function(We){var On=m.projectIntoViewport(We.clientX,We.clientY);m.cy.emit({originalEvent:We,type:"mouseout",position:{x:On[0],y:On[1]}})},!1),m.registerBinding(m.container,"mouseover",function(We){var On=m.projectIntoViewport(We.clientX,We.clientY);m.cy.emit({originalEvent:We,type:"mouseover",position:{x:On[0],y:On[1]}})},!1);var Ct,lt,un,Rt,$t,bn,Cn,Kn,kn,Wn,sr,yr,hr,nr=function(We,On,Ir,ar){return Math.sqrt((Ir-We)*(Ir-We)+(ar-On)*(ar-On))},fn=function(We,On,Ir,ar){return(Ir-We)*(Ir-We)+(ar-On)*(ar-On)},vr;m.registerBinding(m.container,"touchstart",vr=function(We){if(m.hasTouchStarted=!0,!!Ze(We)){be(),m.touchData.capture=!0,m.data.bgActivePosistion=void 0;var On=m.cy,Ir=m.touchData.now,ar=m.touchData.earlier;if(We.touches[0]){var or=m.projectIntoViewport(We.touches[0].clientX,We.touches[0].clientY);Ir[0]=or[0],Ir[1]=or[1]}if(We.touches[1]){var or=m.projectIntoViewport(We.touches[1].clientX,We.touches[1].clientY);Ir[2]=or[0],Ir[3]=or[1]}if(We.touches[2]){var or=m.projectIntoViewport(We.touches[2].clientX,We.touches[2].clientY);Ir[4]=or[0],Ir[5]=or[1]}if(We.touches[1]){m.touchData.singleTouchMoved=!0,ue(m.dragData.touchDragEles);var qa=m.findContainerClientCoords();kn=qa[0],Wn=qa[1],sr=qa[2],yr=qa[3],Ct=We.touches[0].clientX-kn,lt=We.touches[0].clientY-Wn,un=We.touches[1].clientX-kn,Rt=We.touches[1].clientY-Wn,hr=0<=Ct&&Ct<=sr&&0<=un&&un<=sr&&0<=lt&<<=yr&&0<=Rt&&Rt<=yr;var qr=On.pan(),is=On.zoom();$t=nr(Ct,lt,un,Rt),bn=fn(Ct,lt,un,Rt),Cn=[(Ct+un)/2,(lt+Rt)/2],Kn=[(Cn[0]-qr.x)/is,(Cn[1]-qr.y)/is];var Uo=200,qc=Uo*Uo;if(bn=1){for(var yp=m.touchData.startPosition=[],Xf=0;Xf=m.touchTapThreshold2}if(On&&m.touchData.cxt){We.preventDefault();var yp=We.touches[0].clientX-kn,Xf=We.touches[0].clientY-Wn,gg=We.touches[1].clientX-kn,fd=We.touches[1].clientY-Wn,ov=fn(yp,Xf,gg,fd),mm=ov/bn,l6=150,S3=l6*l6,h6=1.5,gT=h6*h6;if(mm>=gT||ov>=S3){m.touchData.cxt=!1,m.data.bgActivePosistion=void 0,m.redrawHint("select",!0);var A3={originalEvent:We,type:"cxttapend",position:{x:or[0],y:or[1]}};m.touchData.start?(m.touchData.start.unactivate().emit(A3),m.touchData.start=null):ar.emit(A3)}}if(On&&m.touchData.cxt){var A3={originalEvent:We,type:"cxtdrag",position:{x:or[0],y:or[1]}};m.data.bgActivePosistion=void 0,m.redrawHint("select",!0),m.touchData.start?m.touchData.start.emit(A3):ar.emit(A3),m.touchData.start&&(m.touchData.start._private.grabbed=!1),m.touchData.cxtDragged=!0;var qd=m.findNearestElement(or[0],or[1],!0,!0);(!m.touchData.cxtOver||qd!==m.touchData.cxtOver)&&(m.touchData.cxtOver&&m.touchData.cxtOver.emit({originalEvent:We,type:"cxtdragout",position:{x:or[0],y:or[1]}}),m.touchData.cxtOver=qd,qd&&qd.emit({originalEvent:We,type:"cxtdragover",position:{x:or[0],y:or[1]}}))}else if(On&&We.touches[2]&&ar.boxSelectionEnabled())We.preventDefault(),m.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,m.touchData.selecting||ar.emit({originalEvent:We,type:"boxstart",position:{x:or[0],y:or[1]}}),m.touchData.selecting=!0,m.touchData.didSelect=!0,Ir[4]=1,!Ir||Ir.length===0||Ir[0]===void 0?(Ir[0]=(or[0]+or[2]+or[4])/3,Ir[1]=(or[1]+or[3]+or[5])/3,Ir[2]=(or[0]+or[2]+or[4])/3+1,Ir[3]=(or[1]+or[3]+or[5])/3+1):(Ir[2]=(or[0]+or[2]+or[4])/3,Ir[3]=(or[1]+or[3]+or[5])/3),m.redrawHint("select",!0),m.redraw();else if(On&&We.touches[1]&&!m.touchData.didSelect&&ar.zoomingEnabled()&&ar.panningEnabled()&&ar.userZoomingEnabled()&&ar.userPanningEnabled()){We.preventDefault(),m.data.bgActivePosistion=void 0,m.redrawHint("select",!0);var _1=m.dragData.touchDragEles;if(_1){m.redrawHint("drag",!0);for(var Vd=0;Vd<_1.length;Vd++){var pT=_1[Vd]._private;pT.grabbed=!1,pT.rscratch.inDragLayer=!1}}var $2=m.touchData.start,yp=We.touches[0].clientX-kn,Xf=We.touches[0].clientY-Wn,gg=We.touches[1].clientX-kn,fd=We.touches[1].clientY-Wn,QR=nr(yp,Xf,gg,fd),Dee=QR/$t;if(hr){var Iee=yp-Ct,Oee=Xf-lt,Nee=gg-un,Pee=fd-Rt,Bee=(Iee+Nee)/2,Ree=(Oee+Pee)/2,Gx=ar.zoom(),iM=Gx*Dee,bT=ar.pan(),ZR=Kn[0]*Gx+bT.x,JR=Kn[1]*Gx+bT.y,Fee={x:-iM/Gx*(ZR-bT.x-Bee)+ZR,y:-iM/Gx*(JR-bT.y-Ree)+JR};if($2&&$2.active()){var _1=m.dragData.touchDragEles;ue(_1),m.redrawHint("drag",!0),m.redrawHint("eles",!0),$2.unactivate().emit("freeon"),_1.emit("free"),m.dragData.didDrag&&($2.emit("dragfreeon"),_1.emit("dragfree"))}ar.viewport({zoom:iM,pan:Fee,cancelOnFailedZoom:!0}),ar.emit("pinchzoom"),$t=QR,Ct=yp,lt=Xf,un=gg,Rt=fd,m.pinching=!0}if(We.touches[0]){var is=m.projectIntoViewport(We.touches[0].clientX,We.touches[0].clientY);or[0]=is[0],or[1]=is[1]}if(We.touches[1]){var is=m.projectIntoViewport(We.touches[1].clientX,We.touches[1].clientY);or[2]=is[0],or[3]=is[1]}if(We.touches[2]){var is=m.projectIntoViewport(We.touches[2].clientX,We.touches[2].clientY);or[4]=is[0],or[5]=is[1]}}else if(We.touches[0]&&!m.touchData.didSelect){var kp=m.touchData.start,sM=m.touchData.last,qd;if(!m.hoverData.draggingEles&&!m.swipePanning&&(qd=m.findNearestElement(or[0],or[1],!0,!0)),On&&kp!=null&&We.preventDefault(),On&&kp!=null&&m.nodeIsDraggable(kp))if(qc){var _1=m.dragData.touchDragEles,eF=!m.dragData.didDrag;eF&&ne(_1,{inDragLayer:!0}),m.dragData.didDrag=!0;var qx={x:0,y:0};if(te(uo[0])&&te(uo[1])&&(qx.x+=uo[0],qx.y+=uo[1],eF)){m.redrawHint("eles",!0);var xp=m.touchData.dragDelta;xp&&te(xp[0])&&te(xp[1])&&(qx.x+=xp[0],qx.y+=xp[1])}m.hoverData.draggingEles=!0,_1.silentShift(qx).emit("position drag"),m.redrawHint("drag",!0),m.touchData.startPosition[0]==qa[0]&&m.touchData.startPosition[1]==qa[1]&&m.redrawHint("eles",!0),m.redraw()}else{var xp=m.touchData.dragDelta=m.touchData.dragDelta||[];xp.length===0?(xp.push(uo[0]),xp.push(uo[1])):(xp[0]+=uo[0],xp[1]+=uo[1])}if(k(kp||qd,["touchmove","tapdrag","vmousemove"],We,{x:or[0],y:or[1]}),(!kp||!kp.grabbed())&&qd!=sM&&(sM&&sM.emit({originalEvent:We,type:"tapdragout",position:{x:or[0],y:or[1]}}),qd&&qd.emit({originalEvent:We,type:"tapdragover",position:{x:or[0],y:or[1]}})),m.touchData.last=qd,On)for(var Vd=0;Vd0&&!m.hoverData.draggingEles&&!m.swipePanning&&m.data.bgActivePosistion!=null&&(m.data.bgActivePosistion=void 0,m.redrawHint("select",!0),m.redraw())}},!1);var ni;m.registerBinding(window,"touchcancel",ni=function(We){var On=m.touchData.start;m.touchData.capture=!1,On&&On.unactivate()});var Ti,ia,Ba,Li;if(m.registerBinding(window,"touchend",Ti=function(We){var On=m.touchData.start,Ir=m.touchData.capture;if(Ir)We.touches.length===0&&(m.touchData.capture=!1),We.preventDefault();else return;var ar=m.selection;m.swipePanning=!1,m.hoverData.draggingEles=!1;var or=m.cy,qa=or.zoom(),qr=m.touchData.now,is=m.touchData.earlier;if(We.touches[0]){var Uo=m.projectIntoViewport(We.touches[0].clientX,We.touches[0].clientY);qr[0]=Uo[0],qr[1]=Uo[1]}if(We.touches[1]){var Uo=m.projectIntoViewport(We.touches[1].clientX,We.touches[1].clientY);qr[2]=Uo[0],qr[3]=Uo[1]}if(We.touches[2]){var Uo=m.projectIntoViewport(We.touches[2].clientX,We.touches[2].clientY);qr[4]=Uo[0],qr[5]=Uo[1]}On&&On.unactivate();var qc;if(m.touchData.cxt){if(qc={originalEvent:We,type:"cxttapend",position:{x:qr[0],y:qr[1]}},On?On.emit(qc):or.emit(qc),!m.touchData.cxtDragged){var uo={originalEvent:We,type:"cxttap",position:{x:qr[0],y:qr[1]}};On?On.emit(uo):or.emit(uo)}m.touchData.start&&(m.touchData.start._private.grabbed=!1),m.touchData.cxt=!1,m.touchData.start=null,m.redraw();return}if(!We.touches[2]&&or.boxSelectionEnabled()&&m.touchData.selecting){m.touchData.selecting=!1;var Lc=or.collection(m.getAllInBox(ar[0],ar[1],ar[2],ar[3]));ar[0]=void 0,ar[1]=void 0,ar[2]=void 0,ar[3]=void 0,ar[4]=0,m.redrawHint("select",!0),or.emit({type:"boxend",originalEvent:We,position:{x:qr[0],y:qr[1]}});var Ra=function(S3){return S3.selectable()&&!S3.selected()};Lc.emit("box").stdFilter(Ra).select().emit("boxselect"),Lc.nonempty()&&m.redrawHint("eles",!0),m.redraw()}if(On!=null&&On.unactivate(),We.touches[2])m.data.bgActivePosistion=void 0,m.redrawHint("select",!0);else if(!We.touches[1]){if(!We.touches[0]){if(!We.touches[0]){m.data.bgActivePosistion=void 0,m.redrawHint("select",!0);var lo=m.dragData.touchDragEles;if(On!=null){var Sl=On._private.grabbed;ue(lo),m.redrawHint("drag",!0),m.redrawHint("eles",!0),Sl&&(On.emit("freeon"),lo.emit("free"),m.dragData.didDrag&&(On.emit("dragfreeon"),lo.emit("dragfree"))),k(On,["touchend","tapend","vmouseup","tapdragout"],We,{x:qr[0],y:qr[1]}),On.unactivate(),m.touchData.start=null}else{var Yf=m.findNearestElement(qr[0],qr[1],!0,!0);k(Yf,["touchend","tapend","vmouseup","tapdragout"],We,{x:qr[0],y:qr[1]})}var mp=m.touchData.startPosition[0]-qr[0],yp=mp*mp,Xf=m.touchData.startPosition[1]-qr[1],gg=Xf*Xf,fd=yp+gg,ov=fd*qa*qa;m.touchData.singleTouchMoved||(On||or.$(":selected").unselect(["tapunselect"]),k(On,["tap","vclick"],We,{x:qr[0],y:qr[1]}),ia=!1,We.timeStamp-Li<=or.multiClickDebounceTime()?(Ba&&clearTimeout(Ba),ia=!0,Li=null,k(On,["dbltap","vdblclick"],We,{x:qr[0],y:qr[1]})):(Ba=setTimeout(function(){ia||k(On,["onetap","voneclick"],We,{x:qr[0],y:qr[1]})},or.multiClickDebounceTime()),Li=We.timeStamp)),On!=null&&!m.dragData.didDrag&&On._private.selectable&&ov"u"){var wi=[],Ts=function(We){return{clientX:We.clientX,clientY:We.clientY,force:1,identifier:We.pointerId,pageX:We.pageX,pageY:We.pageY,radiusX:We.width/2,radiusY:We.height/2,screenX:We.screenX,screenY:We.screenY,target:We.target}},Yi=function(We){return{event:We,touch:Ts(We)}},Di=function(We){wi.push(Yi(We))},es=function(We){for(var On=0;On0)return kn[0]}return null},ne=Object.keys(U),ae=0;ae0?Z:XP(D,I,g,k,T,A,F)},checkPoint:function(g,k,T,A,D,I,F){var H=wx(A,D),C=2*H;if(tv(g,k,this.points,I,F,A,D-C,[0,-1],T)||tv(g,k,this.points,I,F,A-C,D,[0,-1],T))return!0;var G=A/2+2*T,U=D/2+2*T,Z=[I-G,F-U,I-G,F,I+G,F,I+G,F-U];return!!(Gd(g,k,Z)||m3(g,k,C,C,I+A/2-H,F+D/2-H,T)||m3(g,k,C,C,I-A/2+H,F+D/2-H,T))}}},iv.registerNodeShapes=function(){var m=this.nodeShapes={},g=this;this.generateEllipse(),this.generatePolygon("triangle",ud(3,0)),this.generateRoundPolygon("round-triangle",ud(3,0)),this.generatePolygon("rectangle",ud(4,0)),m.square=m.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var k=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",k),this.generateRoundPolygon("round-diamond",k)}this.generatePolygon("pentagon",ud(5,0)),this.generateRoundPolygon("round-pentagon",ud(5,0)),this.generatePolygon("hexagon",ud(6,0)),this.generateRoundPolygon("round-hexagon",ud(6,0)),this.generatePolygon("heptagon",ud(7,0)),this.generateRoundPolygon("round-heptagon",ud(7,0)),this.generatePolygon("octagon",ud(8,0)),this.generateRoundPolygon("round-octagon",ud(8,0));var T=new Array(20);{var A=TL(5,0),D=TL(5,Math.PI/5),I=.5*(3-Math.sqrt(5));I*=1.57;for(var F=0;F=g.deqFastCost*Be)break}else if(C){if(Se>=g.deqCost*ne||Se>=g.deqAvgCost*Z)break}else if(Le>=g.deqNoDrawCost*QL)break;var Ke=g.deq(T,_e,ue);if(Ke.length>0)for(var qe=0;qe0&&(g.onDeqd(T,ae),!C&&g.shouldRedraw(T,ae,_e,ue)&&D())},F=g.priority||om;A.beforeRender(I,F(T))}}}},tee=function(){function m(g){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:am;p(this,m),this.idsByKey=new R2,this.keyForId=new R2,this.cachesByLvl=new R2,this.lvls=[],this.getKey=g,this.doesEleInvalidateKey=k}return y(m,[{key:"getIdsFor",value:function(k){k==null&&yc("Can not get id list for null key");var T=this.idsByKey,A=this.idsByKey.get(k);return A||(A=new R5,T.set(k,A)),A}},{key:"addIdForKey",value:function(k,T){k!=null&&this.getIdsFor(k).add(T)}},{key:"deleteIdForKey",value:function(k,T){k!=null&&this.getIdsFor(k).delete(T)}},{key:"getNumberOfIdsForKey",value:function(k){return k==null?0:this.getIdsFor(k).size}},{key:"updateKeyMappingFor",value:function(k){var T=k.id(),A=this.keyForId.get(T),D=this.getKey(k);this.deleteIdForKey(A,T),this.addIdForKey(D,T),this.keyForId.set(T,D)}},{key:"deleteKeyMappingFor",value:function(k){var T=k.id(),A=this.keyForId.get(T);this.deleteIdForKey(A,T),this.keyForId.delete(T)}},{key:"keyHasChangedFor",value:function(k){var T=k.id(),A=this.keyForId.get(T),D=this.getKey(k);return A!==D}},{key:"isInvalid",value:function(k){return this.keyHasChangedFor(k)||this.doesEleInvalidateKey(k)}},{key:"getCachesAt",value:function(k){var T=this.cachesByLvl,A=this.lvls,D=T.get(k);return D||(D=new R2,T.set(k,D),A.push(k)),D}},{key:"getCache",value:function(k,T){return this.getCachesAt(T).get(k)}},{key:"get",value:function(k,T){var A=this.getKey(k),D=this.getCache(A,T);return D!=null&&this.updateKeyMappingFor(k),D}},{key:"getForCachedKey",value:function(k,T){var A=this.keyForId.get(k.id()),D=this.getCache(A,T);return D}},{key:"hasCache",value:function(k,T){return this.getCachesAt(T).has(k)}},{key:"has",value:function(k,T){var A=this.getKey(k);return this.hasCache(A,T)}},{key:"setCache",value:function(k,T,A){A.key=k,this.getCachesAt(T).set(k,A)}},{key:"set",value:function(k,T,A){var D=this.getKey(k);this.setCache(D,T,A),this.updateKeyMappingFor(k)}},{key:"deleteCache",value:function(k,T){this.getCachesAt(T).delete(k)}},{key:"delete",value:function(k,T){var A=this.getKey(k);this.deleteCache(A,T)}},{key:"invalidateKey",value:function(k){var T=this;this.lvls.forEach(function(A){return T.deleteCache(k,A)})}},{key:"invalidate",value:function(k){var T=k.id(),A=this.keyForId.get(T);this.deleteKeyMappingFor(k);var D=this.doesEleInvalidateKey(k);return D&&this.invalidateKey(A),D||this.getNumberOfIdsForKey(A)===0}}]),m}(),cT=25,uT=50,i6=-4,ZL=3,JL=7.99,nee=8,ree=1024,iee=1024,HR=1024,see=.2,aee=.8,oee=10,cee=.15,uee=.1,lee=.9,hee=.9,fee=100,dee=1,s6={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},gee=Vf({getKey:null,doesEleInvalidateKey:am,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:cd,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),Fx=function(g,k){var T=this;T.renderer=g,T.onDequeues=[];var A=gee(k);Oe(T,A),T.lookup=new tee(A.getKey,A.doesEleInvalidateKey),T.setupDequeueing()},Oh=Fx.prototype;Oh.reasons=s6,Oh.getTextureQueue=function(m){var g=this;return g.eleImgCaches=g.eleImgCaches||{},g.eleImgCaches[m]=g.eleImgCaches[m]||[]},Oh.getRetiredTextureQueue=function(m){var g=this,k=g.eleImgCaches.retired=g.eleImgCaches.retired||{},T=k[m]=k[m]||[];return T},Oh.getElementQueue=function(){var m=this,g=m.eleCacheQueue=m.eleCacheQueue||new gx(function(k,T){return T.reqs-k.reqs});return g},Oh.getElementKeyToQueue=function(){var m=this,g=m.eleKeyToCacheQueue=m.eleKeyToCacheQueue||{};return g},Oh.getElement=function(m,g,k,T,A){var D=this,I=this.renderer,F=I.cy.zoom(),H=this.lookup;if(!g||g.w===0||g.h===0||isNaN(g.w)||isNaN(g.h)||!m.visible()||m.removed()||!D.allowEdgeTxrCaching&&m.isEdge()||!D.allowParentTxrCaching&&m.isParent())return null;if(T==null&&(T=Math.ceil(yL(F*k))),T=JL||T>ZL)return null;var C=Math.pow(2,T),G=g.h*C,U=g.w*C,Z=I.eleTextBiggerThanMin(m,C);if(!this.isVisible(m,Z))return null;var ne=H.get(m,T);if(ne&&ne.invalidated&&(ne.invalidated=!1,ne.texture.invalidatedWidth-=ne.width),ne)return ne;var ae;if(G<=cT?ae=cT:G<=uT?ae=uT:ae=Math.ceil(G/uT)*uT,G>HR||U>iee)return null;var ue=D.getTextureQueue(ae),_e=ue[ue.length-2],be=function(){return D.recycleTexture(ae,U)||D.addTexture(ae,U)};_e||(_e=ue[ue.length-1]),_e||(_e=be()),_e.width-_e.usedWidthT;ut--)$e=D.getElement(m,g,k,ut,s6.downscale);ot()}else return D.queueElement(m,qe.level-1),qe;else{var Je;if(!Le&&!Be&&!Ke)for(var Ct=T-1;Ct>=i6;Ct--){var lt=H.get(m,Ct);if(lt){Je=lt;break}}if(Se(Je))return D.queueElement(m,T),Je;_e.context.translate(_e.usedWidth,0),_e.context.scale(C,C),this.drawElement(_e.context,m,g,Z,!1),_e.context.scale(1/C,1/C),_e.context.translate(-_e.usedWidth,0)}return ne={x:_e.usedWidth,texture:_e,level:T,scale:C,width:U,height:G,scaledLabelShown:Z},_e.usedWidth+=Math.ceil(U+nee),_e.eleCaches.push(ne),H.set(m,T,ne),D.checkTextureFullness(_e),ne},Oh.invalidateElements=function(m){for(var g=0;g=see*m.width&&this.retireTexture(m)},Oh.checkTextureFullness=function(m){var g=this,k=g.getTextureQueue(m.height);m.usedWidth/m.width>aee&&m.fullnessChecks>=oee?cm(k,m):m.fullnessChecks++},Oh.retireTexture=function(m){var g=this,k=m.height,T=g.getTextureQueue(k),A=this.lookup;cm(T,m),m.retired=!0;for(var D=m.eleCaches,I=0;I=g)return I.retired=!1,I.usedWidth=0,I.invalidatedWidth=0,I.fullnessChecks=0,wL(I.eleCaches),I.context.setTransform(1,0,0,1,0,0),I.context.clearRect(0,0,I.width,I.height),cm(A,I),T.push(I),I}},Oh.queueElement=function(m,g){var k=this,T=k.getElementQueue(),A=k.getElementKeyToQueue(),D=this.getKey(m),I=A[D];if(I)I.level=Math.max(I.level,g),I.eles.merge(m),I.reqs++,T.updateItem(I);else{var F={eles:m.spawn().merge(m),level:g,reqs:1,key:D};T.push(F),A[D]=F}},Oh.dequeue=function(m){for(var g=this,k=g.getElementQueue(),T=g.getElementKeyToQueue(),A=[],D=g.lookup,I=0;I0;I++){var F=k.pop(),H=F.key,C=F.eles[0],G=D.hasCache(C,F.level);if(T[H]=null,G)continue;A.push(F);var U=g.getBoundingBox(C);g.getElement(C,U,m,F.level,s6.dequeue)}return A},Oh.removeFromQueue=function(m){var g=this,k=g.getElementQueue(),T=g.getElementKeyToQueue(),A=this.getKey(m),D=T[A];D!=null&&(D.eles.length===1?(D.reqs=dp,k.updateItem(D),k.pop(),T[A]=null):D.eles.unmerge(m))},Oh.onDequeue=function(m){this.onDequeues.push(m)},Oh.offDequeue=function(m){cm(this.onDequeues,m)},Oh.setupDequeueing=oT.setupDequeueing({deqRedrawThreshold:fee,deqCost:cee,deqAvgCost:uee,deqNoDrawCost:lee,deqFastCost:hee,deq:function(g,k,T){return g.dequeue(k,T)},onDeqd:function(g,k){for(var T=0;T=lT||k>jx)return null}T.validateLayersElesOrdering(k,m);var H=T.layersByLevel,C=Math.pow(2,k),G=H[k]=H[k]||[],U,Z=T.levelIsComplete(k,m),ne,ae=function(){var ot=function(un){if(T.validateLayersElesOrdering(un,m),T.levelIsComplete(un,m))return ne=H[un],!0},ut=function(un){if(!ne)for(var Rt=k+un;a6<=Rt&&Rt<=jx&&!ot(Rt);Rt+=un);};ut(1),ut(-1);for(var Je=G.length-1;Je>=0;Je--){var Ct=G[Je];Ct.invalid&&cm(G,Ct)}};if(!Z)ae();else return G;var ue=function(){if(!U){U=zd();for(var ot=0;otGge)return null;var Ct=T.makeLayer(U,k);if(ut!=null){var lt=G.indexOf(ut)+1;G.splice(lt,0,Ct)}else(ot.insert===void 0||ot.insert)&&G.unshift(Ct);return Ct};if(T.skipping&&!F)return null;for(var be=null,Se=m.length/pee,Le=!F,Be=0;Be=Se||!YP(be.bb,Ke.boundingBox()))&&(be=_e({insert:!0,after:be}),!be))return null;ne||Le?T.queueLayer(be,Ke):T.drawEleInLayer(be,Ke,k,g),be.eles.push(Ke),Re[k]=be}return ne||(Le?null:G)},x1.getEleLevelForLayerLevel=function(m,g){return m},x1.drawEleInLayer=function(m,g,k,T){var A=this,D=this.renderer,I=m.context,F=g.boundingBox();F.w===0||F.h===0||!g.visible()||(k=A.getEleLevelForLayerLevel(k,T),D.setImgSmoothing(I,!1),D.drawCachedElement(I,g,null,null,k,qge),D.setImgSmoothing(I,!0))},x1.levelIsComplete=function(m,g){var k=this,T=k.layersByLevel[m];if(!T||T.length===0)return!1;for(var A=0,D=0;D0||I.invalid)return!1;A+=I.eles.length}return A===g.length},x1.validateLayersElesOrdering=function(m,g){var k=this.layersByLevel[m];if(k)for(var T=0;T0){g=!0;break}}return g},x1.invalidateElements=function(m){var g=this;m.length!==0&&(g.lastInvalidationTime=pi(),!(m.length===0||!g.haveLayers())&&g.updateElementsInLayers(m,function(T,A,D){g.invalidateLayer(T)}))},x1.invalidateLayer=function(m){if(this.lastInvalidationTime=pi(),!m.invalid){var g=m.level,k=m.eles,T=this.layersByLevel[g];cm(T,m),m.elesQueue=[],m.invalid=!0,m.replacement&&(m.replacement.invalid=!0);for(var A=0;A3&&arguments[3]!==void 0?arguments[3]:!0,A=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,D=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,I=this,F=g._private.rscratch;if(!(D&&!g.visible())&&!(F.badLine||F.allpts==null||isNaN(F.allpts[0]))){var H;k&&(H=k,m.translate(-H.x1,-H.y1));var C=D?g.pstyle("opacity").value:1,G=D?g.pstyle("line-opacity").value:1,U=g.pstyle("curve-style").value,Z=g.pstyle("line-style").value,ne=g.pstyle("width").pfValue,ae=g.pstyle("line-cap").value,ue=C*G,_e=C*G,be=function(){var Je=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ue;U==="straight-triangle"?(I.eleStrokeStyle(m,g,Je),I.drawEdgeTrianglePath(g,m,F.allpts)):(m.lineWidth=ne,m.lineCap=ae,I.eleStrokeStyle(m,g,Je),I.drawEdgePath(g,m,F.allpts,Z),m.lineCap="butt")},Se=function(){A&&I.drawEdgeOverlay(m,g)},Le=function(){A&&I.drawEdgeUnderlay(m,g)},Be=function(){var Je=arguments.length>0&&arguments[0]!==void 0?arguments[0]:_e;I.drawArrowheads(m,g,Je)},Ke=function(){I.drawElementText(m,g,null,T)};m.lineJoin="round";var qe=g.pstyle("ghost").value==="yes";if(qe){var Re=g.pstyle("ghost-offset-x").pfValue,Ze=g.pstyle("ghost-offset-y").pfValue,$e=g.pstyle("ghost-opacity").value,ot=ue*$e;m.translate(Re,Ze),be(ot),Be(ot),m.translate(-Re,-Ze)}Le(),be(),Be(),Se(),Ke(),k&&m.translate(H.x1,H.y1)}};var kee=function(g){if(!["overlay","underlay"].includes(g))throw new Error("Invalid state");return function(k,T){if(T.visible()){var A=T.pstyle("".concat(g,"-opacity")).value;if(A!==0){var D=this,I=D.usePaths(),F=T._private.rscratch,H=T.pstyle("".concat(g,"-padding")).pfValue,C=2*H,G=T.pstyle("".concat(g,"-color")).value;k.lineWidth=C,F.edgeType==="self"&&!I?k.lineCap="butt":k.lineCap="round",D.colorStrokeStyle(k,G[0],G[1],G[2],A),D.drawEdgePath(T,k,F.allpts,"solid")}}}};av.drawEdgeOverlay=kee("overlay"),av.drawEdgeUnderlay=kee("underlay"),av.drawEdgePath=function(m,g,k,T){var A=m._private.rscratch,D=g,I,F=!1,H=this.usePaths(),C=m.pstyle("line-dash-pattern").pfValue,G=m.pstyle("line-dash-offset").pfValue;if(H){var U=k.join("$"),Z=A.pathCacheKey&&A.pathCacheKey===U;Z?(I=g=A.pathCache,F=!0):(I=g=new Path2D,A.pathCacheKey=U,A.pathCache=I)}if(D.setLineDash)switch(T){case"dotted":D.setLineDash([1,1]);break;case"dashed":D.setLineDash(C),D.lineDashOffset=G;break;case"solid":D.setLineDash([]);break}if(!F&&!A.badLine)switch(g.beginPath&&g.beginPath(),g.moveTo(k[0],k[1]),A.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var ne=2;ne+35&&arguments[5]!==void 0?arguments[5]:!0,I=this;if(T==null){if(D&&!I.eleTextBiggerThanMin(g))return}else if(T===!1)return;if(g.isNode()){var F=g.pstyle("label");if(!F||!F.value)return;var H=I.getLabelJustification(g);m.textAlign=H,m.textBaseline="bottom"}else{var C=g.element()._private.rscratch.badLine,G=g.pstyle("label"),U=g.pstyle("source-label"),Z=g.pstyle("target-label");if(C||(!G||!G.value)&&(!U||!U.value)&&(!Z||!Z.value))return;m.textAlign="center",m.textBaseline="bottom"}var ne=!k,ae;k&&(ae=k,m.translate(-ae.x1,-ae.y1)),A==null?(I.drawText(m,g,null,ne,D),g.isEdge()&&(I.drawText(m,g,"source",ne,D),I.drawText(m,g,"target",ne,D))):I.drawText(m,g,A,ne,D),k&&m.translate(ae.x1,ae.y1)},o6.getFontCache=function(m){var g;this.fontCaches=this.fontCaches||[];for(var k=0;k2&&arguments[2]!==void 0?arguments[2]:!0,T=g.pstyle("font-style").strValue,A=g.pstyle("font-size").pfValue+"px",D=g.pstyle("font-family").strValue,I=g.pstyle("font-weight").strValue,F=k?g.effectiveOpacity()*g.pstyle("text-opacity").value:1,H=g.pstyle("text-outline-opacity").value*F,C=g.pstyle("color").value,G=g.pstyle("text-outline-color").value;m.font=T+" "+I+" "+A+" "+D,m.lineJoin="round",this.colorFillStyle(m,C[0],C[1],C[2],F),this.colorStrokeStyle(m,G[0],G[1],G[2],H)};function Xge(m,g,k,T,A){var D=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5;m.beginPath(),m.moveTo(g+D,k),m.lineTo(g+T-D,k),m.quadraticCurveTo(g+T,k,g+T,k+D),m.lineTo(g+T,k+A-D),m.quadraticCurveTo(g+T,k+A,g+T-D,k+A),m.lineTo(g+D,k+A),m.quadraticCurveTo(g,k+A,g,k+A-D),m.lineTo(g,k+D),m.quadraticCurveTo(g,k,g+D,k),m.closePath(),m.fill()}o6.getTextAngle=function(m,g){var k,T=m._private,A=T.rscratch,D=g?g+"-":"",I=m.pstyle(D+"text-rotation"),F=gp(A,"labelAngle",g);return I.strValue==="autorotate"?k=m.isEdge()?F:0:I.strValue==="none"?k=0:k=I.pfValue,k},o6.drawText=function(m,g,k){var T=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,A=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,D=g._private,I=D.rscratch,F=A?g.effectiveOpacity():1;if(!(A&&(F===0||g.pstyle("text-opacity").value===0))){k==="main"&&(k=null);var H=gp(I,"labelX",k),C=gp(I,"labelY",k),G,U,Z=this.getLabelText(g,k);if(Z!=null&&Z!==""&&!isNaN(H)&&!isNaN(C)){this.setupTextStyle(m,g,A);var ne=k?k+"-":"",ae=gp(I,"labelWidth",k),ue=gp(I,"labelHeight",k),_e=g.pstyle(ne+"text-margin-x").pfValue,be=g.pstyle(ne+"text-margin-y").pfValue,Se=g.isEdge(),Le=g.pstyle("text-halign").value,Be=g.pstyle("text-valign").value;Se&&(Le="center",Be="center"),H+=_e,C+=be;var Ke;switch(T?Ke=this.getTextAngle(g,k):Ke=0,Ke!==0&&(G=H,U=C,m.translate(G,U),m.rotate(Ke),H=0,C=0),Be){case"top":break;case"center":C+=ue/2;break;case"bottom":C+=ue;break}var qe=g.pstyle("text-background-opacity").value,Re=g.pstyle("text-border-opacity").value,Ze=g.pstyle("text-border-width").pfValue,$e=g.pstyle("text-background-padding").pfValue;if(qe>0||Ze>0&&Re>0){var ot=H-$e;switch(Le){case"left":ot-=ae;break;case"center":ot-=ae/2;break}var ut=C-ue-$e,Je=ae+2*$e,Ct=ue+2*$e;if(qe>0){var lt=m.fillStyle,un=g.pstyle("text-background-color").value;m.fillStyle="rgba("+un[0]+","+un[1]+","+un[2]+","+qe*F+")";var Rt=g.pstyle("text-background-shape").strValue;Rt.indexOf("round")===0?Xge(m,ot,ut,Je,Ct,2):m.fillRect(ot,ut,Je,Ct),m.fillStyle=lt}if(Ze>0&&Re>0){var $t=m.strokeStyle,bn=m.lineWidth,Cn=g.pstyle("text-border-color").value,Kn=g.pstyle("text-border-style").value;if(m.strokeStyle="rgba("+Cn[0]+","+Cn[1]+","+Cn[2]+","+Re*F+")",m.lineWidth=Ze,m.setLineDash)switch(Kn){case"dotted":m.setLineDash([1,1]);break;case"dashed":m.setLineDash([4,2]);break;case"double":m.lineWidth=Ze/4,m.setLineDash([]);break;case"solid":m.setLineDash([]);break}if(m.strokeRect(ot,ut,Je,Ct),Kn==="double"){var kn=Ze/2;m.strokeRect(ot+kn,ut+kn,Je-kn*2,Ct-kn*2)}m.setLineDash&&m.setLineDash([]),m.lineWidth=bn,m.strokeStyle=$t}}var Wn=2*g.pstyle("text-outline-width").pfValue;if(Wn>0&&(m.lineWidth=Wn),g.pstyle("text-wrap").value==="wrap"){var sr=gp(I,"labelWrapCachedLines",k),yr=gp(I,"labelLineHeight",k),hr=ae/2,nr=this.getLabelJustification(g);switch(nr==="auto"||(Le==="left"?nr==="left"?H+=-ae:nr==="center"&&(H+=-hr):Le==="center"?nr==="left"?H+=-hr:nr==="right"&&(H+=hr):Le==="right"&&(nr==="center"?H+=hr:nr==="right"&&(H+=ae))),Be){case"top":C-=(sr.length-1)*yr;break;case"center":case"bottom":C-=(sr.length-1)*yr;break}for(var fn=0;fn0&&m.strokeText(sr[fn],H,C),m.fillText(sr[fn],H,C),C+=yr}else Wn>0&&m.strokeText(Z,H,C),m.fillText(Z,H,C);Ke!==0&&(m.rotate(-Ke),m.translate(-G,-U))}}};var Hx={};Hx.drawNode=function(m,g,k){var T=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,A=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,D=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,I=this,F,H,C=g._private,G=C.rscratch,U=g.position();if(!(!te(U.x)||!te(U.y))&&!(D&&!g.visible())){var Z=D?g.effectiveOpacity():1,ne=I.usePaths(),ae,ue=!1,_e=g.padding();F=g.width()+2*_e,H=g.height()+2*_e;var be;k&&(be=k,m.translate(-be.x1,-be.y1));for(var Se=g.pstyle("background-image"),Le=Se.value,Be=new Array(Le.length),Ke=new Array(Le.length),qe=0,Re=0;Re0&&arguments[0]!==void 0?arguments[0]:Ct;I.eleFillStyle(m,g,Di)},bn=function(){var Di=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Rt;I.colorStrokeStyle(m,lt[0],lt[1],lt[2],Di)},Cn=g.pstyle("shape").strValue,Kn=g.pstyle("shape-polygon-points").pfValue;if(ne){m.translate(U.x,U.y);var kn=I.nodePathCache=I.nodePathCache||[],Wn=P5(Cn==="polygon"?Cn+","+Kn.join(","):Cn,""+H,""+F),sr=kn[Wn];sr!=null?(ae=sr,ue=!0,G.pathCache=ae):(ae=new Path2D,kn[Wn]=G.pathCache=ae)}var yr=function(){if(!ue){var Di=U;ne&&(Di={x:0,y:0}),I.nodeShapes[I.getNodeShape(g)].draw(ae||m,Di.x,Di.y,F,H)}ne?m.fill(ae):m.fill()},hr=function(){for(var Di=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Z,es=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,eo=C.backgrounding,sa=0,Ks=0;Ks0&&arguments[0]!==void 0?arguments[0]:!1,es=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Z;I.hasPie(g)&&(I.drawPie(m,g,es),Di&&(ne||I.nodeShapes[I.getNodeShape(g)].draw(m,U.x,U.y,F,H)))},fn=function(){var Di=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Z,es=(ut>0?ut:-ut)*Di,eo=ut>0?0:255;ut!==0&&(I.colorFillStyle(m,eo,eo,eo,es),ne?m.fill(ae):m.fill())},vr=function(){if(Je>0){if(m.lineWidth=Je,m.lineCap="butt",m.setLineDash)switch(un){case"dotted":m.setLineDash([1,1]);break;case"dashed":m.setLineDash([4,2]);break;case"solid":case"double":m.setLineDash([]);break}if(ne?m.stroke(ae):m.stroke(),un==="double"){m.lineWidth=Je/3;var Di=m.globalCompositeOperation;m.globalCompositeOperation="destination-out",ne?m.stroke(ae):m.stroke(),m.globalCompositeOperation=Di}m.setLineDash&&m.setLineDash([])}},gr=function(){A&&I.drawNodeOverlay(m,g,U,F,H)},ni=function(){A&&I.drawNodeUnderlay(m,g,U,F,H)},Ti=function(){I.drawElementText(m,g,null,T)},ia=g.pstyle("ghost").value==="yes";if(ia){var Ba=g.pstyle("ghost-offset-x").pfValue,Li=g.pstyle("ghost-offset-y").pfValue,wi=g.pstyle("ghost-opacity").value,Ts=wi*Z;m.translate(Ba,Li),$t(wi*Ct),yr(),hr(Ts,!0),bn(wi*Rt),vr(),nr(ut!==0||Je!==0),hr(Ts,!1),fn(Ts),m.translate(-Ba,-Li)}ne&&m.translate(-U.x,-U.y),ni(),ne&&m.translate(U.x,U.y),$t(),yr(),hr(Z,!0),bn(),vr(),nr(ut!==0||Je!==0),hr(Z,!1),fn(),ne&&m.translate(-U.x,-U.y),Ti(),gr(),k&&m.translate(be.x1,be.y1)}};var xee=function(g){if(!["overlay","underlay"].includes(g))throw new Error("Invalid state");return function(k,T,A,D,I){var F=this;if(T.visible()){var H=T.pstyle("".concat(g,"-padding")).pfValue,C=T.pstyle("".concat(g,"-opacity")).value,G=T.pstyle("".concat(g,"-color")).value,U=T.pstyle("".concat(g,"-shape")).value;if(C>0){if(A=A||T.position(),D==null||I==null){var Z=T.padding();D=T.width()+2*Z,I=T.height()+2*Z}F.colorFillStyle(k,G[0],G[1],G[2],C),F.nodeShapes[U].draw(k,A.x,A.y,D+H*2,I+H*2),k.fill()}}}};Hx.drawNodeOverlay=xee("overlay"),Hx.drawNodeUnderlay=xee("underlay"),Hx.hasPie=function(m){return m=m[0],m._private.hasPie},Hx.drawPie=function(m,g,k,T){g=g[0],T=T||g.position();var A=g.cy().style(),D=g.pstyle("pie-size"),I=T.x,F=T.y,H=g.width(),C=g.height(),G=Math.min(H,C)/2,U=0,Z=this.usePaths();Z&&(I=0,F=0),D.units==="%"?G=G*D.pfValue:D.pfValue!==void 0&&(G=D.pfValue/2);for(var ne=1;ne<=A.pieBackgroundN;ne++){var ae=g.pstyle("pie-"+ne+"-background-size").value,ue=g.pstyle("pie-"+ne+"-background-color").value,_e=g.pstyle("pie-"+ne+"-background-opacity").value*k,be=ae/100;be+U>1&&(be=1-U);var Se=1.5*Math.PI+2*Math.PI*U,Le=2*Math.PI*be,Be=Se+Le;ae===0||U>=1||U+be>1||(m.beginPath(),m.moveTo(I,F),m.arc(I,F,G,Se,Be),m.closePath(),this.colorFillStyle(m,ue[0],ue[1],ue[2],_e),m.fill(),U+=be)}};var fg={},Qge=100;fg.getPixelRatio=function(){var m=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var g=m.backingStorePixelRatio||m.webkitBackingStorePixelRatio||m.mozBackingStorePixelRatio||m.msBackingStorePixelRatio||m.oBackingStorePixelRatio||m.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/g},fg.paintCache=function(m){for(var g=this.paintCaches=this.paintCaches||[],k=!0,T,A=0;AI.minMbLowQualFrames&&(I.motionBlurPxRatio=I.mbPxRBlurry)),I.clearingMotionBlur&&(I.motionBlurPxRatio=1),I.textureDrawLastFrame&&!U&&(G[I.NODE]=!0,G[I.SELECT_BOX]=!0);var Se=H.style(),Le=H.zoom(),Be=A!==void 0?A:Le,Ke=H.pan(),qe={x:Ke.x,y:Ke.y},Re={zoom:Le,pan:{x:Ke.x,y:Ke.y}},Ze=I.prevViewport,$e=Ze===void 0||Re.zoom!==Ze.zoom||Re.pan.x!==Ze.pan.x||Re.pan.y!==Ze.pan.y;!$e&&!(ue&&!ae)&&(I.motionBlurPxRatio=1),D&&(qe=D),Be*=F,qe.x*=F,qe.y*=F;var ot=I.getCachedZSortedEles();function ut(Li,wi,Ts,Yi,Di){var es=Li.globalCompositeOperation;Li.globalCompositeOperation="destination-out",I.colorFillStyle(Li,255,255,255,I.motionBlurTransparency),Li.fillRect(wi,Ts,Yi,Di),Li.globalCompositeOperation=es}function Je(Li,wi){var Ts,Yi,Di,es;!I.clearingMotionBlur&&(Li===C.bufferContexts[I.MOTIONBLUR_BUFFER_NODE]||Li===C.bufferContexts[I.MOTIONBLUR_BUFFER_DRAG])?(Ts={x:Ke.x*ne,y:Ke.y*ne},Yi=Le*ne,Di=I.canvasWidth*ne,es=I.canvasHeight*ne):(Ts=qe,Yi=Be,Di=I.canvasWidth,es=I.canvasHeight),Li.setTransform(1,0,0,1,0,0),wi==="motionBlur"?ut(Li,0,0,Di,es):!g&&(wi===void 0||wi)&&Li.clearRect(0,0,Di,es),k||(Li.translate(Ts.x,Ts.y),Li.scale(Yi,Yi)),D&&Li.translate(D.x,D.y),A&&Li.scale(A,A)}if(U||(I.textureDrawLastFrame=!1),U){if(I.textureDrawLastFrame=!0,!I.textureCache){I.textureCache={},I.textureCache.bb=H.mutableElements().boundingBox(),I.textureCache.texture=I.data.bufferCanvases[I.TEXTURE_BUFFER];var Ct=I.data.bufferContexts[I.TEXTURE_BUFFER];Ct.setTransform(1,0,0,1,0,0),Ct.clearRect(0,0,I.canvasWidth*I.textureMult,I.canvasHeight*I.textureMult),I.render({forcedContext:Ct,drawOnlyNodeLayer:!0,forcedPxRatio:F*I.textureMult});var Re=I.textureCache.viewport={zoom:H.zoom(),pan:H.pan(),width:I.canvasWidth,height:I.canvasHeight};Re.mpan={x:(0-Re.pan.x)/Re.zoom,y:(0-Re.pan.y)/Re.zoom}}G[I.DRAG]=!1,G[I.NODE]=!1;var lt=C.contexts[I.NODE],un=I.textureCache.texture,Re=I.textureCache.viewport;lt.setTransform(1,0,0,1,0,0),Z?ut(lt,0,0,Re.width,Re.height):lt.clearRect(0,0,Re.width,Re.height);var Rt=Se.core("outside-texture-bg-color").value,$t=Se.core("outside-texture-bg-opacity").value;I.colorFillStyle(lt,Rt[0],Rt[1],Rt[2],$t),lt.fillRect(0,0,Re.width,Re.height);var Le=H.zoom();Je(lt,!1),lt.clearRect(Re.mpan.x,Re.mpan.y,Re.width/Re.zoom/F,Re.height/Re.zoom/F),lt.drawImage(un,Re.mpan.x,Re.mpan.y,Re.width/Re.zoom/F,Re.height/Re.zoom/F)}else I.textureOnViewport&&!g&&(I.textureCache=null);var bn=H.extent(),Cn=I.pinching||I.hoverData.dragging||I.swipePanning||I.data.wheelZooming||I.hoverData.draggingEles||I.cy.animated(),Kn=I.hideEdgesOnViewport&&Cn,kn=[];if(kn[I.NODE]=!G[I.NODE]&&Z&&!I.clearedForMotionBlur[I.NODE]||I.clearingMotionBlur,kn[I.NODE]&&(I.clearedForMotionBlur[I.NODE]=!0),kn[I.DRAG]=!G[I.DRAG]&&Z&&!I.clearedForMotionBlur[I.DRAG]||I.clearingMotionBlur,kn[I.DRAG]&&(I.clearedForMotionBlur[I.DRAG]=!0),G[I.NODE]||k||T||kn[I.NODE]){var Wn=Z&&!kn[I.NODE]&&ne!==1,lt=g||(Wn?I.data.bufferContexts[I.MOTIONBLUR_BUFFER_NODE]:C.contexts[I.NODE]),sr=Z&&!Wn?"motionBlur":void 0;Je(lt,sr),Kn?I.drawCachedNodes(lt,ot.nondrag,F,bn):I.drawLayeredElements(lt,ot.nondrag,F,bn),I.debug&&I.drawDebugPoints(lt,ot.nondrag),!k&&!Z&&(G[I.NODE]=!1)}if(!T&&(G[I.DRAG]||k||kn[I.DRAG])){var Wn=Z&&!kn[I.DRAG]&&ne!==1,lt=g||(Wn?I.data.bufferContexts[I.MOTIONBLUR_BUFFER_DRAG]:C.contexts[I.DRAG]);Je(lt,Z&&!Wn?"motionBlur":void 0),Kn?I.drawCachedNodes(lt,ot.drag,F,bn):I.drawCachedElements(lt,ot.drag,F,bn),I.debug&&I.drawDebugPoints(lt,ot.drag),!k&&!Z&&(G[I.DRAG]=!1)}if(I.showFps||!T&&G[I.SELECT_BOX]&&!k){var lt=g||C.contexts[I.SELECT_BOX];if(Je(lt),I.selection[4]==1&&(I.hoverData.selecting||I.touchData.selecting)){var Le=I.cy.zoom(),yr=Se.core("selection-box-border-width").value/Le;lt.lineWidth=yr,lt.fillStyle="rgba("+Se.core("selection-box-color").value[0]+","+Se.core("selection-box-color").value[1]+","+Se.core("selection-box-color").value[2]+","+Se.core("selection-box-opacity").value+")",lt.fillRect(I.selection[0],I.selection[1],I.selection[2]-I.selection[0],I.selection[3]-I.selection[1]),yr>0&&(lt.strokeStyle="rgba("+Se.core("selection-box-border-color").value[0]+","+Se.core("selection-box-border-color").value[1]+","+Se.core("selection-box-border-color").value[2]+","+Se.core("selection-box-opacity").value+")",lt.strokeRect(I.selection[0],I.selection[1],I.selection[2]-I.selection[0],I.selection[3]-I.selection[1]))}if(C.bgActivePosistion&&!I.hoverData.selecting){var Le=I.cy.zoom(),hr=C.bgActivePosistion;lt.fillStyle="rgba("+Se.core("active-bg-color").value[0]+","+Se.core("active-bg-color").value[1]+","+Se.core("active-bg-color").value[2]+","+Se.core("active-bg-opacity").value+")",lt.beginPath(),lt.arc(hr.x,hr.y,Se.core("active-bg-size").pfValue/Le,0,2*Math.PI),lt.fill()}var nr=I.lastRedrawTime;if(I.showFps&&nr){nr=Math.round(nr);var fn=Math.round(1e3/nr);lt.setTransform(1,0,0,1,0,0),lt.fillStyle="rgba(255, 0, 0, 0.75)",lt.strokeStyle="rgba(255, 0, 0, 0.75)",lt.lineWidth=1,lt.fillText("1 frame = "+nr+" ms = "+fn+" fps",0,20);var vr=60;lt.strokeRect(0,30,250,20),lt.fillRect(0,30,250*Math.min(fn/vr,1),20)}k||(G[I.SELECT_BOX]=!1)}if(Z&&ne!==1){var gr=C.contexts[I.NODE],ni=I.data.bufferCanvases[I.MOTIONBLUR_BUFFER_NODE],Ti=C.contexts[I.DRAG],ia=I.data.bufferCanvases[I.MOTIONBLUR_BUFFER_DRAG],Ba=function(wi,Ts,Yi){wi.setTransform(1,0,0,1,0,0),Yi||!be?wi.clearRect(0,0,I.canvasWidth,I.canvasHeight):ut(wi,0,0,I.canvasWidth,I.canvasHeight);var Di=ne;wi.drawImage(Ts,0,0,I.canvasWidth*Di,I.canvasHeight*Di,0,0,I.canvasWidth,I.canvasHeight)};(G[I.NODE]||kn[I.NODE])&&(Ba(gr,ni,kn[I.NODE]),G[I.NODE]=!1),(G[I.DRAG]||kn[I.DRAG])&&(Ba(Ti,ia,kn[I.DRAG]),G[I.DRAG]=!1)}I.prevViewport=Re,I.clearingMotionBlur&&(I.clearingMotionBlur=!1,I.motionBlurCleared=!0,I.motionBlur=!0),Z&&(I.motionBlurTimeout=setTimeout(function(){I.motionBlurTimeout=null,I.clearedForMotionBlur[I.NODE]=!1,I.clearedForMotionBlur[I.DRAG]=!1,I.motionBlur=!1,I.clearingMotionBlur=!U,I.mbFrames=0,G[I.NODE]=!0,G[I.DRAG]=!0,I.redraw()},Qge)),g||H.emit("render")};var _3={};_3.drawPolygonPath=function(m,g,k,T,A,D){var I=T/2,F=A/2;m.beginPath&&m.beginPath(),m.moveTo(g+I*D[0],k+F*D[1]);for(var H=1;H0&&I>0){ne.clearRect(0,0,D,I),ne.globalCompositeOperation="source-over";var ae=this.getCachedZSortedEles();if(m.full)ne.translate(-T.x1*C,-T.y1*C),ne.scale(C,C),this.drawElements(ne,ae),ne.scale(1/C,1/C),ne.translate(T.x1*C,T.y1*C);else{var ue=g.pan(),_e={x:ue.x*C,y:ue.y*C};C*=g.zoom(),ne.translate(_e.x,_e.y),ne.scale(C,C),this.drawElements(ne,ae),ne.scale(1/C,1/C),ne.translate(-_e.x,-_e.y)}m.bg&&(ne.globalCompositeOperation="destination-over",ne.fillStyle=m.bg,ne.rect(0,0,D,I),ne.fill())}return Z};function Zge(m,g){for(var k=atob(m),T=new ArrayBuffer(k.length),A=new Uint8Array(T),D=0;D"u"?"undefined":f(OffscreenCanvas))!=="undefined"?k=new OffscreenCanvas(m,g):(k=document.createElement("canvas"),k.width=m,k.height=g),k},[T0,sv,av,fT,o6,Hx,fg,_3,dT,Aee].forEach(function(m){Oe(Ac,m)});var c6=[{name:"null",impl:DR},{name:"base",impl:XL},{name:"canvas",impl:Jge}],dg=[{type:"layout",extensions:ZJ},{type:"renderer",extensions:c6}],vm={},nM={};function E1(m,g,k){var T=k,A=function(Ze){Vo("Can not register `"+g+"` for `"+m+"` since `"+Ze+"` already exists in the prototype and can not be overridden")};if(m==="core"){if(Ox.prototype[g])return A(g);Ox.prototype[g]=k}else if(m==="collection"){if(Wf.prototype[g])return A(g);Wf.prototype[g]=k}else if(m==="layout"){for(var D=function(Ze){this.options=Ze,k.call(this,Ze),de(this._private)||(this._private={}),this._private.cy=Ze.cy,this._private.listeners=[],this.createEmitter()},I=D.prototype=Object.create(k.prototype),F=[],H=0;HV&&(this.rect.x-=(this.labelWidth-V)/2,this.setWidth(this.labelWidth)),this.labelHeight>Q&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-Q)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-Q),this.setHeight(this.labelHeight))}}},R.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==b.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},R.prototype.transform=function($){var V=this.rect.x;V>S.WORLD_BOUNDARY?V=S.WORLD_BOUNDARY:V<-S.WORLD_BOUNDARY&&(V=-S.WORLD_BOUNDARY);var Q=this.rect.y;Q>S.WORLD_BOUNDARY?Q=S.WORLD_BOUNDARY:Q<-S.WORLD_BOUNDARY&&(Q=-S.WORLD_BOUNDARY);var oe=new B(V,Q),ce=$.inverseTransformPoint(oe);this.setLocation(ce.x,ce.y)},R.prototype.getLeft=function(){return this.rect.x},R.prototype.getRight=function(){return this.rect.x+this.rect.width},R.prototype.getTop=function(){return this.rect.y},R.prototype.getBottom=function(){return this.rect.y+this.rect.height},R.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},f.exports=R},function(f,p,w){function y(b,E){b==null&&E==null?(this.x=0,this.y=0):(this.x=b,this.y=E)}y.prototype.getX=function(){return this.x},y.prototype.getY=function(){return this.y},y.prototype.setX=function(b){this.x=b},y.prototype.setY=function(b){this.y=b},y.prototype.getDifference=function(b){return new DimensionD(this.x-b.x,this.y-b.y)},y.prototype.getCopy=function(){return new y(this.x,this.y)},y.prototype.translate=function(b){return this.x+=b.width,this.y+=b.height,this},f.exports=y},function(f,p,w){var y=w(2),b=w(10),E=w(0),S=w(6),N=w(3),B=w(1),R=w(13),j=w(12),$=w(11);function V(oe,ce,se){y.call(this,se),this.estimatedSize=b.MIN_VALUE,this.margin=E.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=oe,ce!=null&&ce instanceof S?this.graphManager=ce:ce!=null&&ce instanceof Layout&&(this.graphManager=ce.graphManager)}V.prototype=Object.create(y.prototype);for(var Q in y)V[Q]=y[Q];V.prototype.getNodes=function(){return this.nodes},V.prototype.getEdges=function(){return this.edges},V.prototype.getGraphManager=function(){return this.graphManager},V.prototype.getParent=function(){return this.parent},V.prototype.getLeft=function(){return this.left},V.prototype.getRight=function(){return this.right},V.prototype.getTop=function(){return this.top},V.prototype.getBottom=function(){return this.bottom},V.prototype.isConnected=function(){return this.isConnected},V.prototype.add=function(oe,ce,se){if(ce==null&&se==null){var ge=oe;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(ge)>-1)throw"Node already in graph!";return ge.owner=this,this.getNodes().push(ge),ge}else{var ye=oe;if(!(this.getNodes().indexOf(ce)>-1&&this.getNodes().indexOf(se)>-1))throw"Source or target not in graph!";if(!(ce.owner==se.owner&&ce.owner==this))throw"Both owners must be this graph!";return ce.owner!=se.owner?null:(ye.source=ce,ye.target=se,ye.isInterGraph=!1,this.getEdges().push(ye),ce.edges.push(ye),se!=ce&&se.edges.push(ye),ye)}},V.prototype.remove=function(oe){var ce=oe;if(oe instanceof N){if(ce==null)throw"Node is null!";if(!(ce.owner!=null&&ce.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var se=ce.edges.slice(),ge,ye=se.length,ke=0;ke-1&&ve>-1))throw"Source and/or target doesn't know this edge!";ge.source.edges.splice(de,1),ge.target!=ge.source&&ge.target.edges.splice(ve,1);var Ae=ge.source.owner.getEdges().indexOf(ge);if(Ae==-1)throw"Not in owner's edge list!";ge.source.owner.getEdges().splice(Ae,1)}},V.prototype.updateLeftTop=function(){for(var oe=b.MAX_VALUE,ce=b.MAX_VALUE,se,ge,ye,ke=this.getNodes(),Ae=ke.length,de=0;dese&&(oe=se),ce>ge&&(ce=ge)}return oe==b.MAX_VALUE?null:(ke[0].getParent().paddingLeft!=null?ye=ke[0].getParent().paddingLeft:ye=this.margin,this.left=ce-ye,this.top=oe-ye,new j(this.left,this.top))},V.prototype.updateBounds=function(oe){for(var ce=b.MAX_VALUE,se=-b.MAX_VALUE,ge=b.MAX_VALUE,ye=-b.MAX_VALUE,ke,Ae,de,ve,te,xe=this.nodes,De=xe.length,he=0;heke&&(ce=ke),sede&&(ge=de),yeke&&(ce=ke),sede&&(ge=de),ye=this.nodes.length){var De=0;se.forEach(function(he){he.owner==oe&&De++}),De==this.nodes.length&&(this.isConnected=!0)}},f.exports=V},function(f,p,w){var y,b=w(1);function E(S){y=w(5),this.layout=S,this.graphs=[],this.edges=[]}E.prototype.addRoot=function(){var S=this.layout.newGraph(),N=this.layout.newNode(null),B=this.add(S,N);return this.setRootGraph(B),this.rootGraph},E.prototype.add=function(S,N,B,R,j){if(B==null&&R==null&&j==null){if(S==null)throw"Graph is null!";if(N==null)throw"Parent node is null!";if(this.graphs.indexOf(S)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(S),S.parent!=null)throw"Already has a parent!";if(N.child!=null)throw"Already has a child!";return S.parent=N,N.child=S,S}else{j=B,R=N,B=S;var $=R.getOwner(),V=j.getOwner();if(!($!=null&&$.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(V!=null&&V.getGraphManager()==this))throw"Target not in this graph mgr!";if($==V)return B.isInterGraph=!1,$.add(B,R,j);if(B.isInterGraph=!0,B.source=R,B.target=j,this.edges.indexOf(B)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(B),!(B.source!=null&&B.target!=null))throw"Edge source and/or target is null!";if(!(B.source.edges.indexOf(B)==-1&&B.target.edges.indexOf(B)==-1))throw"Edge already in source and/or target incidency list!";return B.source.edges.push(B),B.target.edges.push(B),B}},E.prototype.remove=function(S){if(S instanceof y){var N=S;if(N.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(N==this.rootGraph||N.parent!=null&&N.parent.graphManager==this))throw"Invalid parent node!";var B=[];B=B.concat(N.getEdges());for(var R,j=B.length,$=0;$=S.getRight()?N[0]+=Math.min(S.getX()-E.getX(),E.getRight()-S.getRight()):S.getX()<=E.getX()&&S.getRight()>=E.getRight()&&(N[0]+=Math.min(E.getX()-S.getX(),S.getRight()-E.getRight())),E.getY()<=S.getY()&&E.getBottom()>=S.getBottom()?N[1]+=Math.min(S.getY()-E.getY(),E.getBottom()-S.getBottom()):S.getY()<=E.getY()&&S.getBottom()>=E.getBottom()&&(N[1]+=Math.min(E.getY()-S.getY(),S.getBottom()-E.getBottom()));var j=Math.abs((S.getCenterY()-E.getCenterY())/(S.getCenterX()-E.getCenterX()));S.getCenterY()===E.getCenterY()&&S.getCenterX()===E.getCenterX()&&(j=1);var $=j*N[0],V=N[1]/j;N[0]$)return N[0]=B,N[1]=Q,N[2]=j,N[3]=xe,!1;if(R<$)return N[0]=B,N[1]=se,N[2]=j,N[3]=de,!1}else if(R===$){if(B>j)return N[0]=V,N[1]=R,N[2]=ve,N[3]=$,!1;if(Bj?(N[0]=ce,N[1]=se,ee=!0):(N[0]=oe,N[1]=Q,ee=!0):me===pe&&(B>j?(N[0]=V,N[1]=Q,ee=!0):(N[0]=ge,N[1]=se,ee=!0)),-gt===pe?j>B?(N[2]=te,N[3]=xe,rt=!0):(N[2]=ve,N[3]=de,rt=!0):gt===pe&&(j>B?(N[2]=Ae,N[3]=de,rt=!0):(N[2]=De,N[3]=xe,rt=!0)),ee&&rt)return!1;if(B>j?R>$?(Et=this.getCardinalDirection(me,pe,4),wt=this.getCardinalDirection(gt,pe,2)):(Et=this.getCardinalDirection(-me,pe,3),wt=this.getCardinalDirection(-gt,pe,1)):R>$?(Et=this.getCardinalDirection(-me,pe,1),wt=this.getCardinalDirection(-gt,pe,3)):(Et=this.getCardinalDirection(me,pe,2),wt=this.getCardinalDirection(gt,pe,4)),!ee)switch(Et){case 1:At=Q,jt=B+-ke/pe,N[0]=jt,N[1]=At;break;case 2:jt=ge,At=R+ye*pe,N[0]=jt,N[1]=At;break;case 3:At=se,jt=B+ke/pe,N[0]=jt,N[1]=At;break;case 4:jt=ce,At=R+-ye*pe,N[0]=jt,N[1]=At;break}if(!rt)switch(wt){case 1:cn=de,Bt=j+-Ie/pe,N[2]=Bt,N[3]=cn;break;case 2:Bt=De,cn=$+he*pe,N[2]=Bt,N[3]=cn;break;case 3:cn=xe,Bt=j+Ie/pe,N[2]=Bt,N[3]=cn;break;case 4:Bt=te,cn=$+-he*pe,N[2]=Bt,N[3]=cn;break}}return!1},b.getCardinalDirection=function(E,S,N){return E>S?N:1+N%4},b.getIntersection=function(E,S,N,B){if(B==null)return this.getIntersection2(E,S,N);var R=E.x,j=E.y,$=S.x,V=S.y,Q=N.x,oe=N.y,ce=B.x,se=B.y,ge=void 0,ye=void 0,ke=void 0,Ae=void 0,de=void 0,ve=void 0,te=void 0,xe=void 0,De=void 0;return ke=V-j,de=R-$,te=$*j-R*V,Ae=se-oe,ve=Q-ce,xe=ce*oe-Q*se,De=ke*ve-Ae*de,De===0?null:(ge=(de*xe-ve*te)/De,ye=(Ae*te-ke*xe)/De,new y(ge,ye))},b.angleOfVector=function(E,S,N,B){var R=void 0;return E!==N?(R=Math.atan((B-S)/(N-E)),N0?1:b<0?-1:0},y.floor=function(b){return b<0?Math.ceil(b):Math.floor(b)},y.ceil=function(b){return b<0?Math.floor(b):Math.ceil(b)},f.exports=y},function(f,p,w){function y(){}y.MAX_VALUE=2147483647,y.MIN_VALUE=-2147483648,f.exports=y},function(f,p,w){var y=function(){function R(j,$){for(var V=0;V<$.length;V++){var Q=$[V];Q.enumerable=Q.enumerable||!1,Q.configurable=!0,"value"in Q&&(Q.writable=!0),Object.defineProperty(j,Q.key,Q)}}return function(j,$,V){return $&&R(j.prototype,$),V&&R(j,V),j}}();function b(R,j){if(!(R instanceof j))throw new TypeError("Cannot call a class as a function")}var E=function(j){return{value:j,next:null,prev:null}},S=function(j,$,V,Q){return j!==null?j.next=$:Q.head=$,V!==null?V.prev=$:Q.tail=$,$.prev=j,$.next=V,Q.length++,$},N=function(j,$){var V=j.prev,Q=j.next;return V!==null?V.next=Q:$.head=Q,Q!==null?Q.prev=V:$.tail=V,j.prev=j.next=null,$.length--,j},B=function(){function R(j){var $=this;b(this,R),this.length=0,this.head=null,this.tail=null,j!=null&&j.forEach(function(V){return $.push(V)})}return y(R,[{key:"size",value:function(){return this.length}},{key:"insertBefore",value:function($,V){return S(V.prev,E($),V,this)}},{key:"insertAfter",value:function($,V){return S(V,E($),V.next,this)}},{key:"insertNodeBefore",value:function($,V){return S(V.prev,$,V,this)}},{key:"insertNodeAfter",value:function($,V){return S(V,$,V.next,this)}},{key:"push",value:function($){return S(this.tail,E($),null,this)}},{key:"unshift",value:function($){return S(null,E($),this.head,this)}},{key:"remove",value:function($){return N($,this)}},{key:"pop",value:function(){return N(this.tail,this).value}},{key:"popNode",value:function(){return N(this.tail,this)}},{key:"shift",value:function(){return N(this.head,this).value}},{key:"shiftNode",value:function(){return N(this.head,this)}},{key:"get_object_at",value:function($){if($<=this.length()){for(var V=1,Q=this.head;V<$;)Q=Q.next,V++;return Q.value}}},{key:"set_object_at",value:function($,V){if($<=this.length()){for(var Q=1,oe=this.head;Q<$;)oe=oe.next,Q++;oe.value=V}}}]),R}();f.exports=B},function(f,p,w){function y(b,E,S){this.x=null,this.y=null,b==null&&E==null&&S==null?(this.x=0,this.y=0):typeof b=="number"&&typeof E=="number"&&S==null?(this.x=b,this.y=E):b.constructor.name=="Point"&&E==null&&S==null&&(S=b,this.x=S.x,this.y=S.y)}y.prototype.getX=function(){return this.x},y.prototype.getY=function(){return this.y},y.prototype.getLocation=function(){return new y(this.x,this.y)},y.prototype.setLocation=function(b,E,S){b.constructor.name=="Point"&&E==null&&S==null?(S=b,this.setLocation(S.x,S.y)):typeof b=="number"&&typeof E=="number"&&S==null&&(parseInt(b)==b&&parseInt(E)==E?this.move(b,E):(this.x=Math.floor(b+.5),this.y=Math.floor(E+.5)))},y.prototype.move=function(b,E){this.x=b,this.y=E},y.prototype.translate=function(b,E){this.x+=b,this.y+=E},y.prototype.equals=function(b){if(b.constructor.name=="Point"){var E=b;return this.x==E.x&&this.y==E.y}return this==b},y.prototype.toString=function(){return new y().constructor.name+"[x="+this.x+",y="+this.y+"]"},f.exports=y},function(f,p,w){function y(b,E,S,N){this.x=0,this.y=0,this.width=0,this.height=0,b!=null&&E!=null&&S!=null&&N!=null&&(this.x=b,this.y=E,this.width=S,this.height=N)}y.prototype.getX=function(){return this.x},y.prototype.setX=function(b){this.x=b},y.prototype.getY=function(){return this.y},y.prototype.setY=function(b){this.y=b},y.prototype.getWidth=function(){return this.width},y.prototype.setWidth=function(b){this.width=b},y.prototype.getHeight=function(){return this.height},y.prototype.setHeight=function(b){this.height=b},y.prototype.getRight=function(){return this.x+this.width},y.prototype.getBottom=function(){return this.y+this.height},y.prototype.intersects=function(b){return!(this.getRight()"u"?"undefined":y(E);return E==null||S!="object"&&S!="function"},f.exports=b},function(f,p,w){function y(Q){if(Array.isArray(Q)){for(var oe=0,ce=Array(Q.length);oe0&&oe;){for(ke.push(de[0]);ke.length>0&&oe;){var ve=ke[0];ke.splice(0,1),ye.add(ve);for(var te=ve.getEdges(),ge=0;ge-1&&de.splice(Ie,1)}ye=new Set,Ae=new Map}}return Q},V.prototype.createDummyNodesForBendpoints=function(Q){for(var oe=[],ce=Q.source,se=this.graphManager.calcLowestCommonAncestor(Q.source,Q.target),ge=0;ge0){for(var se=this.edgeToDummyNodes.get(ce),ge=0;ge=0&&oe.splice(xe,1);var De=Ae.getNeighborsList();De.forEach(function(ee){if(ce.indexOf(ee)<0){var rt=se.get(ee),me=rt-1;me==1&&ve.push(ee),se.set(ee,me)}})}ce=ce.concat(ve),(oe.length==1||oe.length==2)&&(ge=!0,ye=oe[0])}return ye},V.prototype.setGraphManager=function(Q){this.graphManager=Q},f.exports=V},function(f,p,w){function y(){}y.seed=1,y.x=0,y.nextDouble=function(){return y.x=Math.sin(y.seed++)*1e4,y.x-Math.floor(y.x)},f.exports=y},function(f,p,w){var y=w(4);function b(E,S){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}b.prototype.getWorldOrgX=function(){return this.lworldOrgX},b.prototype.setWorldOrgX=function(E){this.lworldOrgX=E},b.prototype.getWorldOrgY=function(){return this.lworldOrgY},b.prototype.setWorldOrgY=function(E){this.lworldOrgY=E},b.prototype.getWorldExtX=function(){return this.lworldExtX},b.prototype.setWorldExtX=function(E){this.lworldExtX=E},b.prototype.getWorldExtY=function(){return this.lworldExtY},b.prototype.setWorldExtY=function(E){this.lworldExtY=E},b.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},b.prototype.setDeviceOrgX=function(E){this.ldeviceOrgX=E},b.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},b.prototype.setDeviceOrgY=function(E){this.ldeviceOrgY=E},b.prototype.getDeviceExtX=function(){return this.ldeviceExtX},b.prototype.setDeviceExtX=function(E){this.ldeviceExtX=E},b.prototype.getDeviceExtY=function(){return this.ldeviceExtY},b.prototype.setDeviceExtY=function(E){this.ldeviceExtY=E},b.prototype.transformX=function(E){var S=0,N=this.lworldExtX;return N!=0&&(S=this.ldeviceOrgX+(E-this.lworldOrgX)*this.ldeviceExtX/N),S},b.prototype.transformY=function(E){var S=0,N=this.lworldExtY;return N!=0&&(S=this.ldeviceOrgY+(E-this.lworldOrgY)*this.ldeviceExtY/N),S},b.prototype.inverseTransformX=function(E){var S=0,N=this.ldeviceExtX;return N!=0&&(S=this.lworldOrgX+(E-this.ldeviceOrgX)*this.lworldExtX/N),S},b.prototype.inverseTransformY=function(E){var S=0,N=this.ldeviceExtY;return N!=0&&(S=this.lworldOrgY+(E-this.ldeviceOrgY)*this.lworldExtY/N),S},b.prototype.inverseTransformPoint=function(E){var S=new y(this.inverseTransformX(E.x),this.inverseTransformY(E.y));return S},f.exports=b},function(f,p,w){function y($){if(Array.isArray($)){for(var V=0,Q=Array($.length);V<$.length;V++)Q[V]=$[V];return Q}else return Array.from($)}var b=w(15),E=w(7),S=w(0),N=w(8),B=w(9);function R(){b.call(this),this.useSmartIdealEdgeLengthCalculation=E.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=E.DEFAULT_EDGE_LENGTH,this.springConstant=E.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=E.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=E.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=E.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=E.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=E.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*E.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=E.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=E.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=E.MAX_ITERATIONS}R.prototype=Object.create(b.prototype);for(var j in b)R[j]=b[j];R.prototype.initParameters=function(){b.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=E.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},R.prototype.calcIdealEdgeLengths=function(){for(var $,V,Q,oe,ce,se,ge=this.getGraphManager().getAllEdges(),ye=0;yeE.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*E.COOLING_ADAPTATION_FACTOR,this.coolingFactor-($-E.ADAPTATION_LOWER_NODE_LIMIT)/(E.ADAPTATION_UPPER_NODE_LIMIT-E.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-E.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=E.MAX_NODE_DISPLACEMENT_INCREMENTAL):($>E.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(E.COOLING_ADAPTATION_FACTOR,1-($-E.ADAPTATION_LOWER_NODE_LIMIT)/(E.ADAPTATION_UPPER_NODE_LIMIT-E.ADAPTATION_LOWER_NODE_LIMIT)*(1-E.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=E.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},R.prototype.calcSpringForces=function(){for(var $=this.getAllEdges(),V,Q=0;Q<$.length;Q++)V=$[Q],this.calcSpringForce(V,V.idealLength)},R.prototype.calcRepulsionForces=function(){var $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,Q,oe,ce,se,ge=this.getAllNodes(),ye;if(this.useFRGridVariant)for(this.totalIterations%E.GRID_CALCULATION_CHECK_PERIOD==1&&$&&this.updateGrid(),ye=new Set,Q=0;Qke||ye>ke)&&($.gravitationForceX=-this.gravityConstant*ce,$.gravitationForceY=-this.gravityConstant*se)):(ke=V.getEstimatedSize()*this.compoundGravityRangeFactor,(ge>ke||ye>ke)&&($.gravitationForceX=-this.gravityConstant*ce*this.compoundGravityConstant,$.gravitationForceY=-this.gravityConstant*se*this.compoundGravityConstant))},R.prototype.isConverged=function(){var $,V=!1;return this.totalIterations>this.maxIterations/3&&(V=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),$=this.totalDisplacement=ge.length||ke>=ge[0].length)){for(var Ae=0;AeR}}]),N}();f.exports=S},function(f,p,w){var y=function(){function S(N,B){for(var R=0;R2&&arguments[2]!==void 0?arguments[2]:1,j=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,$=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;b(this,S),this.sequence1=N,this.sequence2=B,this.match_score=R,this.mismatch_penalty=j,this.gap_penalty=$,this.iMax=N.length+1,this.jMax=B.length+1,this.grid=new Array(this.iMax);for(var V=0;V=0;N--){var B=this.listeners[N];B.event===E&&B.callback===S&&this.listeners.splice(N,1)}},b.emit=function(E,S){for(var N=0;NB.coolingFactor*B.maxNodeDisplacement&&(this.displacementX=B.coolingFactor*B.maxNodeDisplacement*E.sign(this.displacementX)),Math.abs(this.displacementY)>B.coolingFactor*B.maxNodeDisplacement&&(this.displacementY=B.coolingFactor*B.maxNodeDisplacement*E.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),B.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},S.prototype.propogateDisplacementToChildren=function(B,R){for(var j=this.getChild().getNodes(),$,V=0;V0)this.positionNodesRadially(de);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var ve=new Set(this.getAllNodes()),te=this.nodesWithGravity.filter(function(xe){return ve.has(xe)});this.graphManager.setAllNodesToApplyGravitation(te),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},ke.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%j.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var de=new Set(this.getAllNodes()),ve=this.nodesWithGravity.filter(function(De){return de.has(De)});this.graphManager.setAllNodesToApplyGravitation(ve),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=j.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=j.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var te=!this.isTreeGrowing&&!this.isGrowthFinished,xe=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(te,xe),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},ke.prototype.getPositionsData=function(){for(var de=this.graphManager.getAllNodes(),ve={},te=0;te1){var ee;for(ee=0;eexe&&(xe=Math.floor(Ie.y)),he=Math.floor(Ie.x+R.DEFAULT_COMPONENT_SEPERATION)}this.transform(new Q($.WORLD_CENTER_X-Ie.x/2,$.WORLD_CENTER_Y-Ie.y/2))},ke.radialLayout=function(de,ve,te){var xe=Math.max(this.maxDiagonalInTree(de),R.DEFAULT_RADIAL_SEPARATION);ke.branchRadialLayout(ve,null,0,359,0,xe);var De=ge.calculateBounds(de),he=new ye;he.setDeviceOrgX(De.getMinX()),he.setDeviceOrgY(De.getMinY()),he.setWorldOrgX(te.x),he.setWorldOrgY(te.y);for(var Ie=0;Ie1;){var cn=Bt[0];Bt.splice(0,1);var Nn=pe.indexOf(cn);Nn>=0&&pe.splice(Nn,1),jt--,Et--}ve!=null?At=(pe.indexOf(Bt[0])+1)%jt:At=0;for(var Ot=Math.abs(xe-te)/Et,oi=At;wt!=Et;oi=++oi%jt){var kt=pe[oi].getOtherEnd(de);if(kt!=ve){var Dt=(te+wt*Ot)%360,vt=(Dt+Ot)%360;ke.branchRadialLayout(kt,de,Dt,vt,De+he,he),wt++}}},ke.maxDiagonalInTree=function(de){for(var ve=ce.MIN_VALUE,te=0;teve&&(ve=De)}return ve},ke.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},ke.prototype.groupZeroDegreeMembers=function(){var de=this,ve={};this.memberGroups={},this.idToDummyNode={};for(var te=[],xe=this.graphManager.getAllNodes(),De=0;De"u"&&(ve[ee]=[]),ve[ee]=ve[ee].concat(he)}Object.keys(ve).forEach(function(rt){if(ve[rt].length>1){var me="DummyCompound_"+rt;de.memberGroups[me]=ve[rt];var gt=ve[rt][0].getParent(),pe=new N(de.graphManager);pe.id=me,pe.paddingLeft=gt.paddingLeft||0,pe.paddingRight=gt.paddingRight||0,pe.paddingBottom=gt.paddingBottom||0,pe.paddingTop=gt.paddingTop||0,de.idToDummyNode[me]=pe;var Et=de.getGraphManager().add(de.newGraph(),pe),wt=gt.getChild();wt.add(pe);for(var jt=0;jt=0;de--){var ve=this.compoundOrder[de],te=ve.id,xe=ve.paddingLeft,De=ve.paddingTop;this.adjustLocations(this.tiledMemberPack[te],ve.rect.x,ve.rect.y,xe,De)}},ke.prototype.repopulateZeroDegreeMembers=function(){var de=this,ve=this.tiledZeroDegreePack;Object.keys(ve).forEach(function(te){var xe=de.idToDummyNode[te],De=xe.paddingLeft,he=xe.paddingTop;de.adjustLocations(ve[te],xe.rect.x,xe.rect.y,De,he)})},ke.prototype.getToBeTiled=function(de){var ve=de.id;if(this.toBeTiled[ve]!=null)return this.toBeTiled[ve];var te=de.getChild();if(te==null)return this.toBeTiled[ve]=!1,!1;for(var xe=te.getNodes(),De=0;De0)return this.toBeTiled[ve]=!1,!1;if(he.getChild()==null){this.toBeTiled[he.id]=!1;continue}if(!this.getToBeTiled(he))return this.toBeTiled[ve]=!1,!1}return this.toBeTiled[ve]=!0,!0},ke.prototype.getNodeDegree=function(de){de.id;for(var ve=de.getEdges(),te=0,xe=0;xert&&(rt=gt.rect.height)}te+=rt+de.verticalPadding}},ke.prototype.tileCompoundMembers=function(de,ve){var te=this;this.tiledMemberPack=[],Object.keys(de).forEach(function(xe){var De=ve[xe];te.tiledMemberPack[xe]=te.tileNodes(de[xe],De.paddingLeft+De.paddingRight),De.rect.width=te.tiledMemberPack[xe].width,De.rect.height=te.tiledMemberPack[xe].height})},ke.prototype.tileNodes=function(de,ve){var te=R.TILING_PADDING_VERTICAL,xe=R.TILING_PADDING_HORIZONTAL,De={rows:[],rowWidth:[],rowHeight:[],width:0,height:ve,verticalPadding:te,horizontalPadding:xe};de.sort(function(ee,rt){return ee.rect.width*ee.rect.height>rt.rect.width*rt.rect.height?-1:ee.rect.width*ee.rect.height0&&(Ie+=de.horizontalPadding),de.rowWidth[te]=Ie,de.width0&&(ee+=de.verticalPadding);var rt=0;ee>de.rowHeight[te]&&(rt=de.rowHeight[te],de.rowHeight[te]=ee,rt=de.rowHeight[te]-rt),de.height+=rt,de.rows[te].push(ve)},ke.prototype.getShortestRowIndex=function(de){for(var ve=-1,te=Number.MAX_VALUE,xe=0;xete&&(ve=xe,te=de.rowWidth[xe]);return ve},ke.prototype.canAddHorizontal=function(de,ve,te){var xe=this.getShortestRowIndex(de);if(xe<0)return!0;var De=de.rowWidth[xe];if(De+de.horizontalPadding+ve<=de.width)return!0;var he=0;de.rowHeight[xe]0&&(he=te+de.verticalPadding-de.rowHeight[xe]);var Ie;de.width-De>=ve+de.horizontalPadding?Ie=(de.height+he)/(De+ve+de.horizontalPadding):Ie=(de.height+he)/de.width,he=te+de.verticalPadding;var ee;return de.widthhe&&ve!=te){xe.splice(-1,1),de.rows[te].push(De),de.rowWidth[ve]=de.rowWidth[ve]-he,de.rowWidth[te]=de.rowWidth[te]+he,de.width=de.rowWidth[instance.getLongestRowIndex(de)];for(var Ie=Number.MIN_VALUE,ee=0;eeIe&&(Ie=xe[ee].height);ve>0&&(Ie+=de.verticalPadding);var rt=de.rowHeight[ve]+de.rowHeight[te];de.rowHeight[ve]=Ie,de.rowHeight[te]0)for(var wt=De;wt<=he;wt++)Et[0]+=this.grid[wt][Ie-1].length+this.grid[wt][Ie].length-1;if(he0)for(var wt=Ie;wt<=ee;wt++)Et[3]+=this.grid[De-1][wt].length+this.grid[De][wt].length-1;for(var jt=ce.MAX_VALUE,At,Bt,cn=0;cn0){var ee;ee=ye.getGraphManager().add(ye.newGraph(),te),this.processChildrenList(ee,ve,ye)}}},Q.prototype.stop=function(){return this.stopped=!0,this};var ce=function(ge){ge("layout","cose-bilkent",Q)};typeof cytoscape<"u"&&ce(cytoscape),p.exports=ce}])})})(qqt);const Yqt=xLe(Fge);dje.use(Yqt);function bje(i,a,f,p){fje.drawNode(i,a,f,p),a.children&&a.children.forEach((w,y)=>{bje(i,w,f<0?y:f,p)})}function Xqt(i,a){a.edges().map((f,p)=>{const w=f.data();if(f[0]._private.bodyBounds){const y=f[0]._private.rscratch;Fe.trace("Edge: ",p,w),i.insert("path").attr("d",`M ${y.startX},${y.startY} L ${y.midX},${y.midY} L${y.endX},${y.endY} `).attr("class","edge section-edge-"+w.section+" edge-depth-"+w.depth)}})}function vje(i,a,f,p){a.add({group:"nodes",data:{id:i.id,labelText:i.descr,height:i.height,width:i.width,level:p,nodeId:i.id,padding:i.padding,type:i.type},position:{x:i.x,y:i.y}}),i.children&&i.children.forEach(w=>{vje(w,a,f,p+1),a.add({group:"edges",data:{id:`${i.id}_${w.id}`,source:i.id,target:w.id,depth:p,section:w.section}})})}function Qqt(i,a){return new Promise(f=>{const p=Cr("body").append("div").attr("id","cy").attr("style","display:none"),w=dje({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});p.remove(),vje(i,w,a,0),w.nodes().forEach(function(y){y.layoutDimensions=()=>{const b=y.data();return{w:b.width,h:b.height}}}),w.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),w.ready(y=>{Fe.info("Ready",y),f(w)})})}function Zqt(i){i.nodes().map((a,f)=>{const p=a.data();p.x=a.position().x,p.y=a.position().y,fje.positionNode(p);const w=Bge(p.nodeId);Fe.info("Id:",f,"Position: (",a.position().x,", ",a.position().y,")",p),w.attr("transform",`translate(${a.position().x-p.width/2}, ${a.position().y-p.height/2})`),w.attr("attr",`apa-${f})`)})}const Jqt={draw:async(i,a,f,p)=>{const w=Tt();w.htmlLabels=!1,p.db.clear(),p.parser.parse(i),Fe.debug(`Rendering mindmap diagram +`+i,p.parser);const y=Tt().securityLevel;let b;y==="sandbox"&&(b=Cr("#i"+a));const S=Cr(y==="sandbox"?b.nodes()[0].contentDocument.body:"body").select("#"+a);S.append("g");const N=p.db.getMindmap(),B=S.append("g");B.attr("class","mindmap-edges");const R=S.append("g");R.attr("class","mindmap-nodes"),bje(R,N,-1,w);const j=await Qqt(N,w);Xqt(B,j),Zqt(j),YE(void 0,S,w.mindmap.padding,w.mindmap.useMaxWidth)}},eVt=i=>{let a="";for(let f=0;f` + .edge { + stroke-width: 3; + } + ${eVt(i)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${i.git0}; + } + .section-root text { + fill: ${i.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .mindmap-node-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } +`}},Symbol.toStringTag,{value:"Module"}));return O2}); diff --git a/pr-preview/pr-51/site_libs/quarto-html/anchor.min.js b/pr-preview/pr-51/site_libs/quarto-html/anchor.min.js new file mode 100644 index 00000000..5ac814d1 --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-html/anchor.min.js @@ -0,0 +1,9 @@ +// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat +// +// AnchorJS - v5.0.0 - 2023-01-18 +// https://www.bryanbraun.com/anchorjs/ +// Copyright (c) 2023 Bryan Braun; Licensed MIT +// +// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat +!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(globalThis,function(){"use strict";return function(A){function u(A){A.icon=Object.prototype.hasOwnProperty.call(A,"icon")?A.icon:"",A.visible=Object.prototype.hasOwnProperty.call(A,"visible")?A.visible:"hover",A.placement=Object.prototype.hasOwnProperty.call(A,"placement")?A.placement:"right",A.ariaLabel=Object.prototype.hasOwnProperty.call(A,"ariaLabel")?A.ariaLabel:"Anchor",A.class=Object.prototype.hasOwnProperty.call(A,"class")?A.class:"",A.base=Object.prototype.hasOwnProperty.call(A,"base")?A.base:"",A.truncate=Object.prototype.hasOwnProperty.call(A,"truncate")?Math.floor(A.truncate):64,A.titleText=Object.prototype.hasOwnProperty.call(A,"titleText")?A.titleText:""}function d(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new TypeError("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],u(this.options),this.add=function(A){var e,t,o,i,n,s,a,r,l,c,h,p=[];if(u(this.options),0!==(e=d(A=A||"h2, h3, h4, h5, h6")).length){for(null===document.head.querySelector("style.anchorjs")&&((A=document.createElement("style")).className="anchorjs",A.appendChild(document.createTextNode("")),void 0===(h=document.head.querySelector('[rel="stylesheet"],style'))?document.head.appendChild(A):document.head.insertBefore(A,h),A.sheet.insertRule(".anchorjs-link{opacity:0;text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}",A.sheet.cssRules.length),A.sheet.insertRule(":hover>.anchorjs-link,.anchorjs-link:focus{opacity:1}",A.sheet.cssRules.length),A.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",A.sheet.cssRules.length),A.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',A.sheet.cssRules.length)),h=document.querySelectorAll("[id]"),t=[].map.call(h,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}}); +// @license-end \ No newline at end of file diff --git a/pr-preview/pr-51/site_libs/quarto-html/popper.min.js b/pr-preview/pr-51/site_libs/quarto-html/popper.min.js new file mode 100644 index 00000000..e3726d72 --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-html/popper.min.js @@ -0,0 +1,6 @@ +/** + * @popperjs/core v2.11.7 - MIT License + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function c(){return!/^((?!chrome|android).)*safari/i.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&(("body"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function x(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:x(b(e))}function w(e,n){var r;void 0===n&&(n=[]);var o=x(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(w(b(s)))}function O(e){return["table","td","th"].indexOf(l(e))>=0}function j(e){return r(e)&&"fixed"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&"static"===m(i).position;)i=j(i);return i&&("html"===l(i)||"body"===l(i)&&"static"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&"fixed"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(l(n))<0;){var i=m(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D="top",A="bottom",L="right",P="left",M="auto",k=[D,A,L,P],W="start",B="end",H="viewport",T="popper",R=k.reduce((function(e,t){return e.concat([t+"-"+W,t+"-"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+"-"+W,t+"-"+B])}),[]),V=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function N(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function I(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function _(e,r,o){return r===H?I(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&"fixed"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):I(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return"rtl"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function F(e,t,o,s){var f="clippingParents"===t?function(e){var t=w(b(e)),o=["absolute","fixed"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&N(e,o)&&"body"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=_(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),_(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function U(e){return e.split("-")[1]}function z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?"clippingParents":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,x=Y("number"!=typeof b?b:G(b,k)),w=m===T?"reference":T,O=e.rects.popper,j=e.elements[y?w:m],E=F(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:"absolute",placement:i}),W=I(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+x.top,bottom:B.bottom-E.bottom+x.bottom,left:E.left-B.left+x.left,right:B.right-E.right+x.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?"y":"x";R[e]+=V[n]*t}))}return R}var K={placement:"bottom",modifiers:[],strategy:"absolute"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:"right",right:"left",bottom:"top",top:"bottom"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:"end",end:"start"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=C(v),g=f||(y===v||!h?[fe(v)]:function(e){if(C(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(C(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k=0,S=R?"width":"height",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;x[S]>w[S]&&(q=fe(q));var N=fe(q),I=[];if(i&&I.push(V[H]<=0),s&&I.push(V[q]<=0,V[N]<=0),I.every((function(e){return e}))){E=B,j=!1;break}O.set(B,I)}if(j)for(var _=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},F=h?3:1;F>0;F--){if("break"===_(F))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=U(t.placement),O=!w,j=z(x),M="x"===j?"y":"x",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,N="y"===j?D:P,I="y"===j?A:L,_="y"===j?"height":"width",F=k[j],X=F+b[N],Y=F-b[I],G=m?-H[_]/2:0,K=w===W?B[_]:H[_],Q=w===W?-H[_]:-B[_],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=de(0,B[_],$[_]),oe=O?B[_]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[_]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?"y"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=F+ie-fe,pe=de(m?a(X,F+oe-fe-se):X,F,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-F}if(c){var ue,le="x"===j?D:P,he="x"===j?A:L,me=k[M],ve="y"===M?"height":"width",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(x),xe=null!=(ue=null==S?void 0:S[M])?ue:0,we=be?ye:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(we,me,Oe):de(m?we:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:["offset"]};var me={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l="y"===f?D:P,d="y"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?"y"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(x,O,w),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&N(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:"reference"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),xe=[ee,te,oe,ie,ae,le,he,me,ge],we=Z({defaultModifiers:xe});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=we,e.createPopperLite=be,e.defaultModifiers=xe,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/pr-preview/pr-51/site_libs/quarto-html/quarto-syntax-highlighting.css b/pr-preview/pr-51/site_libs/quarto-html/quarto-syntax-highlighting.css new file mode 100644 index 00000000..d9fd98f0 --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-html/quarto-syntax-highlighting.css @@ -0,0 +1,203 @@ +/* quarto syntax highlight colors */ +:root { + --quarto-hl-ot-color: #003B4F; + --quarto-hl-at-color: #657422; + --quarto-hl-ss-color: #20794D; + --quarto-hl-an-color: #5E5E5E; + --quarto-hl-fu-color: #4758AB; + --quarto-hl-st-color: #20794D; + --quarto-hl-cf-color: #003B4F; + --quarto-hl-op-color: #5E5E5E; + --quarto-hl-er-color: #AD0000; + --quarto-hl-bn-color: #AD0000; + --quarto-hl-al-color: #AD0000; + --quarto-hl-va-color: #111111; + --quarto-hl-bu-color: inherit; + --quarto-hl-ex-color: inherit; + --quarto-hl-pp-color: #AD0000; + --quarto-hl-in-color: #5E5E5E; + --quarto-hl-vs-color: #20794D; + --quarto-hl-wa-color: #5E5E5E; + --quarto-hl-do-color: #5E5E5E; + --quarto-hl-im-color: #00769E; + --quarto-hl-ch-color: #20794D; + --quarto-hl-dt-color: #AD0000; + --quarto-hl-fl-color: #AD0000; + --quarto-hl-co-color: #5E5E5E; + --quarto-hl-cv-color: #5E5E5E; + --quarto-hl-cn-color: #8f5902; + --quarto-hl-sc-color: #5E5E5E; + --quarto-hl-dv-color: #AD0000; + --quarto-hl-kw-color: #003B4F; +} + +/* other quarto variables */ +:root { + --quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +pre > code.sourceCode > span { + color: #003B4F; +} + +code span { + color: #003B4F; +} + +code.sourceCode > span { + color: #003B4F; +} + +div.sourceCode, +div.sourceCode pre.sourceCode { + color: #003B4F; +} + +code span.ot { + color: #003B4F; + font-style: inherit; +} + +code span.at { + color: #657422; + font-style: inherit; +} + +code span.ss { + color: #20794D; + font-style: inherit; +} + +code span.an { + color: #5E5E5E; + font-style: inherit; +} + +code span.fu { + color: #4758AB; + font-style: inherit; +} + +code span.st { + color: #20794D; + font-style: inherit; +} + +code span.cf { + color: #003B4F; + font-style: inherit; +} + +code span.op { + color: #5E5E5E; + font-style: inherit; +} + +code span.er { + color: #AD0000; + font-style: inherit; +} + +code span.bn { + color: #AD0000; + font-style: inherit; +} + +code span.al { + color: #AD0000; + font-style: inherit; +} + +code span.va { + color: #111111; + font-style: inherit; +} + +code span.bu { + font-style: inherit; +} + +code span.ex { + font-style: inherit; +} + +code span.pp { + color: #AD0000; + font-style: inherit; +} + +code span.in { + color: #5E5E5E; + font-style: inherit; +} + +code span.vs { + color: #20794D; + font-style: inherit; +} + +code span.wa { + color: #5E5E5E; + font-style: italic; +} + +code span.do { + color: #5E5E5E; + font-style: italic; +} + +code span.im { + color: #00769E; + font-style: inherit; +} + +code span.ch { + color: #20794D; + font-style: inherit; +} + +code span.dt { + color: #AD0000; + font-style: inherit; +} + +code span.fl { + color: #AD0000; + font-style: inherit; +} + +code span.co { + color: #5E5E5E; + font-style: inherit; +} + +code span.cv { + color: #5E5E5E; + font-style: italic; +} + +code span.cn { + color: #8f5902; + font-style: inherit; +} + +code span.sc { + color: #5E5E5E; + font-style: inherit; +} + +code span.dv { + color: #AD0000; + font-style: inherit; +} + +code span.kw { + color: #003B4F; + font-style: inherit; +} + +.prevent-inlining { + content: " { + // Find any conflicting margin elements and add margins to the + // top to prevent overlap + const marginChildren = window.document.querySelectorAll( + ".column-margin.column-container > * " + ); + + let lastBottom = 0; + for (const marginChild of marginChildren) { + if (marginChild.offsetParent !== null) { + // clear the top margin so we recompute it + marginChild.style.marginTop = null; + const top = marginChild.getBoundingClientRect().top + window.scrollY; + console.log({ + childtop: marginChild.getBoundingClientRect().top, + scroll: window.scrollY, + top, + lastBottom, + }); + if (top < lastBottom) { + const margin = lastBottom - top; + marginChild.style.marginTop = `${margin}px`; + } + const styles = window.getComputedStyle(marginChild); + const marginTop = parseFloat(styles["marginTop"]); + + console.log({ + top, + height: marginChild.getBoundingClientRect().height, + marginTop, + total: top + marginChild.getBoundingClientRect().height + marginTop, + }); + lastBottom = top + marginChild.getBoundingClientRect().height + marginTop; + } + } +}; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Recompute the position of margin elements anytime the body size changes + if (window.ResizeObserver) { + const resizeObserver = new window.ResizeObserver( + throttle(layoutMarginEls, 50) + ); + resizeObserver.observe(window.document.body); + } + + const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]'); + const sidebarEl = window.document.getElementById("quarto-sidebar"); + const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left"); + const marginSidebarEl = window.document.getElementById( + "quarto-margin-sidebar" + ); + // function to determine whether the element has a previous sibling that is active + const prevSiblingIsActiveLink = (el) => { + const sibling = el.previousElementSibling; + if (sibling && sibling.tagName === "A") { + return sibling.classList.contains("active"); + } else { + return false; + } + }; + + // fire slideEnter for bootstrap tab activations (for htmlwidget resize behavior) + function fireSlideEnter(e) { + const event = window.document.createEvent("Event"); + event.initEvent("slideenter", true, true); + window.document.dispatchEvent(event); + } + const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]'); + tabs.forEach((tab) => { + tab.addEventListener("shown.bs.tab", fireSlideEnter); + }); + + // fire slideEnter for tabby tab activations (for htmlwidget resize behavior) + document.addEventListener("tabby", fireSlideEnter, false); + + // Track scrolling and mark TOC links as active + // get table of contents and sidebar (bail if we don't have at least one) + const tocLinks = tocEl + ? [...tocEl.querySelectorAll("a[data-scroll-target]")] + : []; + const makeActive = (link) => tocLinks[link].classList.add("active"); + const removeActive = (link) => tocLinks[link].classList.remove("active"); + const removeAllActive = () => + [...Array(tocLinks.length).keys()].forEach((link) => removeActive(link)); + + // activate the anchor for a section associated with this TOC entry + tocLinks.forEach((link) => { + link.addEventListener("click", () => { + if (link.href.indexOf("#") !== -1) { + const anchor = link.href.split("#")[1]; + const heading = window.document.querySelector( + `[data-anchor-id=${anchor}]` + ); + if (heading) { + // Add the class + heading.classList.add("reveal-anchorjs-link"); + + // function to show the anchor + const handleMouseout = () => { + heading.classList.remove("reveal-anchorjs-link"); + heading.removeEventListener("mouseout", handleMouseout); + }; + + // add a function to clear the anchor when the user mouses out of it + heading.addEventListener("mouseout", handleMouseout); + } + } + }); + }); + + const sections = tocLinks.map((link) => { + const target = link.getAttribute("data-scroll-target"); + if (target.startsWith("#")) { + return window.document.getElementById(decodeURI(`${target.slice(1)}`)); + } else { + return window.document.querySelector(decodeURI(`${target}`)); + } + }); + + const sectionMargin = 200; + let currentActive = 0; + // track whether we've initialized state the first time + let init = false; + + const updateActiveLink = () => { + // The index from bottom to top (e.g. reversed list) + let sectionIndex = -1; + if ( + window.innerHeight + window.pageYOffset >= + window.document.body.offsetHeight + ) { + sectionIndex = 0; + } else { + sectionIndex = [...sections].reverse().findIndex((section) => { + if (section) { + return window.pageYOffset >= section.offsetTop - sectionMargin; + } else { + return false; + } + }); + } + if (sectionIndex > -1) { + const current = sections.length - sectionIndex - 1; + if (current !== currentActive) { + removeAllActive(); + currentActive = current; + makeActive(current); + if (init) { + window.dispatchEvent(sectionChanged); + } + init = true; + } + } + }; + + const inHiddenRegion = (top, bottom, hiddenRegions) => { + for (const region of hiddenRegions) { + if (top <= region.bottom && bottom >= region.top) { + return true; + } + } + return false; + }; + + const categorySelector = "header.quarto-title-block .quarto-category"; + const activateCategories = (href) => { + // Find any categories + // Surround them with a link pointing back to: + // #category=Authoring + try { + const categoryEls = window.document.querySelectorAll(categorySelector); + for (const categoryEl of categoryEls) { + const categoryText = categoryEl.textContent; + if (categoryText) { + const link = `${href}#category=${encodeURIComponent(categoryText)}`; + const linkEl = window.document.createElement("a"); + linkEl.setAttribute("href", link); + for (const child of categoryEl.childNodes) { + linkEl.append(child); + } + categoryEl.appendChild(linkEl); + } + } + } catch { + // Ignore errors + } + }; + function hasTitleCategories() { + return window.document.querySelector(categorySelector) !== null; + } + + function offsetRelativeUrl(url) { + const offset = getMeta("quarto:offset"); + return offset ? offset + url : url; + } + + function offsetAbsoluteUrl(url) { + const offset = getMeta("quarto:offset"); + const baseUrl = new URL(offset, window.location); + + const projRelativeUrl = url.replace(baseUrl, ""); + if (projRelativeUrl.startsWith("/")) { + return projRelativeUrl; + } else { + return "/" + projRelativeUrl; + } + } + + // read a meta tag value + function getMeta(metaName) { + const metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; + } + + async function findAndActivateCategories() { + const currentPagePath = offsetAbsoluteUrl(window.location.href); + const response = await fetch(offsetRelativeUrl("listings.json")); + if (response.status == 200) { + return response.json().then(function (listingPaths) { + const listingHrefs = []; + for (const listingPath of listingPaths) { + const pathWithoutLeadingSlash = listingPath.listing.substring(1); + for (const item of listingPath.items) { + if ( + item === currentPagePath || + item === currentPagePath + "index.html" + ) { + // Resolve this path against the offset to be sure + // we already are using the correct path to the listing + // (this adjusts the listing urls to be rooted against + // whatever root the page is actually running against) + const relative = offsetRelativeUrl(pathWithoutLeadingSlash); + const baseUrl = window.location; + const resolvedPath = new URL(relative, baseUrl); + listingHrefs.push(resolvedPath.pathname); + break; + } + } + } + + // Look up the tree for a nearby linting and use that if we find one + const nearestListing = findNearestParentListing( + offsetAbsoluteUrl(window.location.pathname), + listingHrefs + ); + if (nearestListing) { + activateCategories(nearestListing); + } else { + // See if the referrer is a listing page for this item + const referredRelativePath = offsetAbsoluteUrl(document.referrer); + const referrerListing = listingHrefs.find((listingHref) => { + const isListingReferrer = + listingHref === referredRelativePath || + listingHref === referredRelativePath + "index.html"; + return isListingReferrer; + }); + + if (referrerListing) { + // Try to use the referrer if possible + activateCategories(referrerListing); + } else if (listingHrefs.length > 0) { + // Otherwise, just fall back to the first listing + activateCategories(listingHrefs[0]); + } + } + }); + } + } + if (hasTitleCategories()) { + findAndActivateCategories(); + } + + const findNearestParentListing = (href, listingHrefs) => { + if (!href || !listingHrefs) { + return undefined; + } + // Look up the tree for a nearby linting and use that if we find one + const relativeParts = href.substring(1).split("/"); + while (relativeParts.length > 0) { + const path = relativeParts.join("/"); + for (const listingHref of listingHrefs) { + if (listingHref.startsWith(path)) { + return listingHref; + } + } + relativeParts.pop(); + } + + return undefined; + }; + + const manageSidebarVisiblity = (el, placeholderDescriptor) => { + let isVisible = true; + let elRect; + + return (hiddenRegions) => { + if (el === null) { + return; + } + + // Find the last element of the TOC + const lastChildEl = el.lastElementChild; + + if (lastChildEl) { + // Converts the sidebar to a menu + const convertToMenu = () => { + for (const child of el.children) { + child.style.opacity = 0; + child.style.overflow = "hidden"; + } + + nexttick(() => { + const toggleContainer = window.document.createElement("div"); + toggleContainer.style.width = "100%"; + toggleContainer.classList.add("zindex-over-content"); + toggleContainer.classList.add("quarto-sidebar-toggle"); + toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom + toggleContainer.id = placeholderDescriptor.id; + toggleContainer.style.position = "fixed"; + + const toggleIcon = window.document.createElement("i"); + toggleIcon.classList.add("quarto-sidebar-toggle-icon"); + toggleIcon.classList.add("bi"); + toggleIcon.classList.add("bi-caret-down-fill"); + + const toggleTitle = window.document.createElement("div"); + const titleEl = window.document.body.querySelector( + placeholderDescriptor.titleSelector + ); + if (titleEl) { + toggleTitle.append( + titleEl.textContent || titleEl.innerText, + toggleIcon + ); + } + toggleTitle.classList.add("zindex-over-content"); + toggleTitle.classList.add("quarto-sidebar-toggle-title"); + toggleContainer.append(toggleTitle); + + const toggleContents = window.document.createElement("div"); + toggleContents.classList = el.classList; + toggleContents.classList.add("zindex-over-content"); + toggleContents.classList.add("quarto-sidebar-toggle-contents"); + for (const child of el.children) { + if (child.id === "toc-title") { + continue; + } + + const clone = child.cloneNode(true); + clone.style.opacity = 1; + clone.style.display = null; + toggleContents.append(clone); + } + toggleContents.style.height = "0px"; + const positionToggle = () => { + // position the element (top left of parent, same width as parent) + if (!elRect) { + elRect = el.getBoundingClientRect(); + } + toggleContainer.style.left = `${elRect.left}px`; + toggleContainer.style.top = `${elRect.top}px`; + toggleContainer.style.width = `${elRect.width}px`; + }; + positionToggle(); + + toggleContainer.append(toggleContents); + el.parentElement.prepend(toggleContainer); + + // Process clicks + let tocShowing = false; + // Allow the caller to control whether this is dismissed + // when it is clicked (e.g. sidebar navigation supports + // opening and closing the nav tree, so don't dismiss on click) + const clickEl = placeholderDescriptor.dismissOnClick + ? toggleContainer + : toggleTitle; + + const closeToggle = () => { + if (tocShowing) { + toggleContainer.classList.remove("expanded"); + toggleContents.style.height = "0px"; + tocShowing = false; + } + }; + + // Get rid of any expanded toggle if the user scrolls + window.document.addEventListener( + "scroll", + throttle(() => { + closeToggle(); + }, 50) + ); + + // Handle positioning of the toggle + window.addEventListener( + "resize", + throttle(() => { + elRect = undefined; + positionToggle(); + }, 50) + ); + + window.addEventListener("quarto-hrChanged", () => { + elRect = undefined; + }); + + // Process the click + clickEl.onclick = () => { + if (!tocShowing) { + toggleContainer.classList.add("expanded"); + toggleContents.style.height = null; + tocShowing = true; + } else { + closeToggle(); + } + }; + }); + }; + + // Converts a sidebar from a menu back to a sidebar + const convertToSidebar = () => { + for (const child of el.children) { + child.style.opacity = 1; + child.style.overflow = null; + } + + const placeholderEl = window.document.getElementById( + placeholderDescriptor.id + ); + if (placeholderEl) { + placeholderEl.remove(); + } + + el.classList.remove("rollup"); + }; + + if (isReaderMode()) { + convertToMenu(); + isVisible = false; + } else { + // Find the top and bottom o the element that is being managed + const elTop = el.offsetTop; + const elBottom = + elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight; + + if (!isVisible) { + // If the element is current not visible reveal if there are + // no conflicts with overlay regions + if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToSidebar(); + isVisible = true; + } + } else { + // If the element is visible, hide it if it conflicts with overlay regions + // and insert a placeholder toggle (or if we're in reader mode) + if (inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToMenu(); + isVisible = false; + } + } + } + } + }; + }; + + const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]'); + for (const tabEl of tabEls) { + const id = tabEl.getAttribute("data-bs-target"); + if (id) { + const columnEl = document.querySelector( + `${id} .column-margin, .tabset-margin-content` + ); + if (columnEl) + tabEl.addEventListener("shown.bs.tab", function (event) { + const el = event.srcElement; + if (el) { + const visibleCls = `${el.id}-margin-content`; + // walk up until we find a parent tabset + let panelTabsetEl = el.parentElement; + while (panelTabsetEl) { + if (panelTabsetEl.classList.contains("panel-tabset")) { + break; + } + panelTabsetEl = panelTabsetEl.parentElement; + } + + if (panelTabsetEl) { + const prevSib = panelTabsetEl.previousElementSibling; + if ( + prevSib && + prevSib.classList.contains("tabset-margin-container") + ) { + const childNodes = prevSib.querySelectorAll( + ".tabset-margin-content" + ); + for (const childEl of childNodes) { + if (childEl.classList.contains(visibleCls)) { + childEl.classList.remove("collapse"); + } else { + childEl.classList.add("collapse"); + } + } + } + } + } + + layoutMarginEls(); + }); + } + } + + // Manage the visibility of the toc and the sidebar + const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, { + id: "quarto-toc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, { + id: "quarto-sidebarnav-toggle", + titleSelector: ".title", + dismissOnClick: false, + }); + let tocLeftScrollVisibility; + if (leftTocEl) { + tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, { + id: "quarto-lefttoc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + } + + // Find the first element that uses formatting in special columns + const conflictingEls = window.document.body.querySelectorAll( + '[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]' + ); + + // Filter all the possibly conflicting elements into ones + // the do conflict on the left or ride side + const arrConflictingEls = Array.from(conflictingEls); + const leftSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return false; + } + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + className.startsWith("column-") && + !className.endsWith("right") && + !className.endsWith("container") && + className !== "column-margin" + ); + }); + }); + const rightSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return true; + } + + const hasMarginCaption = Array.from(el.classList).find((className) => { + return className == "margin-caption"; + }); + if (hasMarginCaption) { + return true; + } + + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + !className.endsWith("container") && + className.startsWith("column-") && + !className.endsWith("left") + ); + }); + }); + + const kOverlapPaddingSize = 10; + function toRegions(els) { + return els.map((el) => { + const boundRect = el.getBoundingClientRect(); + const top = + boundRect.top + + document.documentElement.scrollTop - + kOverlapPaddingSize; + return { + top, + bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize, + }; + }); + } + + let hasObserved = false; + const visibleItemObserver = (els) => { + let visibleElements = [...els]; + const intersectionObserver = new IntersectionObserver( + (entries, _observer) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + if (visibleElements.indexOf(entry.target) === -1) { + visibleElements.push(entry.target); + } + } else { + visibleElements = visibleElements.filter((visibleEntry) => { + return visibleEntry !== entry; + }); + } + }); + + if (!hasObserved) { + hideOverlappedSidebars(); + } + hasObserved = true; + }, + {} + ); + els.forEach((el) => { + intersectionObserver.observe(el); + }); + + return { + getVisibleEntries: () => { + return visibleElements; + }, + }; + }; + + const rightElementObserver = visibleItemObserver(rightSideConflictEls); + const leftElementObserver = visibleItemObserver(leftSideConflictEls); + + const hideOverlappedSidebars = () => { + marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries())); + sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries())); + if (tocLeftScrollVisibility) { + tocLeftScrollVisibility( + toRegions(leftElementObserver.getVisibleEntries()) + ); + } + }; + + window.quartoToggleReader = () => { + // Applies a slow class (or removes it) + // to update the transition speed + const slowTransition = (slow) => { + const manageTransition = (id, slow) => { + const el = document.getElementById(id); + if (el) { + if (slow) { + el.classList.add("slow"); + } else { + el.classList.remove("slow"); + } + } + }; + + manageTransition("TOC", slow); + manageTransition("quarto-sidebar", slow); + }; + const readerMode = !isReaderMode(); + setReaderModeValue(readerMode); + + // If we're entering reader mode, slow the transition + if (readerMode) { + slowTransition(readerMode); + } + highlightReaderToggle(readerMode); + hideOverlappedSidebars(); + + // If we're exiting reader mode, restore the non-slow transition + if (!readerMode) { + slowTransition(!readerMode); + } + }; + + const highlightReaderToggle = (readerMode) => { + const els = document.querySelectorAll(".quarto-reader-toggle"); + if (els) { + els.forEach((el) => { + if (readerMode) { + el.classList.add("reader"); + } else { + el.classList.remove("reader"); + } + }); + } + }; + + const setReaderModeValue = (val) => { + if (window.location.protocol !== "file:") { + window.localStorage.setItem("quarto-reader-mode", val); + } else { + localReaderMode = val; + } + }; + + const isReaderMode = () => { + if (window.location.protocol !== "file:") { + return window.localStorage.getItem("quarto-reader-mode") === "true"; + } else { + return localReaderMode; + } + }; + let localReaderMode = null; + + const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded"); + const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1; + + // Walk the TOC and collapse/expand nodes + // Nodes are expanded if: + // - they are top level + // - they have children that are 'active' links + // - they are directly below an link that is 'active' + const walk = (el, depth) => { + // Tick depth when we enter a UL + if (el.tagName === "UL") { + depth = depth + 1; + } + + // It this is active link + let isActiveNode = false; + if (el.tagName === "A" && el.classList.contains("active")) { + isActiveNode = true; + } + + // See if there is an active child to this element + let hasActiveChild = false; + for (child of el.children) { + hasActiveChild = walk(child, depth) || hasActiveChild; + } + + // Process the collapse state if this is an UL + if (el.tagName === "UL") { + if (tocOpenDepth === -1 && depth > 1) { + el.classList.add("collapse"); + } else if ( + depth <= tocOpenDepth || + hasActiveChild || + prevSiblingIsActiveLink(el) + ) { + el.classList.remove("collapse"); + } else { + el.classList.add("collapse"); + } + + // untick depth when we leave a UL + depth = depth - 1; + } + return hasActiveChild || isActiveNode; + }; + + // walk the TOC and expand / collapse any items that should be shown + + if (tocEl) { + walk(tocEl, 0); + updateActiveLink(); + } + + // Throttle the scroll event and walk peridiocally + window.document.addEventListener( + "scroll", + throttle(() => { + if (tocEl) { + updateActiveLink(); + walk(tocEl, 0); + } + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 5) + ); + window.addEventListener( + "resize", + throttle(() => { + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 10) + ); + hideOverlappedSidebars(); + highlightReaderToggle(isReaderMode()); +}); + +// grouped tabsets +window.addEventListener("pageshow", (_event) => { + function getTabSettings() { + const data = localStorage.getItem("quarto-persistent-tabsets-data"); + if (!data) { + localStorage.setItem("quarto-persistent-tabsets-data", "{}"); + return {}; + } + if (data) { + return JSON.parse(data); + } + } + + function setTabSettings(data) { + localStorage.setItem( + "quarto-persistent-tabsets-data", + JSON.stringify(data) + ); + } + + function setTabState(groupName, groupValue) { + const data = getTabSettings(); + data[groupName] = groupValue; + setTabSettings(data); + } + + function toggleTab(tab, active) { + const tabPanelId = tab.getAttribute("aria-controls"); + const tabPanel = document.getElementById(tabPanelId); + if (active) { + tab.classList.add("active"); + tabPanel.classList.add("active"); + } else { + tab.classList.remove("active"); + tabPanel.classList.remove("active"); + } + } + + function toggleAll(selectedGroup, selectorsToSync) { + for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) { + const active = selectedGroup === thisGroup; + for (const tab of tabs) { + toggleTab(tab, active); + } + } + } + + function findSelectorsToSyncByLanguage() { + const result = {}; + const tabs = Array.from( + document.querySelectorAll(`div[data-group] a[id^='tabset-']`) + ); + for (const item of tabs) { + const div = item.parentElement.parentElement.parentElement; + const group = div.getAttribute("data-group"); + if (!result[group]) { + result[group] = {}; + } + const selectorsToSync = result[group]; + const value = item.innerHTML; + if (!selectorsToSync[value]) { + selectorsToSync[value] = []; + } + selectorsToSync[value].push(item); + } + return result; + } + + function setupSelectorSync() { + const selectorsToSync = findSelectorsToSyncByLanguage(); + Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => { + Object.entries(tabSetsByValue).forEach(([value, items]) => { + items.forEach((item) => { + item.addEventListener("click", (_event) => { + setTabState(group, value); + toggleAll(value, selectorsToSync[group]); + }); + }); + }); + }); + return selectorsToSync; + } + + const selectorsToSync = setupSelectorSync(); + for (const [group, selectedName] of Object.entries(getTabSettings())) { + const selectors = selectorsToSync[group]; + // it's possible that stale state gives us empty selections, so we explicitly check here. + if (selectors) { + toggleAll(selectedName, selectors); + } + } +}); + +function throttle(func, wait) { + let waiting = false; + return function () { + if (!waiting) { + func.apply(this, arguments); + waiting = true; + setTimeout(function () { + waiting = false; + }, wait); + } + }; +} + +function nexttick(func) { + return setTimeout(func, 0); +} diff --git a/pr-preview/pr-51/site_libs/quarto-html/tippy.css b/pr-preview/pr-51/site_libs/quarto-html/tippy.css new file mode 100644 index 00000000..e6ae635c --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-html/tippy.css @@ -0,0 +1 @@ +.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} \ No newline at end of file diff --git a/pr-preview/pr-51/site_libs/quarto-html/tippy.umd.min.js b/pr-preview/pr-51/site_libs/quarto-html/tippy.umd.min.js new file mode 100644 index 00000000..ca292be3 --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-html/tippy.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e=e||self).tippy=t(e.Popper)}(this,(function(e){"use strict";var t={passive:!0,capture:!0},n=function(){return document.body};function r(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function o(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function i(e,t){return"function"==typeof e?e.apply(void 0,t):e}function a(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function s(e,t){var n=Object.assign({},e);return t.forEach((function(e){delete n[e]})),n}function u(e){return[].concat(e)}function c(e,t){-1===e.indexOf(t)&&e.push(t)}function p(e){return e.split("-")[0]}function f(e){return[].slice.call(e)}function l(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function d(){return document.createElement("div")}function v(e){return["Element","Fragment"].some((function(t){return o(e,t)}))}function m(e){return o(e,"MouseEvent")}function g(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function h(e){return v(e)?[e]:function(e){return o(e,"NodeList")}(e)?f(e):Array.isArray(e)?e:f(document.querySelectorAll(e))}function b(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function y(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function w(e){var t,n=u(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function E(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function O(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var x={isTouch:!1},C=0;function T(){x.isTouch||(x.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var e=performance.now();e-C<20&&(x.isTouch=!1,document.removeEventListener("mousemove",A)),C=e}function L(){var e=document.activeElement;if(g(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var D=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,R=Object.assign({appendTo:n,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(R);function P(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=R[o])?r:i);return t}),{});return Object.assign({},e,t)}function j(e,t){var n=Object.assign({},t,{content:i(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(P(Object.assign({},R,{plugins:t}))):k).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function M(e,t){e.innerHTML=t}function V(e){var t=d();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",v(e)?t.appendChild(e):M(t,e)),t}function I(e,t){v(t.content)?(M(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?M(e,t.content):e.textContent=t.content)}function S(e){var t=e.firstElementChild,n=f(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function N(e){var t=d(),n=d();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=d();function o(n,r){var o=S(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||I(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(V(r.arrow))):i.appendChild(V(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),I(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}N.$$tippy=!0;var B=1,H=[],U=[];function _(o,s){var v,g,h,C,T,A,L,k,M=j(o,Object.assign({},R,P(l(s)))),V=!1,I=!1,N=!1,_=!1,F=[],W=a(we,M.interactiveDebounce),X=B++,Y=(k=M.plugins).filter((function(e,t){return k.indexOf(e)===t})),$={id:X,reference:o,popper:d(),popperInstance:null,props:M,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:Y,clearDelayTimeouts:function(){clearTimeout(v),clearTimeout(g),cancelAnimationFrame(h)},setProps:function(e){if($.state.isDestroyed)return;ae("onBeforeUpdate",[$,e]),be();var t=$.props,n=j(o,Object.assign({},t,l(e),{ignoreAttributes:!0}));$.props=n,he(),t.interactiveDebounce!==n.interactiveDebounce&&(ce(),W=a(we,n.interactiveDebounce));t.triggerTarget&&!n.triggerTarget?u(t.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):n.triggerTarget&&o.removeAttribute("aria-expanded");ue(),ie(),J&&J(t,n);$.popperInstance&&(Ce(),Ae().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));ae("onAfterUpdate",[$,e])},setContent:function(e){$.setProps({content:e})},show:function(){var e=$.state.isVisible,t=$.state.isDestroyed,o=!$.state.isEnabled,a=x.isTouch&&!$.props.touch,s=r($.props.duration,0,R.duration);if(e||t||o||a)return;if(te().hasAttribute("disabled"))return;if(ae("onShow",[$],!1),!1===$.props.onShow($))return;$.state.isVisible=!0,ee()&&(z.style.visibility="visible");ie(),de(),$.state.isMounted||(z.style.transition="none");if(ee()){var u=re(),p=u.box,f=u.content;b([p,f],0)}A=function(){var e;if($.state.isVisible&&!_){if(_=!0,z.offsetHeight,z.style.transition=$.props.moveTransition,ee()&&$.props.animation){var t=re(),n=t.box,r=t.content;b([n,r],s),y([n,r],"visible")}se(),ue(),c(U,$),null==(e=$.popperInstance)||e.forceUpdate(),ae("onMount",[$]),$.props.animation&&ee()&&function(e,t){me(e,t)}(s,(function(){$.state.isShown=!0,ae("onShown",[$])}))}},function(){var e,t=$.props.appendTo,r=te();e=$.props.interactive&&t===n||"parent"===t?r.parentNode:i(t,[r]);e.contains(z)||e.appendChild(z);$.state.isMounted=!0,Ce()}()},hide:function(){var e=!$.state.isVisible,t=$.state.isDestroyed,n=!$.state.isEnabled,o=r($.props.duration,1,R.duration);if(e||t||n)return;if(ae("onHide",[$],!1),!1===$.props.onHide($))return;$.state.isVisible=!1,$.state.isShown=!1,_=!1,V=!1,ee()&&(z.style.visibility="hidden");if(ce(),ve(),ie(!0),ee()){var i=re(),a=i.box,s=i.content;$.props.animation&&(b([a,s],o),y([a,s],"hidden"))}se(),ue(),$.props.animation?ee()&&function(e,t){me(e,(function(){!$.state.isVisible&&z.parentNode&&z.parentNode.contains(z)&&t()}))}(o,$.unmount):$.unmount()},hideWithInteractivity:function(e){ne().addEventListener("mousemove",W),c(H,W),W(e)},enable:function(){$.state.isEnabled=!0},disable:function(){$.hide(),$.state.isEnabled=!1},unmount:function(){$.state.isVisible&&$.hide();if(!$.state.isMounted)return;Te(),Ae().forEach((function(e){e._tippy.unmount()})),z.parentNode&&z.parentNode.removeChild(z);U=U.filter((function(e){return e!==$})),$.state.isMounted=!1,ae("onHidden",[$])},destroy:function(){if($.state.isDestroyed)return;$.clearDelayTimeouts(),$.unmount(),be(),delete o._tippy,$.state.isDestroyed=!0,ae("onDestroy",[$])}};if(!M.render)return $;var q=M.render($),z=q.popper,J=q.onUpdate;z.setAttribute("data-tippy-root",""),z.id="tippy-"+$.id,$.popper=z,o._tippy=$,z._tippy=$;var G=Y.map((function(e){return e.fn($)})),K=o.hasAttribute("aria-expanded");return he(),ue(),ie(),ae("onCreate",[$]),M.showOnCreate&&Le(),z.addEventListener("mouseenter",(function(){$.props.interactive&&$.state.isVisible&&$.clearDelayTimeouts()})),z.addEventListener("mouseleave",(function(){$.props.interactive&&$.props.trigger.indexOf("mouseenter")>=0&&ne().addEventListener("mousemove",W)})),$;function Q(){var e=$.props.touch;return Array.isArray(e)?e:[e,0]}function Z(){return"hold"===Q()[0]}function ee(){var e;return!(null==(e=$.props.render)||!e.$$tippy)}function te(){return L||o}function ne(){var e=te().parentNode;return e?w(e):document}function re(){return S(z)}function oe(e){return $.state.isMounted&&!$.state.isVisible||x.isTouch||C&&"focus"===C.type?0:r($.props.delay,e?0:1,R.delay)}function ie(e){void 0===e&&(e=!1),z.style.pointerEvents=$.props.interactive&&!e?"":"none",z.style.zIndex=""+$.props.zIndex}function ae(e,t,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=$.props)[e].apply(r,t)}function se(){var e=$.props.aria;if(e.content){var t="aria-"+e.content,n=z.id;u($.props.triggerTarget||o).forEach((function(e){var r=e.getAttribute(t);if($.state.isVisible)e.setAttribute(t,r?r+" "+n:n);else{var o=r&&r.replace(n,"").trim();o?e.setAttribute(t,o):e.removeAttribute(t)}}))}}function ue(){!K&&$.props.aria.expanded&&u($.props.triggerTarget||o).forEach((function(e){$.props.interactive?e.setAttribute("aria-expanded",$.state.isVisible&&e===te()?"true":"false"):e.removeAttribute("aria-expanded")}))}function ce(){ne().removeEventListener("mousemove",W),H=H.filter((function(e){return e!==W}))}function pe(e){if(!x.isTouch||!N&&"mousedown"!==e.type){var t=e.composedPath&&e.composedPath()[0]||e.target;if(!$.props.interactive||!O(z,t)){if(u($.props.triggerTarget||o).some((function(e){return O(e,t)}))){if(x.isTouch)return;if($.state.isVisible&&$.props.trigger.indexOf("click")>=0)return}else ae("onClickOutside",[$,e]);!0===$.props.hideOnClick&&($.clearDelayTimeouts(),$.hide(),I=!0,setTimeout((function(){I=!1})),$.state.isMounted||ve())}}}function fe(){N=!0}function le(){N=!1}function de(){var e=ne();e.addEventListener("mousedown",pe,!0),e.addEventListener("touchend",pe,t),e.addEventListener("touchstart",le,t),e.addEventListener("touchmove",fe,t)}function ve(){var e=ne();e.removeEventListener("mousedown",pe,!0),e.removeEventListener("touchend",pe,t),e.removeEventListener("touchstart",le,t),e.removeEventListener("touchmove",fe,t)}function me(e,t){var n=re().box;function r(e){e.target===n&&(E(n,"remove",r),t())}if(0===e)return t();E(n,"remove",T),E(n,"add",r),T=r}function ge(e,t,n){void 0===n&&(n=!1),u($.props.triggerTarget||o).forEach((function(r){r.addEventListener(e,t,n),F.push({node:r,eventType:e,handler:t,options:n})}))}function he(){var e;Z()&&(ge("touchstart",ye,{passive:!0}),ge("touchend",Ee,{passive:!0})),(e=$.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(ge(e,ye),e){case"mouseenter":ge("mouseleave",Ee);break;case"focus":ge(D?"focusout":"blur",Oe);break;case"focusin":ge("focusout",Oe)}}))}function be(){F.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),F=[]}function ye(e){var t,n=!1;if($.state.isEnabled&&!xe(e)&&!I){var r="focus"===(null==(t=C)?void 0:t.type);C=e,L=e.currentTarget,ue(),!$.state.isVisible&&m(e)&&H.forEach((function(t){return t(e)})),"click"===e.type&&($.props.trigger.indexOf("mouseenter")<0||V)&&!1!==$.props.hideOnClick&&$.state.isVisible?n=!0:Le(e),"click"===e.type&&(V=!n),n&&!r&&De(e)}}function we(e){var t=e.target,n=te().contains(t)||z.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=p(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,c="top"===a?s.bottom.y:0,f="right"===a?s.left.x:0,l="left"===a?s.right.x:0,d=t.top-r+u>i,v=r-t.bottom-c>i,m=t.left-n+f>i,g=n-t.right-l>i;return d||v||m||g}))}(Ae().concat(z).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:M}:null})).filter(Boolean),e)&&(ce(),De(e))}function Ee(e){xe(e)||$.props.trigger.indexOf("click")>=0&&V||($.props.interactive?$.hideWithInteractivity(e):De(e))}function Oe(e){$.props.trigger.indexOf("focusin")<0&&e.target!==te()||$.props.interactive&&e.relatedTarget&&z.contains(e.relatedTarget)||De(e)}function xe(e){return!!x.isTouch&&Z()!==e.type.indexOf("touch")>=0}function Ce(){Te();var t=$.props,n=t.popperOptions,r=t.placement,i=t.offset,a=t.getReferenceClientRect,s=t.moveTransition,u=ee()?S(z).arrow:null,c=a?{getBoundingClientRect:a,contextElement:a.contextElement||te()}:o,p=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(ee()){var n=re().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];ee()&&u&&p.push({name:"arrow",options:{element:u,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),$.popperInstance=e.createPopper(c,z,Object.assign({},n,{placement:r,onFirstUpdate:A,modifiers:p}))}function Te(){$.popperInstance&&($.popperInstance.destroy(),$.popperInstance=null)}function Ae(){return f(z.querySelectorAll("[data-tippy-root]"))}function Le(e){$.clearDelayTimeouts(),e&&ae("onTrigger",[$,e]),de();var t=oe(!0),n=Q(),r=n[0],o=n[1];x.isTouch&&"hold"===r&&o&&(t=o),t?v=setTimeout((function(){$.show()}),t):$.show()}function De(e){if($.clearDelayTimeouts(),ae("onUntrigger",[$,e]),$.state.isVisible){if(!($.props.trigger.indexOf("mouseenter")>=0&&$.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&V)){var t=oe(!1);t?g=setTimeout((function(){$.state.isVisible&&$.hide()}),t):h=requestAnimationFrame((function(){$.hide()}))}}else ve()}}function F(e,n){void 0===n&&(n={});var r=R.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",T,t),window.addEventListener("blur",L);var o=Object.assign({},n,{plugins:r}),i=h(e).reduce((function(e,t){var n=t&&_(t,o);return n&&e.push(n),e}),[]);return v(e)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(e){Object.keys(e).forEach((function(t){R[t]=e[t]}))},F.currentInput=x;var W=Object.assign({},e.applyStyles,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(e){var t;if(null==(t=e.props.render)||!t.$$tippy)return{};var n=S(e.popper),r=n.box,o=n.content,i=e.props.animateFill?function(){var e=d();return e.className="tippy-backdrop",y([e],"hidden"),e}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));o.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y([i],"hidden")}}}};var $={clientX:0,clientY:0},q=[];function z(e){var t=e.clientX,n=e.clientY;$={clientX:t,clientY:n}}var J={name:"followCursor",defaultValue:!1,fn:function(e){var t=e.reference,n=w(e.props.triggerTarget||t),r=!1,o=!1,i=!0,a=e.props;function s(){return"initial"===e.props.followCursor&&e.state.isVisible}function u(){n.addEventListener("mousemove",f)}function c(){n.removeEventListener("mousemove",f)}function p(){r=!0,e.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||t.contains(n.target),o=e.props.followCursor,i=n.clientX,a=n.clientY,s=t.getBoundingClientRect(),u=i-s.left,c=a-s.top;!r&&e.props.interactive||e.setProps({getReferenceClientRect:function(){var e=t.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=e.left+u,r=e.top+c);var s="horizontal"===o?e.top:r,p="vertical"===o?e.right:n,f="horizontal"===o?e.bottom:r,l="vertical"===o?e.left:n;return{width:p-l,height:f-s,top:s,right:p,bottom:f,left:l}}})}function l(){e.props.followCursor&&(q.push({instance:e,doc:n}),function(e){e.addEventListener("mousemove",z)}(n))}function d(){0===(q=q.filter((function(t){return t.instance!==e}))).filter((function(e){return e.doc===n})).length&&function(e){e.removeEventListener("mousemove",z)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=e.props},onAfterUpdate:function(t,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!e.state.isMounted||o||s()||u()):(c(),p()))},onMount:function(){e.props.followCursor&&!o&&(i&&(f($),i=!1),s()||u())},onTrigger:function(e,t){m(t)&&($={clientX:t.clientX,clientY:t.clientY}),o="focus"===t.type},onHidden:function(){e.props.followCursor&&(p(),c(),i=!0)}}}};var G={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t,n=e.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;e.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),t!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),e.setProps({getReferenceClientRect:function(){return function(e){return function(e,t,n,r){if(n.length<2||null===e)return t;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===e,s=o.top,u=i.bottom,c=a?o.left:i.left,p=a?o.right:i.right;return{top:s,bottom:u,left:c,right:p,width:p-c,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(e){return e.left}))),l=Math.max.apply(Math,n.map((function(e){return e.right}))),d=n.filter((function(t){return"left"===e?t.left===f:t.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return t}}(p(e),n.getBoundingClientRect(),f(n.getClientRects()),r)}(a.placement)}})),t=a.placement)}};function s(){var t;o||(t=function(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat(((null==(n=e.popperOptions)?void 0:n.modifiers)||[]).filter((function(e){return e.name!==t.name})),[t])})}}(e.props,a),o=!0,e.setProps(t),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(t,n){if(m(n)){var o=f(e.reference.getClientRects()),i=o.find((function(e){return e.left-2<=n.clientX&&e.right+2>=n.clientX&&e.top-2<=n.clientY&&e.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var K={name:"sticky",defaultValue:!1,fn:function(e){var t=e.reference,n=e.popper;function r(t){return!0===e.props.sticky||e.props.sticky===t}var o=null,i=null;function a(){var s=r("reference")?(e.popperInstance?e.popperInstance.state.elements.reference:t).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Q(o,s)||u&&Q(i,u))&&e.popperInstance&&e.popperInstance.update(),o=s,i=u,e.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){e.props.sticky&&a()}}}};function Q(e,t){return!e||!t||(e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left)}return F.setDefaultProps({plugins:[Y,J,G,K],render:N}),F.createSingleton=function(e,t){var n;void 0===t&&(t={});var r,o=e,i=[],a=[],c=t.overrides,p=[],f=!1;function l(){a=o.map((function(e){return u(e.props.triggerTarget||e.reference)})).reduce((function(e,t){return e.concat(t)}),[])}function v(){i=o.map((function(e){return e.reference}))}function m(e){o.forEach((function(t){e?t.enable():t.disable()}))}function g(e){return o.map((function(t){var n=t.setProps;return t.setProps=function(o){n(o),t.reference===r&&e.setProps(o)},function(){t.setProps=n}}))}function h(e,t){var n=a.indexOf(t);if(t!==r){r=t;var s=(c||[]).concat("content").reduce((function(e,t){return e[t]=o[n].props[t],e}),{});e.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){var e;return null==(e=i[n])?void 0:e.getBoundingClientRect()}}))}}m(!1),v(),l();var b={fn:function(){return{onDestroy:function(){m(!0)},onHidden:function(){r=null},onClickOutside:function(e){e.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(e){e.props.showOnCreate&&!f&&(f=!0,h(e,i[0]))},onTrigger:function(e,t){h(e,t.currentTarget)}}}},y=F(d(),Object.assign({},s(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(n=t.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(e){if(w(),!r&&null==e)return h(y,i[0]);if(!r||null!=e){if("number"==typeof e)return i[e]&&h(y,i[e]);if(o.indexOf(e)>=0){var t=e.reference;return h(y,t)}return i.indexOf(e)>=0?h(y,e):void 0}},y.showNext=function(){var e=i[0];if(!r)return y.show(0);var t=i.indexOf(r);y.show(i[t+1]||e)},y.showPrevious=function(){var e=i[i.length-1];if(!r)return y.show(e);var t=i.indexOf(r),n=i[t-1]||e;y.show(n)};var E=y.setProps;return y.setProps=function(e){c=e.overrides||c,E(e)},y.setInstances=function(e){m(!0),p.forEach((function(e){return e()})),o=e,m(!1),v(),l(),p=g(y),y.setProps({triggerTarget:a})},p=g(y),y},F.delegate=function(e,n){var r=[],o=[],i=!1,a=n.target,c=s(n,["target"]),p=Object.assign({},c,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},c,{showOnCreate:!0}),l=F(e,p);function d(e){if(e.target&&!i){var t=e.target.closest(a);if(t){var r=t.getAttribute("data-tippy-trigger")||n.trigger||R.trigger;if(!t._tippy&&!("touchstart"===e.type&&"boolean"==typeof f.touch||"touchstart"!==e.type&&r.indexOf(X[e.type])<0)){var s=F(t,f);s&&(o=o.concat(s))}}}}function v(e,t,n,o){void 0===o&&(o=!1),e.addEventListener(t,n,o),r.push({node:e,eventType:t,handler:n,options:o})}return u(l).forEach((function(e){var n=e.destroy,a=e.enable,s=e.disable;e.destroy=function(e){void 0===e&&(e=!0),e&&o.forEach((function(e){e.destroy()})),o=[],r.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),r=[],n()},e.enable=function(){a(),o.forEach((function(e){return e.enable()})),i=!1},e.disable=function(){s(),o.forEach((function(e){return e.disable()})),i=!0},function(e){var n=e.reference;v(n,"touchstart",d,t),v(n,"mouseover",d),v(n,"focusin",d),v(n,"click",d)}(e)})),l},F.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;U.forEach((function(e){var t=!1;if(n&&(t=g(n)?e.reference===n:e.popper===n.popper),!t){var o=e.props.duration;e.setProps({duration:r}),e.hide(),e.state.isDestroyed||e.setProps({duration:o})}}))},F.roundArrow='',F})); + diff --git a/pr-preview/pr-51/site_libs/quarto-listing/list.min.js b/pr-preview/pr-51/site_libs/quarto-listing/list.min.js new file mode 100644 index 00000000..81318815 --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-listing/list.min.js @@ -0,0 +1,2 @@ +var List;List=function(){var t={"./src/add-async.js":function(t){t.exports=function(t){return function e(r,n,s){var i=r.splice(0,50);s=(s=s||[]).concat(t.add(i)),r.length>0?setTimeout((function(){e(r,n,s)}),1):(t.update(),n(s))}}},"./src/filter.js":function(t){t.exports=function(t){return t.handlers.filterStart=t.handlers.filterStart||[],t.handlers.filterComplete=t.handlers.filterComplete||[],function(e){if(t.trigger("filterStart"),t.i=1,t.reset.filter(),void 0===e)t.filtered=!1;else{t.filtered=!0;for(var r=t.items,n=0,s=r.length;nv.page,a=new g(t[s],void 0,n),v.items.push(a),r.push(a)}return v.update(),r}m(t.slice(0),e)}},this.show=function(t,e){return this.i=t,this.page=e,v.update(),v},this.remove=function(t,e,r){for(var n=0,s=0,i=v.items.length;s-1&&r.splice(n,1),v},this.trigger=function(t){for(var e=v.handlers[t].length;e--;)v.handlers[t][e](v);return v},this.reset={filter:function(){for(var t=v.items,e=t.length;e--;)t[e].filtered=!1;return v},search:function(){for(var t=v.items,e=t.length;e--;)t[e].found=!1;return v}},this.update=function(){var t=v.items,e=t.length;v.visibleItems=[],v.matchingItems=[],v.templater.clear();for(var r=0;r=v.i&&v.visibleItems.lengthe},innerWindow:function(t,e,r){return t>=e-r&&t<=e+r},dotted:function(t,e,r,n,s,i,a){return this.dottedLeft(t,e,r,n,s,i)||this.dottedRight(t,e,r,n,s,i,a)},dottedLeft:function(t,e,r,n,s,i){return e==r+1&&!this.innerWindow(e,s,i)&&!this.right(e,n)},dottedRight:function(t,e,r,n,s,i,a){return!t.items[a-1].values().dotted&&(e==n&&!this.innerWindow(e,s,i)&&!this.right(e,n))}};return function(e){var n=new i(t.listContainer.id,{listClass:e.paginationClass||"pagination",item:e.item||"
",valueNames:["page","dotted"],searchClass:"pagination-search-that-is-not-supposed-to-exist",sortClass:"pagination-sort-that-is-not-supposed-to-exist"});s.bind(n.listContainer,"click",(function(e){var r=e.target||e.srcElement,n=t.utils.getAttribute(r,"data-page"),s=t.utils.getAttribute(r,"data-i");s&&t.show((s-1)*n+1,n)})),t.on("updated",(function(){r(n,e)})),r(n,e)}}},"./src/parse.js":function(t,e,r){t.exports=function(t){var e=r("./src/item.js")(t),n=function(r,n){for(var s=0,i=r.length;s0?setTimeout((function(){e(r,s)}),1):(t.update(),t.trigger("parseComplete"))};return t.handlers.parseComplete=t.handlers.parseComplete||[],function(){var e=function(t){for(var e=t.childNodes,r=[],n=0,s=e.length;n]/g.exec(t)){var e=document.createElement("tbody");return e.innerHTML=t,e.firstElementChild}if(-1!==t.indexOf("<")){var r=document.createElement("div");return r.innerHTML=t,r.firstElementChild}}},a=function(e,r,n){var s=void 0,i=function(e){for(var r=0,n=t.valueNames.length;r=1;)t.list.removeChild(t.list.firstChild)},function(){var r;if("function"!=typeof t.item){if(!(r="string"==typeof t.item?-1===t.item.indexOf("<")?document.getElementById(t.item):i(t.item):s()))throw new Error("The list needs to have at least one item on init otherwise you'll have to add a template.");r=n(r,t.valueNames),e=function(){return r.cloneNode(!0)}}else e=function(e){var r=t.item(e);return i(r)}}()};t.exports=function(t){return new e(t)}},"./src/utils/classes.js":function(t,e,r){var n=r("./src/utils/index-of.js"),s=/\s+/;Object.prototype.toString;function i(t){if(!t||!t.nodeType)throw new Error("A DOM element reference is required");this.el=t,this.list=t.classList}t.exports=function(t){return new i(t)},i.prototype.add=function(t){if(this.list)return this.list.add(t),this;var e=this.array();return~n(e,t)||e.push(t),this.el.className=e.join(" "),this},i.prototype.remove=function(t){if(this.list)return this.list.remove(t),this;var e=this.array(),r=n(e,t);return~r&&e.splice(r,1),this.el.className=e.join(" "),this},i.prototype.toggle=function(t,e){return this.list?(void 0!==e?e!==this.list.toggle(t,e)&&this.list.toggle(t):this.list.toggle(t),this):(void 0!==e?e?this.add(t):this.remove(t):this.has(t)?this.remove(t):this.add(t),this)},i.prototype.array=function(){var t=(this.el.getAttribute("class")||"").replace(/^\s+|\s+$/g,"").split(s);return""===t[0]&&t.shift(),t},i.prototype.has=i.prototype.contains=function(t){return this.list?this.list.contains(t):!!~n(this.array(),t)}},"./src/utils/events.js":function(t,e,r){var n=window.addEventListener?"addEventListener":"attachEvent",s=window.removeEventListener?"removeEventListener":"detachEvent",i="addEventListener"!==n?"on":"",a=r("./src/utils/to-array.js");e.bind=function(t,e,r,s){for(var o=0,l=(t=a(t)).length;o32)return!1;var a=n,o=function(){var t,r={};for(t=0;t=p;b--){var j=o[t.charAt(b-1)];if(C[b]=0===m?(C[b+1]<<1|1)&j:(C[b+1]<<1|1)&j|(v[b+1]|v[b])<<1|1|v[b+1],C[b]&d){var x=l(m,b-1);if(x<=u){if(u=x,!((c=b-1)>a))break;p=Math.max(1,2*a-c)}}}if(l(m+1,a)>u)break;v=C}return!(c<0)}},"./src/utils/get-attribute.js":function(t){t.exports=function(t,e){var r=t.getAttribute&&t.getAttribute(e)||null;if(!r)for(var n=t.attributes,s=n.length,i=0;i=48&&t<=57}function i(t,e){for(var i=(t+="").length,a=(e+="").length,o=0,l=0;o=i&&l=a?-1:l>=a&&o=i?1:i-a}i.caseInsensitive=i.i=function(t,e){return i((""+t).toLowerCase(),(""+e).toLowerCase())},Object.defineProperties(i,{alphabet:{get:function(){return e},set:function(t){r=[];var s=0;if(e=t)for(;s { + if (categoriesLoaded) { + activateCategory(category); + setCategoryHash(category); + } +}; + +window["quarto-listing-loaded"] = () => { + // Process any existing hash + const hash = getHash(); + + if (hash) { + // If there is a category, switch to that + if (hash.category) { + activateCategory(hash.category); + } + // Paginate a specific listing + const listingIds = Object.keys(window["quarto-listings"]); + for (const listingId of listingIds) { + const page = hash[getListingPageKey(listingId)]; + if (page) { + showPage(listingId, page); + } + } + } + + const listingIds = Object.keys(window["quarto-listings"]); + for (const listingId of listingIds) { + // The actual list + const list = window["quarto-listings"][listingId]; + + // Update the handlers for pagination events + refreshPaginationHandlers(listingId); + + // Render any visible items that need it + renderVisibleProgressiveImages(list); + + // Whenever the list is updated, we also need to + // attach handlers to the new pagination elements + // and refresh any newly visible items. + list.on("updated", function () { + renderVisibleProgressiveImages(list); + setTimeout(() => refreshPaginationHandlers(listingId)); + + // Show or hide the no matching message + toggleNoMatchingMessage(list); + }); + } +}; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Attach click handlers to categories + const categoryEls = window.document.querySelectorAll( + ".quarto-listing-category .category" + ); + + for (const categoryEl of categoryEls) { + const category = categoryEl.getAttribute("data-category"); + categoryEl.onclick = () => { + activateCategory(category); + setCategoryHash(category); + }; + } + + // Attach a click handler to the category title + // (there should be only one, but since it is a class name, handle N) + const categoryTitleEls = window.document.querySelectorAll( + ".quarto-listing-category-title" + ); + for (const categoryTitleEl of categoryTitleEls) { + categoryTitleEl.onclick = () => { + activateCategory(""); + setCategoryHash(""); + }; + } + + categoriesLoaded = true; +}); + +function toggleNoMatchingMessage(list) { + const selector = `#${list.listContainer.id} .listing-no-matching`; + const noMatchingEl = window.document.querySelector(selector); + if (noMatchingEl) { + if (list.visibleItems.length === 0) { + noMatchingEl.classList.remove("d-none"); + } else { + if (!noMatchingEl.classList.contains("d-none")) { + noMatchingEl.classList.add("d-none"); + } + } + } +} + +function setCategoryHash(category) { + setHash({ category }); +} + +function setPageHash(listingId, page) { + const currentHash = getHash() || {}; + currentHash[getListingPageKey(listingId)] = page; + setHash(currentHash); +} + +function getListingPageKey(listingId) { + return `${listingId}-page`; +} + +function refreshPaginationHandlers(listingId) { + const listingEl = window.document.getElementById(listingId); + const paginationEls = listingEl.querySelectorAll( + ".pagination li.page-item:not(.disabled) .page.page-link" + ); + for (const paginationEl of paginationEls) { + paginationEl.onclick = (sender) => { + setPageHash(listingId, sender.target.getAttribute("data-i")); + showPage(listingId, sender.target.getAttribute("data-i")); + return false; + }; + } +} + +function renderVisibleProgressiveImages(list) { + // Run through the visible items and render any progressive images + for (const item of list.visibleItems) { + const itemEl = item.elm; + if (itemEl) { + const progressiveImgs = itemEl.querySelectorAll( + `img[${kProgressiveAttr}]` + ); + for (const progressiveImg of progressiveImgs) { + const srcValue = progressiveImg.getAttribute(kProgressiveAttr); + if (srcValue) { + progressiveImg.setAttribute("src", srcValue); + } + progressiveImg.removeAttribute(kProgressiveAttr); + } + } + } +} + +function getHash() { + // Hashes are of the form + // #name:value|name1:value1|name2:value2 + const currentUrl = new URL(window.location); + const hashRaw = currentUrl.hash ? currentUrl.hash.slice(1) : undefined; + return parseHash(hashRaw); +} + +const kAnd = "&"; +const kEquals = "="; + +function parseHash(hash) { + if (!hash) { + return undefined; + } + const hasValuesStrs = hash.split(kAnd); + const hashValues = hasValuesStrs + .map((hashValueStr) => { + const vals = hashValueStr.split(kEquals); + if (vals.length === 2) { + return { name: vals[0], value: vals[1] }; + } else { + return undefined; + } + }) + .filter((value) => { + return value !== undefined; + }); + + const hashObj = {}; + hashValues.forEach((hashValue) => { + hashObj[hashValue.name] = decodeURIComponent(hashValue.value); + }); + return hashObj; +} + +function makeHash(obj) { + return Object.keys(obj) + .map((key) => { + return `${key}${kEquals}${obj[key]}`; + }) + .join(kAnd); +} + +function setHash(obj) { + const hash = makeHash(obj); + window.history.pushState(null, null, `#${hash}`); +} + +function showPage(listingId, page) { + const list = window["quarto-listings"][listingId]; + if (list) { + list.show((page - 1) * list.page + 1, list.page); + } +} + +function activateCategory(category) { + // Deactivate existing categories + const activeEls = window.document.querySelectorAll( + ".quarto-listing-category .category.active" + ); + for (const activeEl of activeEls) { + activeEl.classList.remove("active"); + } + + // Activate this category + const categoryEl = window.document.querySelector( + `.quarto-listing-category .category[data-category='${category}'` + ); + if (categoryEl) { + categoryEl.classList.add("active"); + } + + // Filter the listings to this category + filterListingCategory(category); +} + +function filterListingCategory(category) { + const listingIds = Object.keys(window["quarto-listings"]); + for (const listingId of listingIds) { + const list = window["quarto-listings"][listingId]; + if (list) { + if (category === "") { + // resets the filter + list.filter(); + } else { + // filter to this category + list.filter(function (item) { + const itemValues = item.values(); + if (itemValues.categories !== null) { + const categories = itemValues.categories.split(","); + return categories.includes(category); + } else { + return false; + } + }); + } + } + } +} diff --git a/pr-preview/pr-51/site_libs/quarto-nav/headroom.min.js b/pr-preview/pr-51/site_libs/quarto-nav/headroom.min.js new file mode 100644 index 00000000..b08f1dff --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-nav/headroom.min.js @@ -0,0 +1,7 @@ +/*! + * headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it + * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js + * License: MIT + */ + +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=ls.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t){return t===Object(t)?t:{down:t,up:t}}function s(t,n){n=n||{},Object.assign(this,s.options,n),this.classes=Object.assign({},s.options.classes,n.classes),this.elem=t,this.tolerance=o(this.tolerance),this.offset=o(this.offset),this.initialised=!1,this.frozen=!1}return s.prototype={constructor:s,init:function(){return s.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},s.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},s.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),s}); diff --git a/pr-preview/pr-51/site_libs/quarto-nav/quarto-nav.js b/pr-preview/pr-51/site_libs/quarto-nav/quarto-nav.js new file mode 100644 index 00000000..6221d4b5 --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-nav/quarto-nav.js @@ -0,0 +1,277 @@ +const headroomChanged = new CustomEvent("quarto-hrChanged", { + detail: {}, + bubbles: true, + cancelable: false, + composed: false, +}); + +window.document.addEventListener("DOMContentLoaded", function () { + let init = false; + + // Manage the back to top button, if one is present. + let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop; + const scrollDownBuffer = 5; + const scrollUpBuffer = 35; + const btn = document.getElementById("quarto-back-to-top"); + const hideBackToTop = () => { + btn.style.display = "none"; + }; + const showBackToTop = () => { + btn.style.display = "inline-block"; + }; + if (btn) { + window.document.addEventListener( + "scroll", + function () { + const currentScrollTop = + window.pageYOffset || document.documentElement.scrollTop; + + // Shows and hides the button 'intelligently' as the user scrolls + if (currentScrollTop - scrollDownBuffer > lastScrollTop) { + hideBackToTop(); + lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; + } else if (currentScrollTop < lastScrollTop - scrollUpBuffer) { + showBackToTop(); + lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; + } + + // Show the button at the bottom, hides it at the top + if (currentScrollTop <= 0) { + hideBackToTop(); + } else if ( + window.innerHeight + currentScrollTop >= + document.body.offsetHeight + ) { + showBackToTop(); + } + }, + false + ); + } + + function throttle(func, wait) { + var timeout; + return function () { + const context = this; + const args = arguments; + const later = function () { + clearTimeout(timeout); + timeout = null; + func.apply(context, args); + }; + + if (!timeout) { + timeout = setTimeout(later, wait); + } + }; + } + + function headerOffset() { + // Set an offset if there is are fixed top navbar + const headerEl = window.document.querySelector("header.fixed-top"); + if (headerEl) { + return headerEl.clientHeight; + } else { + return 0; + } + } + + function footerOffset() { + const footerEl = window.document.querySelector("footer.footer"); + if (footerEl) { + return footerEl.clientHeight; + } else { + return 0; + } + } + + function updateDocumentOffsetWithoutAnimation() { + updateDocumentOffset(false); + } + + function updateDocumentOffset(animated) { + // set body offset + const topOffset = headerOffset(); + const bodyOffset = topOffset + footerOffset(); + const bodyEl = window.document.body; + bodyEl.setAttribute("data-bs-offset", topOffset); + bodyEl.style.paddingTop = topOffset + "px"; + + // deal with sidebar offsets + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + if (!animated) { + sidebar.classList.add("notransition"); + // Remove the no transition class after the animation has time to complete + setTimeout(function () { + sidebar.classList.remove("notransition"); + }, 201); + } + + if (window.Headroom && sidebar.classList.contains("sidebar-unpinned")) { + sidebar.style.top = "0"; + sidebar.style.maxHeight = "100vh"; + } else { + sidebar.style.top = topOffset + "px"; + sidebar.style.maxHeight = "calc(100vh - " + topOffset + "px)"; + } + }); + + // allow space for footer + const mainContainer = window.document.querySelector(".quarto-container"); + if (mainContainer) { + mainContainer.style.minHeight = "calc(100vh - " + bodyOffset + "px)"; + } + + // link offset + let linkStyle = window.document.querySelector("#quarto-target-style"); + if (!linkStyle) { + linkStyle = window.document.createElement("style"); + linkStyle.setAttribute("id", "quarto-target-style"); + window.document.head.appendChild(linkStyle); + } + while (linkStyle.firstChild) { + linkStyle.removeChild(linkStyle.firstChild); + } + if (topOffset > 0) { + linkStyle.appendChild( + window.document.createTextNode(` + section:target::before { + content: ""; + display: block; + height: ${topOffset}px; + margin: -${topOffset}px 0 0; + }`) + ); + } + if (init) { + window.dispatchEvent(headroomChanged); + } + init = true; + } + + // initialize headroom + var header = window.document.querySelector("#quarto-header"); + if (header && window.Headroom) { + const headroom = new window.Headroom(header, { + tolerance: 5, + onPin: function () { + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + sidebar.classList.remove("sidebar-unpinned"); + }); + updateDocumentOffset(); + }, + onUnpin: function () { + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + sidebar.classList.add("sidebar-unpinned"); + }); + updateDocumentOffset(); + }, + }); + headroom.init(); + + let frozen = false; + window.quartoToggleHeadroom = function () { + if (frozen) { + headroom.unfreeze(); + frozen = false; + } else { + headroom.freeze(); + frozen = true; + } + }; + } + + window.addEventListener( + "hashchange", + function (e) { + if ( + getComputedStyle(document.documentElement).scrollBehavior !== "smooth" + ) { + window.scrollTo(0, window.pageYOffset - headerOffset()); + } + }, + false + ); + + // Observe size changed for the header + const headerEl = window.document.querySelector("header.fixed-top"); + if (headerEl && window.ResizeObserver) { + const observer = new window.ResizeObserver(() => { + setTimeout(updateDocumentOffsetWithoutAnimation, 0); + }); + observer.observe(headerEl, { + attributes: true, + childList: true, + characterData: true, + }); + } else { + window.addEventListener( + "resize", + throttle(updateDocumentOffsetWithoutAnimation, 50) + ); + } + setTimeout(updateDocumentOffsetWithoutAnimation, 250); + + // fixup index.html links if we aren't on the filesystem + if (window.location.protocol !== "file:") { + const links = window.document.querySelectorAll("a"); + for (let i = 0; i < links.length; i++) { + if (links[i].href) { + links[i].href = links[i].href.replace(/\/index\.html/, "/"); + } + } + + // Fixup any sharing links that require urls + // Append url to any sharing urls + const sharingLinks = window.document.querySelectorAll( + "a.sidebar-tools-main-item, a.quarto-navigation-tool, a.quarto-navbar-tools, a.quarto-navbar-tools-item" + ); + for (let i = 0; i < sharingLinks.length; i++) { + const sharingLink = sharingLinks[i]; + const href = sharingLink.getAttribute("href"); + if (href) { + sharingLink.setAttribute( + "href", + href.replace("|url|", window.location.href) + ); + } + } + + // Scroll the active navigation item into view, if necessary + const navSidebar = window.document.querySelector("nav#quarto-sidebar"); + if (navSidebar) { + // Find the active item + const activeItem = navSidebar.querySelector("li.sidebar-item a.active"); + if (activeItem) { + // Wait for the scroll height and height to resolve by observing size changes on the + // nav element that is scrollable + const resizeObserver = new ResizeObserver((_entries) => { + // The bottom of the element + const elBottom = activeItem.offsetTop; + const viewBottom = navSidebar.scrollTop + navSidebar.clientHeight; + + // The element height and scroll height are the same, then we are still loading + if (viewBottom !== navSidebar.scrollHeight) { + // Determine if the item isn't visible and scroll to it + if (elBottom >= viewBottom) { + navSidebar.scrollTop = elBottom; + } + + // stop observing now since we've completed the scroll + resizeObserver.unobserve(navSidebar); + } + }); + resizeObserver.observe(navSidebar); + } + } + } +}); diff --git a/pr-preview/pr-51/site_libs/quarto-search/autocomplete.umd.js b/pr-preview/pr-51/site_libs/quarto-search/autocomplete.umd.js new file mode 100644 index 00000000..2cb1a857 --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-search/autocomplete.umd.js @@ -0,0 +1,3 @@ +/*! @algolia/autocomplete-js 1.9.2 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-js"]={})}(this,(function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e){for(var n=1;n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,u,a=[],c=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(a.push(r.value),a.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=n.return&&(u=n.return(),Object(u)!==u))return}finally{if(l)throw o}}return a}}(e,t)||l(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function x(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function N(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:20,n=[],r=0;r=3||2===n&&r>=4||1===n&&r>=10);function i(t,n,r){if(o&&void 0!==r){var i=r[0].__autocomplete_algoliaCredentials,u={"X-Algolia-Application-Id":i.appId,"X-Algolia-API-Key":i.apiKey};e.apply(void 0,[t].concat(D(n),[{headers:u}]))}else e.apply(void 0,[t].concat(D(n)))}return{init:function(t,n){e("init",{appId:t,apiKey:n})},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("clickedObjectIDsAfterSearch",R(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("clickedObjectIDs",R(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["clickedFilters"].concat(n))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("convertedObjectIDsAfterSearch",R(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("convertedObjectIDs",R(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["convertedFilters"].concat(n))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&t.reduce((function(e,t){var n=t.items,r=k(t,E);return[].concat(D(e),D(q(N(N({},r),{},{objectIDs:(null==n?void 0:n.map((function(e){return e.objectID})))||r.objectIDs})).map((function(e){return{items:n,payload:e}}))))}),[]).forEach((function(e){var t=e.items;return i("viewedObjectIDs",[e.payload],t)}))},viewedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["viewedFilters"].concat(n))}}}function F(e){var t=e.items.reduce((function(e,t){var n;return e[t.__autocomplete_indexName]=(null!==(n=e[t.__autocomplete_indexName])&&void 0!==n?n:[]).concat(t),e}),{});return Object.keys(t).map((function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}}))}function L(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function U(e){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},U(e)}function M(e){return function(e){if(Array.isArray(e))return H(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return H(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&z({onItemsChange:r,items:n,insights:a,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,n=e.onSelect,r=e.onActive;u("addAlgoliaAgent","insights-plugin"),t({algoliaInsightsPlugin:{__algoliaSearchParameters:{clickAnalytics:!0},insights:a}}),n((function(e){var t=e.item,n=e.state,r=e.event;L(t)&&o({state:n,event:r,insights:a,item:t,insightsEvents:[W({eventName:"Item Selected"},j({item:t,items:c.current}))]})})),r((function(e){var t=e.item,n=e.state,r=e.event;L(t)&&i({state:n,event:r,insights:a,item:t,insightsEvents:[W({eventName:"Item Active"},j({item:t,items:c.current}))]})}))},onStateChange:function(e){var t=e.state;l({state:t})},__autocomplete_pluginOptions:e}}function J(e,t){var n=t;return{then:function(t,r){return J(e.then(Y(t,n,e),Y(r,n,e)),n)},catch:function(t){return J(e.catch(Y(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),J(e.finally(Y(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function X(e){return J(e,{isCanceled:!1,onCancelList:[]})}function Y(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function Z(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}function ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function te(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:d(),plugins:o,initialState:Se({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(he(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:O,onResolve:O};Object.keys(t).forEach((function(e){t[e].__default=!0}));var r=te(te({},t),e);return Promise.resolve(r)})))}))}(e,n)}))).then((function(e){return m(e)})).then((function(e){return e.map((function(e){return Se(Se({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))},onResolve:function(n){e.onResolve(n),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:Se({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}function we(e){return we="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},we(e)}function Ie(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ee(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Qe,Ke,$e,ze=null,Ge=(Qe=-1,Ke=-1,$e=void 0,function(e){var t=++Qe;return Promise.resolve(e).then((function(e){return $e&&t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function rt(e){return rt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},rt(e)}var ot=["props","refresh","store"],it=["inputElement","formElement","panelElement"],ut=["inputElement"],at=["inputElement","maxLength"],ct=["sourceIndex"],lt=["sourceIndex"],st=["item","source","sourceIndex"];function ft(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pt(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function dt(e){var t=e.props,n=e.refresh,r=e.store,o=vt(e,ot),i=function(e,t){return void 0!==t?"".concat(e,"-").concat(t):e};return{getEnvironmentProps:function(e){var n=e.inputElement,o=e.formElement,i=e.panelElement;function u(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[o,i].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return pt({onTouchStart:u,onMouseDown:u,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},vt(e,it))},getRootProps:function(e){return pt({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){return e.inputElement,pt({action:"",noValidate:!0,role:"search",onSubmit:function(i){var u;i.preventDefault(),t.onSubmit(pt({event:i,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),null===(u=e.inputElement)||void 0===u||u.blur()},onReset:function(i){var u;i.preventDefault(),t.onReset(pt({event:i,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),null===(u=e.inputElement)||void 0===u||u.focus()}},vt(e,ut))},getLabelProps:function(e){var n=e||{},r=n.sourceIndex,o=vt(n,ct);return pt({htmlFor:"".concat(i(t.id,r),"-input"),id:"".concat(i(t.id,r),"-label")},o)},getInputProps:function(e){var i;function u(e){(t.openOnFocus||Boolean(r.getState().query))&&Je(pt({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var a=e||{};a.inputElement;var c=a.maxLength,l=void 0===c?512:c,s=vt(a,at),f=oe(r.getState()),p=function(e){return Boolean(e&&e.match(ie))}((null===(i=t.environment.navigator)||void 0===i?void 0:i.userAgent)||""),m=null!=f&&f.itemUrl&&!p?"go":"search";return pt({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:m,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:l,type:"search",onChange:function(e){Je(pt({event:e,props:t,query:e.currentTarget.value.slice(0,l),refresh:n,store:r},o))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,o=e.store,i=nt(e,Ye);if("ArrowUp"===t.key||"ArrowDown"===t.key){var u=function(){var e=n.environment.document.getElementById("".concat(n.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},a=function(){var e=oe(o.getState());if(null!==o.getState().activeItemId&&e){var n=e.item,u=e.itemInputValue,a=e.itemUrl,c=e.source;c.onActive(et({event:t,item:n,itemInputValue:u,itemUrl:a,refresh:r,source:c,state:o.getState()},i))}};t.preventDefault(),!1===o.getState().isOpen&&(n.openOnFocus||Boolean(o.getState().query))?Je(et({event:t,props:n,query:o.getState().query,refresh:r,store:o},i)).then((function(){o.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),a(),setTimeout(u,0)})):(o.dispatch(t.key,{}),a(),u())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||o.pendingRequests.cancelAll());t.preventDefault();var c=oe(o.getState()),l=c.item,s=c.itemInputValue,f=c.itemUrl,p=c.source;if(t.metaKey||t.ctrlKey)void 0!==f&&(p.onSelect(et({event:t,item:l,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i)),n.navigator.navigateNewTab({itemUrl:f,item:l,state:o.getState()}));else if(t.shiftKey)void 0!==f&&(p.onSelect(et({event:t,item:l,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i)),n.navigator.navigateNewWindow({itemUrl:f,item:l,state:o.getState()}));else if(t.altKey);else{if(void 0!==f)return p.onSelect(et({event:t,item:l,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i)),void n.navigator.navigate({itemUrl:f,item:l,state:o.getState()});Je(et({event:t,nextState:{isOpen:!1},props:n,query:s,refresh:r,store:o},i)).then((function(){p.onSelect(et({event:t,item:l,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i))}))}}}(pt({event:e,props:t,refresh:n,store:r},o))},onFocus:u,onBlur:O,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||u(n)}},s)},getPanelProps:function(e){return pt({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){var n=e||{},r=n.sourceIndex,o=vt(n,lt);return pt({role:"listbox","aria-labelledby":"".concat(i(t.id,r),"-label"),id:"".concat(i(t.id,r),"-list")},o)},getItemProps:function(e){var u=e.item,a=e.source,c=e.sourceIndex,l=vt(e,st);return pt({id:"".concat(i(t.id,c),"-item-").concat(u.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===u.__autocomplete_id,onMouseMove:function(e){if(u.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",u.__autocomplete_id);var t=oe(r.getState());if(null!==r.getState().activeItemId&&t){var i=t.item,a=t.itemInputValue,c=t.itemUrl,l=t.source;l.onActive(pt({event:e,item:i,itemInputValue:a,itemUrl:c,refresh:n,source:l,state:r.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=a.getItemInputValue({item:u,state:r.getState()}),c=a.getItemUrl({item:u,state:r.getState()});(c?Promise.resolve():Je(pt({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:n,store:r},o))).then((function(){a.onSelect(pt({event:e,item:u,itemInputValue:i,itemUrl:c,refresh:n,source:a,state:r.getState()},o))}))}},l)}}}function yt(e){return yt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},yt(e)}function bt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function gt(e){for(var t=1;t=5&&((o||!e&&5===r)&&(u.push(r,0,o,n),r=6),e&&(u.push(r,e,0,n),r=6)),o=""},c=0;c"===t?(r=1,o=""):o=t+o[0]:i?t===i?i="":o+=t:'"'===t||"'"===t?i=t:">"===t?(a(),r=1):r&&("="===t?(r=5,n=o,o=""):"/"===t&&(r<5||">"===e[c][l+1])?(a(),3===r&&(u=u[0]),r=u,(u=u[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(a(),r=2):o+=t),3===r&&"!--"===o&&(r=4,u=u[0])}return a(),u}(e)),t),arguments,[])).length>1?t:t[0]}var qt=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-ClearIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"),n.appendChild(r),n};function Rt(e,t){if("string"==typeof t){var n=e.document.querySelector(t);return"The element ".concat(JSON.stringify(t)," is not in the document."),n}return t}function Bt(){for(var e=arguments.length,t=new Array(e),n=0;n2&&(u.children=arguments.length>3?en.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===u[i]&&(u[i]=e.defaultProps[i]);return vn(e,u,r,o,null)}function vn(e,t,n,r,o){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++nn:o};return null==o&&null!=tn.vnode&&tn.vnode(i),i}function dn(e){return e.children}function yn(e,t){this.props=e,this.context=t}function bn(e,t){if(null==t)return e.__?bn(e.__,e.__.__k.indexOf(e)+1):null;for(var n;tt&&rn.sort(an));On.__r=0}function _n(e,t,n,r,o,i,u,a,c,l){var s,f,p,m,v,d,y,b=r&&r.__k||ln,g=b.length;for(n.__k=[],s=0;s0?vn(m.type,m.props,m.key,m.ref?m.ref:null,m.__v):m)){if(m.__=n,m.__b=n.__b+1,null===(p=b[s])||p&&m.key==p.key&&m.type===p.type)b[s]=void 0;else for(f=0;f=0;t--)if((n=e.__k[t])&&(r=Pn(n)))return r;return null}function wn(e,t,n){"-"===t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||sn.test(t)?n:n+"px"}function In(e,t,n,r,o){var i;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||wn(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||wn(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])i=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r||e.addEventListener(t,i?An:En,i):e.removeEventListener(t,i?An:En,i);else if("dangerouslySetInnerHTML"!==t){if(o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!==t&&"height"!==t&&"href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!==t[4]?e.removeAttribute(t):e.setAttribute(t,n))}}function En(e){return this.l[e.type+!1](tn.event?tn.event(e):e)}function An(e){return this.l[e.type+!0](tn.event?tn.event(e):e)}function Dn(e,t,n,r,o,i,u,a,c){var l,s,f,p,m,v,d,y,b,g,h,O,_,S,j,P=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(c=n.__h,a=t.__e=n.__e,t.__h=null,i=[a]),(l=tn.__b)&&l(t);try{e:if("function"==typeof P){if(y=t.props,b=(l=P.contextType)&&r[l.__c],g=l?b?b.props.value:l.__:r,n.__c?d=(s=t.__c=n.__c).__=s.__E:("prototype"in P&&P.prototype.render?t.__c=s=new P(y,g):(t.__c=s=new yn(y,g),s.constructor=P,s.render=Tn),b&&b.sub(s),s.props=y,s.state||(s.state={}),s.context=g,s.__n=r,f=s.__d=!0,s.__h=[],s._sb=[]),null==s.__s&&(s.__s=s.state),null!=P.getDerivedStateFromProps&&(s.__s==s.state&&(s.__s=fn({},s.__s)),fn(s.__s,P.getDerivedStateFromProps(y,s.__s))),p=s.props,m=s.state,s.__v=t,f)null==P.getDerivedStateFromProps&&null!=s.componentWillMount&&s.componentWillMount(),null!=s.componentDidMount&&s.__h.push(s.componentDidMount);else{if(null==P.getDerivedStateFromProps&&y!==p&&null!=s.componentWillReceiveProps&&s.componentWillReceiveProps(y,g),!s.__e&&null!=s.shouldComponentUpdate&&!1===s.shouldComponentUpdate(y,s.__s,g)||t.__v===n.__v){for(t.__v!==n.__v&&(s.props=y,s.state=s.__s,s.__d=!1),s.__e=!1,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),h=0;h0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var n=e[e.length-1];(null==n?void 0:n.isHighlighted)===t.isHighlighted?e[e.length-1]={value:n.value+t.value,isHighlighted:n.isHighlighted}:e.push(t)}}}(n?[{value:n,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split(Rn);r.add({value:t[0],isHighlighted:!0}),""!==t[1]&&r.add({value:t[1],isHighlighted:!1})})),r.get()}function Fn(e){return function(e){if(Array.isArray(e))return Ln(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Ln(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ln(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ln(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",""":'"',"'":"'"},Hn=new RegExp(/\w/i),Vn=/&(amp|quot|lt|gt|#39);/g,Wn=RegExp(Vn.source);function Qn(e,t){var n,r,o,i=e[t],u=(null===(n=e[t+1])||void 0===n?void 0:n.isHighlighted)||!0,a=(null===(r=e[t-1])||void 0===r?void 0:r.isHighlighted)||!0;return Hn.test((o=i.value)&&Wn.test(o)?o.replace(Vn,(function(e){return Mn[e]})):o)||a!==u?i.isHighlighted:a}function Kn(e){return Kn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Kn(e)}function $n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zn(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function sr(e){return function(e){if(Array.isArray(e))return fr(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return fr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return fr(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function fr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0;if(!O.value.core.openOnFocus&&!t.query)return n;var r=Boolean(y.current||O.value.renderer.renderNoResults);return!n&&r||n},__autocomplete_metadata:{userAgents:_r,options:e}}))})),j=f(n({collections:[],completion:null,context:{},isOpen:!1,query:"",activeItemId:null,status:"idle"},O.value.core.initialState)),P={getEnvironmentProps:O.value.renderer.getEnvironmentProps,getFormProps:O.value.renderer.getFormProps,getInputProps:O.value.renderer.getInputProps,getItemProps:O.value.renderer.getItemProps,getLabelProps:O.value.renderer.getLabelProps,getListProps:O.value.renderer.getListProps,getPanelProps:O.value.renderer.getPanelProps,getRootProps:O.value.renderer.getRootProps},w={setActiveItemId:S.value.setActiveItemId,setQuery:S.value.setQuery,setCollections:S.value.setCollections,setIsOpen:S.value.setIsOpen,setStatus:S.value.setStatus,setContext:S.value.setContext,refresh:S.value.refresh,navigator:S.value.navigator},I=m((function(){return Tt.bind(O.value.renderer.renderer.createElement)})),E=m((function(){return Zt({autocomplete:S.value,autocompleteScopeApi:w,classNames:O.value.renderer.classNames,environment:O.value.core.environment,isDetached:_.value,placeholder:O.value.core.placeholder,propGetters:P,setIsModalOpen:k,state:j.current,translations:O.value.renderer.translations})}));function A(){Kt(E.value.panel,{style:_.value?{}:Or({panelPlacement:O.value.renderer.panelPlacement,container:E.value.root,form:E.value.form,environment:O.value.core.environment})})}function D(e){j.current=e;var t={autocomplete:S.value,autocompleteScopeApi:w,classNames:O.value.renderer.classNames,components:O.value.renderer.components,container:O.value.renderer.container,html:I.value,dom:E.value,panelContainer:_.value?E.value.detachedContainer:O.value.renderer.panelContainer,propGetters:P,state:j.current,renderer:O.value.renderer.renderer},r=!b(e)&&!y.current&&O.value.renderer.renderNoResults||O.value.renderer.render;!function(e){var t=e.autocomplete,r=e.autocompleteScopeApi,o=e.dom,i=e.propGetters,u=e.state;$t(o.root,i.getRootProps(n({state:u,props:t.getRootProps({})},r))),$t(o.input,i.getInputProps(n({state:u,props:t.getInputProps({inputElement:o.input}),inputElement:o.input},r))),Kt(o.label,{hidden:"stalled"===u.status}),Kt(o.loadingIndicator,{hidden:"stalled"!==u.status}),Kt(o.clearButton,{hidden:!u.query}),Kt(o.detachedSearchButtonQuery,{textContent:u.query}),Kt(o.detachedSearchButtonPlaceholder,{hidden:Boolean(u.query)})}(t),function(e,t){var r=t.autocomplete,o=t.autocompleteScopeApi,u=t.classNames,a=t.html,c=t.dom,l=t.panelContainer,s=t.propGetters,f=t.state,p=t.components,m=t.renderer;if(f.isOpen){l.contains(c.panel)||"loading"===f.status||l.appendChild(c.panel),c.panel.classList.toggle("aa-Panel--stalled","stalled"===f.status);var v=f.collections.filter((function(e){var t=e.source,n=e.items;return t.templates.noResults||n.length>0})).map((function(e,t){var c=e.source,l=e.items;return m.createElement("section",{key:t,className:u.source,"data-autocomplete-source-id":c.sourceId},c.templates.header&&m.createElement("div",{className:u.sourceHeader},c.templates.header({components:p,createElement:m.createElement,Fragment:m.Fragment,items:l,source:c,state:f,html:a})),c.templates.noResults&&0===l.length?m.createElement("div",{className:u.sourceNoResults},c.templates.noResults({components:p,createElement:m.createElement,Fragment:m.Fragment,source:c,state:f,html:a})):m.createElement("ul",i({className:u.list},s.getListProps(n({state:f,props:r.getListProps({sourceIndex:t})},o))),l.map((function(e){var l=r.getItemProps({item:e,source:c,sourceIndex:t});return m.createElement("li",i({key:l.id,className:u.item},s.getItemProps(n({state:f,props:l},o))),c.templates.item({components:p,createElement:m.createElement,Fragment:m.Fragment,item:e,state:f,html:a}))}))),c.templates.footer&&m.createElement("div",{className:u.sourceFooter},c.templates.footer({components:p,createElement:m.createElement,Fragment:m.Fragment,items:l,source:c,state:f,html:a})))})),d=m.createElement(m.Fragment,null,m.createElement("div",{className:u.panelLayout},v),m.createElement("div",{className:"aa-GradientBottom"})),y=v.reduce((function(e,t){return e[t.props["data-autocomplete-source-id"]]=t,e}),{});e(n(n({children:d,state:f,sections:v,elements:y},m),{},{components:p,html:a},o),c.panel)}else l.contains(c.panel)&&l.removeChild(c.panel)}(r,t)}function C(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};c();var t=O.value.renderer,n=t.components,r=u(t,Sr);g.current=Lt(r,O.value.core,{components:Ut(n,(function(e){return!e.value.hasOwnProperty("__autocomplete_componentName")})),initialState:j.current},e),v(),l(),S.value.refresh().then((function(){D(j.current)}))}function k(e){requestAnimationFrame((function(){var t=O.value.core.environment.document.body.contains(E.value.detachedOverlay);e!==t&&(e?(O.value.core.environment.document.body.appendChild(E.value.detachedOverlay),O.value.core.environment.document.body.classList.add("aa-Detached"),E.value.input.focus()):(O.value.core.environment.document.body.removeChild(E.value.detachedOverlay),O.value.core.environment.document.body.classList.remove("aa-Detached")))}))}return a((function(){var e=S.value.getEnvironmentProps({formElement:E.value.form,panelElement:E.value.panel,inputElement:E.value.input});return Kt(O.value.core.environment,e),function(){Kt(O.value.core.environment,Object.keys(e).reduce((function(e,t){return n(n({},e),{},o({},t,void 0))}),{}))}})),a((function(){var e=_.value?O.value.core.environment.document.body:O.value.renderer.panelContainer,t=_.value?E.value.detachedOverlay:E.value.panel;return _.value&&j.current.isOpen&&k(!0),D(j.current),function(){e.contains(t)&&e.removeChild(t)}})),a((function(){var e=O.value.renderer.container;return e.appendChild(E.value.root),function(){e.removeChild(E.value.root)}})),a((function(){var e=p((function(e){D(e.state)}),0);return h.current=function(t){var n=t.state,r=t.prevState;(_.value&&r.isOpen!==n.isOpen&&k(n.isOpen),_.value||!n.isOpen||r.isOpen||A(),n.query!==r.query)&&O.value.core.environment.document.querySelectorAll(".aa-Panel--scrollable").forEach((function(e){0!==e.scrollTop&&(e.scrollTop=0)}));e({state:n})},function(){h.current=void 0}})),a((function(){var e=p((function(){var e=_.value;_.value=O.value.core.environment.matchMedia(O.value.renderer.detachedMediaQuery).matches,e!==_.value?C({}):requestAnimationFrame(A)}),20);return O.value.core.environment.addEventListener("resize",e),function(){O.value.core.environment.removeEventListener("resize",e)}})),a((function(){if(!_.value)return function(){};function e(e){E.value.detachedContainer.classList.toggle("aa-DetachedContainer--modal",e)}function t(t){e(t.matches)}var n=O.value.core.environment.matchMedia(getComputedStyle(O.value.core.environment.document.documentElement).getPropertyValue("--aa-detached-modal-media-query"));e(n.matches);var r=Boolean(n.addEventListener);return r?n.addEventListener("change",t):n.addListener(t),function(){r?n.removeEventListener("change",t):n.removeListener(t)}})),a((function(){return requestAnimationFrame(A),function(){}})),n(n({},w),{},{update:C,destroy:function(){c()}})},e.getAlgoliaFacets=function(e){var t=jr({transformResponse:function(e){return e.facetHits}}),r=e.queries.map((function(e){return n(n({},e),{},{type:"facet"})}));return t(n(n({},e),{},{queries:r}))},e.getAlgoliaResults=Pr,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/pr-preview/pr-51/site_libs/quarto-search/fuse.min.js b/pr-preview/pr-51/site_libs/quarto-search/fuse.min.js new file mode 100644 index 00000000..adc28356 --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-search/fuse.min.js @@ -0,0 +1,9 @@ +/** + * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io) + * + * Copyright (c) 2022 Kiro Risk (http://kiro.me) + * All Rights Reserved. Apache Software License 2.0 + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ +var e,t;e=this,t=function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=new Map,r=Math.pow(10,t);return{get:function(t){var i=t.match(C).length;if(n.has(i))return n.get(i);var o=1/Math.pow(i,.5*e),c=parseFloat(Math.round(o*r)/r);return n.set(i,c),c},clear:function(){n.clear()}}}var $=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.getFn,i=void 0===n?I.getFn:n,o=t.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o;r(this,e),this.norm=E(c,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return o(e,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=t,this._keysMap={},t.forEach((function(t,n){e._keysMap[t.id]=n}))}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,g(this.docs[0])?this.docs.forEach((function(t,n){e._addString(t,n)})):this.docs.forEach((function(t,n){e._addObject(t,n)})),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();g(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?I.getFn:r,o=n.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o,a=new $({getFn:i,fieldNormWeight:c});return a.setKeys(e.map(_)),a.setSources(t),a.create(),a}function R(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.errors,r=void 0===n?0:n,i=t.currentLocation,o=void 0===i?0:i,c=t.expectedLocation,a=void 0===c?0:c,s=t.distance,u=void 0===s?I.distance:s,h=t.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=r/e.length;if(l)return f;var d=Math.abs(a-o);return u?f+d/u:d?1:f}function N(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.minMatchCharLength,n=[],r=-1,i=-1,o=0,c=e.length;o=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}var P=32;function W(e){for(var t={},n=0,r=e.length;n1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,c=void 0===o?I.location:o,a=i.threshold,s=void 0===a?I.threshold:a,u=i.distance,h=void 0===u?I.distance:u,l=i.includeMatches,f=void 0===l?I.includeMatches:l,d=i.findAllMatches,v=void 0===d?I.findAllMatches:d,g=i.minMatchCharLength,y=void 0===g?I.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?I.isCaseSensitive:p,k=i.ignoreLocation,M=void 0===k?I.ignoreLocation:k;if(r(this,e),this.options={location:c,threshold:s,distance:h,includeMatches:f,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:M},this.pattern=m?t:t.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(e,t){n.chunks.push({pattern:e,alphabet:W(e),startIndex:t})},x=this.pattern.length;if(x>P){for(var w=0,L=x%P,S=x-L;w3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?I.location:i,c=r.distance,a=void 0===c?I.distance:c,s=r.threshold,u=void 0===s?I.threshold:s,h=r.findAllMatches,l=void 0===h?I.findAllMatches:h,f=r.minMatchCharLength,d=void 0===f?I.minMatchCharLength:f,v=r.includeMatches,g=void 0===v?I.includeMatches:v,y=r.ignoreLocation,p=void 0===y?I.ignoreLocation:y;if(t.length>P)throw new Error(w(P));for(var m,k=t.length,M=e.length,b=Math.max(0,Math.min(o,M)),x=u,L=b,S=d>1||g,_=S?Array(M):[];(m=e.indexOf(t,L))>-1;){var O=R(t,{currentLocation:m,expectedLocation:b,distance:a,ignoreLocation:p});if(x=Math.min(O,x),L=m+k,S)for(var j=0;j=z;q-=1){var B=q-1,J=n[e.charAt(B)];if(S&&(_[B]=+!!J),K[q]=(K[q+1]<<1|1)&J,F&&(K[q]|=(A[q+1]|A[q])<<1|1|A[q+1]),K[q]&$&&(C=R(t,{errors:F,currentLocation:B,expectedLocation:b,distance:a,ignoreLocation:p}))<=x){if(x=C,(L=B)<=b)break;z=Math.max(1,2*b-L)}}if(R(t,{errors:F+1,currentLocation:b,expectedLocation:b,distance:a,ignoreLocation:p})>x)break;A=K}var U={isMatch:L>=0,score:Math.max(.001,C)};if(S){var V=N(_,d);V.length?g&&(U.indices=V):U.isMatch=!1}return U}(e,n,i,{location:c+o,distance:a,threshold:s,findAllMatches:u,minMatchCharLength:h,includeMatches:r,ignoreLocation:l}),p=y.isMatch,m=y.score,k=y.indices;p&&(g=!0),v+=m,p&&k&&(d=[].concat(f(d),f(k)))}));var y={isMatch:g,score:g?v/this.chunks.length:1};return g&&r&&(y.indices=d),y}}]),e}(),z=function(){function e(t){r(this,e),this.pattern=t}return o(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return D(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return D(e,this.singleRegex)}}]),e}();function D(e,t){var n=e.match(t);return n?n[1]:null}var K=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),n}(z),q=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),n}(z),B=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),n}(z),J=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),n}(z),U=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),n}(z),V=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),n}(z),G=function(e){a(n,e);var t=l(n);function n(e){var i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=o.location,a=void 0===c?I.location:c,s=o.threshold,u=void 0===s?I.threshold:s,h=o.distance,l=void 0===h?I.distance:h,f=o.includeMatches,d=void 0===f?I.includeMatches:f,v=o.findAllMatches,g=void 0===v?I.findAllMatches:v,y=o.minMatchCharLength,p=void 0===y?I.minMatchCharLength:y,m=o.isCaseSensitive,k=void 0===m?I.isCaseSensitive:m,M=o.ignoreLocation,b=void 0===M?I.ignoreLocation:M;return r(this,n),(i=t.call(this,e))._bitapSearch=new T(e,{location:a,threshold:u,distance:l,includeMatches:d,findAllMatches:g,minMatchCharLength:p,isCaseSensitive:k,ignoreLocation:b}),i}return o(n,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),n}(z),H=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){for(var t,n=0,r=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);var o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),n}(z),Q=[K,H,B,J,V,U,q,G],X=Q.length,Y=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/;function Z(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map((function(e){for(var n=e.trim().split(Y).filter((function(e){return e&&!!e.trim()})),r=[],i=0,o=n.length;i1&&void 0!==arguments[1]?arguments[1]:{},i=n.isCaseSensitive,o=void 0===i?I.isCaseSensitive:i,c=n.includeMatches,a=void 0===c?I.includeMatches:c,s=n.minMatchCharLength,u=void 0===s?I.minMatchCharLength:s,h=n.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=n.findAllMatches,d=void 0===f?I.findAllMatches:f,v=n.location,g=void 0===v?I.location:v,y=n.threshold,p=void 0===y?I.threshold:y,m=n.distance,k=void 0===m?I.distance:m;r(this,e),this.query=null,this.options={isCaseSensitive:o,includeMatches:a,minMatchCharLength:u,findAllMatches:d,ignoreLocation:l,location:g,threshold:p,distance:k},this.pattern=o?t:t.toLowerCase(),this.query=Z(this.pattern,this.options)}return o(e,[{key:"searchIn",value:function(e){var t=this.query;if(!t)return{isMatch:!1,score:1};var n=this.options,r=n.includeMatches;e=n.isCaseSensitive?e:e.toLowerCase();for(var i=0,o=[],c=0,a=0,s=t.length;a-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function ve(e,t){t.score=e.score}function ge(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?I.includeMatches:r,o=n.includeScore,c=void 0===o?I.includeScore:o,a=[];return i&&a.push(de),c&&a.push(ve),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return a.length&&a.forEach((function(t){t(e,r)})),r}))}var ye=function(){function e(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;r(this,e),this.options=t(t({},I),i),this.options.useExtendedSearch,this._keyStore=new S(this.options.keys),this.setCollection(n,o)}return o(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof $))throw new Error("Incorrect 'index' type");this._myIndex=t||F(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){k(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},t=[],n=0,r=this._docs.length;n1&&void 0!==arguments[1]?arguments[1]:{},n=t.limit,r=void 0===n?-1:n,i=this.options,o=i.includeMatches,c=i.includeScore,a=i.shouldSort,s=i.sortFn,u=i.ignoreFieldNorm,h=g(e)?g(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return fe(h,{ignoreFieldNorm:u}),a&&h.sort(s),y(r)&&r>-1&&(h=h.slice(0,r)),ge(h,this._docs,{includeMatches:o,includeScore:c})}},{key:"_searchStringList",value:function(e){var t=re(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(k(n)){var c=t.searchIn(n),a=c.isMatch,s=c.score,u=c.indices;a&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:u}]})}})),r}},{key:"_searchLogical",value:function(e){var t=this,n=function(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,r=void 0===n||n,i=function e(n){var i=Object.keys(n),o=ue(n);if(!o&&i.length>1&&!se(n))return e(le(n));if(he(n)){var c=o?n[ce]:i[0],a=o?n[ae]:n[c];if(!g(a))throw new Error(x(c));var s={keyId:j(c),pattern:a};return r&&(s.searcher=re(a,t)),s}var u={children:[],operator:i[0]};return i.forEach((function(t){var r=n[t];v(r)&&r.forEach((function(t){u.children.push(e(t))}))})),u};return se(e)||(e=le(e)),i(e)}(e,this.options),r=function e(n,r,i){if(!n.children){var o=n.keyId,c=n.searcher,a=t._findMatches({key:t._keyStore.get(o),value:t._myIndex.getValueForItemAtKeyId(r,o),searcher:c});return a&&a.length?[{idx:i,item:r,matches:a}]:[]}for(var s=[],u=0,h=n.children.length;u1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?I.getFn:n,i=t.fieldNormWeight,o=void 0===i?I.fieldNormWeight:i,c=e.keys,a=e.records,s=new $({getFn:r,fieldNormWeight:o});return s.setKeys(c),s.setIndexRecords(a),s},ye.config=I,function(){ne.push.apply(ne,arguments)}(te),ye},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t(); \ No newline at end of file diff --git a/pr-preview/pr-51/site_libs/quarto-search/quarto-search.js b/pr-preview/pr-51/site_libs/quarto-search/quarto-search.js new file mode 100644 index 00000000..2912961f --- /dev/null +++ b/pr-preview/pr-51/site_libs/quarto-search/quarto-search.js @@ -0,0 +1,1149 @@ +const kQueryArg = "q"; +const kResultsArg = "show-results"; + +// If items don't provide a URL, then both the navigator and the onSelect +// function aren't called (and therefore, the default implementation is used) +// +// We're using this sentinel URL to signal to those handlers that this +// item is a more item (along with the type) and can be handled appropriately +const kItemTypeMoreHref = "0767FDFD-0422-4E5A-BC8A-3BE11E5BBA05"; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Ensure that search is available on this page. If it isn't, + // should return early and not do anything + var searchEl = window.document.getElementById("quarto-search"); + if (!searchEl) return; + + const { autocomplete } = window["@algolia/autocomplete-js"]; + + let quartoSearchOptions = {}; + let language = {}; + const searchOptionEl = window.document.getElementById( + "quarto-search-options" + ); + if (searchOptionEl) { + const jsonStr = searchOptionEl.textContent; + quartoSearchOptions = JSON.parse(jsonStr); + language = quartoSearchOptions.language; + } + + // note the search mode + if (quartoSearchOptions.type === "overlay") { + searchEl.classList.add("type-overlay"); + } else { + searchEl.classList.add("type-textbox"); + } + + // Used to determine highlighting behavior for this page + // A `q` query param is expected when the user follows a search + // to this page + const currentUrl = new URL(window.location); + const query = currentUrl.searchParams.get(kQueryArg); + const showSearchResults = currentUrl.searchParams.get(kResultsArg); + const mainEl = window.document.querySelector("main"); + + // highlight matches on the page + if (query && mainEl) { + // perform any highlighting + highlight(escapeRegExp(query), mainEl); + + // fix up the URL to remove the q query param + const replacementUrl = new URL(window.location); + replacementUrl.searchParams.delete(kQueryArg); + window.history.replaceState({}, "", replacementUrl); + } + + // function to clear highlighting on the page when the search query changes + // (e.g. if the user edits the query or clears it) + let highlighting = true; + const resetHighlighting = (searchTerm) => { + if (mainEl && highlighting && query && searchTerm !== query) { + clearHighlight(query, mainEl); + highlighting = false; + } + }; + + // Clear search highlighting when the user scrolls sufficiently + const resetFn = () => { + resetHighlighting(""); + window.removeEventListener("quarto-hrChanged", resetFn); + window.removeEventListener("quarto-sectionChanged", resetFn); + }; + + // Register this event after the initial scrolling and settling of events + // on the page + window.addEventListener("quarto-hrChanged", resetFn); + window.addEventListener("quarto-sectionChanged", resetFn); + + // Responsively switch to overlay mode if the search is present on the navbar + // Note that switching the sidebar to overlay mode requires more coordinate (not just + // the media query since we generate different HTML for sidebar overlays than we do + // for sidebar input UI) + const detachedMediaQuery = + quartoSearchOptions.type === "overlay" ? "all" : "(max-width: 991px)"; + + // If configured, include the analytics client to send insights + const plugins = configurePlugins(quartoSearchOptions); + + let lastState = null; + const { setIsOpen, setQuery, setCollections } = autocomplete({ + container: searchEl, + detachedMediaQuery: detachedMediaQuery, + defaultActiveItemId: 0, + panelContainer: "#quarto-search-results", + panelPlacement: quartoSearchOptions["panel-placement"], + debug: false, + openOnFocus: true, + plugins, + classNames: { + form: "d-flex", + }, + translations: { + clearButtonTitle: language["search-clear-button-title"], + detachedCancelButtonText: language["search-detached-cancel-button-title"], + submitButtonTitle: language["search-submit-button-title"], + }, + initialState: { + query, + }, + getItemUrl({ item }) { + return item.href; + }, + onStateChange({ state }) { + // Perhaps reset highlighting + resetHighlighting(state.query); + + // If the panel just opened, ensure the panel is positioned properly + if (state.isOpen) { + if (lastState && !lastState.isOpen) { + setTimeout(() => { + positionPanel(quartoSearchOptions["panel-placement"]); + }, 150); + } + } + + // Perhaps show the copy link + showCopyLink(state.query, quartoSearchOptions); + + lastState = state; + }, + reshape({ sources, state }) { + return sources.map((source) => { + try { + const items = source.getItems(); + + // Validate the items + validateItems(items); + + // group the items by document + const groupedItems = new Map(); + items.forEach((item) => { + const hrefParts = item.href.split("#"); + const baseHref = hrefParts[0]; + const isDocumentItem = hrefParts.length === 1; + + const items = groupedItems.get(baseHref); + if (!items) { + groupedItems.set(baseHref, [item]); + } else { + // If the href for this item matches the document + // exactly, place this item first as it is the item that represents + // the document itself + if (isDocumentItem) { + items.unshift(item); + } else { + items.push(item); + } + groupedItems.set(baseHref, items); + } + }); + + const reshapedItems = []; + let count = 1; + for (const [_key, value] of groupedItems) { + const firstItem = value[0]; + reshapedItems.push({ + ...firstItem, + type: kItemTypeDoc, + }); + + const collapseMatches = quartoSearchOptions["collapse-after"]; + const collapseCount = + typeof collapseMatches === "number" ? collapseMatches : 1; + + if (value.length > 1) { + const target = `search-more-${count}`; + const isExpanded = + state.context.expanded && + state.context.expanded.includes(target); + + const remainingCount = value.length - collapseCount; + + for (let i = 1; i < value.length; i++) { + if (collapseMatches && i === collapseCount) { + reshapedItems.push({ + target, + title: isExpanded + ? language["search-hide-matches-text"] + : remainingCount === 1 + ? `${remainingCount} ${language["search-more-match-text"]}` + : `${remainingCount} ${language["search-more-matches-text"]}`, + type: kItemTypeMore, + href: kItemTypeMoreHref, + }); + } + + if (isExpanded || !collapseMatches || i < collapseCount) { + reshapedItems.push({ + ...value[i], + type: kItemTypeItem, + target, + }); + } + } + } + count += 1; + } + + return { + ...source, + getItems() { + return reshapedItems; + }, + }; + } catch (error) { + // Some form of error occurred + return { + ...source, + getItems() { + return [ + { + title: error.name || "An Error Occurred While Searching", + text: + error.message || + "An unknown error occurred while attempting to perform the requested search.", + type: kItemTypeError, + }, + ]; + }, + }; + } + }); + }, + navigator: { + navigate({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + window.location.assign(itemUrl); + } + }, + navigateNewTab({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + const windowReference = window.open(itemUrl, "_blank", "noopener"); + if (windowReference) { + windowReference.focus(); + } + } + }, + navigateNewWindow({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + window.open(itemUrl, "_blank", "noopener"); + } + }, + }, + getSources({ state, setContext, setActiveItemId, refresh }) { + return [ + { + sourceId: "documents", + getItemUrl({ item }) { + if (item.href) { + return offsetURL(item.href); + } else { + return undefined; + } + }, + onSelect({ + item, + state, + setContext, + setIsOpen, + setActiveItemId, + refresh, + }) { + if (item.type === kItemTypeMore) { + toggleExpanded(item, state, setContext, setActiveItemId, refresh); + + // Toggle more + setIsOpen(true); + } + }, + getItems({ query }) { + if (query === null || query === "") { + return []; + } + + const limit = quartoSearchOptions.limit; + if (quartoSearchOptions.algolia) { + return algoliaSearch(query, limit, quartoSearchOptions.algolia); + } else { + // Fuse search options + const fuseSearchOptions = { + isCaseSensitive: false, + shouldSort: true, + minMatchCharLength: 2, + limit: limit, + }; + + return readSearchData().then(function (fuse) { + return fuseSearch(query, fuse, fuseSearchOptions); + }); + } + }, + templates: { + noResults({ createElement }) { + const hasQuery = lastState.query; + + return createElement( + "div", + { + class: `quarto-search-no-results${ + hasQuery ? "" : " no-query" + }`, + }, + language["search-no-results-text"] + ); + }, + header({ items, createElement }) { + // count the documents + const count = items.filter((item) => { + return item.type === kItemTypeDoc; + }).length; + + if (count > 0) { + return createElement( + "div", + { class: "search-result-header" }, + `${count} ${language["search-matching-documents-text"]}` + ); + } else { + return createElement( + "div", + { class: "search-result-header-no-results" }, + `` + ); + } + }, + footer({ _items, createElement }) { + if ( + quartoSearchOptions.algolia && + quartoSearchOptions.algolia["show-logo"] + ) { + const libDir = quartoSearchOptions.algolia["libDir"]; + const logo = createElement("img", { + src: offsetURL( + `${libDir}/quarto-search/search-by-algolia.svg` + ), + class: "algolia-search-logo", + }); + return createElement( + "a", + { href: "http://www.algolia.com/" }, + logo + ); + } + }, + + item({ item, createElement }) { + return renderItem( + item, + createElement, + state, + setActiveItemId, + setContext, + refresh + ); + }, + }, + }, + ]; + }, + }); + + window.quartoOpenSearch = () => { + setIsOpen(false); + setIsOpen(true); + focusSearchInput(); + }; + + document.addEventListener("keyup", (event) => { + const { key } = event; + const kbds = quartoSearchOptions["keyboard-shortcut"]; + if (kbds && kbds.includes(key)) { + event.preventDefault(); + window.quartoOpenSearch(); + } + }); + + // Remove the labeleledby attribute since it is pointing + // to a non-existent label + if (quartoSearchOptions.type === "overlay") { + const inputEl = window.document.querySelector( + "#quarto-search .aa-Autocomplete" + ); + if (inputEl) { + inputEl.removeAttribute("aria-labelledby"); + } + } + + // If the main document scrolls dismiss the search results + // (otherwise, since they're floating in the document they can scroll with the document) + window.document.body.onscroll = () => { + setIsOpen(false); + }; + + if (showSearchResults) { + setIsOpen(true); + focusSearchInput(); + } +}); + +function configurePlugins(quartoSearchOptions) { + const autocompletePlugins = []; + const algoliaOptions = quartoSearchOptions.algolia; + if ( + algoliaOptions && + algoliaOptions["analytics-events"] && + algoliaOptions["search-only-api-key"] && + algoliaOptions["application-id"] + ) { + const apiKey = algoliaOptions["search-only-api-key"]; + const appId = algoliaOptions["application-id"]; + + // Aloglia insights may not be loaded because they require cookie consent + // Use deferred loading so events will start being recorded when/if consent + // is granted. + const algoliaInsightsDeferredPlugin = deferredLoadPlugin(() => { + if ( + window.aa && + window["@algolia/autocomplete-plugin-algolia-insights"] + ) { + window.aa("init", { + appId, + apiKey, + useCookie: true, + }); + + const { createAlgoliaInsightsPlugin } = + window["@algolia/autocomplete-plugin-algolia-insights"]; + // Register the insights client + const algoliaInsightsPlugin = createAlgoliaInsightsPlugin({ + insightsClient: window.aa, + onItemsChange({ insights, insightsEvents }) { + const events = insightsEvents.map((event) => { + const maxEvents = event.objectIDs.slice(0, 20); + return { + ...event, + objectIDs: maxEvents, + }; + }); + + insights.viewedObjectIDs(...events); + }, + }); + return algoliaInsightsPlugin; + } + }); + + // Add the plugin + autocompletePlugins.push(algoliaInsightsDeferredPlugin); + return autocompletePlugins; + } +} + +// For plugins that may not load immediately, create a wrapper +// plugin and forward events and plugin data once the plugin +// is initialized. This is useful for cases like cookie consent +// which may prevent the analytics insights event plugin from initializing +// immediately. +function deferredLoadPlugin(createPlugin) { + let plugin = undefined; + let subscribeObj = undefined; + const wrappedPlugin = () => { + if (!plugin && subscribeObj) { + plugin = createPlugin(); + if (plugin && plugin.subscribe) { + plugin.subscribe(subscribeObj); + } + } + return plugin; + }; + + return { + subscribe: (obj) => { + subscribeObj = obj; + }, + onStateChange: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onStateChange) { + plugin.onStateChange(obj); + } + }, + onSubmit: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onSubmit) { + plugin.onSubmit(obj); + } + }, + onReset: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onReset) { + plugin.onReset(obj); + } + }, + getSources: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.getSources) { + return plugin.getSources(obj); + } else { + return Promise.resolve([]); + } + }, + data: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.data) { + plugin.data(obj); + } + }, + }; +} + +function validateItems(items) { + // Validate the first item + if (items.length > 0) { + const item = items[0]; + const missingFields = []; + if (item.href == undefined) { + missingFields.push("href"); + } + if (!item.title == undefined) { + missingFields.push("title"); + } + if (!item.text == undefined) { + missingFields.push("text"); + } + + if (missingFields.length === 1) { + throw { + name: `Error: Search index is missing the ${missingFields[0]} field.`, + message: `The items being returned for this search do not include all the required fields. Please ensure that your index items include the ${missingFields[0]} field or use index-fields in your _quarto.yml file to specify the field names.`, + }; + } else if (missingFields.length > 1) { + const missingFieldList = missingFields + .map((field) => { + return `${field}`; + }) + .join(", "); + + throw { + name: `Error: Search index is missing the following fields: ${missingFieldList}.`, + message: `The items being returned for this search do not include all the required fields. Please ensure that your index items includes the following fields: ${missingFieldList}, or use index-fields in your _quarto.yml file to specify the field names.`, + }; + } + } +} + +let lastQuery = null; +function showCopyLink(query, options) { + const language = options.language; + lastQuery = query; + // Insert share icon + const inputSuffixEl = window.document.body.querySelector( + ".aa-Form .aa-InputWrapperSuffix" + ); + + if (inputSuffixEl) { + let copyButtonEl = window.document.body.querySelector( + ".aa-Form .aa-InputWrapperSuffix .aa-CopyButton" + ); + + if (copyButtonEl === null) { + copyButtonEl = window.document.createElement("button"); + copyButtonEl.setAttribute("class", "aa-CopyButton"); + copyButtonEl.setAttribute("type", "button"); + copyButtonEl.setAttribute("title", language["search-copy-link-title"]); + copyButtonEl.onmousedown = (e) => { + e.preventDefault(); + e.stopPropagation(); + }; + + const linkIcon = "bi-clipboard"; + const checkIcon = "bi-check2"; + + const shareIconEl = window.document.createElement("i"); + shareIconEl.setAttribute("class", `bi ${linkIcon}`); + copyButtonEl.appendChild(shareIconEl); + inputSuffixEl.prepend(copyButtonEl); + + const clipboard = new window.ClipboardJS(".aa-CopyButton", { + text: function (_trigger) { + const copyUrl = new URL(window.location); + copyUrl.searchParams.set(kQueryArg, lastQuery); + copyUrl.searchParams.set(kResultsArg, "1"); + return copyUrl.toString(); + }, + }); + clipboard.on("success", function (e) { + // Focus the input + + // button target + const button = e.trigger; + const icon = button.querySelector("i.bi"); + + // flash "checked" + icon.classList.add(checkIcon); + icon.classList.remove(linkIcon); + setTimeout(function () { + icon.classList.remove(checkIcon); + icon.classList.add(linkIcon); + }, 1000); + }); + } + + // If there is a query, show the link icon + if (copyButtonEl) { + if (lastQuery && options["copy-button"]) { + copyButtonEl.style.display = "flex"; + } else { + copyButtonEl.style.display = "none"; + } + } + } +} + +/* Search Index Handling */ +// create the index +var fuseIndex = undefined; +async function readSearchData() { + // Initialize the search index on demand + if (fuseIndex === undefined) { + // create fuse index + const options = { + keys: [ + { name: "title", weight: 20 }, + { name: "section", weight: 20 }, + { name: "text", weight: 10 }, + ], + ignoreLocation: true, + threshold: 0.1, + }; + const fuse = new window.Fuse([], options); + + // fetch the main search.json + const response = await fetch(offsetURL("search.json")); + if (response.status == 200) { + return response.json().then(function (searchDocs) { + searchDocs.forEach(function (searchDoc) { + fuse.add(searchDoc); + }); + fuseIndex = fuse; + return fuseIndex; + }); + } else { + return Promise.reject( + new Error( + "Unexpected status from search index request: " + response.status + ) + ); + } + } + return fuseIndex; +} + +function inputElement() { + return window.document.body.querySelector(".aa-Form .aa-Input"); +} + +function focusSearchInput() { + setTimeout(() => { + const inputEl = inputElement(); + if (inputEl) { + inputEl.focus(); + } + }, 50); +} + +/* Panels */ +const kItemTypeDoc = "document"; +const kItemTypeMore = "document-more"; +const kItemTypeItem = "document-item"; +const kItemTypeError = "error"; + +function renderItem( + item, + createElement, + state, + setActiveItemId, + setContext, + refresh +) { + switch (item.type) { + case kItemTypeDoc: + return createDocumentCard( + createElement, + "file-richtext", + item.title, + item.section, + item.text, + item.href + ); + case kItemTypeMore: + return createMoreCard( + createElement, + item, + state, + setActiveItemId, + setContext, + refresh + ); + case kItemTypeItem: + return createSectionCard( + createElement, + item.section, + item.text, + item.href + ); + case kItemTypeError: + return createErrorCard(createElement, item.title, item.text); + default: + return undefined; + } +} + +function createDocumentCard(createElement, icon, title, section, text, href) { + const iconEl = createElement("i", { + class: `bi bi-${icon} search-result-icon`, + }); + const titleEl = createElement("p", { class: "search-result-title" }, title); + const titleContainerEl = createElement( + "div", + { class: "search-result-title-container" }, + [iconEl, titleEl] + ); + + const textEls = []; + if (section) { + const sectionEl = createElement( + "p", + { class: "search-result-section" }, + section + ); + textEls.push(sectionEl); + } + const descEl = createElement("p", { + class: "search-result-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + textEls.push(descEl); + + const textContainerEl = createElement( + "div", + { class: "search-result-text-container" }, + textEls + ); + + const containerEl = createElement( + "div", + { + class: "search-result-container", + }, + [titleContainerEl, textContainerEl] + ); + + const linkEl = createElement( + "a", + { + href: offsetURL(href), + class: "search-result-link", + }, + containerEl + ); + + const classes = ["search-result-doc", "search-item"]; + if (!section) { + classes.push("document-selectable"); + } + + return createElement( + "div", + { + class: classes.join(" "), + }, + linkEl + ); +} + +function createMoreCard( + createElement, + item, + state, + setActiveItemId, + setContext, + refresh +) { + const moreCardEl = createElement( + "div", + { + class: "search-result-more search-item", + onClick: (e) => { + // Handle expanding the sections by adding the expanded + // section to the list of expanded sections + toggleExpanded(item, state, setContext, setActiveItemId, refresh); + e.stopPropagation(); + }, + }, + item.title + ); + + return moreCardEl; +} + +function toggleExpanded(item, state, setContext, setActiveItemId, refresh) { + const expanded = state.context.expanded || []; + if (expanded.includes(item.target)) { + setContext({ + expanded: expanded.filter((target) => target !== item.target), + }); + } else { + setContext({ expanded: [...expanded, item.target] }); + } + + refresh(); + setActiveItemId(item.__autocomplete_id); +} + +function createSectionCard(createElement, section, text, href) { + const sectionEl = createSection(createElement, section, text, href); + return createElement( + "div", + { + class: "search-result-doc-section search-item", + }, + sectionEl + ); +} + +function createSection(createElement, title, text, href) { + const descEl = createElement("p", { + class: "search-result-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + + const titleEl = createElement("p", { class: "search-result-section" }, title); + const linkEl = createElement( + "a", + { + href: offsetURL(href), + class: "search-result-link", + }, + [titleEl, descEl] + ); + return linkEl; +} + +function createErrorCard(createElement, title, text) { + const descEl = createElement("p", { + class: "search-error-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + + const titleEl = createElement("p", { + class: "search-error-title", + dangerouslySetInnerHTML: { + __html: ` ${title}`, + }, + }); + const errorEl = createElement("div", { class: "search-error" }, [ + titleEl, + descEl, + ]); + return errorEl; +} + +function positionPanel(pos) { + const panelEl = window.document.querySelector( + "#quarto-search-results .aa-Panel" + ); + const inputEl = window.document.querySelector( + "#quarto-search .aa-Autocomplete" + ); + + if (panelEl && inputEl) { + panelEl.style.top = `${Math.round(panelEl.offsetTop)}px`; + if (pos === "start") { + panelEl.style.left = `${Math.round(inputEl.left)}px`; + } else { + panelEl.style.right = `${Math.round(inputEl.offsetRight)}px`; + } + } +} + +/* Highlighting */ +// highlighting functions +function highlightMatch(query, text) { + if (text) { + const start = text.toLowerCase().indexOf(query.toLowerCase()); + if (start !== -1) { + const startMark = ""; + const endMark = ""; + + const end = start + query.length; + text = + text.slice(0, start) + + startMark + + text.slice(start, end) + + endMark + + text.slice(end); + const startInfo = clipStart(text, start); + const endInfo = clipEnd( + text, + startInfo.position + startMark.length + endMark.length + ); + text = + startInfo.prefix + + text.slice(startInfo.position, endInfo.position) + + endInfo.suffix; + + return text; + } else { + return text; + } + } else { + return text; + } +} + +function clipStart(text, pos) { + const clipStart = pos - 50; + if (clipStart < 0) { + // This will just return the start of the string + return { + position: 0, + prefix: "", + }; + } else { + // We're clipping before the start of the string, walk backwards to the first space. + const spacePos = findSpace(text, pos, -1); + return { + position: spacePos.position, + prefix: "", + }; + } +} + +function clipEnd(text, pos) { + const clipEnd = pos + 200; + if (clipEnd > text.length) { + return { + position: text.length, + suffix: "", + }; + } else { + const spacePos = findSpace(text, clipEnd, 1); + return { + position: spacePos.position, + suffix: spacePos.clipped ? "…" : "", + }; + } +} + +function findSpace(text, start, step) { + let stepPos = start; + while (stepPos > -1 && stepPos < text.length) { + const char = text[stepPos]; + if (char === " " || char === "," || char === ":") { + return { + position: step === 1 ? stepPos : stepPos - step, + clipped: stepPos > 1 && stepPos < text.length, + }; + } + stepPos = stepPos + step; + } + + return { + position: stepPos - step, + clipped: false, + }; +} + +// removes highlighting as implemented by the mark tag +function clearHighlight(searchterm, el) { + const childNodes = el.childNodes; + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + if (node.nodeType === Node.ELEMENT_NODE) { + if ( + node.tagName === "MARK" && + node.innerText.toLowerCase() === searchterm.toLowerCase() + ) { + el.replaceChild(document.createTextNode(node.innerText), node); + } else { + clearHighlight(searchterm, node); + } + } + } +} + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string +} + +// highlight matches +function highlight(term, el) { + const termRegex = new RegExp(term, "ig"); + const childNodes = el.childNodes; + + // walk back to front avoid mutating elements in front of us + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + + if (node.nodeType === Node.TEXT_NODE) { + // Search text nodes for text to highlight + const text = node.nodeValue; + + let startIndex = 0; + let matchIndex = text.search(termRegex); + if (matchIndex > -1) { + const markFragment = document.createDocumentFragment(); + while (matchIndex > -1) { + const prefix = text.slice(startIndex, matchIndex); + markFragment.appendChild(document.createTextNode(prefix)); + + const mark = document.createElement("mark"); + mark.appendChild( + document.createTextNode( + text.slice(matchIndex, matchIndex + term.length) + ) + ); + markFragment.appendChild(mark); + + startIndex = matchIndex + term.length; + matchIndex = text.slice(startIndex).search(new RegExp(term, "ig")); + if (matchIndex > -1) { + matchIndex = startIndex + matchIndex; + } + } + if (startIndex < text.length) { + markFragment.appendChild( + document.createTextNode(text.slice(startIndex, text.length)) + ); + } + + el.replaceChild(markFragment, node); + } + } else if (node.nodeType === Node.ELEMENT_NODE) { + // recurse through elements + highlight(term, node); + } + } +} + +/* Link Handling */ +// get the offset from this page for a given site root relative url +function offsetURL(url) { + var offset = getMeta("quarto:offset"); + return offset ? offset + url : url; +} + +// read a meta tag value +function getMeta(metaName) { + var metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; +} + +function algoliaSearch(query, limit, algoliaOptions) { + const { getAlgoliaResults } = window["@algolia/autocomplete-preset-algolia"]; + + const applicationId = algoliaOptions["application-id"]; + const searchOnlyApiKey = algoliaOptions["search-only-api-key"]; + const indexName = algoliaOptions["index-name"]; + const indexFields = algoliaOptions["index-fields"]; + const searchClient = window.algoliasearch(applicationId, searchOnlyApiKey); + const searchParams = algoliaOptions["params"]; + const searchAnalytics = !!algoliaOptions["analytics-events"]; + + return getAlgoliaResults({ + searchClient, + queries: [ + { + indexName: indexName, + query, + params: { + hitsPerPage: limit, + clickAnalytics: searchAnalytics, + ...searchParams, + }, + }, + ], + transformResponse: (response) => { + if (!indexFields) { + return response.hits.map((hit) => { + return hit.map((item) => { + return { + ...item, + text: highlightMatch(query, item.text), + }; + }); + }); + } else { + const remappedHits = response.hits.map((hit) => { + return hit.map((item) => { + const newItem = { ...item }; + ["href", "section", "title", "text"].forEach((keyName) => { + const mappedName = indexFields[keyName]; + if ( + mappedName && + item[mappedName] !== undefined && + mappedName !== keyName + ) { + newItem[keyName] = item[mappedName]; + delete newItem[mappedName]; + } + }); + newItem.text = highlightMatch(query, newItem.text); + return newItem; + }); + }); + return remappedHits; + } + }, + }); +} + +function fuseSearch(query, fuse, fuseOptions) { + return fuse.search(query, fuseOptions).map((result) => { + const addParam = (url, name, value) => { + const anchorParts = url.split("#"); + const baseUrl = anchorParts[0]; + const sep = baseUrl.search("\\?") > 0 ? "&" : "?"; + anchorParts[0] = baseUrl + sep + name + "=" + value; + return anchorParts.join("#"); + }; + + return { + title: result.item.title, + section: result.item.section, + href: addParam(result.item.href, kQueryArg, query), + text: highlightMatch(query, result.item.text), + }; + }); +} diff --git a/pr-preview/pr-51/sitemap.xml b/pr-preview/pr-51/sitemap.xml new file mode 100644 index 00000000..e40511d9 --- /dev/null +++ b/pr-preview/pr-51/sitemap.xml @@ -0,0 +1,559 @@ + + + + https://openpipelines.bio/team/dries_de_maeyer/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/team/toni_verbeiren/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/team/povilas_gibas/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/team/matthias_beyens/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/team/mauro_saporita/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/team/samuel_dsouza/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/team/marijke_van_moerbeke/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/contributing/creating_components.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/contributing/creating_pipelines.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/contributing/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/CHANGELOG.html + 2023-09-06T15:28:58.809Z + + + https://openpipelines.bio/components/modules/neighbors/bbknn.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/transform/scale.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/transform/clr.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/transform/log1p.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/dataflow/concat.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/process_10xh5/filter_10xh5.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/metadata/join_uns_to_obs.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/metadata/move_obsm_to_obs.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/demux/cellranger_mkfastq.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/demux/bcl_convert.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/cluster/leiden.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/qc/multiqc.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/download/sync_test_resources.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/compression/compress_h5mu.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/annotate/popv.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/labels_transfer/xgboost.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/convert/from_cellranger_multi_to_h5mu.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/convert/from_h5ad_to_h5mu.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/convert/velocyto_to_h5mu.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/convert/from_bdrhap_to_h5mu.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/correction/cellbender_remove_background_v0_2.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/filter/remove_modality.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/filter/filter_with_scrublet.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/filter/filter_with_counts.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/dimred/pca.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/reference/make_reference.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/reference/build_cellranger_reference.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/integrate/scanorama.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/integrate/scarches.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/integrate/harmonypy.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/mapping/multi_star_to_h5mu.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/mapping/multi_star.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/mapping/cellranger_multi.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/mapping/star_align.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/mapping/samtools_sort.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/mapping/cellranger_count_split.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/velocity/velocyto.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/workflows/integration/common/harmony_leiden.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/workflows/integration/initialize_integration/initialize_integration.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/workflows/index.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/workflows/ingestion/bd_rhapsody.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/workflows/ingestion/conversion.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/workflows/ingestion/cellranger_postprocessing.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/workflows/multiomics/rna_multisample.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/components/workflows/multiomics/prot_singlesample.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/components/workflows/multiomics/integration/initialize_integration.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/components/workflows/multiomics/integration/bbknn_leiden.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/components/workflows/multiomics/integration/leiden_scvi.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/components/workflows/multiomics/prot_multisample.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/components/workflows/multiomics/rna_singlesample.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/user_guide/bug_reports.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/user_guide/running_pipelines.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/user_guide/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/user_guide/downstream.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/more_information/faq.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/more_information/cheat_sheets.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/fundamentals/roadmap.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/fundamentals/architecture.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/fundamentals/concepts.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/fundamentals/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/fundamentals/philosophy.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/more_information/data_api.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/more_information/code_of_conduct.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/user_guide/processing.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/user_guide/getting_started.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/user_guide/ingestion.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/components/index.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/workflows/multiomics/integration.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/components/workflows/multiomics/full_pipeline.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/workflows/multiomics/integration/harmony_leiden.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/components/workflows/multiomics/integration/scanorama_leiden.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/components/workflows/multiomics/integration/totalvi_leiden.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/components/workflows/multiomics/multisample.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/components/workflows/ingestion/cellranger_mapping.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/workflows/ingestion/cellranger_multi.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/workflows/ingestion/make_reference.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/workflows/ingestion/demux.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/workflows/integration/scvi/scvi.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/workflows/integration/scanorama_leiden/scanorama_leiden.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/velocity/scvelo.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/interpret/lianapy.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/mapping/cellranger_count.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/mapping/htseq_count_to_h5mu.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/mapping/htseq_count.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/mapping/star_build_reference.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/mapping/star_align_v273a.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/mapping/bd_rhapsody.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/integrate/totalvi.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/integrate/scvi.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/query/cellxgene_census.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/reference/build_bdrhap_reference.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/dimred/umap.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/index.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/filter/do_filter.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/filter/filter_with_hvg.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/filter/subset_h5mu.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/correction/cellbender_remove_background.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/convert/from_h5mu_to_h5ad.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/convert/from_10xmtx_to_h5mu.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/convert/from_10xh5_to_h5mu.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/convert/from_bd_to_10x_molecular_barcode_tags.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/labels_transfer/knn.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/report/mermaid.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/download/download_file.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/qc/calculate_qc_metrics.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/qc/fastqc.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/files/make_params.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/demux/bcl2fastq.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/transfer/publish.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/metadata/join_csv.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/metadata/add_id.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/dataflow/split_modalities.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/dataflow/merge.html + 2023-09-06T15:28:58.849Z + + + https://openpipelines.bio/components/modules/transform/normalize_total.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/transform/delete_layer.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/transform/regress_out.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/components/modules/neighbors/find_neighbors.html + 2023-09-06T15:28:58.853Z + + + https://openpipelines.bio/contributing/running_tests.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/contributing/getting_started.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/contributing/pull_requests.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/contributing/project_structure.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/team/robrecht_cannoodt/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/team/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/team/vladimir_shitov/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/team/angela_oliveira_pisco/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/team/malte_d_luecken/index.html + 2023-09-06T15:28:58.857Z + + + https://openpipelines.bio/team/dries_schaumont/index.html + 2023-09-06T15:28:58.857Z + + diff --git a/pr-preview/pr-51/styles.css b/pr-preview/pr-51/styles.css new file mode 100644 index 00000000..ab530325 --- /dev/null +++ b/pr-preview/pr-51/styles.css @@ -0,0 +1,57 @@ +/* css styles */ + +h1, h2 { + margin-top: 0; + border-bottom: 0; +} + +h1 { + font-size: 1.6rem; +} + +h2 { + font-size: 1.2rem; +} + +header > .quarto-title h1 { + font-size: 2.5rem; + font-weight: 800; + +} + +#navbarCollapse { + background-color: #ffffff; +} + +#quarto-header nav.navbar { + height: 4rem; + padding: 0; +} + +a.navbar-brand-logo > img { + max-height: 2.5rem; + margin: 2rem; +} + +.mermaid svg { + display: block; + margin: auto; +} +.cluster-label { + padding-bottom: 60px; + +} + +#fig-architecture path[class*="LS-titlebox"] { + display: none; + +} + +#fig-architecture .nodes > g[id*="titlebox"] > rect.label-container { + fill: none; + stroke: none; +} + +.home .title { + text-align: center; +} \ No newline at end of file diff --git a/pr-preview/pr-51/team/angela_oliveira_pisco/index.html b/pr-preview/pr-51/team/angela_oliveira_pisco/index.html new file mode 100644 index 00000000..5d8cad7d --- /dev/null +++ b/pr-preview/pr-51/team/angela_oliveira_pisco/index.html @@ -0,0 +1,463 @@ + + + + + + + + + +OpenPipelines - Angela Oliveira Pisco + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Angela Oliveira Pisco

+
+
+
+
+ + +
+
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/team/dries_de_maeyer/index.html b/pr-preview/pr-51/team/dries_de_maeyer/index.html new file mode 100644 index 00000000..e70b5669 --- /dev/null +++ b/pr-preview/pr-51/team/dries_de_maeyer/index.html @@ -0,0 +1,463 @@ + + + + + + + + + +OpenPipelines - Dries De Maeyer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Dries De Maeyer

+
+
+
+
+ + +
+
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/team/dries_schaumont/index.html b/pr-preview/pr-51/team/dries_schaumont/index.html new file mode 100644 index 00000000..08496d31 --- /dev/null +++ b/pr-preview/pr-51/team/dries_schaumont/index.html @@ -0,0 +1,463 @@ + + + + + + + + + +OpenPipelines - Dries Schaumont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Dries Schaumont

+
+
+
+
+ + +
+
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/team/index.html b/pr-preview/pr-51/team/index.html new file mode 100644 index 00000000..fae5839f --- /dev/null +++ b/pr-preview/pr-51/team/index.html @@ -0,0 +1,850 @@ + + + + + + + + + +OpenPipelines - Team + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/team/malte_d_luecken/index.html b/pr-preview/pr-51/team/malte_d_luecken/index.html new file mode 100644 index 00000000..19c08325 --- /dev/null +++ b/pr-preview/pr-51/team/malte_d_luecken/index.html @@ -0,0 +1,463 @@ + + + + + + + + + +OpenPipelines - Malte D. Luecken + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Malte D. Luecken

+
+
+
+
+ + +
+
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/team/marijke_van_moerbeke/index.html b/pr-preview/pr-51/team/marijke_van_moerbeke/index.html new file mode 100644 index 00000000..649becbf --- /dev/null +++ b/pr-preview/pr-51/team/marijke_van_moerbeke/index.html @@ -0,0 +1,463 @@ + + + + + + + + + +OpenPipelines - Marijke Van Moerbeke + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Marijke Van Moerbeke

+
+
+
+
+ + +
+
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/team/matthias_beyens/index.html b/pr-preview/pr-51/team/matthias_beyens/index.html new file mode 100644 index 00000000..eacbcacd --- /dev/null +++ b/pr-preview/pr-51/team/matthias_beyens/index.html @@ -0,0 +1,463 @@ + + + + + + + + + +OpenPipelines - Matthias Beyens + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Matthias Beyens

+
+
+
+
+ + +
+
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/team/mauro_saporita/index.html b/pr-preview/pr-51/team/mauro_saporita/index.html new file mode 100644 index 00000000..f2813803 --- /dev/null +++ b/pr-preview/pr-51/team/mauro_saporita/index.html @@ -0,0 +1,463 @@ + + + + + + + + + +OpenPipelines - Mauro Saporita + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Mauro Saporita

+
+
+
+
+ + +
+
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/team/povilas_gibas/index.html b/pr-preview/pr-51/team/povilas_gibas/index.html new file mode 100644 index 00000000..a9413f44 --- /dev/null +++ b/pr-preview/pr-51/team/povilas_gibas/index.html @@ -0,0 +1,463 @@ + + + + + + + + + +OpenPipelines - Povilas Gibas + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Povilas Gibas

+
+
+
+
+ + +
+
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/team/robrecht_cannoodt/index.html b/pr-preview/pr-51/team/robrecht_cannoodt/index.html new file mode 100644 index 00000000..40f0c705 --- /dev/null +++ b/pr-preview/pr-51/team/robrecht_cannoodt/index.html @@ -0,0 +1,463 @@ + + + + + + + + + +OpenPipelines - Robrecht Cannoodt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Robrecht Cannoodt

+
+
+
+
+ + +
+
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/team/samuel_dsouza/index.html b/pr-preview/pr-51/team/samuel_dsouza/index.html new file mode 100644 index 00000000..d62afeeb --- /dev/null +++ b/pr-preview/pr-51/team/samuel_dsouza/index.html @@ -0,0 +1,463 @@ + + + + + + + + + +OpenPipelines - Samuel D’Souza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Samuel D’Souza

+
+
+
+
+ + +
+
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/team/team.css b/pr-preview/pr-51/team/team.css new file mode 100644 index 00000000..100ffefc --- /dev/null +++ b/pr-preview/pr-51/team/team.css @@ -0,0 +1,70 @@ +/* css styles */ +.people-person { + background: none; + border: none; + flex-basis: 250px; +} + +.people-widget { + font-size: 0.8rem; + text-align: center; + display: flex; + flex-wrap: wrap; + gap: 1.5em; + padding-top: 1em; +} + +.people-widget .portrait-title h2 { + font-size: 1rem; +} + +.people-widget .portrait-title h3 { + font-size: 0.7rem; +} + +.people-widget .avatar { + width: 80%; + max-width: 150px; + max-height: 150px; + object-fit: cover; + height: auto; + margin: 0 auto; +} + +@media (min-width: 576px) { + .people-widget .col-sm-auto { + width: 30%; + } +} +@media (min-width: 992px) { + .people-widget .col-sm-auto { + width: 20%; + } +} + +.avatar-circle { + border-radius: 50%; +} + +.avatar-square { + border-radius: 3px; +} + +.portrait-title h5 { + font-size: 1.4em; + font-weight: 300; + color: var(--bs-body-color); + margin: 20px 0 10px; +} + +.portrait-title h6 { + font-size: 1rem; + font-weight: 300; + color: var(--bs-secondary-text-color); + margin: 0 0 10px; +} + +.network-icon { + margin: 0.1em; + text-decoration: none; +} diff --git a/pr-preview/pr-51/team/toni_verbeiren/index.html b/pr-preview/pr-51/team/toni_verbeiren/index.html new file mode 100644 index 00000000..5b529bb2 --- /dev/null +++ b/pr-preview/pr-51/team/toni_verbeiren/index.html @@ -0,0 +1,463 @@ + + + + + + + + + +OpenPipelines - Toni Verbeiren + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Toni Verbeiren

+
+
+
+
+ + +
+
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/team/vladimir_shitov/index.html b/pr-preview/pr-51/team/vladimir_shitov/index.html new file mode 100644 index 00000000..213c8400 --- /dev/null +++ b/pr-preview/pr-51/team/vladimir_shitov/index.html @@ -0,0 +1,463 @@ + + + + + + + + + +OpenPipelines - Vladimir Shitov + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

Vladimir Shitov

+
+
+
+
+ + +
+
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/user_guide/bug_reports.html b/pr-preview/pr-51/user_guide/bug_reports.html new file mode 100644 index 00000000..a04aeb06 --- /dev/null +++ b/pr-preview/pr-51/user_guide/bug_reports.html @@ -0,0 +1,546 @@ + + + + + + + + + +OpenPipelines - Bug reports + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Bug reports

+
+ + + +
+ + + + +
+ + +
+ +

Issues with Openpipelines are being tracked on Github. In order for an issue to be fixed in a timely manner, creating a complete and reproducable is essential.

+ + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/user_guide/downstream.html b/pr-preview/pr-51/user_guide/downstream.html new file mode 100644 index 00000000..9dbf3d4a --- /dev/null +++ b/pr-preview/pr-51/user_guide/downstream.html @@ -0,0 +1,551 @@ + + + + + + + + + + +OpenPipelines - Downstream + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Downstream

+
+ +
+
+ Celltyping and cell-cell communication +
+
+ + +
+ + + + +
+ + +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/user_guide/getting_started.html b/pr-preview/pr-51/user_guide/getting_started.html new file mode 100644 index 00000000..d4780136 --- /dev/null +++ b/pr-preview/pr-51/user_guide/getting_started.html @@ -0,0 +1,545 @@ + + + + + + + + + +OpenPipelines - Getting started + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Getting started

+
+ + + +
+ + + + +
+ + +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/user_guide/index.html b/pr-preview/pr-51/user_guide/index.html new file mode 100644 index 00000000..4ea6a1f9 --- /dev/null +++ b/pr-preview/pr-51/user_guide/index.html @@ -0,0 +1,572 @@ + + + + + + + + + +OpenPipelines - User Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

User Guide

+
+ + + +
+ + + + +
+ + +
+ +
+

Which workflow is right for me

+
+
+

Executing pipelines or build components

+
+

Using the nf-tower user-interface

+
+
+

Using the nf-tower CLI (tw)

+
+
+

Using the nextflow CLI

+ + +
+
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/pr-preview/pr-51/user_guide/ingestion.html b/pr-preview/pr-51/user_guide/ingestion.html new file mode 100644 index 00000000..1d436806 --- /dev/null +++ b/pr-preview/pr-51/user_guide/ingestion.html @@ -0,0 +1,551 @@ + + + + + + + + + + +OpenPipelines - Ingestion + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Ingestion

+
+ +
+
+ From sequencing to count tables +
+
+ + +
+ + + + +
+ + +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/user_guide/processing.html b/pr-preview/pr-51/user_guide/processing.html new file mode 100644 index 00000000..b2cb9b24 --- /dev/null +++ b/pr-preview/pr-51/user_guide/processing.html @@ -0,0 +1,551 @@ + + + + + + + + + + +OpenPipelines - Processing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Processing

+
+ +
+
+ From count tables to integrated data +
+
+ + +
+ + + + +
+ + +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-51/user_guide/running_pipelines.html b/pr-preview/pr-51/user_guide/running_pipelines.html new file mode 100644 index 00000000..22e99306 --- /dev/null +++ b/pr-preview/pr-51/user_guide/running_pipelines.html @@ -0,0 +1,640 @@ + + + + + + + + + +OpenPipelines - Running pipelines + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Running pipelines

+
+ + + +
+ + + + +
+ + +
+ +
+
+
+ +
+
+Note +
+
+
+

TODO: Fill in these sections.

+
    +
  • Examples should be using an OpenPipelines release or the main_build branch.
  • +
  • Point to the “Components” tab
  • +
+
+
+
+

Installing Viash and Nextflow

+

Before you try running OpenPipelines, please install Viash and Nextflow first.

+
+

Running pipelines from the CLI

+
bin/nextflow run . \
+  -main-script workflows/integration/multimodal_integration/main.nf \
+  -profile docker \
+  -resume 
+  --publish_dir foo/
+  --input "bar"
+  --output "test.txt"
+
+
+

Running pipelines from Nextflow Tower

+
+
+

Using param_list to pass large parameter sets

+

Using Viash’s VDSL3 nextflow platform, an optional -param_list argument can be used to pass a large number of inputs to a workflow. Additionally, the pipeline parameter values can be set for each input to the workflow independently. A param_list can either be a list of maps, a csv file, a json file, a yaml file, or simply a yaml blob:

+
    +
  • A csv file should have column names which correspond to the different arguments of this pipeline. Example: --param_list data.csv with columns id,input.
  • +
  • A json or a yaml file should be a list of maps, each of which has keys corresponding to the arguments of the pipeline. Example: --param_list data.json with contents [ {'id': 'foo', 'input': 'foo.txt'}, {'id': 'bar', 'input': 'bar.txt'} ].
  • +
  • A yaml blob can also be passed directly as a string. Example: --param_list "[ {'id': 'foo', 'input': 'foo.txt'}, {'id': 'bar', 'input': 'bar.txt'} ]".
  • +
  • A list of maps can be in a nextflow.config file, where the keys of each map corresponds to the arguments of the pipeline. Example in a nextflow.config file: param_list: [ ['id': 'foo', 'input': 'foo.txt'], ['id': 'bar', 'input': 'bar.txt'] ].
  • +
+

When passing a csv, json or yaml file, relative path names are relativized to the location of the parameter file. No relativation is performed when param_list is a list of maps (as-is) or a yaml blob.

+

Using a param_list can be combined with setting parameters that are set for all parameter sets. These ‘gobal’ parameters will always be overwritten with their counterpart that was specified in a more specific manner for a single parameter set. For example, using --param_list "[ {'id': 'foo', 'input': 'foo.txt'}, {'id': 'bar'} ]" --input 'global.txt' will result in the following parameter sets being processed:

+
    +
  • id: foo, input: foo.txt
  • +
  • id: bar, input: global.txt
  • +
+ + +
+
+ +
+ +
+
+ +
+ + + + \ No newline at end of file
  • !35N-h%Knumftu3XRO(&xri;Pd8h@6 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 z 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