From 1256451169852e9b5af4609230df6cf843c49e85 Mon Sep 17 00:00:00 2001 From: Fabian Montero Date: Sat, 13 Sep 2025 14:34:18 -0600 Subject: [PATCH] Merge commit '9475df091491ca7b51c1b60b542720f10637d9dc' --- .gitignore | 1 + LICENSE | 21 + config.toml | 517 +++ i18n/ar.toml | 113 + i18n/ca.toml | 98 + i18n/de.toml | 102 + i18n/en.toml | 98 + i18n/es.toml | 98 + i18n/et.toml | 98 + i18n/fa.toml | 99 + i18n/fi.toml | 102 + i18n/fr.toml | 98 + i18n/hi.toml | 100 + i18n/it.toml | 97 + i18n/ja.toml | 102 + i18n/ko.toml | 102 + i18n/nl.toml | 98 + i18n/or.toml | 98 + i18n/pt-PT.toml | 98 + i18n/ru.toml | 107 + i18n/uk.toml | 111 + i18n/zh-Hans.toml | 98 + i18n/zh-Hant.toml | 98 + sass/main.scss | 347 ++ sass/parts/_admonitions.scss | 159 + sass/parts/_archive.scss | 37 + sass/parts/_aside.scss | 31 + sass/parts/_cards.scss | 105 + sass/parts/_code.scss | 152 + sass/parts/_comments.scss | 33 + sass/parts/_footer.scss | 91 + sass/parts/_header-anchor.scss | 35 + sass/parts/_header.scss | 197 + sass/parts/_home-banner.scss | 82 + sass/parts/_iine.scss | 37 + sass/parts/_image-hover.scss | 22 + sass/parts/_image-toggler.scss | 24 + sass/parts/_image.scss | 60 + sass/parts/_misc.scss | 330 ++ sass/parts/_multilingual_quote.scss | 35 + sass/parts/_pagination.scss | 19 + sass/parts/_posts_list.scss | 172 + sass/parts/_quick_navigation_buttons.scss | 126 + sass/parts/_search.scss | 160 + sass/parts/_spoiler.scss | 53 + sass/parts/_syntax_theme.scss | 342 ++ sass/parts/_table.scss | 38 + sass/parts/_tags.scss | 41 + sass/parts/_theme-switch.scss | 42 + sass/parts/_webmention.scss | 149 + sass/parts/_zola-error.scss | 28 + sass/skins/blue.scss | 22 + sass/skins/evangelion.scss | 24 + sass/skins/indigo_ingot.scss | 22 + sass/skins/lavender.scss | 22 + sass/skins/lowcontrast_orange.scss | 26 + sass/skins/lowcontrast_peach.scss | 26 + sass/skins/lowcontrast_pink.scss | 26 + sass/skins/mint.scss | 22 + sass/skins/monochrome.scss | 22 + sass/skins/red.scss | 22 + sass/skins/sakura.scss | 22 + sass/skins/teal.scss | 33 + static/custom_subset.css | 1 + static/feed_style.xsl | 119 + static/fonts/KaTeX/KaTeX_AMS-Regular.ttf | Bin 0 -> 63632 bytes static/fonts/KaTeX/KaTeX_AMS-Regular.woff | Bin 0 -> 33516 bytes static/fonts/KaTeX/KaTeX_AMS-Regular.woff2 | Bin 0 -> 28076 bytes static/fonts/KaTeX/KaTeX_Caligraphic-Bold.ttf | Bin 0 -> 12368 bytes .../fonts/KaTeX/KaTeX_Caligraphic-Bold.woff | Bin 0 -> 7716 bytes .../fonts/KaTeX/KaTeX_Caligraphic-Bold.woff2 | Bin 0 -> 6912 bytes .../fonts/KaTeX/KaTeX_Caligraphic-Regular.ttf | Bin 0 -> 12344 bytes .../KaTeX/KaTeX_Caligraphic-Regular.woff | Bin 0 -> 7656 bytes .../KaTeX/KaTeX_Caligraphic-Regular.woff2 | Bin 0 -> 6908 bytes static/fonts/KaTeX/KaTeX_Fraktur-Bold.ttf | Bin 0 -> 19584 bytes static/fonts/KaTeX/KaTeX_Fraktur-Bold.woff | Bin 0 -> 13296 bytes static/fonts/KaTeX/KaTeX_Fraktur-Bold.woff2 | Bin 0 -> 11348 bytes static/fonts/KaTeX/KaTeX_Fraktur-Regular.ttf | Bin 0 -> 19572 bytes static/fonts/KaTeX/KaTeX_Fraktur-Regular.woff | Bin 0 -> 13208 bytes .../fonts/KaTeX/KaTeX_Fraktur-Regular.woff2 | Bin 0 -> 11316 bytes static/fonts/KaTeX/KaTeX_Main-Bold.ttf | Bin 0 -> 51336 bytes static/fonts/KaTeX/KaTeX_Main-Bold.woff | Bin 0 -> 29912 bytes static/fonts/KaTeX/KaTeX_Main-Bold.woff2 | Bin 0 -> 25324 bytes static/fonts/KaTeX/KaTeX_Main-BoldItalic.ttf | Bin 0 -> 32968 bytes static/fonts/KaTeX/KaTeX_Main-BoldItalic.woff | Bin 0 -> 19412 bytes .../fonts/KaTeX/KaTeX_Main-BoldItalic.woff2 | Bin 0 -> 16780 bytes static/fonts/KaTeX/KaTeX_Main-Italic.ttf | Bin 0 -> 33580 bytes static/fonts/KaTeX/KaTeX_Main-Italic.woff | Bin 0 -> 19676 bytes static/fonts/KaTeX/KaTeX_Main-Italic.woff2 | Bin 0 -> 16988 bytes static/fonts/KaTeX/KaTeX_Main-Regular.ttf | Bin 0 -> 53580 bytes static/fonts/KaTeX/KaTeX_Main-Regular.woff | Bin 0 -> 30772 bytes static/fonts/KaTeX/KaTeX_Main-Regular.woff2 | Bin 0 -> 26272 bytes static/fonts/KaTeX/KaTeX_Math-BoldItalic.ttf | Bin 0 -> 31196 bytes static/fonts/KaTeX/KaTeX_Math-BoldItalic.woff | Bin 0 -> 18668 bytes .../fonts/KaTeX/KaTeX_Math-BoldItalic.woff2 | Bin 0 -> 16400 bytes static/fonts/KaTeX/KaTeX_Math-Italic.ttf | Bin 0 -> 31308 bytes static/fonts/KaTeX/KaTeX_Math-Italic.woff | Bin 0 -> 18748 bytes static/fonts/KaTeX/KaTeX_Math-Italic.woff2 | Bin 0 -> 16440 bytes static/fonts/KaTeX/KaTeX_SansSerif-Bold.ttf | Bin 0 -> 24504 bytes static/fonts/KaTeX/KaTeX_SansSerif-Bold.woff | Bin 0 -> 14408 bytes static/fonts/KaTeX/KaTeX_SansSerif-Bold.woff2 | Bin 0 -> 12216 bytes static/fonts/KaTeX/KaTeX_SansSerif-Italic.ttf | Bin 0 -> 22364 bytes .../fonts/KaTeX/KaTeX_SansSerif-Italic.woff | Bin 0 -> 14112 bytes .../fonts/KaTeX/KaTeX_SansSerif-Italic.woff2 | Bin 0 -> 12028 bytes .../fonts/KaTeX/KaTeX_SansSerif-Regular.ttf | Bin 0 -> 19436 bytes .../fonts/KaTeX/KaTeX_SansSerif-Regular.woff | Bin 0 -> 12316 bytes .../fonts/KaTeX/KaTeX_SansSerif-Regular.woff2 | Bin 0 -> 10344 bytes static/fonts/KaTeX/KaTeX_Script-Regular.ttf | Bin 0 -> 16648 bytes static/fonts/KaTeX/KaTeX_Script-Regular.woff | Bin 0 -> 10588 bytes static/fonts/KaTeX/KaTeX_Script-Regular.woff2 | Bin 0 -> 9644 bytes static/fonts/KaTeX/KaTeX_Size1-Regular.ttf | Bin 0 -> 12228 bytes static/fonts/KaTeX/KaTeX_Size1-Regular.woff | Bin 0 -> 6496 bytes static/fonts/KaTeX/KaTeX_Size1-Regular.woff2 | Bin 0 -> 5468 bytes static/fonts/KaTeX/KaTeX_Size2-Regular.ttf | Bin 0 -> 11508 bytes static/fonts/KaTeX/KaTeX_Size2-Regular.woff | Bin 0 -> 6188 bytes static/fonts/KaTeX/KaTeX_Size2-Regular.woff2 | Bin 0 -> 5208 bytes static/fonts/KaTeX/KaTeX_Size3-Regular.ttf | Bin 0 -> 7588 bytes static/fonts/KaTeX/KaTeX_Size3-Regular.woff | Bin 0 -> 4420 bytes static/fonts/KaTeX/KaTeX_Size3-Regular.woff2 | Bin 0 -> 3624 bytes static/fonts/KaTeX/KaTeX_Size4-Regular.ttf | Bin 0 -> 10364 bytes static/fonts/KaTeX/KaTeX_Size4-Regular.woff | Bin 0 -> 5980 bytes static/fonts/KaTeX/KaTeX_Size4-Regular.woff2 | Bin 0 -> 4928 bytes .../fonts/KaTeX/KaTeX_Typewriter-Regular.ttf | Bin 0 -> 27556 bytes .../fonts/KaTeX/KaTeX_Typewriter-Regular.woff | Bin 0 -> 16028 bytes .../KaTeX/KaTeX_Typewriter-Regular.woff2 | Bin 0 -> 13568 bytes static/inter_subset_en.css | 1 + static/inter_subset_es.css | 1 + static/isso.css | 375 ++ static/isso.min.css | 1 + static/js/codeBlockNameLinks.js | 36 + static/js/codeBlockNameLinks.min.js | 1 + static/js/copyCodeToClipboard.js | 47 + static/js/copyCodeToClipboard.min.js | 1 + static/js/decodeMail.js | 44 + static/js/decodeMail.min.js | 1 + static/js/filterCards.js | 99 + static/js/filterCards.min.js | 1 + static/js/footnoteBacklinks.js | 33 + static/js/footnoteBacklinks.min.js | 1 + static/js/giscus.js | 81 + static/js/giscus.min.js | 1 + static/js/hyvortalk.js | 44 + static/js/hyvortalk.min.js | 1 + static/js/initializeTheme.js | 25 + static/js/initializeTheme.min.js | 1 + static/js/isso.js | 81 + static/js/isso.min.js | 1 + static/js/katex.min.js | 1 + static/js/loadComments.js | 26 + static/js/loadComments.min.js | 1 + static/js/lunr/lunr.da.js | 280 ++ static/js/lunr/lunr.da.min.js | 1 + static/js/lunr/lunr.de.js | 380 ++ static/js/lunr/lunr.de.min.js | 1 + static/js/lunr/lunr.du.js | 444 +++ static/js/lunr/lunr.du.min.js | 1 + static/js/lunr/lunr.es.js | 595 +++ static/js/lunr/lunr.es.min.js | 1 + static/js/lunr/lunr.fi.js | 536 +++ static/js/lunr/lunr.fi.min.js | 1 + static/js/lunr/lunr.fr.js | 698 ++++ static/js/lunr/lunr.fr.min.js | 1 + static/js/lunr/lunr.hu.js | 561 +++ static/js/lunr/lunr.hu.min.js | 1 + static/js/lunr/lunr.it.js | 612 ++++ static/js/lunr/lunr.it.min.js | 1 + static/js/lunr/lunr.jp.js | 120 + static/js/lunr/lunr.jp.min.js | 1 + static/js/lunr/lunr.no.js | 253 ++ static/js/lunr/lunr.no.min.js | 1 + static/js/lunr/lunr.pt.js | 566 +++ static/js/lunr/lunr.pt.min.js | 1 + static/js/lunr/lunr.ro.js | 554 +++ static/js/lunr/lunr.ro.min.js | 1 + static/js/lunr/lunr.ru.js | 387 ++ static/js/lunr/lunr.ru.min.js | 1 + static/js/lunr/lunr.sv.js | 252 ++ static/js/lunr/lunr.sv.min.js | 1 + static/js/lunr/lunr.tr.js | 1070 ++++++ static/js/lunr/lunr.tr.min.js | 1 + static/js/lunr/lunr.zh.js | 156 + static/js/lunr/lunr.zh.min.js | 1 + static/js/lunr/lunrStemmerSupport.js | 304 ++ static/js/lunr/lunrStemmerSupport.min.js | 1 + static/js/mermaid.min.js | 2651 ++++++++++++++ static/js/searchElasticlunr.js | 3201 +++++++++++++++++ static/js/searchElasticlunr.min.js | 1 + static/js/sortTable.js | 119 + static/js/sortTable.min.js | 1 + static/js/themeSwitcher.js | 74 + static/js/themeSwitcher.min.js | 1 + static/js/utterances.js | 64 + static/js/utterances.min.js | 1 + static/js/webmention.js | 412 +++ static/js/webmention.min.js | 66 + static/katex.min.css | 1 + static/no_js.css | 1 + static/sitemap_style.xsl | 51 + static/social_icons/LICENSE | 5 + static/social_icons/apple.svg | 1 + static/social_icons/bitcoin.svg | 1 + static/social_icons/bluesky.svg | 1 + static/social_icons/calckey.svg | 5 + static/social_icons/castopod.svg | 5 + static/social_icons/codeberg.svg | 3 + static/social_icons/debian.svg | 1 + static/social_icons/deviantart.svg | 1 + static/social_icons/diaspora.svg | 1 + static/social_icons/discord.svg | 1 + static/social_icons/discourse.svg | 1 + static/social_icons/email.svg | 1 + static/social_icons/ethereum.svg | 1 + static/social_icons/etsy.svg | 1 + static/social_icons/facebook.svg | 1 + static/social_icons/forgejo.svg | 4 + static/social_icons/friendica.svg | 5 + static/social_icons/funkwhale.svg | 9 + static/social_icons/gitea.svg | 5 + static/social_icons/github.svg | 1 + static/social_icons/gitlab.svg | 1 + static/social_icons/google-scholar.svg | 1 + static/social_icons/google.svg | 1 + static/social_icons/greatape.svg | 4 + static/social_icons/hacker-news.svg | 1 + static/social_icons/hubzilla.svg | 4 + static/social_icons/instagram.svg | 1 + static/social_icons/itchio.svg | 1 + static/social_icons/keybase.svg | 1 + static/social_icons/lemmy.svg | 8 + static/social_icons/letterboxd.svg | 1 + static/social_icons/linkedin.svg | 1 + static/social_icons/mastodon.svg | 1 + static/social_icons/matrix.svg | 6 + static/social_icons/misskey.svg | 9 + static/social_icons/nostr.svg | 31 + static/social_icons/orcid.svg | 1 + static/social_icons/paypal.svg | 1 + static/social_icons/peertube.svg | 7 + static/social_icons/pinterest.svg | 1 + static/social_icons/pixelfed.svg | 4 + static/social_icons/pleroma.svg | 6 + static/social_icons/quora.svg | 1 + static/social_icons/reddit.svg | 1 + static/social_icons/rss.svg | 1 + static/social_icons/signal.svg | 1 + static/social_icons/skype.svg | 1 + static/social_icons/slack.svg | 1 + static/social_icons/snapchat.svg | 1 + static/social_icons/soundcloud.svg | 1 + static/social_icons/spotify.svg | 1 + static/social_icons/stack-exchange.svg | 1 + static/social_icons/stack-overflow.svg | 1 + static/social_icons/steam.svg | 1 + static/social_icons/telegram.svg | 1 + static/social_icons/twitter.svg | 1 + static/social_icons/vimeo.svg | 1 + static/social_icons/whatsapp.svg | 1 + static/social_icons/wordpress.svg | 5 + static/social_icons/writefreely.svg | 4 + static/social_icons/x.svg | 1 + static/social_icons/youtube.svg | 1 + templates/404.html | 34 + templates/anchor-link.html | 1 + templates/archive.html | 89 + templates/atom.xml | 110 + templates/base.html | 51 + templates/cards.html | 32 + templates/index.html | 1 + templates/info-page.html | 21 + templates/internal/alias.html | 13 + templates/macros/feed_utils.html | 17 + templates/macros/format_date.html | 59 + templates/macros/list_posts.html | 163 + templates/macros/page_header.html | 18 + templates/macros/rel_attributes.html | 19 + templates/macros/series_page.html | 162 + templates/macros/settings.html | 68 + templates/macros/table_of_contents.html | 54 + templates/macros/target_attribute.html | 11 + templates/macros/translate.html | 72 + templates/page.html | 368 ++ templates/partials/analytics.html | 38 + templates/partials/cards_pages.html | 46 + templates/partials/comments.html | 95 + .../partials/content_security_policy.html | 119 + templates/partials/copyright.html | 39 + templates/partials/extra_features.html | 88 + templates/partials/filter_card_tags.html | 35 + templates/partials/footer.html | 127 + templates/partials/hcard.html | 75 + templates/partials/hcard_small.html | 26 + templates/partials/header.html | 182 + templates/partials/history_url.html | 26 + templates/partials/home_banner.html | 20 + templates/partials/iine_button.html | 33 + templates/partials/language_switcher.html | 38 + templates/partials/main_page_posts_list.html | 61 + .../partials/main_page_projects_list.html | 16 + templates/partials/multilingual_tags.html | 29 + templates/partials/nav.html | 60 + templates/partials/paginate.html | 27 + templates/partials/search_modal.html | 31 + templates/partials/social_media_images.html | 50 + templates/partials/theme_switcher.html | 31 + templates/partials/title.html | 40 + templates/partials/webmentions.html | 51 + templates/section.html | 57 + templates/series.html | 62 + .../shortcodes/add_src_to_code_block.html | 1 + templates/shortcodes/admonition.html | 12 + templates/shortcodes/aside.html | 5 + templates/shortcodes/dimmable_image.html | 31 + templates/shortcodes/dual_theme_image.html | 45 + .../shortcodes/force_text_direction.html | 5 + templates/shortcodes/full_width_image.html | 22 + templates/shortcodes/iine.html | 5 + templates/shortcodes/image_hover.html | 50 + templates/shortcodes/image_toggler.html | 57 + templates/shortcodes/invertible_image.html | 32 + templates/shortcodes/mermaid.html | 8 + templates/shortcodes/multilingual_quote.html | 37 + templates/shortcodes/references.html | 3 + templates/shortcodes/remote_text.html | 30 + templates/shortcodes/spoiler.html | 13 + templates/shortcodes/toc.html | 2 + templates/shortcodes/wide_container.html | 3 + templates/sitemap.xml | 12 + templates/tags/list.html | 40 + templates/tags/single.html | 22 + templates/taxonomy_list.html | 40 + templates/taxonomy_single.html | 22 + theme.toml | 465 +++ 332 files changed, 25244 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 config.toml create mode 100644 i18n/ar.toml create mode 100644 i18n/ca.toml create mode 100644 i18n/de.toml create mode 100644 i18n/en.toml create mode 100644 i18n/es.toml create mode 100644 i18n/et.toml create mode 100644 i18n/fa.toml create mode 100644 i18n/fi.toml create mode 100644 i18n/fr.toml create mode 100644 i18n/hi.toml create mode 100644 i18n/it.toml create mode 100644 i18n/ja.toml create mode 100644 i18n/ko.toml create mode 100644 i18n/nl.toml create mode 100644 i18n/or.toml create mode 100644 i18n/pt-PT.toml create mode 100644 i18n/ru.toml create mode 100644 i18n/uk.toml create mode 100644 i18n/zh-Hans.toml create mode 100644 i18n/zh-Hant.toml create mode 100644 sass/main.scss create mode 100644 sass/parts/_admonitions.scss create mode 100644 sass/parts/_archive.scss create mode 100644 sass/parts/_aside.scss create mode 100644 sass/parts/_cards.scss create mode 100644 sass/parts/_code.scss create mode 100644 sass/parts/_comments.scss create mode 100644 sass/parts/_footer.scss create mode 100644 sass/parts/_header-anchor.scss create mode 100644 sass/parts/_header.scss create mode 100644 sass/parts/_home-banner.scss create mode 100644 sass/parts/_iine.scss create mode 100644 sass/parts/_image-hover.scss create mode 100644 sass/parts/_image-toggler.scss create mode 100644 sass/parts/_image.scss create mode 100644 sass/parts/_misc.scss create mode 100644 sass/parts/_multilingual_quote.scss create mode 100644 sass/parts/_pagination.scss create mode 100644 sass/parts/_posts_list.scss create mode 100644 sass/parts/_quick_navigation_buttons.scss create mode 100644 sass/parts/_search.scss create mode 100644 sass/parts/_spoiler.scss create mode 100644 sass/parts/_syntax_theme.scss create mode 100644 sass/parts/_table.scss create mode 100644 sass/parts/_tags.scss create mode 100644 sass/parts/_theme-switch.scss create mode 100644 sass/parts/_webmention.scss create mode 100644 sass/parts/_zola-error.scss create mode 100644 sass/skins/blue.scss create mode 100644 sass/skins/evangelion.scss create mode 100644 sass/skins/indigo_ingot.scss create mode 100644 sass/skins/lavender.scss create mode 100644 sass/skins/lowcontrast_orange.scss create mode 100644 sass/skins/lowcontrast_peach.scss create mode 100644 sass/skins/lowcontrast_pink.scss create mode 100644 sass/skins/mint.scss create mode 100644 sass/skins/monochrome.scss create mode 100644 sass/skins/red.scss create mode 100644 sass/skins/sakura.scss create mode 100644 sass/skins/teal.scss create mode 100644 static/custom_subset.css create mode 100644 static/feed_style.xsl create mode 100644 static/fonts/KaTeX/KaTeX_AMS-Regular.ttf create mode 100644 static/fonts/KaTeX/KaTeX_AMS-Regular.woff create mode 100644 static/fonts/KaTeX/KaTeX_AMS-Regular.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Caligraphic-Bold.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Caligraphic-Bold.woff create mode 100644 static/fonts/KaTeX/KaTeX_Caligraphic-Bold.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Caligraphic-Regular.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Caligraphic-Regular.woff create mode 100644 static/fonts/KaTeX/KaTeX_Caligraphic-Regular.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Fraktur-Bold.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Fraktur-Bold.woff create mode 100644 static/fonts/KaTeX/KaTeX_Fraktur-Bold.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Fraktur-Regular.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Fraktur-Regular.woff create mode 100644 static/fonts/KaTeX/KaTeX_Fraktur-Regular.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Main-Bold.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Main-Bold.woff create mode 100644 static/fonts/KaTeX/KaTeX_Main-Bold.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Main-BoldItalic.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Main-BoldItalic.woff create mode 100644 static/fonts/KaTeX/KaTeX_Main-BoldItalic.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Main-Italic.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Main-Italic.woff create mode 100644 static/fonts/KaTeX/KaTeX_Main-Italic.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Main-Regular.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Main-Regular.woff create mode 100644 static/fonts/KaTeX/KaTeX_Main-Regular.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Math-BoldItalic.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Math-BoldItalic.woff create mode 100644 static/fonts/KaTeX/KaTeX_Math-BoldItalic.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Math-Italic.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Math-Italic.woff create mode 100644 static/fonts/KaTeX/KaTeX_Math-Italic.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_SansSerif-Bold.ttf create mode 100644 static/fonts/KaTeX/KaTeX_SansSerif-Bold.woff create mode 100644 static/fonts/KaTeX/KaTeX_SansSerif-Bold.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_SansSerif-Italic.ttf create mode 100644 static/fonts/KaTeX/KaTeX_SansSerif-Italic.woff create mode 100644 static/fonts/KaTeX/KaTeX_SansSerif-Italic.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_SansSerif-Regular.ttf create mode 100644 static/fonts/KaTeX/KaTeX_SansSerif-Regular.woff create mode 100644 static/fonts/KaTeX/KaTeX_SansSerif-Regular.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Script-Regular.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Script-Regular.woff create mode 100644 static/fonts/KaTeX/KaTeX_Script-Regular.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Size1-Regular.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Size1-Regular.woff create mode 100644 static/fonts/KaTeX/KaTeX_Size1-Regular.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Size2-Regular.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Size2-Regular.woff create mode 100644 static/fonts/KaTeX/KaTeX_Size2-Regular.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Size3-Regular.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Size3-Regular.woff create mode 100644 static/fonts/KaTeX/KaTeX_Size3-Regular.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Size4-Regular.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Size4-Regular.woff create mode 100644 static/fonts/KaTeX/KaTeX_Size4-Regular.woff2 create mode 100644 static/fonts/KaTeX/KaTeX_Typewriter-Regular.ttf create mode 100644 static/fonts/KaTeX/KaTeX_Typewriter-Regular.woff create mode 100644 static/fonts/KaTeX/KaTeX_Typewriter-Regular.woff2 create mode 100644 static/inter_subset_en.css create mode 100644 static/inter_subset_es.css create mode 100644 static/isso.css create mode 100644 static/isso.min.css create mode 100644 static/js/codeBlockNameLinks.js create mode 100644 static/js/codeBlockNameLinks.min.js create mode 100644 static/js/copyCodeToClipboard.js create mode 100644 static/js/copyCodeToClipboard.min.js create mode 100644 static/js/decodeMail.js create mode 100644 static/js/decodeMail.min.js create mode 100644 static/js/filterCards.js create mode 100644 static/js/filterCards.min.js create mode 100644 static/js/footnoteBacklinks.js create mode 100644 static/js/footnoteBacklinks.min.js create mode 100644 static/js/giscus.js create mode 100644 static/js/giscus.min.js create mode 100644 static/js/hyvortalk.js create mode 100644 static/js/hyvortalk.min.js create mode 100644 static/js/initializeTheme.js create mode 100644 static/js/initializeTheme.min.js create mode 100644 static/js/isso.js create mode 100644 static/js/isso.min.js create mode 100644 static/js/katex.min.js create mode 100644 static/js/loadComments.js create mode 100644 static/js/loadComments.min.js create mode 100644 static/js/lunr/lunr.da.js create mode 100644 static/js/lunr/lunr.da.min.js create mode 100644 static/js/lunr/lunr.de.js create mode 100644 static/js/lunr/lunr.de.min.js create mode 100644 static/js/lunr/lunr.du.js create mode 100644 static/js/lunr/lunr.du.min.js create mode 100644 static/js/lunr/lunr.es.js create mode 100644 static/js/lunr/lunr.es.min.js create mode 100644 static/js/lunr/lunr.fi.js create mode 100644 static/js/lunr/lunr.fi.min.js create mode 100644 static/js/lunr/lunr.fr.js create mode 100644 static/js/lunr/lunr.fr.min.js create mode 100644 static/js/lunr/lunr.hu.js create mode 100644 static/js/lunr/lunr.hu.min.js create mode 100644 static/js/lunr/lunr.it.js create mode 100644 static/js/lunr/lunr.it.min.js create mode 100644 static/js/lunr/lunr.jp.js create mode 100644 static/js/lunr/lunr.jp.min.js create mode 100644 static/js/lunr/lunr.no.js create mode 100644 static/js/lunr/lunr.no.min.js create mode 100644 static/js/lunr/lunr.pt.js create mode 100644 static/js/lunr/lunr.pt.min.js create mode 100644 static/js/lunr/lunr.ro.js create mode 100644 static/js/lunr/lunr.ro.min.js create mode 100644 static/js/lunr/lunr.ru.js create mode 100644 static/js/lunr/lunr.ru.min.js create mode 100644 static/js/lunr/lunr.sv.js create mode 100644 static/js/lunr/lunr.sv.min.js create mode 100644 static/js/lunr/lunr.tr.js create mode 100644 static/js/lunr/lunr.tr.min.js create mode 100644 static/js/lunr/lunr.zh.js create mode 100644 static/js/lunr/lunr.zh.min.js create mode 100755 static/js/lunr/lunrStemmerSupport.js create mode 100755 static/js/lunr/lunrStemmerSupport.min.js create mode 100644 static/js/mermaid.min.js create mode 100644 static/js/searchElasticlunr.js create mode 100644 static/js/searchElasticlunr.min.js create mode 100644 static/js/sortTable.js create mode 100644 static/js/sortTable.min.js create mode 100644 static/js/themeSwitcher.js create mode 100644 static/js/themeSwitcher.min.js create mode 100644 static/js/utterances.js create mode 100644 static/js/utterances.min.js create mode 100644 static/js/webmention.js create mode 100644 static/js/webmention.min.js create mode 100644 static/katex.min.css create mode 100644 static/no_js.css create mode 100644 static/sitemap_style.xsl create mode 100644 static/social_icons/LICENSE create mode 100644 static/social_icons/apple.svg create mode 100644 static/social_icons/bitcoin.svg create mode 100644 static/social_icons/bluesky.svg create mode 100755 static/social_icons/calckey.svg create mode 100755 static/social_icons/castopod.svg create mode 100644 static/social_icons/codeberg.svg create mode 100644 static/social_icons/debian.svg create mode 100644 static/social_icons/deviantart.svg create mode 100644 static/social_icons/diaspora.svg create mode 100644 static/social_icons/discord.svg create mode 100644 static/social_icons/discourse.svg create mode 100644 static/social_icons/email.svg create mode 100644 static/social_icons/ethereum.svg create mode 100644 static/social_icons/etsy.svg create mode 100644 static/social_icons/facebook.svg create mode 100755 static/social_icons/forgejo.svg create mode 100755 static/social_icons/friendica.svg create mode 100755 static/social_icons/funkwhale.svg create mode 100755 static/social_icons/gitea.svg create mode 100644 static/social_icons/github.svg create mode 100644 static/social_icons/gitlab.svg create mode 100644 static/social_icons/google-scholar.svg create mode 100644 static/social_icons/google.svg create mode 100755 static/social_icons/greatape.svg create mode 100644 static/social_icons/hacker-news.svg create mode 100755 static/social_icons/hubzilla.svg create mode 100644 static/social_icons/instagram.svg create mode 100644 static/social_icons/itchio.svg create mode 100644 static/social_icons/keybase.svg create mode 100755 static/social_icons/lemmy.svg create mode 100644 static/social_icons/letterboxd.svg create mode 100644 static/social_icons/linkedin.svg create mode 100644 static/social_icons/mastodon.svg create mode 100644 static/social_icons/matrix.svg create mode 100755 static/social_icons/misskey.svg create mode 100755 static/social_icons/nostr.svg create mode 100644 static/social_icons/orcid.svg create mode 100644 static/social_icons/paypal.svg create mode 100755 static/social_icons/peertube.svg create mode 100644 static/social_icons/pinterest.svg create mode 100755 static/social_icons/pixelfed.svg create mode 100755 static/social_icons/pleroma.svg create mode 100644 static/social_icons/quora.svg create mode 100644 static/social_icons/reddit.svg create mode 100644 static/social_icons/rss.svg create mode 100644 static/social_icons/signal.svg create mode 100644 static/social_icons/skype.svg create mode 100644 static/social_icons/slack.svg create mode 100644 static/social_icons/snapchat.svg create mode 100644 static/social_icons/soundcloud.svg create mode 100644 static/social_icons/spotify.svg create mode 100644 static/social_icons/stack-exchange.svg create mode 100644 static/social_icons/stack-overflow.svg create mode 100644 static/social_icons/steam.svg create mode 100644 static/social_icons/telegram.svg create mode 100644 static/social_icons/twitter.svg create mode 100644 static/social_icons/vimeo.svg create mode 100644 static/social_icons/whatsapp.svg create mode 100755 static/social_icons/wordpress.svg create mode 100755 static/social_icons/writefreely.svg create mode 100644 static/social_icons/x.svg create mode 100644 static/social_icons/youtube.svg create mode 100644 templates/404.html create mode 100644 templates/anchor-link.html create mode 100644 templates/archive.html create mode 100644 templates/atom.xml create mode 100644 templates/base.html create mode 100644 templates/cards.html create mode 100644 templates/index.html create mode 100644 templates/info-page.html create mode 100644 templates/internal/alias.html create mode 100644 templates/macros/feed_utils.html create mode 100644 templates/macros/format_date.html create mode 100644 templates/macros/list_posts.html create mode 100644 templates/macros/page_header.html create mode 100644 templates/macros/rel_attributes.html create mode 100644 templates/macros/series_page.html create mode 100644 templates/macros/settings.html create mode 100644 templates/macros/table_of_contents.html create mode 100644 templates/macros/target_attribute.html create mode 100644 templates/macros/translate.html create mode 100644 templates/page.html create mode 100644 templates/partials/analytics.html create mode 100644 templates/partials/cards_pages.html create mode 100644 templates/partials/comments.html create mode 100644 templates/partials/content_security_policy.html create mode 100644 templates/partials/copyright.html create mode 100644 templates/partials/extra_features.html create mode 100644 templates/partials/filter_card_tags.html create mode 100644 templates/partials/footer.html create mode 100644 templates/partials/hcard.html create mode 100644 templates/partials/hcard_small.html create mode 100644 templates/partials/header.html create mode 100644 templates/partials/history_url.html create mode 100644 templates/partials/home_banner.html create mode 100644 templates/partials/iine_button.html create mode 100644 templates/partials/language_switcher.html create mode 100644 templates/partials/main_page_posts_list.html create mode 100644 templates/partials/main_page_projects_list.html create mode 100644 templates/partials/multilingual_tags.html create mode 100644 templates/partials/nav.html create mode 100644 templates/partials/paginate.html create mode 100644 templates/partials/search_modal.html create mode 100644 templates/partials/social_media_images.html create mode 100644 templates/partials/theme_switcher.html create mode 100644 templates/partials/title.html create mode 100644 templates/partials/webmentions.html create mode 100644 templates/section.html create mode 100644 templates/series.html create mode 100644 templates/shortcodes/add_src_to_code_block.html create mode 100644 templates/shortcodes/admonition.html create mode 100644 templates/shortcodes/aside.html create mode 100644 templates/shortcodes/dimmable_image.html create mode 100644 templates/shortcodes/dual_theme_image.html create mode 100644 templates/shortcodes/force_text_direction.html create mode 100644 templates/shortcodes/full_width_image.html create mode 100644 templates/shortcodes/iine.html create mode 100644 templates/shortcodes/image_hover.html create mode 100644 templates/shortcodes/image_toggler.html create mode 100644 templates/shortcodes/invertible_image.html create mode 100644 templates/shortcodes/mermaid.html create mode 100644 templates/shortcodes/multilingual_quote.html create mode 100644 templates/shortcodes/references.html create mode 100644 templates/shortcodes/remote_text.html create mode 100644 templates/shortcodes/spoiler.html create mode 100644 templates/shortcodes/toc.html create mode 100644 templates/shortcodes/wide_container.html create mode 100644 templates/sitemap.xml create mode 100644 templates/tags/list.html create mode 100644 templates/tags/single.html create mode 100644 templates/taxonomy_list.html create mode 100644 templates/taxonomy_single.html create mode 100644 theme.toml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d70ebaa --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +public \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b09859c --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Óscar Fernández + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..a54f0f4 --- /dev/null +++ b/config.toml @@ -0,0 +1,517 @@ +base_url = "https://welpo.github.io/tabi" +title = "~/tabi" +description = "tabi is an accessible Zola theme with search, multi-language support, optional JavaScript, a perfect Lighthouse score, and comprehensive documentation. Crafted for personal websites and blogs." +author = "welpo" +generate_feeds = true +compile_sass = true +minify_html = true +build_search_index = true + +# To translate the entire theme, there must be a file with the same language code +# in the `i18n` folder of your site or the tabi theme. +# For example, "i18n/fr.toml" for French or "i18n/zh-Hans.toml" for Simplified Chinese. +# Otherwise the theme will be in English. +# See https://welpo.github.io/tabi/blog/faq-languages/ for more details. +default_language = "en" + +taxonomies = [{name = "tags", feed = true}] + +[search] +# Whether to include the title of the page/section in the index. +include_title = true +# Whether to include the description of the page/section in the index. +include_description = true +# Whether to include the path of the page/section in the index. +include_path = true +# Whether to include the rendered content of the page/section in the index. +include_content = true +# At which character to truncate the content to. Useful if you have a lot of pages and the index would +# become too big to load on the site. Defaults to not being set. +# truncate_content_length = 100 +# Whether to produce the search index as a javascript file or as a JSON file. +# Accepted value "elasticlunr_javascript" or "elasticlunr_json". +index_format = "elasticlunr_json" + +[markdown] +highlight_code = true +bottom_footnotes = true +# To use a Zola built-in theme, CSP needs to allow unsafe-inline for style-src. +highlight_theme = "css" +smart_punctuation = true +# Set to 'external' to add an indicator next to external links. +external_links_class = "external" + +[link_checker] +internal_level = "warn" +skip_prefixes = [ + "https://www.vultr.com/", +] +skip_anchor_prefixes = [ + "https://github.com/", +] + +[languages.es] +title = "~/tabi" +description = "tabi es un tema accesible para Zola con búsqueda, soporte multilingüe, JavaScript opcional, una puntuación perfecta en Lighthouse y documentación exhaustiva. Diseñado para sitios web y blogs personales." +generate_feeds = true +taxonomies = [{name = "tags", feed = true}] +build_search_index = true + +[languages.ca] +title = "~/tabi" +description = "tabi és un tema accessible per a Zola amb cerca, suport multilingüe, JavaScript opcional, una puntuació perfecta a Lighthouse i documentació exhaustiva. Dissenyat per a llocs web i blogs personals." +generate_feeds = true +taxonomies = [{name = "tags", feed = true}] + +[languages.ar] +title = "~/تابي" +description = "تابي هو قالب Zola سريع وحديث مع دعم متعدد اللغات و JavaScript اختياري ودرجة Lighthouse مثالية." +generate_feeds = true +taxonomies = [{name = "tags", feed = true}] +build_search_index = false + +[extra] +# Check out the documentation (or the comments below) to learn how to customise tabi: +# https://welpo.github.io/tabi/blog/mastering-tabi-settings/ + +# Search index format. +# For Zola 0.17.X users only. +# This MUST MATCH the setting in [search].index_format. +# Example: If [search].index_format is "elasticlunr_javascript", set: +# index_format = "elasticlunr_javascript" +# index_format = "" + +# Use sans-serif font everywhere. +# By default, the serif font is only used in articles. +override_serif_with_sans = false + +# Enable JavaScript theme toggler to allow users to switch between dark/light mode. +# If disabled, your site will use the theme specified in the `default_theme` variable. +theme_switcher = true + +# This setting determines the default theme on load ("light" or "dark"). +# To follow the user's OS theme, leave it empty or unset. +default_theme = "" + +# Choose the colourscheme (skin) for the theme. Default is "teal". +# Skin available: blue, lavender, mint, red, sakura, teal, monochrome, lowcontrast_orange, lowcontrast_peach, lowcontrast_pink, indigo_ingot, evangelion +# See them live and learn how to create your own: https://welpo.github.io/tabi/blog/customise-tabi/#skins +# WARNING! "lowcontrast" skins, while aesthetically pleasing, may not provide optimal +# contrast (in light theme) for readability and might not be suitable for all users. +# Furthermore, low contrasting elements will affect your Google Lighthouse rating. +# All other skins have optimal contrast. +skin = "" + +# Set browser theme colour. Can be a single colour or [light, dark]. +# Note: Bright colors may be ignored in dark mode. +# More details: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta/name/theme-color +browser_theme_color = "#087e96" +# browser_theme_color = ["#ffffff", "#000000"] # Example of light/dark colours. + +# List additional stylesheets to load site-wide. +# These stylesheets should be located in your site's `static` directory. +# Example: stylesheets = ["extra1.css", "path/extra2.css"] +# You can load a stylesheet for a single post by adding it to the [extra] section of the post's front matter, following this same format. +stylesheets = [] + +# Sets the default canonical URL for all pages. +# Individual pages can override this in the [extra] section using canonical_url. +# Example: "$base_url/blog/post1" will get the canonical URL "https://example.com/blog/post1". +# Note: To ensure accuracy in terms of matching content, consider setting 'canonical_url' individually per page. +# base_canonical_url = "https://example.com" + +# Remote repository for your Zola site. +# Used for `show_remote_changes` and `show_remote_source` (see below). +# Supports GitHub, GitLab, Gitea, and Codeberg. +remote_repository_url = "https://github.com/welpo/tabi" +# Set this to "auto" to try and auto-detect the platform based on the repository URL. +# Accepted values are "github", "gitlab", "gitea", and "codeberg". +remote_repository_git_platform = "auto" # Defaults to "auto". +# Branch in the repo hosting the Zola site. +remote_repository_branch = "main" # Defaults to "main". +# Show a link to the commit history of updated posts, right next to the last updated date. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +show_remote_changes = true # Defaults to true. +# Show a link to the repository of the site, right next to the "Powered by Zola & tabi" text. +show_remote_source = true # Defaults to true. + +# Add a "copy" button to code blocks (loads ~700 bytes of JavaScript). +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +copy_button = true + +# Make code block names clickable if they are URLs (loads ~400 bytes of JavaScript). +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +code_block_name_links = false + +# Force left-to-right (LTR) direction for code blocks. +# Set to false to allow code to follow the document's natural direction. +# Can be set at page or section levels. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +force_codeblock_ltr = true + +# Show the author(s) of a page. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +show_author = false + +# Show the reading time of a page. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +show_reading_time = true + +# Show the date of a page below its title. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +show_date = true + +# Determines how dates are displayed in the post listing (e.g. front page or /blog). Options: +# "date" - Show only the original date of the post (default if unset). +# "updated" - Show only the last updated date of the post. If there is no last updated date, it shows the original date. +# "both" - Show both the original date and the last updated date. +post_listing_date = "date" + +# Enable iine like buttons on all posts: https://iine.to/ +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +iine = true +iine_icon = "thumbs_up" # See https://iine.to/#customise +# Unify like counts across all language versions of the same page. +# When enabled, likes on /es/blog/hello/ will count towards /blog/hello/ (default language). +iine_unified_languages = true + +# Show "Jump to posts" link next to series' title. +# By default, the link appears automatically when a series description exceeds 2000 characters. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +# show_jump_to_posts = true + +# Determines if indexes should be increasing (false) or decreasing (true) in series' posts list. +# It has only effect if the section uses indexes metadata (which is only the case for series as of now). +# Can be set at section levels, following the hierarchy: section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +post_listing_index_reversed = false # Defaults to false. + +# DEPRECATED! +# Use Zola's built-in `bottom_footnotes = true` in the [markdown] section instead. (Available since v0.19.0) +# Adds backlinks to footnotes (loads ~500 bytes of JavaScripts). +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +footnote_backlinks = false + +# Enable KaTeX for all posts. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +katex = false + +# Enable Mermaid diagrams for all posts. +# Loads ~2.5MB of JavaScript. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +mermaid = false + +# Serve Mermaid JavaScript locally. Version bundled with tabi. +# If set to false, it will load the latest version from JSDelivr. +# Only relevant when `mermaid = true`. +serve_local_mermaid = true + +# Show links to previous and next articles at the bottom of posts. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +show_previous_next_article_links = false + +# Invert order of the links to previous and next articles at the bottom of posts. +# By default, next articles are on the left side of the page and previous articles are on the right side. +# To reverse the order (next articles on the right and previous articles on the left), set it to true. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +invert_previous_next_article_links = false + +# Whether the navigation for previous/next article should match the full width of the site (same as the navigation bar at the top) or the article width. +# To match the navigation bar at the top, set it to true. +previous_next_article_links_full_width = true + +# Quick navigation buttons. +# Adds "go up" and "go to comments" buttons on the bottom right (hidden for mobile). +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +quick_navigation_buttons = false + +# Add a Table of Contents to posts, right below the title and metadata. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +toc = false + +# Date format used when listing posts (main page, /blog section, tag posts list…) +# Default is "6th July 2049" in English and "%d %B %Y" in other languages. +long_date_format = "%d %B %Y" + +# Date format used for blog posts. +# Default is "6th July 2049" in English and "%-d %B %Y" in other languages. +short_date_format = "" + +# Date format used for the archive page. +# Default is "06 July" in English and "%d %b" in other languages. +archive_date_format = "" + +# Per-language date format overrides. +# Examples: Spanish uses "3 de febrero de 2024", German uses "3. Februar 2024" +date_formats = [ + { lang = "es", long = "%d de %B de %Y", short = "%-d %b %Y" }, + { lang = "de", long = "%d. %B %Y", short = "%d.%m.%Y", archive = "%d. %b" }, +] + +# Custom separator used in title tag and posts metadata (between date, time to read, and tags). +separator = "•" + +# Use a shorter layout for All tags listing. +# Default: tag_name – n post[s] +# Compact: tag_name^n (superscript number) +compact_tags = false + +# How tags are sorted in a Tags listing based on templates/tags/list.html. +# "name" for alphabetical, "frequency" for descending count of posts. +# Default: "name". +tag_sorting = "name" + +# Show clickable tags above cards.html template (e.g. projects/) to filter the displayed items. +# Loads JS to filter. If JS is disabled, the buttons are links to the tag's page. +# Can be set at the section or config.toml level, following the hierarchy: section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +# Default: true +enable_cards_tag_filtering = true + +# Invert the order of the site title and page title in the browser tab. +# Example: true => "Blog • ~/tabi", false => "~/tabi • Blog" +invert_title_order = false + +# Full path after the base URL required. So if you were to place it in "static" it would be "/favicon.png" +favicon = "img/seedling.png" + +# Add an emoji here to use it as favicon. +# Compatibility: https://caniuse.com/link-icon-svg +favicon_emoji = "🌱" + +# Path to the fallback image for social media cards (the preview image shown when sharing a link on WhatsApp, LinkedIn…). +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +# Learn how to create these images in batch and automatically: +# https://osc.garden/blog/automating-social-media-cards-zola/ +social_media_card = "index.jpg" + +menu = [ + { name = "blog", url = "blog", trailing_slash = true }, + { name = "archive", url = "archive", trailing_slash = true }, + { name = "tags", url = "tags", trailing_slash = true }, + { name = "projects", url = "projects", trailing_slash = true }, +] + +# The RSS icon will be shown if (1) it's enabled and (2) the following variable is set to true. +# Note for Zola 0.19.X users: when `feed_filenames` has two filenames, only the first one will be linked in the footer. +feed_icon = true + +# Show the full post content in the Atom feed. +# If it's set to false, only the description or summary will be shown. +full_content_in_feed = false + +# Email address for footer's social section. +# Protect against spambots: +# 1. Use base64 for email (convert at https://www.base64encode.org/ or `printf 'your@email.com' | base64`). +# 2. Or, set 'encode_plaintext_email' to true for auto-encoding (only protects on site, not in public repos). +email = "dGFiaUBvc2MuZ2FyZGVu" +# Decoding requires ~400 bytes of JavaScript. If JS is disabled, the email won't be displayed. +encode_plaintext_email = true # Setting is ignored if email is already encoded. + +# Social media links for the footer. +# Built-in icons: https://github.com/welpo/tabi/tree/main/static/social_icons +# To use a custom icon, add it to your site's `static/social_icons` directory. +socials = [ + { name = "github", url = "https://github.com/welpo/", icon = "github" }, + { name = "soundcloud", url = "https://soundcloud.com/oskerwyld", icon = "soundcloud" }, + { name = "instagram", url = "https://instagram.com/oskerwyld", icon = "instagram" }, + { name = "youtube", url = "https://youtube.com/@oskerwyld", icon = "youtube" }, + { name = "spotify", url = "https://open.spotify.com/artist/5Hv2bYBhMp1lUHFri06xkE", icon = "spotify" }, +] + +# Fediverse profile. +# Adds metadata to feature the author's profile in Mastodon link previews. +# Example: for @username@example.com, use: +# fediverse_creator = { handle = "username", domain = "example.com" } + +# Extra menu to show on the footer, below socials section. +footer_menu = [ + {url = "about", name = "about", trailing_slash = true}, + {url = "privacy", name = "privacy", trailing_slash = true}, + {url = "https://tabi-stats.osc.garden", name = "site_statistics", trailing_slash = true}, + {url = "sitemap.xml", name = "sitemap", trailing_slash = false}, +] + +# Enable a copyright notice for the footer, shown between socials and the "Powered by" text. +# $TITLE will be replaced by the website's title. +# $CURRENT_YEAR will be replaced by the current year. +# $AUTHOR will be replaced by the `author` variable. +# $SEPARATOR will be replaced by the `separator` variable. +# Markdown is supported (links, emphasis, etc). +# copyright = "$TITLE © $CURRENT_YEAR $AUTHOR $SEPARATOR Unless otherwise noted, the content in this website is available under the [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) license." + +# For multi-language sites, you can set a different copyright for each language. +# The old way of setting `translated_copyright = true` and using i18n files is deprecated. +# If a translation is missing for language, the `copyright` value will be used. +# copyright_translations.es = "$TITLE © $CURRENT_YEAR $AUTHOR $SEPARATOR A menos que se indique lo contrario, el contenido de esta web está disponible bajo la licencia [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)." + +# Custom security headers. What urls should your website be able to connect to? +# You need to specify the CSP and the URLs associated with the directive. +# Useful if you want to load remote content safely (embed YouTube videos, which needs frame-src, for example). +# Default directive is self. +# Default config, allows for https remote images and embedding YouTube and Vimeo content. +# This configuration (along with the right webserver settings) gets an A+ in Mozilla's Observatory: https://observatory.mozilla.org +# Note: to use a Zola built-in syntax highlighting theme, allow unsafe-inline for style-src. +allowed_domains = [ + { directive = "font-src", domains = ["'self'", "data:"] }, + { directive = "img-src", domains = ["'self'", "https://*", "data:"] }, + { directive = "media-src", domains = ["'self'", "https://cdn.jsdelivr.net/"] }, + { directive = "script-src", domains = ["'self'"] }, + { directive = "style-src", domains = ["'self'"] }, + { directive = "frame-src", domains = ["player.vimeo.com", "https://www.youtube-nocookie.com"] }, +] + +# Enable the CSP directives configured (or default). +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +enable_csp = true + +# Font subsetting configuration. +# This feature helps prevent text flashing in Firefox when using custom fonts. +# See: https://welpo.github.io/tabi/blog/custom-font-subset/ +# Enable or disable font subsetting completely, both built-in and custom subsets. +enable_subset = true +# Use a custom subset of characters for the header. +# If true, tabi will load the `static/custom_subset.css` file. +# If false, tabi will use the default language-specific subset (English or Spanish). +custom_subset = true + +[extra.analytics] +# Specify which analytics service you want to use. +# Supported options: ["goatcounter", "umami", "plausible"] +service = "goatcounter" + +# Unique identifier for tracking. +# For GoatCounter, this is the code you choose during signup. +# For Umami, this is the website ID. +# For Plausible, this is the domain name (e.g. "example.com"). +# Note: Leave this field empty if you're self-hosting GoatCounter. +# id = "yourID" + +# Optional: Specify the URL for self-hosted analytics instances. +# For GoatCounter: Base URL like "https://stats.example.com" +# For Umami: Base URL like "https://umami.example.com" +# For Plausible: Base URL like "https://plausible.example.com" +# Leave this field empty if you're using the service's default hosting. +self_hosted_url = "https://tabi-stats.osc.garden" + +# Optional: For Umami, enable this option to respect users' Do Not Track (DNT) settings. The default is true. +do_not_track = true + +# giscus support for comments. https://giscus.app +# Setup instructions: https://welpo.github.io/tabi/blog/comments/#setup +[extra.giscus] +enabled_for_all_posts = false # Enables giscus on all posts. It can be enabled on individual posts by setting `giscus = true` in the [extra] section of a post's front matter. +automatic_loading = true # If set to false, a "Load comments" button will be shown. +repo = "welpo/tabi-comments" +repo_id = "R_kgDOJ59Urw" # Find this value in https://giscus.app/ +category = "Announcements" +category_id = "DIC_kwDOJ59Ur84CX0QG" # Find this value in https://giscus.app/ +mapping = "slug" # Available: pathname; url; title; slug. "slug" will use the post's filename (slug); this is the only way to share comments between languages. +strict_title_matching = 1 # 1 to enable, 0 to disable. https://github.com/giscus/giscus/blob/main/ADVANCED-USAGE.md#data-strict +enable_reactions = 1 # 1 to enable, 0 to disable. +comment_box_above_comments = false +light_theme = "noborder_light" +dark_theme = "noborder_dark" +lang = "" # Leave blank to match the page's language. +lazy_loading = true + +# utterances support for comments. https://utteranc.es +# Setup instructions: https://welpo.github.io/tabi/blog/comments/#setup +[extra.utterances] +enabled_for_all_posts = false # Enables utterances on all posts. It can be enabled on individual posts by setting `utterances = true` in the [extra] section of a post's front matter. +automatic_loading = true # If set to false, a "Load comments" button will be shown. +repo = "yourGithubUsername/yourRepo" # https://utteranc.es/#heading-repository +issue_term = "slug" # Available: pathname; url; title; slug. "slug" will use the post's filename (slug); this is the only way to share comments between languages. https://utteranc.es/#heading-mapping +label = "💬" # https://utteranc.es/#heading-issue-label +light_theme = "github-light" # https://utteranc.es/#heading-theme +dark_theme = "photon-dark" # https://utteranc.es/#heading-theme +lazy_loading = true + +# Hyvor Talk support for comments. https://talk.hyvor.com +[extra.hyvortalk] +enabled_for_all_posts = false # Enables hyvortalk on all posts. It can be enabled on individual posts by setting `hyvortalk = true` in the [extra] section of a post's front matter. +automatic_loading = true # If set to false, a "Load comments" button will be shown. +website_id = "1234" +page_id_is_slug = true # If true, it will use the post's filename (slug) as id; this is the only way to share comments between languages. If false, it will use the entire url as id. +lang = "" # Leave blank to match the page's language. +page_author = "" # Email (or base64 encoded email) of the author. +lazy_loading = true + +# Isso support for comments. https://isso-comments.de/ +# You need to self-host the backend first: https://blog.phusion.nl/2018/08/16/isso-simple-self-hosted-commenting-system/ +# More info on some settings: https://isso-comments.de/docs/reference/client-config/ +[extra.isso] +enabled_for_all_posts = false # Enables Isso on all posts. It can be enabled on individual posts by setting `isso = true` in the [extra] section of a post's front matter. +automatic_loading = true # If set to false, a "Load comments" button will be shown. +endpoint_url = "" # Accepts relative paths like "/comments/" or "/isso/", as well as full urls like "https://example.com/comments/". Include the trailing slash. +page_id_is_slug = true # If true, it will use the relative path for the default language as id; this is the only way to share comments between languages. If false, it will use the entire url as id. +lang = "" # Leave blank to match the page's language. +max_comments_top = "inf" # Number of top level comments to show by default. If some comments are not shown, an “X Hidden” link is shown. +max_comments_nested = "5" # Number of nested comments to show by default. If some comments are not shown, an “X Hidden” link is shown. +avatar = true +voting = true +page_author_hashes = "" # hash (or list of hashes) of the author. +lazy_loading = true # Loads when the comments are in the viewport (using the Intersection Observer API). + +[extra.webmentions] +# To disable for a specific section or page, set webmentions = false in that page/section's front matter's [extra] section. +enable = false +# Specify the domain registered with webmention.io. +domain = "" + +# The HTML ID for the object to fill in with the webmention data. +# Defaults to "webmentions" +# id = "webmentions" + +# data configuration for the webmention.min.js script +# The base URL to use for this page. Defaults to window.location +# page_url = + +# Additional URLs to check, separated by |s +# add_urls + +# The maximum number of words to render in reply mentions. +# wordcount = 20 + +# The maximum number of mentions to retrieve. Defaults to 30. +# max_webmentions = 30 + +# By default, Webmentions render using the mf2 'url' element, which plays +# nicely with webmention bridges (such as brid.gy and telegraph) +# but allows certain spoofing attacks. If you would like to prevent +# spoofing, set this to a non-empty string (e.g. "true"). +# prevent_spoofing + +# What to order the responses by; defaults to 'published'. See +# https://github.com/aaronpk/webmention.io#api +# sort_by + +# The order to sort the responses by; defaults to 'up' (i.e. oldest +# first). See https://github.com/aaronpk/webmention.io#api +# sort_dir + +# If set to a non-empty string (e.g. "true"), will display comment-type responses +# (replies/mentions/etc.) as being part of the reactions +# (favorites/bookmarks/etc.) instead of in a separate comment list. +# comments_are_reactions = "true" + +# h-card configuration +# Will identify you on the indieweb (see https://microformats.org/wiki/h-card) +[extra.hcard] +# Enable home page h-card. +# enable = true +# Add your email to the card if extra.email is set and not encoded. +# with_mail = true +# Add your social links ('socials' config) to the card. +# with_social_links = true +# Homepage url. Defaults to the value of 'base_url'. +# homepage = "https://myhomepage.net" +# avatar = "img/profile.webp" +# Display name, default to the value of 'author'. +# full_name = "John Doe" +# Small bio, as shown on social media profiles. +# biography = "Fond of the indieweb" +# +# You can add any property from https://microformats.org/wiki/h-card#Properties +# Make sure to replace all '-' characters by '_' +# Examples: +# p_nickname = "nickname" +# p_locality = "Bordeaux" +# p_country_name = "France" diff --git a/i18n/ar.toml b/i18n/ar.toml new file mode 100644 index 0000000..eccaa7c --- /dev/null +++ b/i18n/ar.toml @@ -0,0 +1,113 @@ +# Hello, the Arabic language has many pronouns and words, and each word indicates a different meaning, +# unlike the English language, in which, on the other hand, the word can refer to a person and a group. +# This translation is for individual use, if you are a company or organization, I have put a comment in +# front of each translation that refers to the person and the other word that refers to the organization + +language_name = "العربية" # Shown in language picker for multi-language sites. +date_locale = "ar_SA" # The locale code for time and date formatting. +full_stop = "." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "التدوينات" +archive = "الأرشيف" +tags = "الوسوم" +projects = "مشاريعي" #Change this to "المشاريع" if the site is for an organization. +about = "عني" #Change this to "عنا" or "من نحن" if the site is for an organization. +contact = "تواصل معي" #Change this to "تواصل معنا" if the site is for an organization. +privacy = "الخصوصية" +site_statistics = "إحصائيات المدونة" +sitemap = "خريطة المدونة" + +# Search. +search = "بحث" +search_icon_title = "أنقر هنا أو اضغط $SHORTCUT لفتح البحث" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "مسح البحث" +zero_results = "لم يتم العثور على نتائج" #No search results. +one_results = "تم العثور على نتيجة واحدة" # One search result. +two_results = "تم العثور على نتيجتين" # Two search results. +few_results = "تم العثور على $NUMBER نتائج" # for 3 to 10 search results. +many_results = "تم العثور على $NUMBER نتيجة" # 11 or more search results. + +# Navigation. +pinned = "مثبتة" +jump_to_posts = "الإنتقال إلى التدوينات" +read_more = "إقرأ المزيد" +one_posts = "تدوينة واحدة" #One blog post. +two_posts = "تدوينتين" #Two blog posts. +few_posts = "$NUMBER تدوينات" #3 to 10 blog posts. +many_posts = "$NUMBER تدوينة" #11 or more blog posts. +prev = "السابق" # As in "Previous" page. +next = "التالي" # As in "Next" page. +of = "من" # E.g. Page 1 "of" 3 +all_posts = "جميع التدوينات" +all_tags = "جميع الوسوم" +all_projects = "جميع المشاريع" +featured_projects = "المشاريع المميزة" +language_selection = "تحديد اللغة" +toggle_mode = "تبديل الاوضاع $MODE" # $MODE will be replaced by a value (or both) below. +dark = "داكن" +light = "فاتح" +reset_mode = "إعادة تعيين الوضع" + +# Quick navigation buttons. +toggle_toc = "إظهار / إخفاء جدول المحتويات" +go_to_top = "انتقل إلى أعلى الصفحة" +go_to_comments = "انتقل إلى التعليقات" + +# Post metadata. +by_author = "بقلم $AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = "، " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " و " # For multiple authors. Ensure spacing where necessary. +draft = "مسودة" +zero_min_read = "الوقت المتوقع للقراءة: أقل من دقيقة" #Less than one minute read. +one_min_read = "الوقت المتوقع للقراءة: دقيقة واحدة" #One minute read. +two_min_read = "الوقت المتوقع للقراءة: دقيقتان" #Two minutes read. +few_min_read = "الوقت المتوقع للقراءة: $NUMBER دقائق" #3 to 10 minutes read. +many_min_read = "الوقت المتوقع للقراءة: $NUMBER دقيقة" #11 or more minutes read. + +zero_words = "لا توجد كلمات" # No words. +one_words = "كلمة واحدة" # One word. +two_words = "كلمتين" # Two words. +few_words = "$NUMBER كلمات" # 3 to 10 words. +many_words = "$NUMBER كلمة" # 11 or more words. + +last_updated_on = "تم التحديث في $DATE" +see_changes = "الإطلاع على التغييرات" + +# Post body. +table_of_contents = "جدول المحتويات" +load_comments = "إظهار التعليقات" + +# Copy code block button. +copied = "تم النسخ!" +copy_code_to_clipboard = "نسخ الشِفرة إلى الحافظة" + +# iine appreciation button. +like_this_post = "أعجبني" + +# Footer: Powered by Zola and tabi. +powered_by = "مُشَغل بواسطة" +and = "و" +site_source = "شِفرة الموقع" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "الصفحة غير موجودة" +translation_missing = "أو لم يتم ترجمتها إلى اللغة التي تطلبها" +check_url = "تحقق من أن الرابط صحيح أو" +go_home = "انتقل إلى الصفحة الرئيسية" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "إظهار الإقتباس الأصلي" +show_translation = "إظهار الترجمة" +open_quotation_mark = '"' +close_quotation_mark = '"' + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "الخلاصة تجدها هنا، تُسمى أيضًا Atom. اشترك عبر نسخ الرابط إلى برنامج قارئ الخُلاصات الذي تستخدمه. قم بزيارة About Feeds لمعرفة المزيد والبدء. انه مجانا." +visit_the_site = "زيارة الموقع" +recent_posts = "المنشورات الأخيرة" diff --git a/i18n/ca.toml b/i18n/ca.toml new file mode 100644 index 0000000..0191c24 --- /dev/null +++ b/i18n/ca.toml @@ -0,0 +1,98 @@ +language_name = "Català" # Shown in language picker for multi-language sites. +date_locale = "ca_ES" +full_stop ="." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "blog" +archive = "arxiu" +tags = "etiquetes" +projects = "projectes" +about = "sobre mi" +contact = "contacte" +privacy = "política de privadesa" +site_statistics = "estadístiques del lloc" +sitemap = "mapa del lloc" + +# Search. +search = "Cercar" +search_icon_title = "Fes clic o prem $SHORTCUT per obrir la cerca" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "Esborrar cerca" # Title of the X icon next to search input. +zero_results = "No s'han trobat resultats" +one_results = "$NUMBER resultat" # "1 result" +many_results = "$NUMBER resultats" # "3 results" + +# Navigation. +pinned = "Fixada" +jump_to_posts = "Saltar als articles" +read_more = "Llegir més" +one_posts = "$NUMBER entrada" +many_posts = "$NUMBER entrades" +prev = "Anterior" # As in "Previous" page. +next = "Següent" # As in "Next" page. +of = "de" # E.g. Page 1 "of" 3 +all_posts = "Totes les entrades" +all_tags = "Totes les etiquetes" +all_projects = "Tots els projectes" +featured_projects = "Projectes destacats" +language_selection = "Selecció d'idioma" +toggle_mode = "Canvia el mode $MODE" # $MODE will be replaced by a value (or both) below. +dark = "obscur" +light = "clar" +reset_mode = "Restableix el mode al valor predeterminat" + +# Quick navigation buttons. +toggle_toc = "Mostrar/ocultar la taula de continguts" +go_to_top = "Vés a l'inici de la pàgina" +go_to_comments = "Vés a la secció de comentaris" + +# Post metadata. +by_author = "Per $AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " i " # For multiple authors. Ensure spacing where necessary. +draft = "ESBORRANY" +zero_min_read = "<1 min de lectura" +one_min_read = "$NUMBER min de lectura" +many_min_read = "$NUMBER mins de lectura" +zero_words = "Cap paraula" +one_words = "$NUMBER paraula" +many_words = "$NUMBER paraules" +last_updated_on = "Actualitzat el $DATE" +see_changes = "Veure canvis" + +# Post body. +table_of_contents = "Taula de contingut" +load_comments = "Carregar comentaris" + +# Copy code block button. +copied = "Copiat!" +copy_code_to_clipboard = "Copia el codi al porta-retalls" + +# iine appreciation button. +like_this_post = "M'agrada aquesta publicació" + +# Footer: Powered by Zola and tabi. +powered_by = "Propulsat per" +and = "i" +site_source = "Codi del lloc" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "La pàgina que has sol·licitat sembla que no existeix" +translation_missing = "o encara no s'ha traduït al teu idioma" +check_url = "Comprova l'URL per detectar errors o" +go_home = "torna a la pàgina d'inici" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "Mostra la cita original" +show_translation = "Mostra la traducció" +open_quotation_mark = "«" +close_quotation_mark = "»" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "Aquest és un canal web, també conegut com a canal Atom. Subscriu-te copiant l'URL de la barra d'adreces al teu lector de notícies. Visita About Feeds per aprendre més i començar. És gratuït." +visit_the_site = "Visita la web" +recent_posts = "Publicacions recents" diff --git a/i18n/de.toml b/i18n/de.toml new file mode 100644 index 0000000..7255f9d --- /dev/null +++ b/i18n/de.toml @@ -0,0 +1,102 @@ +# This has been machine translated. +# If you would like to help correct errors or improve the translation, +# please open an issue or submit a pull request. +# https://github.com/welpo/tabi +language_name = "Deutsch" # Shown in language picker for multi-language sites. +date_locale = "de_DE" +full_stop = "." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "blog" +archive = "archiv" +tags = "tags" +projects = "projekte" +about = "über" +contact = "kontakt" +privacy = "datenschutzrichtlinie" +site_statistics = "seitenstatistiken" +sitemap = "seitenübersicht" + +# Search. +search = "Suchen" +search_icon_title = "Klicken oder $SHORTCUT drücken, um die Suche zu öffnen" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "Suche löschen" # Title of the X icon next to search input. +zero_results = "Keine Ergebnisse gefunden" +one_results = "$NUMBER Ergebnis" # "1 result" +many_results = "$NUMBER Ergebnisse" # "3 results" + +# Navigation. +pinned = "Angeheftet" +jump_to_posts = "Zu den Beiträgen springen" +read_more = "Weiterlesen" +one_posts = "$NUMBER Beitrag" +many_posts = "$NUMBER Beiträge" +prev = "Vorherig" # As in "Previous" page. +next = "Nächst" # As in "Next" page. +of = "von" # E.g. Page 1 "of" 3 +all_posts = "Alle Beiträge" +all_tags = "Alle Tags" +all_projects = "Alle Projekte" +featured_projects = "Empfohlene Projekte" +language_selection = "Sprachauswahl" +toggle_mode = "Wechsle in den $MODE Modus" # $MODE will be replaced by a value (or both) below. +dark = "dunkel" +light = "hell" +reset_mode = "Modus auf Standard zurücksetzen" + +# Quick navigation buttons. +toggle_toc = "Inhaltsverzeichnis ein-/ausblenden" +go_to_top = "Zum Seitenanfang" +go_to_comments = "Zum Kommentarbereich" + +# Post metadata. +by_author = "Von $AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " und " # For multiple authors. Ensure spacing where necessary. +draft = "ENTWURF" +zero_min_read = "weniger als 1 Min. Lesezeit" +one_min_read = "$NUMBER Min. Lesezeit" +many_min_read = "$NUMBER Min. Lesezeit" +zero_words = "Keine Wörter" +one_words = "$NUMBER Wort" +many_words = "$NUMBER Wörter" +last_updated_on = "Aktualisiert am $DATE" +see_changes = "Änderungen anzeigen" + +# Post body. +table_of_contents = "Inhaltsverzeichnis" +load_comments = "Kommentare laden" + +# Copy code block button. +copied = "Kopiert!" +copy_code_to_clipboard = "Code in die Zwischenablage kopieren" + +# iine appreciation button. +like_this_post = "Dieser Beitrag gefällt mir" + +# Footer. +powered_by = "Angetrieben von" +and = "und" +site_source = "Quellcode der Seite" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "Die Seite, die du angefordert hast, scheint nicht zu existieren" +translation_missing = "oder wurde noch nicht in deine Sprache übersetzt" +check_url = "Überprüfe die URL auf Fehler oder" +go_home = "zurück zur Startseite gehen" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "Originalzitat anzeigen" +show_translation = "Übersetzung anzeigen" +open_quotation_mark = "„" +close_quotation_mark = "“" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "Dies ist ein Web-Feed, auch bekannt als Atom-Feed. Abonnieren Sie, indem Sie die URL aus der Adressleiste in Ihren Nachrichtenleser kopieren. Besuchen Sie About Feeds, um mehr zu erfahren und loszulegen. Es ist kostenlos." +visit_the_site = "Besuchen Sie die Webseite" +recent_posts = "Aktuelle Beiträge" diff --git a/i18n/en.toml b/i18n/en.toml new file mode 100644 index 0000000..4184298 --- /dev/null +++ b/i18n/en.toml @@ -0,0 +1,98 @@ +language_name = "English" # Shown in language picker for multi-language sites. +date_locale = "en_GB" +full_stop = "." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "blog" +archive = "archive" +tags = "tags" +projects = "projects" +about = "about" +contact = "contact" +privacy = "privacy policy" +site_statistics = "site statistics" +sitemap = "sitemap" + +# Search. +search = "Search" +search_icon_title = "Click or press $SHORTCUT to open search" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "Clear search" # Title of the X icon next to search input. +zero_results = "No results" +one_results = "$NUMBER result" # "1 result" +many_results = "$NUMBER results" # "3 results" + +# Navigation. +pinned = "Pinned" +jump_to_posts = "Jump to posts" +read_more = "Read more" +one_posts = "$NUMBER post" +many_posts = "$NUMBER posts" # "3 posts" +prev = "Prev" # As in "Previous" page. +next = "Next" # As in "Next" page. +of = "of" # E.g. Page 1 "of" 3 +all_posts = "All posts" +all_tags = "All tags" +all_projects = "All projects" +featured_projects = "Featured projects" +language_selection = "Language selection" +toggle_mode = "Toggle $MODE mode" # $MODE will be replaced by a value (or both) below. +dark = "dark" +light = "light" +reset_mode = "Reset mode to default" + +# Quick navigation buttons. +toggle_toc = "Toggle Table of Contents" +go_to_top = "Go to the top of the page" +go_to_comments = "Go to the comments section" + +# Post metadata. +by_author = "By $AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " and " # For multiple authors. Ensure spacing where necessary. +draft = "DRAFT" +zero_min_read = "<1 min read" +one_min_read = "$NUMBER min read" +many_min_read = "$NUMBER min read" +zero_words = "No words" +one_words = "$NUMBER word" +many_words = "$NUMBER words" +last_updated_on = "Updated on $DATE" +see_changes = "See changes" + +# Post body. +table_of_contents = "Table of Contents" +load_comments = "Load comments" + +# Copy code block button. +copied = "Copied!" +copy_code_to_clipboard = "Copy code to clipboard" + +# iine appreciation button. +like_this_post = "Like this post" + +# Footer: Powered by Zola and tabi. +powered_by = "Powered by" +and = "&" +site_source = "Site source" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "The page you've requested seems to be missing" +translation_missing = "or hasn't been translated into your language yet" +check_url = "Check the URL for errors or" +go_home = "go back to the homepage" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "Show original quote" +show_translation = "Show translation" +open_quotation_mark = "“" +close_quotation_mark = "”" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "This is a web feed, also known as an Atom feed. Subscribe by copying the URL from the address bar into your newsreader. Visit About Feeds to learn more and get started. It's free." +visit_the_site = "Visit website" +recent_posts = "Recent posts" diff --git a/i18n/es.toml b/i18n/es.toml new file mode 100644 index 0000000..a39478b --- /dev/null +++ b/i18n/es.toml @@ -0,0 +1,98 @@ +language_name = "Español" # Shown in language picker for multi-language sites. +date_locale = "es_ES" +full_stop = "." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "blog" +archive = "archivo" +tags = "etiquetas" +projects = "proyectos" +about = "sobre mí" +contact = "contacto" +privacy = "política de privacidad" +site_statistics = "estadísticas del sitio" +sitemap = "mapa del sitio" + +# Search. +search = "Buscar" +search_icon_title = "Haz clic o usa $SHORTCUT para abrir la búsqueda" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "Borrar búsqueda" # Title of the X icon next to search input. +zero_results = "No hay resultados" +one_results = "$NUMBER resultado" +many_results = "$NUMBER resultados" + +# Navigation. +pinned = "Fijada" +jump_to_posts = "Saltar a las entradas" +read_more = "Leer más" +one_posts = "$NUMBER entrada" +many_posts = "$NUMBER entradas" +prev = "Anterior" # As in "Previous" page. +next = "Siguiente" # As in "Next" page. +of = "de" # E.g. Page 1 "of" 3 +all_posts = "Todas las entradas" +all_tags = "Todas las etiquetas" +all_projects = "Todos los proyectos" +featured_projects = "Proyectos destacados" +language_selection = "Selección de idioma" +toggle_mode = "Cambiar a modo $MODE" # $MODE will be replaced by a value (or both) below. +dark = "oscuro" +light = "claro" +reset_mode = "Restablecer modo a configuración predeterminada" + +# Quick navigation buttons. +toggle_toc = "Mostrar/ocultar la tabla de contenidos" +go_to_top = "Ir al inicio de la página" +go_to_comments = "Ir a la sección de comentarios" + +# Post metadata. +by_author = "Por $AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " y " # For multiple authors. Ensure spacing where necessary. +draft = "BORRADOR" +zero_min_read = "<1 min de lectura" +one_min_read = "$NUMBER min de lectura" +many_min_read = "$NUMBER mins de lectura" +zero_words = "Cero palabras" +one_words = "$NUMBER palabra" +many_words = "$NUMBER palabras" +last_updated_on = "Actualizado el $DATE" +see_changes = "Ver cambios" + +# Post body. +table_of_contents = "Tabla de contenido" +load_comments = "Cargar comentarios" + +# Copy code block button. +copied = "Copiado!" +copy_code_to_clipboard = "Copiar código al portapapeles" + +# iine appreciation button. +like_this_post = "Me gusta esta publicación" + +# Footer: Powered by Zola and tabi. +powered_by = "Impulsado por" +and = "y" +site_source = "Código del sitio" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "La página que has solicitado parece no existir" +translation_missing = "o aún no se ha traducido a tu idioma" +check_url = "Revisa la URL en busca de errores o" +go_home = "regresa a la página de inicio" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "Mostrar cita original" +show_translation = "Mostrar traducción" +open_quotation_mark = "«" +close_quotation_mark = "»" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "Esta es una fuente web, también conocida como fuente Atom. Suscríbete copiando la URL de la barra de direcciones en tu lector de noticias. Visita About Feeds para aprender más y empezar. Es gratis. " +visit_the_site = "Visita la web" +recent_posts = "Publicaciones recientes" diff --git a/i18n/et.toml b/i18n/et.toml new file mode 100644 index 0000000..7f71604 --- /dev/null +++ b/i18n/et.toml @@ -0,0 +1,98 @@ +language_name = "Eesti" # Shown in language picker for multi-language sites. +date_locale = "et_EE" +full_stop = "." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "blogi" +archive = "arhiiv" +tags = "sildid" +projects = "projektid" +about = "minust" +contact = "kontakt" +privacy = "privaatsuspoliitika" +site_statistics = "saidi statistika" +sitemap = "saidikaart" + +# Search. +search = "Otsing" +search_icon_title = "Otsingu avamiseks klõpsake või vajutage $SHORTCUT" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "Tühjenda otsing" # Title of the X icon next to search input. +zero_results = "Tulemusi pole" +one_results = "$NUMBER tulemus" # "1 result" +many_results = "$NUMBER tulemust" # "3 results" + +# Navigation. +pinned = "Kinnitatud" +jump_to_posts = "Hüppa postitusteni" +read_more = "Loe edasi" +one_posts = "$NUMBER postitus" +many_posts = "$NUMBER postitust" # "3 posts" +prev = "Eelmine" # As in "Previous" page. +next = "Järgmine" # As in "Next" page. +of = "/" # E.g. Page 1 "of" 3 +all_posts = "Kõik postitused" +all_tags = "Kõik sildid" +all_projects = "Kõik projektid" +featured_projects = "Esiletõstetud projektid" +language_selection = "Keele valik" +toggle_mode = "Lülita $MODE režiim" # $MODE will be replaced by a value (or both) below. +dark = "tume" +light = "hele" +reset_mode = "Lähtesta vaikerežiim" + +# Quick navigation buttons. +toggle_toc = "Sisukorra kuvamine/peitmine" +go_to_top = "Mine lehe ülaossa" +go_to_comments = "Mine kommentaaride juurde" + +# Post metadata. +by_author = "Autor: $AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " ja " # For multiple authors. Ensure spacing where necessary. +draft = "MUSTAND" +zero_min_read = "Lugemisaeg <1 min" +one_min_read = "Lugemisaeg $NUMBER min" +many_min_read = "Lugemisaeg $NUMBER min" +zero_words = "Sõnu pole" +one_words = "$NUMBER sõna" +many_words = "$NUMBER sõna" +last_updated_on = "Uuendatud $DATE" +see_changes = "Vaata muudatusi" + +# Post body. +table_of_contents = "Sisukord" +load_comments = "Lae kommentaarid" + +# Copy code block button. +copied = "Kopeeritud!" +copy_code_to_clipboard = "Kopeeri kood lõikelauale" + +# iine appreciation button. +like_this_post = "Mulle meeldib see postitus" + +# Footer: Powered by Zola and tabi. +powered_by = "Toetab" +and = "ja" +site_source = "Saidi lähtekood" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "Tundub, et otsitud lehte ei leitud" +translation_missing = "või pole seda veel teie keelde tõlgitud" +check_url = "Kontrollige URL-i vigade suhtes või" +go_home = "minge tagasi avalehele" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "Näita originaaltsitaati" +show_translation = "Näita tõlget" +open_quotation_mark = "“" +close_quotation_mark = "”" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "See on veebivoog, tuntud ka kui Atom-voog. Tellimiseks kopeerige URL aadressiribalt oma uudistelugerisse. Külastage About Feeds lehte, et õppida ja alustada. See on tasuta." +visit_the_site = "Külasta veebisaiti" +recent_posts = "Viimased postitused" diff --git a/i18n/fa.toml b/i18n/fa.toml new file mode 100644 index 0000000..b609409 --- /dev/null +++ b/i18n/fa.toml @@ -0,0 +1,99 @@ +language_name = "فارسی" # Shown in language picker for multi-language sites. +date_locale = "fa_IR" +full_stop = "." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "وبلاگ" +archive = "آرشیو" +tags = "برچسب‌ها" +projects = "پروژه‌ها" +about = "درباره" +contact = "تماس" +privacy = "سیاست حفظ حریم خصوصی" +site_statistics = "آمار سایت" +sitemap = "نقشه سایت" + +# Search. +search = "جستجو" +search_icon_title = "برای باز کردن جستجو کلیک کنید یا $SHORTCUT را فشار دهید" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "پاک کردن جستجو" # Title of the X icon next to search input. +zero_results = "بدون نتیجه" +one_results = "$NUMBER نتیجه" # "1 result" +many_results = "$NUMBER نتیجه" # "3 results" + +# Navigation. +pinned = "سنجاق‌شده" +jump_to_posts = "پرش به نوشته‌ها" +read_more = "ادامه مطلب" +one_posts = "$NUMBER مطلب" +many_posts = "$NUMBER مطلب" # "3 posts" +prev = "قبلی" # As in "Previous" page. +next = "بعدی" # As in "Next" page. +of = "از" # E.g. Page 1 "of" 3 +all_posts = "همه مطالب" +all_tags = "همه برچسب‌ها" +all_projects = "همه پروژه‌ها" +featured_projects = "پروژه‌های برجسته" +language_selection = "انتخاب زبان" +toggle_mode = "تغییر حالت $MODE" # $MODE will be replaced by a value (or both) below. +dark = "تیره" +light = "روشن" +reset_mode = "بازنشانی حالت به حالت پیش‌فرض" + + +# Quick navigation buttons. +toggle_toc = "تغییر جدول محتوا" +go_to_top = "رفتن به بالای صفحه" +go_to_comments = "رفتن به بخش نظرات" + +# Post metadata. +by_author = "توسط $AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = "، " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " و " # For multiple authors. Ensure spacing where necessary. +draft = "پیش‌نویس" +zero_min_read = "خواندن کمتر از ۱ دقیقه" +one_min_read = "خواندن $NUMBER دقیقه" +many_min_read = "خواندن $NUMBER دقیقه" +zero_words = "هیچ کلمه‌ای" +one_words = "$NUMBER کلمه" +many_words = "$NUMBER کلمه" +last_updated_on = "آخرین به‌روزرسانی در $DATE" +see_changes = "مشاهده تغییرات" + +# Post body. +table_of_contents = "فهرست مطالب" +load_comments = "بارگذاری نظرات" + +# Copy code block button. +copied = "کپی شد!" +copy_code_to_clipboard = "کپی کد به کلیپ‌بورد" + +# iine appreciation button. +like_this_post = "این مقاله را دوست دارم" + +# Footer: Powered by Zola and tabi. +powered_by = "قدرت گرفته از" +and = "و" +site_source = "منبع سایت" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "صفحه‌ای که درخواست کرده‌اید به نظر می‌رسد از دست رفته است" +translation_missing = "یا هنوز به زبان شما ترجمه نشده است" +check_url = "آدرس اینترنتی را بررسی کنید و یا" +go_home = "به صفحه اصلی برگردید" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "نقل قول اصلی را نشان بده" +show_translation = "ترجمه را نشان بده" +open_quotation_mark = "«" +close_quotation_mark = "»" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "این یک فید وب است، همچنین به عنوان یک فید Atom شناخته می‌شود. با کپی کردن URL از نوار آدرس به خواننده اخباری خود مشترک شوید. برای یادگیری بیشتر و شروع به کار بروید به About Feeds. این رایگان است." +visit_the_site = "بازدید از وب‌سایت" +recent_posts = "مطالب اخیر" diff --git a/i18n/fi.toml b/i18n/fi.toml new file mode 100644 index 0000000..bf820e9 --- /dev/null +++ b/i18n/fi.toml @@ -0,0 +1,102 @@ +language_name = "suomi" # Shown in language picker for multi-language sites. +date_locale = "fi_FI" +full_stop = "." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "blogi" +archive = "arkisto" +tags = "tunnisteet" +projects = "projektit" +diagrams = "kaaviot" +about = "minusta" +contact = "yhteystiedot" +privacy = "tietosuojakäytäntö" +site_statistics = "tilastot" +sitemap = "sivustokartta" + +# Search. +search = "Hae" +search_icon_title = "Paina $SHORTCUT avataksesi haun" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "Tyhjennä haku" # Title of the X icon next to search input. +zero_results = "Ei tuloksia" +one_results = "$NUMBER tulos" # "1 result" +many_results = "$NUMBER tulosta" # "3 results" + +# Navigation. +# Some will prefer artikkeli (=article) instead of julkaisu (=publication), but this is more general +pinned = "Kiinnitetty" +jump_to_posts = "Siirry julkaisuihin" +read_more = "Lue lisää" +one_posts = "$NUMBER julkaisu" +many_posts = "$NUMBER julkaisua" # "3 posts" +prev = "Edellinen" # As in "Previous" page. +next = "Seuraava" # As in "Next" page. +of = "/" # E.g. Page 1 "of" 3 +all_posts = "Kaikki julkaisut" +all_tags = "Kaikki tunnisteet" +all_projects = "Kaikki projektit" +featured_projects = "Esittelyprojektit" +language_selection = "Kielivalinta" +toggle_mode = "Vaihda $MODE" # $MODE will be replaced by a value (or both) below. Literally "Change $MODE" +# The declension assumes that both values are used. e.g. "Change dark mode" wouldn't work and would need the "to" preposition +# It also omits the "mode" word: "Change dark/light mode" instead of "Change dark mode/light mode" +dark = "tumma" +light = "vaalea tila" +reset_mode = "Palauta oletustilaan" + +# Quick navigation buttons. +toggle_toc = "Sisällysluettelo päälle/pois" +go_to_top = "Siirry sivun alkuun" +go_to_comments = "Siirry kommenttiosioon" + +# Post metadata. +by_author = "Kirjoittanut $AUTHOR" # $AUTHOR will be replaced by the author(s). Literally "Written by $AUTHOR" +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " ja " # For multiple authors. Ensure spacing where necessary. +draft = "LUONNOS" +zero_min_read = "<1 min. lukuaika" +one_min_read = "$NUMBER min. lukuaika" +many_min_read = "$NUMBER min. lukuaika" +zero_words = "Ei sanoja" +one_words = "$NUMBER sana" +many_words = "$NUMBER sanaa" +last_updated_on = "Päivitetty $DATE" +see_changes = "Katso muutokset" + +# Post body. +table_of_contents = "Sisällysluettelo" +load_comments = "Lataa kommentit" + +# Copy code block button. +copied = "Kopioitu!" +copy_code_to_clipboard = "Kopioi koodi leikepöydälle" + +# iine appreciation button. +like_this_post = "Pidän tästä kirjoituksesta" + +# Footer: Powered by Zola and tabi. +powered_by = "Pyörii ohjelmilla" # "Works using the software" +and = "&" +site_source = "Sivuston lähdekoodi" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "Pyytämääsi sivua ei löydy" +translation_missing = "tai sitä ei ole vielä käännetty kielellesi" +check_url = "Tarkista URL-osoitteesta mahdolliset virheet tai" +go_home = "palaa etusivulle" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "Näytä alkuperäinen lainaus" +show_translation = "Näytä käännös" +open_quotation_mark = "“" +close_quotation_mark = "”" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "Tämä on verkkosyöte, joka tunnetaan myös nimellä Atom-syöte. Tilaa kopioimalla URL-osoite osoitepalkista uutislukijaasi. Käy sivulla About Feeds saadaksesi lisätietoja ja aloittaakeksi. Se on ilmaista." +visit_the_site = "Vieraile sivustolla" +recent_posts = "Viimeisimmät julkaisut" diff --git a/i18n/fr.toml b/i18n/fr.toml new file mode 100644 index 0000000..54c8666 --- /dev/null +++ b/i18n/fr.toml @@ -0,0 +1,98 @@ +language_name = "Français" # Shown in language picker for multi-language sites. +date_locale = "fr_FR" +full_stop = "." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "blog" +archive = "archives" +tags = "étiquettes" +projects = "projets" +about = "à propos" +contact = "contact" +privacy = "politique de confidentialité" +site_statistics = "statistiques du site" +sitemap = "plan du site" + +# Search. +search = "Rechercher" +search_icon_title = "Cliquez ou appuyez sur $SHORTCUT pour ouvrir la recherche" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "Effacer la recherche" # Title of the X icon next to search input. +zero_results = "Aucun résultat trouvé" +one_results = "$NUMBER résultat" # "1 result" +many_results = "$NUMBER résultats" # "3 results" + +# Navigation. +pinned = "Épinglé" +jump_to_posts = "Aller aux articles" +read_more = "Lire plus" +one_posts = "$NUMBER article" +many_posts = "$NUMBER articles" +prev = "Précédent" # As in "Previous" page. +next = "Suivant" # As in "Next" page. +of = "sur" # E.g. Page 1 "of" 3 +all_posts = "Tous les articles" +all_tags = "Toutes les étiquettes" +all_projects = "Tous les projets" +featured_projects = "Projets à la une" +language_selection = "Sélection de la langue" +toggle_mode = "Basculer en mode $MODE" # $MODE will be replaced by a value (or both) below. +dark = "sombre" +light = "clair" +reset_mode = "Réinitialiser le mode aux valeurs par défaut" + +# Quick navigation buttons. +toggle_toc = "Afficher/Masquer la table des matières" +go_to_top = "Aller en haut de la page" +go_to_comments = "Aller à la section des commentaires" + +# Post metadata. +by_author = "Par $AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " et " # For multiple authors. Ensure spacing where necessary. +draft = "BROUILLON" +zero_min_read = "<1 min de lecture" +one_min_read = "$NUMBER min de lecture" +many_min_read = "$NUMBER min de lecture" +zero_words = "aucun mot" +one_words = "$NUMBER mot" +many_words = "$NUMBER mots" +last_updated_on = "Mis à jour le $DATE" +see_changes = "Voir les modifications" + +# Post body. +table_of_contents = "Table des matières" +load_comments = "Afficher les commentaires" + +# Copy code block button. +copied = "Copié !" +copy_code_to_clipboard = "Copier le code dans le presse-papier" + +# iine appreciation button. +like_this_post = "J'aime cet article" + +# Footer: Powered by Zola and tabi. +powered_by = "Propulsé par" +and = "et" +site_source = "Code du site" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "La page que vous avez demandée semble être manquante" +translation_missing = "ou n'a pas encore été traduite dans votre langue" +check_url = "Vérifiez que l'URL ne contient pas d'erreur ou" +go_home = "retournez à la page d'accueil" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "Afficher la citation originale" +show_translation = "Afficher la traduction" +open_quotation_mark = "«" +close_quotation_mark = "»" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "Ceci est un flux web, également connu sous le nom de flux Atom. Abonnez-vous en copiant l'URL de la barre d'adresse dans votre lecteur de nouvelles. Visitez About Feeds pour en savoir plus et commencez. C'est gratuit." +visit_the_site = "Visitez le site web" +recent_posts = "Articles récents" diff --git a/i18n/hi.toml b/i18n/hi.toml new file mode 100644 index 0000000..2ac79ba --- /dev/null +++ b/i18n/hi.toml @@ -0,0 +1,100 @@ +# This has been machine translated. +# If you would like to help correct errors or improve the translation, please open an issue or submit a pull request. +language_name = "हिंदी" # Shown in language picker for multi-language sites. +date_locale = "hi_IN" +full_stop ="।" # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "ब्लॉग" +archive = "संग्रह" +tags = "टैग" +projects = "परियोजनाएं" +about = "बारे में" +contact = "संपर्क" +privacy = "गोपनीयता नीति" +site_statistics = "साइट सांख्यिकी" +sitemap = "साइटमैप" + +# Search. +search = "खोजें" +search_icon_title = "$SHORTCUT दबाएँ या क्लिक करें खोज खोलने के लिए" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "खोज साफ करें" # Title of the X icon next to search input. +zero_results = "कोई परिणाम नहीं मिला" +one_results = "$NUMBER परिणाम" # "1 result" +many_results = "$NUMBER परिणाम" # "3 results" + +# Navigation. +pinned = "पिन किया गया" +jump_to_posts = "पोस्ट पर जाएं" +read_more = "और पढ़ें" +one_posts = "$NUMBER पोस्ट" +many_posts = "$NUMBER पोस्ट्स" +prev = "पिछला" # As in "Previous" page. +next = "अगला" # As in "Next" page. +of = "का" # E.g. Page 1 "of" 3 +all_posts = "सभी पोस्ट्स" +all_tags = "सभी टैग्स" +all_projects = "सभी प्रोजेक्ट" +featured_projects = "विशेष प्रोजेक्ट" +language_selection = "भाषा चयन" +toggle_mode = "$MODE मोड में टॉगल करें" # $MODE will be replaced by a value (or both) below. +dark = "अंधेरा" +light = "रोशनी" +reset_mode = "मोड को साइट डिफ़ॉल्ट पर रीसेट करें" + +# Quick navigation buttons. +toggle_toc = "विषय-सूची टॉगल करें" +go_to_top = "पृष्ठ के शीर्ष पर जाएं" +go_to_comments = "टिप्पणी अनुभाग में जाएं" + +# Post metadata. +by_author = "$AUTHOR द्वारा" # $AUTHOR will be replaced by the author(s). +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " और " # For multiple authors. Ensure spacing where necessary. +draft = "मसौदा" +zero_min_read = "कम से कम 1 मिनट पठन समय" +one_min_read = "$NUMBER मिनट पठन समय" +many_min_read = "$NUMBER मिनट पठन समय" +zero_words = "कोई शब्द नहीं" +one_words = "$NUMBER शब्द" +many_words = "$NUMBER शब्द" +last_updated_on = "$DATE को अपडेट किया गया" +see_changes = "बदलाव देखें" + +# Post body. +table_of_contents = "विषय सूची" +load_comments = "कमेंट्स लोड करें" + +# Copy code block button. +copied = "कॉपी किया गया!" +copy_code_to_clipboard = "कोड क्लिपबोर्ड में कॉपी करें" + +# iine appreciation button. +like_this_post = "मुझे यह पोस्ट पसंद है" + +# Footer: Powered by Zola and tabi. +powered_by = "चालित द्वारा" +and = "और" +site_source = "साइट का स्रोत" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "आपके द्वारा अनुरोधित पृष्ठ मौजूद नहीं है" +translation_missing = "या फिर आपकी भाषा में अनुवाद नहीं किया गया है" +check_url = "URL में त्रुटियों की जांच करें या" +go_home = "मुख्य पृष्ठ पर वापस जाएं" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "मौलिक उद्धरण दिखाएं" +show_translation = "अनुवाद दिखाएं" +open_quotation_mark = "“" +close_quotation_mark = "”" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "यह एक वेब फ़ीड है, जिसे एटम फ़ीड भी कहा जाता है। अपने न्यूज़रीडर में एड्रेस बार से URL कॉपी करके सब्सक्राइब करें। About Feeds पर जाकर और अधिक जानकारी प्राप्त करें और शुरू करें। यह सेवा मुफ़्त है।" +visit_the_site = "वेबसाइट पर जाएं" +recent_posts = "हाल की पोस्ट्स" diff --git a/i18n/it.toml b/i18n/it.toml new file mode 100644 index 0000000..4b558c9 --- /dev/null +++ b/i18n/it.toml @@ -0,0 +1,97 @@ +language_name = "Italiano" # Shown in language picker for multi-language sites. +date_locale = "it_IT" +full_stop = "." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "blog" +archive = "archivio" +tags = "tag" +projects = "progetti" +about = "chi sono" +contact = "contatto" +privacy = "politica sulla privacy" +site_statistics = "statistiche del sito" +sitemap = "mappa del sito" + +# Search. +search = "Cerca" +search_icon_title = "Clicca o premi $SHORTCUT per aprire la ricerca" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "Cancella ricerca" # Title of the X icon next to search input. +zero_results = "Nessun risultato trovato" +one_results = "$NUMBER risultato" +many_results = "$NUMBER risultati" + +# Navigation. +pinned = "In evidenza" +jump_to_posts = "Vai ai post" +read_more = "Leggi di più" +one_posts = "$NUMBER post" +many_posts = "$NUMBER post" +prev = "Precedente" # As in "Previous" page. +next = "Successivo" # As in "Next" page. +of = "di" # E.g. Page 1 "of" 3 +all_posts = "Tutti i post" +all_tags = "Tutti i tag" +all_projects = "Tutti i progetti" +featured_projects = "Progetti in evidenza" +language_selection = "Selezione della lingua" +toggle_mode = "Passa alla modalità $MODE" # $MODE will be replaced by a value (or both) below. +dark = "scuro" +light = "chiaro" +reset_mode = "Reimposta la modalità alle impostazioni predefinite" + +# Quick navigation buttons. +toggle_toc = "Attiva/Disattiva indice" +go_to_top = "Vai in cima alla pagina" +go_to_comments = "Vai alla sezione commenti" + +# Post metadata. +by_author = "Di $AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " e " # For multiple authors. Ensure spacing where necessary. +draft = "BOZZA" +zero_min_read = "<1 min di lettura" +one_min_read = "$NUMBER min di lettura" +many_min_read = "$NUMBER min di lettura" +zero_words = "Nessuna parola" +one_words = "$NUMBER parola" +many_words = "$NUMBER parole" +last_updated_on = "Aggiornato il $DATE" +see_changes = "Vedi modifiche" + +# Post body. +table_of_contents = "Indice" +load_comments = "Carica commenti" + +# Copy code block button. +copied = "Copiato!" +copy_code_to_clipboard = "Copia codice negli appunti" + +# iine appreciation button. +like_this_post = "Mi piace questo post" + +# Footer: Powered by Zola and tabi. +powered_by = "Alimentato da" +and = "e" +site_source = "Codice del sito" + +# 404 error. +page_missing = "La pagina che hai richiesto sembra non esistere" +translation_missing = "o non è ancora stata tradotta nella tua lingua" +check_url = "Controlla l'URL per errori o" +go_home = "torna alla homepage" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "Mostra citazione originale" +show_translation = "Mostra traduzione" +open_quotation_mark = "«" +close_quotation_mark = "»" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "Questo è un feed web, noto anche come feed Atom. Iscriviti copiando l'URL dalla barra degli indirizzi nel tuo lettore di notizie. Visita About Feeds per saperne di più e iniziare. È gratuito." +visit_the_site = "Visita il sito web" +recent_posts = "Post recenti" diff --git a/i18n/ja.toml b/i18n/ja.toml new file mode 100644 index 0000000..c1a7533 --- /dev/null +++ b/i18n/ja.toml @@ -0,0 +1,102 @@ +# This has been machine translated. +# If you would like to help correct errors or improve the translation, +# please open an issue or submit a pull request. +# https://github.com/welpo/tabi +language_name = "日本語" # Shown in language picker for multi-language sites. +date_locale = "ja_JP" +full_stop = "。" # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "ブログ" +archive = "アーカイブ" +tags = "タグ" +projects = "プロジェクト" +about = "自己紹介" +contact = "お問い合わせ" +privacy = "プライバシーポリシー" +site_statistics = "サイト統計" +sitemap = "サイトマップ" + +# Search. +search = "検索" +search_icon_title = "$SHORTCUTを押すか、クリックして検索を開く" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "検索をクリア" # Title of the X icon next to search input. +zero_results = "結果が見つかりません" +one_results = "$NUMBER 結果" # "1 result" +many_results = "$NUMBER 結果" # "3 results" + +# Navigation. +pinned = "固定" +jump_to_posts = "投稿へジャンプ" +read_more = "続きを読む" +one_posts = "$NUMBER 投稿" +many_posts = "$NUMBER 投稿" +prev = "前" # As in "Previous" page. +next = "次" # As in "Next" page. +of = "中" # E.g. Page 1 "of" 3 +all_posts = "すべての投稿" +all_tags = "すべてのタグ" +all_projects = "全てのプロジェクト" +featured_projects = "注目のプロジェクト" +language_selection = "言語選択" +toggle_mode = "$MODE モードに切り替え" # $MODE will be replaced by a value (or both) below. +dark = "暗い" +light = "明るい" +reset_mode = "モードをサイトのデフォルトにリセット" + +# Quick navigation buttons. +toggle_toc = "目次を切り替え" +go_to_top = "ページの先頭へ" +go_to_comments = "コメントセクションへ" + +# Post metadata. +by_author = "$AUTHOR によって" # $AUTHOR will be replaced by the author(s). +author_separator = "、" # For multiple authors. Ensure spacing where necessary. +author_conjunction = "と" # For multiple authors. Ensure spacing where necessary. +draft = "ドラフト" +zero_min_read = "1分未満の読了時間" +one_min_read = "$NUMBER 分の読了時間" +many_min_read = "$NUMBER 分の読了時間" +zero_words = "単語数ゼロ" +one_words = "$NUMBER 単語" +many_words = "$NUMBER 単語" +last_updated_on = "$DATE に更新" +see_changes = "変更を見る" + +# Post body. +table_of_contents = "目次" +load_comments = "コメントを読む" + +# Copy code block button. +copied = "コピーしました!" +copy_code_to_clipboard = "コードをクリップボードにコピー" + +# iine appreciation button. +like_this_post = "いいね!" + +# Footer: Powered by Zola and tabi. +powered_by = "Powered by" +and = "と" +site_source = "サイトのソースコード" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "お探しのページは存在しません" +translation_missing = "または、まだあなたの言語に翻訳されていません" +check_url = "URLが正しいか確認してください、または" +go_home = "ホームページに戻る" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "オリジナルの引用を見る" +show_translation = "翻訳を見る" +open_quotation_mark = "「" +close_quotation_mark = "」" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "これはウェブフィードです、また、Atomフィードとしても知られています。URLをアドレスバーからニュースリーダーにコピーして登録してください。About Feedsを訪れて、詳細を知り、始めてください。無料です。" +visit_the_site = "ウェブサイトを訪れる" +recent_posts = "最近の投稿" diff --git a/i18n/ko.toml b/i18n/ko.toml new file mode 100644 index 0000000..f4e177e --- /dev/null +++ b/i18n/ko.toml @@ -0,0 +1,102 @@ +# This has been machine translated. +# If you would like to help correct errors or improve the translation, +# please open an issue or submit a pull request. +# https://github.com/welpo/tabi +language_name = "한국어" # Shown in language picker for multi-language sites. +date_locale = "ko_KR" +full_stop = "." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "블로그" +archive = "아카이브" +tags = "태그" +projects = "프로젝트" +about = "소개" +contact = "연락처" +privacy = "개인정보 처리방침" +site_statistics = "사이트 통계" +sitemap = "사이트맵" + +# Search. +search = "검색" +search_icon_title = "클릭하거나 $SHORTCUT을 눌러 검색 열기" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "검색 지우기" # Title of the X icon next to search input. +zero_results = "결과 없음" +one_results = "$NUMBER 결과" # "1 result" +many_results = "$NUMBER 결과" # "3 results" + +# Navigation. +pinned = "고정됨" +jump_to_posts = "게시물로 이동" +read_more = "더 읽기" +one_posts = "$NUMBER 게시물" +many_posts = "$NUMBER 게시물" +prev = "이전" # As in "Previous" page. +next = "다음" # As in "Next" page. +of = "중" # E.g. Page 1 "of" 3 +all_posts = "모든 게시물" +all_tags = "모든 태그" +all_projects = "모든 프로젝트" +featured_projects = "추천 프로젝트" +language_selection = "언어 선택" +toggle_mode = "$MODE 모드로 전환" # $MODE will be replaced by a value (or both) below. +dark = "어두운" +light = "밝은" +reset_mode = "모드를 사이트 기본값으로 재설정" + +# Quick navigation buttons. +toggle_toc = "목차 토글" +go_to_top = "페이지 상단으로" +go_to_comments = "댓글 섹션으로" + +# Post metadata. +by_author = "$AUTHOR 작성" # $AUTHOR will be replaced by the author(s). +author_separator = "、" # For multiple authors. Ensure spacing where necessary. +author_conjunction = "와" # For multiple authors. Ensure spacing where necessary. +draft = "임시 저장" +zero_min_read = "1분 미만 읽기" +one_min_read = "$NUMBER 분 읽기" +many_min_read = "$NUMBER 분 읽기" +zero_words = "단어 없음" +one_words = "$NUMBER 단어" +many_words = "$NUMBER 단어" +last_updated_on = "$DATE에 업데이트됨" +see_changes = "변경사항 보기" + +# Post body. +table_of_contents = "목차" +load_comments = "댓글 불러오기" + +# Copy code block button. +copied = "복사됨!" +copy_code_to_clipboard = "코드를 클립보드에 복사" + +# iine appreciation button. +like_this_post = "이 글이 좋아요" + +# Footer: Powered by Zola and tabi. +powered_by = "제공됨" +and = "&" +site_source = "사이트 소스" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "요청하신 페이지가 없습니다" +translation_missing = "또는 아직 해당 언어로 번역되지 않았습니다" +check_url = "URL을 확인하거나" +go_home = "홈페이지로 돌아가기" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "원문 인용 보기" +show_translation = "번역 보기" +open_quotation_mark = "“" +close_quotation_mark = "”" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "이것은 웹 피드이며, Atom 피드로도 알려져 있습니다. 주소 표시 줄의 URL을 뉴스 리더로 복사하여 구독하세요. About Feeds를 방문하여 자세히 알아보고 시작하세요. 무료입니다." +visit_the_site = "웹사이트 방문하기" +recent_posts = "최근 게시물" diff --git a/i18n/nl.toml b/i18n/nl.toml new file mode 100644 index 0000000..a300339 --- /dev/null +++ b/i18n/nl.toml @@ -0,0 +1,98 @@ +language_name = "Dutch" # Shown in language picker for multi-language sites. +date_locale = "nl_NL" #nl_BE can also be used for Flemish +full_stop = "." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "blog" +archive = "archief" +tags = "labels" +projects = "projecten" +about = "over ons" +contact = "contact" +privacy = "privacybeleid" +site_statistics = "website statistieken" +sitemap = "sitemap" + +# Search. +search = "Zoeken" +search_icon_title = "Klik of druk op $SHORTCUT om de zoekopdracht te openen" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "Verwijder zoekopdracht" # Title of the X icon next to search input. +zero_results = "Geen resultaten" +one_results = "$NUMBER resultaat" # "1 result" +many_results = "$NUMBER resultaten" # "3 results" + +# Navigation. +pinned = "Vastgezet" +jump_to_posts = "Naar berichten springen" +read_more = "Lees meer" +one_posts = "$NUMBER bericht" # "1 post" +many_posts = "$NUMBER berichten" # "3 posts" +prev = "Vorige" # As in "Previous" page. - Vorige pagina +next = "Volgende" # As in "Next" page. - Volgende pagina +of = "van" # E.g. Page 1 "of" 3 +all_posts = "Alle berichten" +all_tags = "Alle labels" +all_projects = "Alle projecten" +featured_projects = "Aanbevolen projecten" +language_selection = "Selecteer taal" +toggle_mode = "Schakel de $MODE-modus in" # $MODE will be replaced by a value (or both) below. +dark = "donker" +light = "licht" +reset_mode = "Reset de modus naar de standaardwaarde" + +# Quick navigation buttons. +toggle_toc = "Schakel inhoudsopgave in of uit" +go_to_top = "Ga naar de bovenkant van de pagina" +go_to_comments = "Ga naar opmerkingen" + +# Post metadata. +by_author = "Door $AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " en " # For multiple authors. Ensure spacing where necessary. +draft = "VOORLOPIGE VERSIE" +zero_min_read = "<1 minuut lezen" +one_min_read = "$NUMBER minuut lezen" +many_min_read = "$NUMBER minuten lezen" +zero_words = "Geen woorden" +one_words = "$NUMBER woord" +many_words = "$NUMBER woorden" +last_updated_on = "Bijgewerkt op $DATE" +see_changes = "Zie wijzigingen" + +# Post body. +table_of_contents = "Inhoudsopgave" +load_comments = "Laad opmerkingen" + +# Copy code block button. +copied = "Gekopieerd!" +copy_code_to_clipboard = "Kopieer code naar klembord" + +# iine appreciation button. +like_this_post = "Vind ik leuk" + +# Footer: Powered by Zola and tabi. +powered_by = "Aangedreven door" +and = "&" +site_source = "Sitebron" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "Het lijkt erop dat de door u opgevraagde pagina ontbreekt" +translation_missing = "of het is nog niet in jouw taal vertaald" +check_url = "Controleer de URL op fouten of" +go_home = "ga terug naar de startpagina" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "Toon origineel citaat" +show_translation = "Vertaling tonen" +open_quotation_mark = "“" +close_quotation_mark = "”" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "Dit is een webfeed, ook wel Atom-feed genoemd. Abonneer u door de URL uit de adresbalk naar uw nieuwslezer te kopiëren. Ga naar About Feeds voor meer informatie en om aan de slag te gaan. Het is gratis." +visit_the_site = "Bezoek website" +recent_posts = "Recente berichten" diff --git a/i18n/or.toml b/i18n/or.toml new file mode 100644 index 0000000..e431309 --- /dev/null +++ b/i18n/or.toml @@ -0,0 +1,98 @@ +language_name = "ଓଡ଼ିଆ" # Shown in language picker for multi-language sites. +date_locale = "or_IN" +full_stop = "।" # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "ବ୍ଲଗ" +archive = "ଆର୍କାଇଭ" +tags = "ଟ୍ୟାଗଗୁଡ଼ିକ" +projects = "ପ୍ରକଳ୍ପଗୁଡ଼ିକ" +about = "ବାବଦରେ" +contact = "ଯୋଗାଯୋଗ" +privacy = "ଗୋପନୀୟତା ନୀତି" +site_statistics = "ସାଇଟ ପରିସଂଖ୍ୟାନ" +sitemap = "ସାଇଟମ୍ୟାପ" + +# Search. +search = "ଖୋଜନ୍ତୁ" +search_icon_title = "ଖୋଜିବାକୁ $SHORTCUT କୁ ଚିପନ୍ତୁ କିମ୍ବା କ୍ଲିକ କରନ୍ତୁ" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "ଖୋଜା ସଫା କରନ୍ତୁ" # Title of the X icon next to search input. +zero_results = "କିଛି ମିଳିଲା ନାହିଁ" +one_results = "$NUMBER ପରିଣାମ" # "1 result" +many_results = "$NUMBER ପରିଣାମଗୁଡ଼ିକ" # "3 results" + +# Navigation. +pinned = "ପିନ୍ କରାଯାଇଛି" +jump_to_posts = "ପୋଷ୍ଟକୁ ଯାଆନ୍ତୁ" +read_more = "ଆହୁରି ପଢ଼ନ୍ତୁ" +one_posts = "$NUMBER ପୋଷ୍ଟ" +many_posts = "$NUMBER ପୋଷ୍ଟଗୁଡ଼ିକ" # "3 posts" +prev = "ପୂର୍ବ" # As in "Previous" page. +next = "ପର" # As in "Next" page. +of = "ର" # E.g. Page 1 "of" 3 +all_posts = "ସମସ୍ତ ପୋଷ୍ଟଗୁଡ଼ିକ" +all_tags = "ସମସ୍ତ ଟ୍ୟାଗଗୁଡ଼ିକ" +all_projects = "ସମସ୍ତ ପ୍ରକଳ୍ପଗୁଡ଼ିକ" +featured_projects = "ବିଶେଷ ପ୍ରକଳ୍ପଗୁଡ଼ିକ" +language_selection = "ଭାଷା ଚୟନ" +toggle_mode = "$MODE ଟଗଲ କରନ୍ତୁ" # $MODE will be replaced by a value (or both) below. +dark = "ଅନ୍ଧାର" +light = "ଆଲୋକ" +reset_mode = "ସାଇଟର ମୂଳ ମୋଡକୁ ଆଣନ୍ତୁ" + +# Quick navigation buttons. +toggle_toc = "ସୂଚୀପତ୍ର ଟଗଲ କରନ୍ତୁ" +go_to_top = "ପୃଷ୍ଠାର ଶୀର୍ଷକୁ ଯାଆନ୍ତୁ" +go_to_comments = "ମତାମତ ବିଭାଗକୁ ଯାଆନ୍ତୁ" + +# Post metadata. +by_author = "$AUTHOR ଙ୍କ ଦ୍ୱାରା" # $AUTHOR will be replaced by the author(s). +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " ଏବଂ " # For multiple authors. Ensure spacing where necessary. +draft = "ଡ୍ରାଫ୍ଟ" +zero_min_read = "<୧ ମିନିଟ ପଢ଼ିବା ସମୟ" +one_min_read = "$NUMBER ମିନିଟ ପଢ଼ିବା ସମୟ" +many_min_read = "$NUMBER ମିନିଟ ପଢ଼ିବା ସମୟ" +zero_words = "କୌଣସି ଶବ୍ଦ ନାହିଁ " +one_words = "$NUMBER ଶବ୍ଦ" +many_words = "$NUMBER ଶବ୍ଦଗୁଡ଼ିକ" +last_updated_on = "$DATE ଦିନ ଅଦ୍ୟତନ ହୋଇଥିଲା" +see_changes = "ପରିବର୍ତ୍ତନଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ" + +# Post body. +table_of_contents = "ସୂଚୀପତ୍ର" +load_comments = "ମତାମତ ଲୋଡ କରନ୍ତୁ" + +# Copy code block button. +copied = "କପି ହେଲା!" +copy_code_to_clipboard = "କ୍ଲିପବୋର୍ଡକୁ କପି କରନ୍ତୁ" + +# iine appreciation button. +like_this_post = "ମୋର ଏହି ପୋସ୍ଟ ଭଲ ଲାଗେ" + +# Footer: Powered by Zola and tabi. +powered_by = "ଚାଳିତ ଦ୍ୱାରା" +and = "ଏବଂ" +site_source = "ସାଇଟ ଉତ୍ସ" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "ଆପଣ ଯେଉଁ ପୃଷ୍ଠାଟିକୁ ଅନୁରୋଧ କରିଥିଲେ ତାହା ନାହିଁ" +translation_missing = "କିମ୍ବା ଆପଣଙ୍କର ଭାଷାକୁ ଏପର୍ଯ୍ୟନ୍ତ ଅନୁବାଦିତ ହୋଇନାହିଁ" +check_url = "ତୃଟିଗୁଡ଼ିକ ପାଇଁ URL କୁ ଦେଖନ୍ତୁ କିମ୍ବା" +go_home = "ମୂଳ ପୃଷ୍ଠାକୁ ଫେରିଯାଆନ୍ତୁ" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "ମୂଳ ଉଦ୍ଧୃତ ଦେଖାନ୍ତୁ" +show_translation = "ଅନୁବାଦ ଦେଖାନ୍ତୁ" +open_quotation_mark = "“" +close_quotation_mark = "”" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "ଏହା ଏକ ୱେବ୍ ଫିଡ୍, ଯାହାକୁ ଆଟମ୍ ଫିଡ୍ ମଧ୍ୟ କୁହାଯାଏ। ଠିକଣା ବାରରୁ URL କୁ ଆପଣଙ୍କ ନ୍ୟୁଜ୍ ରିଡରରେ କପି କରି ସବ୍ସ୍କ୍ରାଇବ୍ କରନ୍ତୁ। ଅଧିକ ଜାଣିବା ଏବଂ ଆରମ୍ଭ କରିବାକୁ About Feeds ଯାଆନ୍ତୁ। ଏହା ମାଗଣା ଅଟେ ।" +visit_the_site = "ୱେବସାଇଟକୁ ଯାଆନ୍ତୁ" +recent_posts = "ସାମ୍ପ୍ରତିକ ପୋଷ୍ଟଗୁଡିକ" diff --git a/i18n/pt-PT.toml b/i18n/pt-PT.toml new file mode 100644 index 0000000..fa79380 --- /dev/null +++ b/i18n/pt-PT.toml @@ -0,0 +1,98 @@ +language_name = "Português" # Shown in language picker for multi-language sites. +date_locale = "pt_PT" +full_stop = "." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "blog" +archive = "arquivo" +tags = "etiquetas" +projects = "projetos" +about = "sobre" +contact = "contacto" +privacy = "política de privacidade" +site_statistics = "estatísticas do site" +sitemap = "mapa do site" + +# Search. +search = "Pesquisar" +search_icon_title = "Clique ou pressione $SHORTCUT para abrir a pesquisa" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "Limpar pesquisa" # Title of the X icon next to search input. +zero_results = "Nenhum resultado encontrado" +one_results = "$NUMBER resultado" # "1 result" +many_results = "$NUMBER resultados" # "3 results" + +# Navigation. +pinned = "Fixado" +jump_to_posts = "Ir para as publicações" +read_more = "Ler mais" +one_posts = "$NUMBER publicação" +many_posts = "$NUMBER publicações" +prev = "Anterior" # As in "Previous" page. +next = "Seguinte" # As in "Next" page. +of = "de" # E.g. Page 1 "of" 3 +all_posts = "Todas as publicações" +all_tags = "Todas as etiquetas" +all_projects = "Todos os projetos" +featured_projects = "Projetos em destaque" +language_selection = "Seleção de idioma" +toggle_mode = "Alternar para o modo $MODE" # $MODE will be replaced by a value (or both) below. +dark = "escuro" +light = "claro" +reset_mode = "Repor o modo para o padrão" + +# Quick navigation buttons. +toggle_toc = "Alternar Índice" +go_to_top = "Ir para o topo da página" +go_to_comments = "Ir para a seção de comentários" + +# Post metadata. +by_author = "Por $AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " e " # For multiple authors. Ensure spacing where necessary. +draft = "RASCUNHO" +zero_min_read = "<1 min de leitura" +one_min_read = "$NUMBER min de leitura" +many_min_read = "$NUMBER mins de leitura" +zero_words = "Nenhuma palavra" +one_words = "$NUMBER palavra" +many_words = "$NUMBER palavras" +last_updated_on = "Atualizado em $DATE" +see_changes = "Ver alterações" + +# Post body. +table_of_contents = "Índice de conteúdo" +load_comments = "Carregar comentários" + +# Copy code block button. +copied = "Copiado!" +copy_code_to_clipboard = "Copiar código para a área de transferência" + +# iine appreciation button. +like_this_post = "Gosto desta publicação" + +# Footer: Powered by Zola and tabi. +powered_by = "Impulsionado por" +and = "e" +site_source = "Código do site" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "A página que solicitou não existe" +translation_missing = "ou ainda não foi traduzida para o seu idioma" +check_url = "Verifique se o URL está correto ou" +go_home = "volte à página inicial" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "Mostrar citação original" +show_translation = "Mostrar tradução" +open_quotation_mark = "«" +close_quotation_mark = "»" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "Isto é um feed web, também conhecido como feed Atom. Subscreva copiando o URL da barra de endereços para o seu leitor de notícias. Visite About Feeds para aprender mais e começar. É grátis." +visit_the_site = "Visite o website" +recent_posts = "Publicações recentes" diff --git a/i18n/ru.toml b/i18n/ru.toml new file mode 100644 index 0000000..16765e3 --- /dev/null +++ b/i18n/ru.toml @@ -0,0 +1,107 @@ +language_name = "Русский" # Shown in language picker for multi-language sites. +date_locale = "ru_RU" +full-stop = "." # Used at the end of a sentence. + +# Note on pluralization prefixes: +# - few_: for numbers ending in 2-4, except 12-14, in genitive singular. +# - many_: for all others, including 5-9, 0, and teens (11-14), in genitive plural. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "блог" +archive = "архив" +tags = "теги" +projects = "проекты" +about = "обо мне" +contact = "контакт" +privacy = "политика конфиденциальности" +site_statistics = "статистика сайта" +sitemap = "карта сайта" + +# Search. +search = "Поиск" +search_icon_title = "Нажмите или используйте $SHORTCUT для открытия поиска" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "Очистить поиск" # Title of the X icon next to search input. +zero_results = "Нет результатов" +one_results = "$NUMBER результат" +few_results = "$NUMBER результата" # 2, 3, 4 but not 12-14 +many_results = "$NUMBER результатов" # 5-9, 0, 11-14, and others + +# Navigation. +pinned = "Закреплено" +jump_to_posts = "Перейти к записям" +read_more = "Читать далее" +post = "пост" +one_posts = "$NUMBER пост" +few_posts = "$NUMBER поста" # 2, 3, 4 but not 12-14 +many_posts = "$NUMBER постов" # 5-9, 0, 11-14, and others +prev = "Пред." # As in "Previous" page. +next = "След." # As in "Next" page. +of = "из" # E.g. Page 1 "of" 3 +all_posts = "Все посты" +all_tags = "Все теги" +all_projects = "Все проекты" +featured_projects = "Избранные проекты" +language_selection = "Выбор языка" +toggle_mode = "Переключить на режим $MODE" # $MODE will be replaced by a value (or both) below. +dark = "тёмный" +light = "светлый" +reset_mode = "Сбросить режим к стандартным настройкам сайта" + +# Quick navigation buttons. +toggle_toc = "Показать/Скрыть оглавление" +go_to_top = "Перейти в начало страницы" +go_to_comments = "Перейти к комментариям" + +# Post metadata. +by_author = "От $AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " и " # For multiple authors. Ensure spacing where necessary. +draft = "ЧЕРНОВИК" +zero_min_read = "<1 мин чтения" +one_min_read = "$NUMBER мин чтения" +few_min_read = "$NUMBER мин чтения" # 2, 3, 4 but not 12-14 +many_min_read = "$NUMBER мин чтения" # 5-9, 0, 11-14, and others +zero_words = "Нет слов" +one_words = "$NUMBER слово" +few_words = "$NUMBER слова" # 2, 3, 4 but not 12-14 +many_words = "$NUMBER слов" # 5-9, 0, 11-14, and others +last_updated_on = "Обновлено $DATE" +see_changes = "Смотреть изменения" + +# Post body. +table_of_contents = "Содержание" +load_comments = "Загрузить комментарии" + +# Copy code block button. +copied = "Скопировано!" +copy_code_to_clipboard = "Скопировать код в буфер обмена" + +# iine appreciation button. +like_this_post = "Мне нравится эта статья" + +# Footer: Powered by Zola and tabi. +powered_by = "Под управлением" +and = "&" +site_source = "Исходный код сайта" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "Запрашиваемая вами страница отсутствует" +translation_missing = "или еще не переведена на ваш язык" +check_url = "Проверьте URL на ошибки или" +go_home = "вернитесь на главную страницу" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "Показать оригинальную цитату" +show_translation = "Показать перевод" +open_quotation_mark = "«" +close_quotation_mark = "»" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "Это веб-фид, известный также как Atom-фид. Чтобы подписаться, скопируйте URL из адресной строки в ваш RSS-ридер. Посетите About Feeds для дополнительной информации и начала использования." +visit_the_site = "Посетить веб-сайт" +recent_posts = "Последние посты" diff --git a/i18n/uk.toml b/i18n/uk.toml new file mode 100644 index 0000000..d20cb8e --- /dev/null +++ b/i18n/uk.toml @@ -0,0 +1,111 @@ +# This has been machine translated. +# If you would like to help correct errors or improve the translation, +# please open an issue or submit a pull request. +# https://github.com/welpo/tabi + +# Note on pluralization prefixes: +# - few_: for numbers ending in 2-4, except 12-14, in genitive singular. +# - many_: for all others, including 5-9, 0, and teens (11-14), in genitive plural. + +language_name = "Українська" # Shown in language picker for multi-language sites. +date_locale = "uk_UA" +full-stop = "." # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "блог" +archive = "архів" +tags = "теги" +projects = "проєкти" +about = "про мене" +contact = "контакт" +privacy = "політика конфіденційності" +site_statistics = "статистика сайту" +sitemap = "карта сайту" + +# Search. +search = "Пошук" +search_icon_title = "Натисніть або використовуйте $SHORTCUT, щоб відкрити пошук" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "Очистити пошук" # Title of the X icon next to search input. +zero_results = "Немає результатів" +one_results = "$NUMBER результат" +few_results = "$NUMBER результати" +many_results = "$NUMBER результатів" + +# Navigation. +pinned = "Закріплено" +jump_to_posts = "Перейти до дописів" +read_more = "Читати далі" +one_posts = "$NUMBER пост" +few_posts = "$NUMBER пости" # 2, 3, 4 but not 12-14 +many_posts = "$NUMBER постів" # 5-9, 0, 11-14, and others +prev = "Попер." # As in "Previous" page. +next = "Наст." # As in "Next" page. +of = "з" # E.g. Page 1 "of" 3 +all_posts = "Всі пости" +all_tags = "Всі теги" +all_projects = "Усі проекти" +featured_projects = "Обрані проекти" +language_selection = "Вибір мови" +toggle_mode = "Перемкнути в режим $MODE" # $MODE will be replaced by a value (or both) below. +dark = "темний" +light = "світлий" +reset_mode = "Скинути режим до типових налаштувань сайту" + +# Quick navigation buttons. +toggle_toc = "Показати/Сховати зміст" +go_to_top = "Перейти на початок сторінки" +go_to_comments = "Перейти до коментарів" + +# Post metadata. +by_author = "Від $AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = ", " # For multiple authors. Ensure spacing where necessary. +author_conjunction = " і " # For multiple authors. Ensure spacing where necessary. +draft = "ЧЕРНЕТКА" +zero_min_read = "<1 хв. читання" +one_min_read = "$NUMBER хв. читання" +few_min_read = "$NUMBER хв. читання" # 2, 3, 4 but not 12-14 +many_min_read = "$NUMBER хв. читання" # 5-9, 0, 11-14, and others +zero_words = "Без слів" +one_words = "$NUMBER слово" +few_words = "$NUMBER слова" # 2, 3, 4 but not 12-14 +many_words = "$NUMBER слів" # 5-9, 0, 11-14, and others +last_updated_on = "Оновлено $DATE" +see_changes = "Переглянути зміни" + +# Post body. +table_of_contents = "Зміст" +load_comments = "Завантажити коментарі" + +# Copy code block button. +copied = "Скопійовано!" +copy_code_to_clipboard = "Копіювати код у буфер обміну" + +# iine appreciation button. +like_this_post = "Мені подобається ця стаття" + +# Footer: Powered by Zola and tabi. +powered_by = "Під управлінням" +and = "та" +site_source = "Вихідний код сайту" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "Сторінка, яку ви запитуєте, відсутня" +translation_missing = "або ще не перекладена на вашу мову" +check_url = "Перевірте URL на помилки або" +go_home = "поверніться на головну сторінку" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "Показати оригінальну цитату" +show_translation = "Показати переклад" +open_quotation_mark = "«" +close_quotation_mark = "»" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "Це веб-канал, також відомий як Atom-канал. Щоб підписатися, скопіюйте URL з адресного рядка у ваш RSS-читач. Відвідайте About Feeds для додаткової інформації та початку використання." +visit_the_site = "Відвідати веб-сайт" +recent_posts = "Останні пости" diff --git a/i18n/zh-Hans.toml b/i18n/zh-Hans.toml new file mode 100644 index 0000000..f4f181b --- /dev/null +++ b/i18n/zh-Hans.toml @@ -0,0 +1,98 @@ +language_name = "简体中文" # Shown in language picker for multi-language sites. +date_locale = "zh_CN" +full_stop = "。" # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "博客" +archive = "归档" +tags = "标签" +projects = "项目" +about = "关于" +contact = "联系方式" # Machine translated. +privacy = "隐私政策" # Machine translated. +site_statistics = "网站统计" # Machine translated. +sitemap = "站点地图" # Machine translated. + +# Search. +search = "搜索" +search_icon_title = "点击或按 $SHORTCUT 开启搜索" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "清除搜索" # Title of the X icon next to search input. +zero_results = "没有找到结果" +one_results = "$NUMBER 个结果" +many_results = "$NUMBER 个结果" + +# Navigation. +pinned = "置顶" +jump_to_posts = "跳转到文章" +read_more = "阅读全文" +one_posts = "$NUMBER 篇文章" +many_posts = "$NUMBER 篇文章" +prev = "上一页" # As in "Previous" page. +next = "下一页" # As in "Next" page. +of = "/" # E.g. Page 1 "of" 3 +all_posts = "所有文章" +all_tags = "所有标签" +all_projects = "所有项目" # Machine translated. +featured_projects = "特色项目" # Machine translated. +language_selection = "语言选择" # Machine translated. +toggle_mode = "切换到$MODE模式" # $MODE will be replaced by a value (or both) below. Machine translated. +dark = "暗" # Machine translated. +light = "亮" # Machine translated. +reset_mode = "将模式重置为网站默认值" # Machine translated. + +# Quick navigation buttons. +toggle_toc = "切换目录" # Machine translated. +go_to_top = "返回页面顶部" # Machine translated. +go_to_comments = "转到评论区" # Machine translated. + +# Post metadata. +by_author = "由$AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = "、" # For multiple authors. Ensure spacing where necessary. +author_conjunction = "和" # For multiple authors. Ensure spacing where necessary. +draft = "草稿" +zero_min_read = "少于1分钟阅读" +one_min_read = "$NUMBER 分钟阅读" +many_min_read = "$NUMBER 分钟阅读" +zero_words = "没有字" +one_words = "$NUMBER 字" +many_words = "$NUMBER 字" +last_updated_on = "更新于 $DATE" +see_changes = "修改纪录" + +# Post body. +table_of_contents = "目录" +load_comments = "载入留言" + +# Copy code block button. +copied = "已复制!" # Machine translated. +copy_code_to_clipboard = "复制代码到剪贴板" # Machine translated. + +# iine appreciation button. +like_this_post = "喜欢这篇文章" + +# Footer: Powered by Zola and tabi. +powered_by = "网站基于" +and = "和" +site_source = "查看原始码" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "您请求的页面似乎不存在" +translation_missing = "或尚未翻译成您的语言" +check_url = "请检查网址是否有误或" +go_home = "返回首页" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "显示原文" +show_translation = "显示译文" +open_quotation_mark = "「" +close_quotation_mark = "」" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "这是Web Feed,又称为Atom Feed,把现在的网址复制到新闻阅读器即可订阅本站文章。造访「About Feeds」来了解更多资讯。" +visit_the_site = "造访网站" +recent_posts = "近期文章" diff --git a/i18n/zh-Hant.toml b/i18n/zh-Hant.toml new file mode 100644 index 0000000..29d6282 --- /dev/null +++ b/i18n/zh-Hant.toml @@ -0,0 +1,98 @@ +language_name = "繁體中文" # Shown in language picker for multi-language sites. +date_locale = "zh_TW" +full_stop = "。" # Used at the end of a sentence. + +# Menu items. +# Should match the names in config.extra.menu and config.extra.footer_menu. +blog = "網誌" +archive = "歸檔" +tags = "標籤" +projects = "專案" +about = "關於" +contact = "聯絡方式" # Machine translated. +privacy = "隱私政策" # Machine translated. +site_statistics = "網站統計" # Machine translated. +sitemap = "網站地圖" # Machine translated. + +# Search. +search = "搜尋" +search_icon_title = "點擊或按 $SHORTCUT 來開啟搜尋" # $SHORTCUT will be replaced with the actual keyboard shortcut. +clear_search = "清除搜尋" # Title of the X icon next to search input. +zero_results = "沒有找到結果" +one_results = "$NUMBER 個結果" +many_results = "$NUMBER 個結果" + +# Navigation. +pinned = "釘選" +jump_to_posts = "跳轉到文章" +read_more = "閱讀全文" +one_posts = "$NUMBER 篇文章" +many_posts = "$NUMBER 篇文章" +prev = "上一頁" # As in "Previous" page. +next = "下一頁" # As in "Next" page. +of = "/" # E.g. Page 1 "of" 3 +all_posts = "所有文章" +all_tags = "所有標籤" +all_projects = "所有項目" # Machine translated. +featured_projects = "精選項目" # Machine translated. +language_selection = "語言選擇" # Machine translated. +toggle_mode = "切換到$MODE模式" # $MODE will be replaced by a value (or both) below. Machine translated. +dark = "暗" # Machine translated. +light = "亮" # Machine translated. +reset_mode = "將模式重置為網站默認值" # Machine translated. + +# Quick navigation buttons. +toggle_toc = "切換目錄" # Machine translated. +go_to_top = "返回頁面頂部" # Machine translated. +go_to_comments = "轉到評論區" # Machine translated. + +# Post metadata. +by_author = "由$AUTHOR" # $AUTHOR will be replaced by the author(s). +author_separator = "、" # For multiple authors. Ensure spacing where necessary. +author_conjunction = "和" # For multiple authors. Ensure spacing where necessary. +draft = "草稿" +zero_min_read = "少於1分鐘閱讀" +one_min_read = "$NUMBER 分鐘閱讀" +many_min_read = "$NUMBER 分鐘閱讀" +zero_words = "沒有字" +one_words = "$NUMBER 字" +many_words = "$NUMBER 字" +last_updated_on = "更新於 $DATE" +see_changes = "修改紀錄" + +# Post body. +table_of_contents = "目錄" +load_comments = "載入留言" + +# Copy code block button. +copied = "已复制!" # Machine translated. +copy_code_to_clipboard = "复制代码到剪贴板" # Machine translated. + +# iine appreciation button. +like_this_post = "喜歡這篇文章" + +# Footer: Powered by Zola and tabi. +powered_by = "網站基於" +and = "和" +site_source = "查看原始碼" + +# 404 error. +# https://welpo.github.io/tabi/404.html +page_missing = "您請求的頁面不存在" +translation_missing = "或尚未被翻譯成繁體中文" +check_url = "請檢查網址是否有誤或" +go_home = "返回首頁" + +# For multilingual quote shortcode. +# https://welpo.github.io/tabi/blog/shortcodes/#multilingual-quotes +show_original_quote = "顯示原文" +show_translation = "顯示翻譯" +open_quotation_mark = "「" +close_quotation_mark = "」" + +# Translations for stylised Atom feed. +# https://welpo.github.io/tabi/atom.xml +# Must contain "About Feeds"; it will become a link. +about_feeds = "這是Web Feed,又稱為Atom Feed,把現在的網址複製到新聞閱讀器即可訂閱本站文章。造訪「About Feeds」來了解更多資訊。" +visit_the_site = "造訪網站" +recent_posts = "近期文章" diff --git a/sass/main.scss b/sass/main.scss new file mode 100644 index 0000000..d1470ff --- /dev/null +++ b/sass/main.scss @@ -0,0 +1,347 @@ +@use 'parts/_admonitions.scss'; +@use 'parts/_archive.scss'; +@use 'parts/_aside.scss'; +@use 'parts/_cards.scss'; +@use 'parts/_code.scss'; +@use 'parts/_comments.scss'; +@use 'parts/_footer.scss'; +@use 'parts/_header-anchor.scss'; +@use 'parts/_header.scss'; +@use 'parts/_home-banner.scss'; +@use 'parts/_iine.scss'; +@use 'parts/_image-hover.scss'; +@use 'parts/_image-toggler.scss'; +@use 'parts/_image.scss'; +@use 'parts/_misc.scss'; +@use 'parts/_multilingual_quote.scss'; +@use 'parts/_pagination.scss'; +@use 'parts/_posts_list.scss'; +@use 'parts/_quick_navigation_buttons.scss'; +@use 'parts/_search.scss'; +@use 'parts/_spoiler.scss'; +@use 'parts/_syntax_theme.scss'; +@use 'parts/_table.scss'; +@use 'parts/_tags.scss'; +@use 'parts/_theme-switch.scss'; +@use 'parts/_webmention.scss'; +@use 'parts/_zola-error.scss'; + +@font-face { + src: local('Inter'), + url('fonts/Inter4.woff2') format("woff2"); + /* Copyright 2016 The Inter Project Authors (https://github.com/rsms/inter). Licensed under the SIL Open Font License, Version 1.1. More information available at: http://scripts.sil.org/OFL */ + font-family: 'Inter'; + font-display: swap; +} + +@font-face { + src: local('Source Serif'), + url('fonts/SourceSerif4Variable-Roman.ttf.woff2') format("woff2"); + /* Copyright 2014 - 2023 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’.adobe.com/). Licensed under the SIL Open Font License, Version 1.1. More information available at: http://scripts.sil.org/OFL */ + font-family: 'Source Serif'; + font-display: swap; +} + +@font-face { + src: local('Cascadia Code'), + url('fonts/CascadiaCode-SemiLight.woff2') format("woff2"); + /* Copyright 2019 - Present, Microsoft Corporation, with Reserved Font Name 'Cascadia Code'. Licensed under the SIL Open Font License, Version 1.1. More information available at: http://scripts.sil.org/OFL */ + font-family: 'Cascadia Code'; + font-display: swap; +} + +@mixin theme-variables($theme) { + @if $theme =='light' { + --background-color: white; + --bg-0: #f0f0f0; + --bg-1: #e7e7e7; + --bg-2: #fefefe; + --bg-3: #d8dcdd; + --hover-color: white; + --primary-color: #087E96; + --divider-color: #d7d7d7; + --text-color: #222226; + --text-color-high-contrast: #313333; + --meta-color: #5b5b65; + --codeblock-bg: #26232e; + --codeblock-highlight: #383444; + --theme-switcher-svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z'/%3E%3C/svg%3E%0A"); + color-scheme: light; + } + + @else { + --background-color: #1f1f1f; + --bg-0: #2f2f2f; + --bg-1: #3c3c3c; + --bg-2: #171717; + --bg-3: #535555; + --hover-color: black; + --primary-color: #91e0ee; + --divider-color: #4a4a4a; + --text-color: #D4D4D4; + --text-color-high-contrast: #eceeef; + --meta-color: #B0B0B0; + --codeblock-bg: #19181e; + --codeblock-highlight: #282834; + --theme-switcher-svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 96 960 960' %3E%3Cpath d='M480 776q-83 0-141.5-58.5T280 576q0-83 58.5-141.5T480 376q83 0 141.5 58.5T680 576q0 83-58.5 141.5T480 776ZM80 616q-17 0-28.5-11.5T40 576q0-17 11.5-28.5T80 536h80q17 0 28.5 11.5T200 576q0 17-11.5 28.5T160 616H80Zm720 0q-17 0-28.5-11.5T760 576q0-17 11.5-28.5T800 536h80q17 0 28.5 11.5T920 576q0 17-11.5 28.5T880 616h-80ZM480 296q-17 0-28.5-11.5T440 256v-80q0-17 11.5-28.5T480 136q17 0 28.5 11.5T520 176v80q0 17-11.5 28.5T480 296Zm0 720q-17 0-28.5-11.5T440 976v-80q0-17 11.5-28.5T480 856q17 0 28.5 11.5T520 896v80q0 17-11.5 28.5T480 1016ZM226 378l-43-42q-12-11-11.5-28t11.5-29q12-12 29-12t28 12l42 43q11 12 11 28t-11 28q-11 12-27.5 11.5T226 378Zm494 495-42-43q-11-12-11-28.5t11-27.5q11-12 27.5-11.5T734 774l43 42q12 11 11.5 28T777 873q-12 12-29 12t-28-12Zm-42-495q-12-11-11.5-27.5T678 322l42-43q11-12 28-11.5t29 11.5q12 12 12 29t-12 28l-43 42q-12 11-28 11t-28-11ZM183 873q-12-12-12-29t12-28l43-42q12-11 28.5-11t27.5 11q12 11 11.5 27.5T282 830l-42 43q-11 12-28 11.5T183 873Z'/%3E%3C/svg%3E"); + color-scheme: dark; + } +} + +:root { + @include theme-variables('light'); + + --max-layout-width: 1000px; + --normal-layout-width: 600px; + --medium-layout-width: 400px; + --small-layout-width: 200px; + --paragraph-spacing: max(2.3vmin, 24px); + + --sans-serif-font: 'Inter', Helvetica, Arial, sans-serif; + --serif-font: 'Source Serif', 'Georgia', serif; + --code-font: 'Cascadia Code'; + + scrollbar-color: var(--primary-color) transparent; + accent-color: var(--primary-color); + + line-height: 190%; + font-family: var(--sans-serif-font); +} + +[data-theme='dark'] { + @include theme-variables('dark'); + + .invertible-image { + filter: invert(.88); + } + + .dimmable-image { + filter: brightness(.8) contrast(1.2); + } +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include theme-variables('dark'); + + .invertible-image { + filter: invert(.88); + } + + .dimmable-image { + filter: brightness(.8) contrast(1.2); + } + } +} + +html { + background-color: var(--background-color); + color: var(--text-color); + line-height: 1.6em; + text-rendering: optimizeLegibility; +} + +body { + display: flex; + flex-direction: column; + margin-inline: 5vmin; + margin-block: 0; + min-height: 100vh; +} + +.content { + word-wrap: break-word; + margin: 0 auto; + margin-top: 6vmin; + margin-block-end: 4rem; + width: 100%; + max-width: var(--max-layout-width); +} + +.use-sans-serif { + --serif-font: var(--sans-serif-font); +} + +article { + $base-margin: 6rem; + position: relative; + margin: 0 auto; + + max-width: calc(var(--max-layout-width) - 2*$base-margin); + + p, + li, + details, + summary { + font-family: var(--serif-font); + } + + strong { + font-weight: 620; + } + + .full-width { + margin-inline-start: -$base-margin; + margin-inline-end: -$base-margin; + max-width: calc(100% + 2*$base-margin); + } + + li { + p:not(:last-child) { + margin-block-end: 0; + } + + p + :last-child { + margin-block-end: var(--paragraph-spacing); + } + } +} + +.section-title { + display: flex; + margin: 0; + margin-top: -0.15em; + color: var(--text-color-high-contrast); + font-weight: 550; + font-size: 2.2em; + line-height: 1.2em; +} + +.last-updated { + margin-top: -5vmin; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + display: block; + position: relative; + margin: 0; +} + +h1 { + margin-top: 0.67em; + font-weight: 550; + font-size: 1.62rem; +} + +h2 { + margin-top: 0.5em; + font-weight: 550; + font-size: 1.4rem; +} + +h3 { + margin-top: 0.3em; + font-weight: 550; + font-size: 1.2rem; +} + +h4 { + margin-top: 0.83em; + font-weight: 550; + font-size: 1rem; +} + +h5 { + margin-top: 0.83em; + font-weight: normal; + font-size: 1rem; +} + +p { + margin-top: 0.4rem; + margin-block-end: var(--paragraph-spacing); + font-size: 1em; + line-height: 2rem; +} + +strong { + font-weight: 580; +} + +.centered-text { + text-align: center; +} + +video { + max-width: 100%; +} + +.center-content { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + margin: 0; + width: 100%; + height: 100vh; + text-align: center; +} + +.subheader { + margin-block-end: 2rem; +} + +.mobile-only { + display: none; +} + +@media only screen and (max-width: 1000px) { + .content { + max-width: var(--normal-layout-width); + } + + body { + margin: 0 32px; + } + + article .full-width { + display: block; + margin-inline-start: 0; + margin-inline-end: 0; + max-width: none; + overflow-x: auto; + } + + .mobile-only { + display: block; + } +} + +@media only screen and (max-width: 600px) { + .content { + margin-top: 0rem; + max-width: var(--medium-layout-width); + } + + article { + margin-top: 1.3rem; + } + + body { + margin-inline: 16px; + margin-block: 0; + } +} + +@media only screen and (max-width: 300px) { + .content { + max-width: var(--small-layout-width); + } +} + +@media all and (min-width: 600px) { + html { + font-size: 16.5px; + } +} + +@media all and (min-width: 960px) { + html { + font-size: 20px; + } +} diff --git a/sass/parts/_admonitions.scss b/sass/parts/_admonitions.scss new file mode 100644 index 0000000..6feec43 --- /dev/null +++ b/sass/parts/_admonitions.scss @@ -0,0 +1,159 @@ +@mixin admonition-type($type) { + border-color: var(--admonition-#{$type}-border); + background-color: var(--admonition-#{$type}-bg); + + > .admonition-content > p > code { + background-color: var(--admonition-#{$type}-code); + } + + a { + border-bottom: 1px solid var(--admonition-#{$type}-border); + color: var(--admonition-#{$type}-border); + + &:hover { + background-color: var(--admonition-#{$type}-border); + color: var(--hover-color); + } + } + + .admonition-icon { + background-color: var(--admonition-#{$type}-border); + } +} + +:root { + /* Note */ + --admonition-note-border: #5b6167; + --admonition-note-bg: #f2f4f7; + --admonition-note-code: #e1e3ed; + + /* Tip */ + --admonition-tip-border: #03970f; + --admonition-tip-bg: #f0fdf0; + --admonition-tip-code: #d3edc5; + + /* Info */ + --admonition-info-border: #15a2b2; + --admonition-info-bg: #f5fbff; + --admonition-info-code: #d5e2f2; + + /* Warning */ + --admonition-warning-border: #eea719; + --admonition-warning-bg: #fff8e6; + --admonition-warning-code: #feee96; + + /* Danger */ + --admonition-danger-border: #d8292e; + --admonition-danger-bg: #ffebed; + --admonition-danger-code: #fcc1c5; +} + +@mixin dark-theme-variables { + /* Note */ + --admonition-note-border: #d0d1d4; + --admonition-note-bg: #3d3e40; + --admonition-note-code: #495057; + + /* Tip */ + --admonition-tip-border: #01b010; + --admonition-tip-bg: #013100; + --admonition-tip-code: #005f00; + + /* Info */ + --admonition-info-border: #50a9d5; + --admonition-info-bg: #193C47; + --admonition-info-code: #245e70; + + /* Warning */ + --admonition-warning-border: #e19d0a; + --admonition-warning-bg: #4f3a01; + --admonition-warning-code: #8c6b00; + + /* Danger */ + --admonition-danger-border: #e74f54; + --admonition-danger-bg: #4c1012; + --admonition-danger-code: #8c2e00; +} + +[data-theme='dark'] { + @include dark-theme-variables; +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include dark-theme-variables; + } +} + +.admonition { + display: flex; + align-items: flex-start; + margin-block: 1em; + border-radius: 10px; + border-inline-start: 6px solid; + padding: 0.8rem; + color: var(--text-color-high-contrast); + font-family: var(--sans-serif-font); + + p { + margin-inline-start: -1.75rem; + margin-block-end: 0; + font-family: inherit; + } + + a { + code { + color: inherit; + } + } +} + +.admonition-content { + flex: 1; + strong { + font-weight: 580; + } +} + +.admonition-icon { + display: flex; + align-items: center; + margin: 0.3rem; + background-size: contain; + background-repeat: no-repeat; + aspect-ratio: 1/1; + width: 1.5rem; +} + +.admonition-title { + opacity: 0.92; + font-weight: bold; + font-size: 0.82rem; +} + + +.admonition-icon-note { + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z'/%3E%3C/svg%3E"); +} + +.admonition-icon-tip { + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M480-78.258q-33.718 0-56.974-22.166-23.256-22.167-23.59-55.885h161.128q-.334 33.718-23.59 55.885Q513.718-78.258 480-78.258ZM318.257-210.515v-67.588h323.486v67.588H318.257Zm7.846-121.128q-67.692-42.487-106.896-109.134-39.205-66.648-39.205-147.479 0-123.769 88.149-211.884 88.149-88.115 211.967-88.115 123.817 0 211.849 88.115 88.031 88.115 88.031 211.884 0 80.831-38.999 147.479-39 66.647-107.102 109.134H326.103Zm21.927-67.588h264.351q46.311-32 73.17-81.681 26.859-49.68 26.859-107.144 0-96.918-68-164.765-68-67.846-164.564-67.846t-164.41 67.713q-67.846 67.712-67.846 164.725 0 57.52 26.859 107.259t73.581 81.739Zm131.97 0Z'/%3E%3C/svg%3E"); +} + +.admonition-icon-info { + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M479.789-288Q495-288 505.5-298.289q10.5-10.29 10.5-25.5Q516-339 505.711-349.5q-10.29-10.5-25.5-10.5Q465-360 454.5-349.711q-10.5 10.29-10.5 25.5Q444-309 454.289-298.5q10.29 10.5 25.5 10.5ZM444-432h72v-240h-72v240Zm36.276 336Q401-96 331-126q-70-30-122.5-82.5T126-330.958q-30-69.959-30-149.5Q96-560 126-629.5t82.5-122Q261-804 330.958-834q69.959-30 149.5-30Q560-864 629.5-834t122 82.5Q804-699 834-629.276q30 69.725 30 149Q864-401 834-331q-30 70-82.5 122.5T629.276-126q-69.725 30-149 30ZM480-168q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z'/%3E%3C/svg%3E"); +} + +.admonition-icon-warning { + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M109-120q-11 0-20-5.5T75-140q-5-9-5.5-19.5T75-180l370-640q6-10 15.5-15t19.5-5q10 0 19.5 5t15.5 15l370 640q6 10 5.5 20.5T885-140q-5 9-14 14.5t-20 5.5H109Zm69-80h604L480-720 178-200Zm302-40q17 0 28.5-11.5T520-280q0-17-11.5-28.5T480-320q-17 0-28.5 11.5T440-280q0 17 11.5 28.5T480-240Zm0-120q17 0 28.5-11.5T520-400v-120q0-17-11.5-28.5T480-560q-17 0-28.5 11.5T440-520v120q0 17 11.5 28.5T480-360Zm0-100Z'/%3E%3C/svg%3E"); +} + +.admonition-icon-danger { + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M239.256-400q0 58.091 27.975 108.995t76.13 81.237q-5.616-8.513-8.487-18.398-2.872-9.885-2.872-19.167 1.333-26.436 12.153-50.307 10.821-23.872 31.41-43.461L480-443.921l105.819 102.82q18.923 19.311 29.885 43.321 10.961 24.011 12.294 50.447 0 9.282-2.872 19.167-2.871 9.885-7.82 18.398 47.488-30.333 75.796-81.237Q721.41-341.909 721.41-400q0-47.622-19.258-93.169-19.259-45.547-53.998-82.549-19.951 13.41-42.202 19.859Q583.7-549.41 561-549.41q-62.448 0-105.108-38.039-42.661-38.038-51.225-98.628v-9.744q-39.385 31.949-69.898 67.68-30.513 35.73-51.987 74.166t-32.5 77.464Q239.256-437.483 239.256-400ZM480-349.539l-57.436 56.436q-12.154 11.821-17.731 26.029-5.577 14.208-5.577 29.074 0 32.769 23.498 55.757 23.497 22.987 57.246 22.987 33.432 0 57.421-22.906 23.989-22.906 23.989-55.561 0-16.162-6.116-30.162-6.116-13.999-17.454-25.154l-57.84-56.5Zm-11.002-469.022V-708q0 38.637 26.832 64.819 26.831 26.183 65.17 26.183 15.609 0 30.818-5.923 15.208-5.923 28.131-17.718l22.615-24.102q67.564 44.128 106.999 114.917 39.435 70.79 39.435 150.156 0 128.206-89.846 218.103Q609.307-91.668 480-91.668q-129.027 0-218.68-89.652-89.652-89.653-89.652-218.68 0-119.178 79.371-232.447t217.959-186.114Z'/%3E%3C/svg%3E"); +} + +.admonition.note { @include admonition-type('note'); } +.admonition.tip { @include admonition-type('tip'); } +.admonition.info { @include admonition-type('info'); } +.admonition.warning { @include admonition-type('warning'); } +.admonition.danger { @include admonition-type('danger'); } diff --git a/sass/parts/_archive.scss b/sass/parts/_archive.scss new file mode 100644 index 0000000..6df323b --- /dev/null +++ b/sass/parts/_archive.scss @@ -0,0 +1,37 @@ +.archive { + margin-block-start: 4vmin; + + .listing-title { + margin-block-end: 1rem; + font-size: 1.5rem; + } + + .listing-item { + display: flex; + gap: 1rem; + margin-block-end: 0.5rem; + padding-inline: 1rem; + padding-block: 0.2rem; + + .post-time { + padding-inline-start: 1vmin; + min-inline-size: 5rem; + text-align: start; + + .date { + color: var(--meta-color); + white-space: nowrap; + } + } + } + + ul { + margin: 0; + padding: 0; + list-style: none; + } + + li { + margin-bottom: 1.3rem; + } +} diff --git a/sass/parts/_aside.scss b/sass/parts/_aside.scss new file mode 100644 index 0000000..4757524 --- /dev/null +++ b/sass/parts/_aside.scss @@ -0,0 +1,31 @@ +aside { + margin-block-end: var(--paragraph-spacing); + border-radius: 4px; + background: var(--bg-0); + padding-block: 0.8rem; + padding-inline: 1rem; + color: var(--meta-color); + font-size: 0.9rem; + + article & p { + margin: 0; + font-family: var(--sans-serif-font); + } + + @media only screen and (min-width: 1300px) { + position: absolute; + inset-inline-start: -14rem; + margin-block: 0; + border-radius: 0; + background: none; + padding: 0; + width: 12rem; + text-align: end; + + &[data-position="right"] { + inset-inline-start: auto; + inset-inline-end: -14rem; + text-align: start; + } + } +} diff --git a/sass/parts/_cards.scss b/sass/parts/_cards.scss new file mode 100644 index 0000000..0b6c560 --- /dev/null +++ b/sass/parts/_cards.scss @@ -0,0 +1,105 @@ +.filter-controls { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + gap: 12px; + margin-top: 1.2rem; + margin-bottom: -1rem; + padding: 0; + list-style: none; + + #all-projects-filter { + display: none; + } + + .taxonomy-item { + margin: 0; + + a { + display: inline-block; + box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px; + border-radius: 1rem; + background: var(--bg-2); + padding: 0 16px; + color: var(--text-color); + font-size: 0.8rem; + text-decoration: none; + + &:hover { + background: var(--primary-color); + color: var(--hover-color); + } + + &.active { + background: var(--primary-color); + color: var(--hover-color); + } + } + } +} + +.cards { + display: grid; + grid-template-rows: auto; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + gap: 24px; + margin-top: 4vmin; + padding-block: 12px; + + .card { + box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px; + border-radius: 1rem; + background: var(--bg-2); + min-height: 100px; + overflow: hidden; + + &:hover { + background-color: var(--primary-color); + } + + &:hover .card-description { + color: var(--hover-color); + } + + .card-info { + padding-inline: 24px; + padding-block-start: 0; + padding-block-end: 24px; + text-align: center; + } + .card-image { + $margin: 1.6rem; + margin: $margin; + margin-bottom: $margin / 1.5; + width: calc(100% - $margin * 2); + height: auto; + } + + .card-image-placeholder { + width: 100%; + height: 12px; + } + + .card-description { + margin-top: 0.5em; + overflow: hidden; + color: var(--text-color); + } + } +} + +@media all and (max-width: 720px) { + .cards { + gap: 18px; + } + + .filter-controls { + gap: 8px; + margin: 18px 0; + + .taxonomy-item a { + padding: 4px 12px; + } + } +} diff --git a/sass/parts/_code.scss b/sass/parts/_code.scss new file mode 100644 index 0000000..2623f50 --- /dev/null +++ b/sass/parts/_code.scss @@ -0,0 +1,152 @@ +code { + -webkit-text-size-adjust: 100%; + border-radius: 5px; + background-color: var(--bg-1); + padding-inline: 0.2em; + padding-block: 0.1em; + font-size: 0.9rem; + font-family: var(--code-font); + + mark { + display: block; + filter: brightness(110%); + background-color: var(--codeblock-highlight); + color: inherit; + } + + table { + margin: 0rem; + border-collapse: collapse; + border-spacing: 0rem; + width: 100%; + text-align: start; + + td, + th, + tr { + border: none; + padding: 0rem; + } + + // Line number col. + tbody td:first-child { + opacity: 50%; + padding-inline-end: 0.8rem; + width: 1px; // Without this, iOS Safari centres short lines. + user-select: none; + text-align: end; + } + + tbody tr:nth-child(even) { + background-color: inherit; + } + } +} + +a:hover code { + background-color: inherit; + padding-block: 0; +} + +pre { + display: block; + position: relative; + border-radius: 5px; + padding-inline: 1rem; + padding-block-start: 2.4rem; + padding-block-end: 1rem; + overflow: hidden; + overflow-x: auto; + line-height: 1.4; + + code, + code td { + font-size: 0.8rem; // Fits ~77 characters. + } + + // Supports both native Zola way of adding src, and old shortcode-based logic. + // See: https://github.com/welpo/tabi/pull/489 + &::after, + code .source-path { + display: block; + position: absolute; + top: 0; + inset-inline-end: 1.3rem; + padding-top: 0.3rem; + padding-inline-end: 1.3rem; + max-width: calc(100% - 14em); + height: 0.9rem; + overflow: hidden; + content: attr(data-name); + color: var(--hover-color); + font-size: 0.65rem; + text-align: end; + text-overflow: ellipsis; + white-space: nowrap; + } + + code { + display: block; + border: 0rem; + border-radius: 5px; + background-color: transparent; + padding: 0rem; + overflow-x: auto; + color: inherit; + white-space: pre; + + &::before { + display: block; + position: absolute; + top: 0; + inset-inline-start: 0; + background-color: var(--primary-color); + padding: 0.3rem; + padding-inline-start: 1rem; + width: calc(100% - 1.3rem); + height: 0.9rem; + content: attr(data-lang); + color: var(--hover-color); + font-size: 0.65rem; + text-align: start; + text-transform: uppercase; + } + } +} + +// Default to LTR codeblocks. +code, pre { + direction: ltr; +} + +// Allows RTL codeblocks if `force_codeblock_ltr` is set to false. +html[data-code-direction="inherit"] { + code, pre { + direction: inherit; + } +} + +.copy-code { + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M217.002-67.694q-37.732 0-64.02-26.288-26.287-26.287-26.287-64.019V-707.69h77.999v549.689q0 4.615 3.846 8.462 3.846 3.846 8.462 3.846h451.689v77.999H217.002Zm175.999-175.999q-37.733 0-64.02-26.287T302.694-334v-463.383q0-37.732 26.287-64.02 26.287-26.287 64.02-26.287h365.383q37.732 0 64.019 26.287 26.288 26.288 26.288 64.02V-334q0 37.733-26.288 64.02-26.287 26.287-64.019 26.287H393.001Zm0-77.998h365.383q4.615 0 8.462-3.847 3.846-3.846 3.846-8.462v-463.383q0-4.616-3.846-8.462-3.847-3.846-8.462-3.846H393.001q-4.616 0-8.462 3.846-3.847 3.846-3.847 8.462V-334q0 4.616 3.847 8.462 3.846 3.847 8.462 3.847Zm-12.309 0v-488V-321.691Z'/%3E%3C/svg%3E"); + position: absolute; + top: 0.3rem; + align-self: center; + z-index: 1; + cursor: pointer; + inset-inline-end: 0.7rem; + background: var(--hover-color); + background-size: contain; + width: 0.9rem; + height: 0.9rem; + color: white; +} + +.copy-code.checked { + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M395-253 194-455l83-83 118 117 288-287 83 84-371 371Z'/%3E%3C/svg%3E"); + width: 1rem; + height: 1rem; +} + +.copy-code.error { + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M479.386-248Q509-248 529-267.386q20-19.386 20-49T529.614-366.5q-19.386-20.5-49-20.5T431-366.886q-20 20.114-20 49.728t19.386 49.386q19.386 19.772 49 19.772ZM416-431h128v-265H416v265Zm64.276 381q-88.916 0-167.743-33.104-78.828-33.103-137.577-91.852-58.749-58.749-91.852-137.535Q50-391.277 50-480.458q0-89.438 33.162-167.491 33.163-78.053 92.175-136.942 59.011-58.889 137.533-91.999Q391.393-910 480.458-910q89.428 0 167.518 33.093T784.94-784.94q58.874 58.874 91.967 137.215Q910-569.385 910-480.192q0 89.192-33.11 167.518-33.11 78.326-91.999 137.337-58.889 59.012-137.167 92.174Q569.447-50 480.276-50Z'/%3E%3C/svg%3E"); +} diff --git a/sass/parts/_comments.scss b/sass/parts/_comments.scss new file mode 100644 index 0000000..aab54d9 --- /dev/null +++ b/sass/parts/_comments.scss @@ -0,0 +1,33 @@ +.utterances-frame { + width: 100%; +} + +.comments { + margin-top: 2rem; + border-top: var(--divider-color) solid 0.5px; + border-bottom: var(--divider-color) solid 0.5px; + padding-top: 2rem; + padding-bottom: 2rem; + + iframe { + margin: 0; + border: none; + aspect-ratio: inherit; + width: 100%; + max-width: 100%; + } + + .load-comments-button { + display: block; + cursor: pointer; + margin: 0.5em auto; + border: none; + background: none; + padding-block: 0.5em; + padding-inline: 1em; + color: inherit; + font-size: 0.95rem; + font-family: var(--sans-serif-font); + text-decoration: none; + } +} diff --git a/sass/parts/_footer.scss b/sass/parts/_footer.scss new file mode 100644 index 0000000..2b49c3d --- /dev/null +++ b/sass/parts/_footer.scss @@ -0,0 +1,91 @@ +footer { + margin-top: auto; + margin-block-end: 1.4rem; + color: var(--meta-color); + font-size: 0.88rem; + font-family: var(--post-font-family); + text-align: center; + + .nav-links { + color: var(--primary-color); + } + + p { + margin: 0; + } +} + +footer section { + display: flex; + flex-direction: column; + align-items: center; + gap: 0rem; +} + +footer nav { + display: flex; + margin: 0 0rem; +} + +.socials { + display: flex; + flex-grow: 0; + flex-wrap: wrap; + justify-content: center; + align-items: flex-end; + + svg { + max-height: 15px; + } + + ul { + gap: 5px; + } +} + +.social { + display: flex; + justify-content: center; + align-items: center; + background-image: unset; + padding: 0.5vmin; +} + +.social > img { + aspect-ratio: 1/1; + width: 1.5rem; + height: auto; + color: #000000; +} + +.social { + &:hover { + & > img { + filter: invert(1); + } + } +} + +@mixin dark-theme-social { + .social { + &:hover { + & > img { + filter: invert(0); + } + } + + & > img { + filter: invert(1); + } + } +} + +[data-theme="dark"] { + @include dark-theme-social; +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme="light"]) { + @include dark-theme-social; + } +} diff --git a/sass/parts/_header-anchor.scss b/sass/parts/_header-anchor.scss new file mode 100644 index 0000000..8a06200 --- /dev/null +++ b/sass/parts/_header-anchor.scss @@ -0,0 +1,35 @@ +.header-anchor { + display: inline-flex; + position: absolute; + justify-content: center; + align-items: center; + opacity: 0; + margin-inline-start: -2rem; + padding-inline-end: 0.3rem; + width: 1.9rem; + height: 100%; + user-select: none; + + @media (max-width: 500px) { + display: none; + } +} + +.link-icon { + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14.78 3.653a3.936 3.936 0 1 1 5.567 5.567l-3.627 3.627a3.936 3.936 0 0 1-5.88-.353.75.75 0 0 0-1.18.928 5.436 5.436 0 0 0 8.12.486l3.628-3.628a5.436 5.436 0 1 0-7.688-7.688l-3 3a.75.75 0 0 0 1.06 1.061l3-3Z'%3E%3C/path%3E%3Cpath d='M7.28 11.153a3.936 3.936 0 0 1 5.88.353.75.75 0 0 0 1.18-.928 5.436 5.436 0 0 0-8.12-.486L2.592 13.72a5.436 5.436 0 1 0 7.688 7.688l3-3a.75.75 0 1 0-1.06-1.06l-3 3a3.936 3.936 0 0 1-5.567-5.568l3.627-3.627Z'%3E%3C/path%3E%3C/svg%3E"); + align-self: center; + cursor: pointer; + background: var(--text-color); + width: 1rem; + height: 1rem; +} + +h1, h2, h3, h4, h5, h6 { + &:hover .header-anchor { + opacity: 1; + } + + .header-anchor:hover { + background-color: transparent; + } +} diff --git a/sass/parts/_header.scss b/sass/parts/_header.scss new file mode 100644 index 0000000..414aa82 --- /dev/null +++ b/sass/parts/_header.scss @@ -0,0 +1,197 @@ +header { + width: 100%; + font-family: 'Inter Subset', var(--sans-serif-font); +} + +.page-header { + margin-block: 4rem 1rem; + font-size: 3em; + line-height: 100%; + font-family: var(--header-font); +} + +.navbar { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + margin: 0 auto; + padding-block: 1em; + max-width: var(--max-layout-width); +} + +.nav-navs { + display: flex; + flex-wrap: wrap; + align-items: center; + + ul { + display: flex; + flex-wrap: inherit; + justify-content: inherit; + align-items: inherit; + gap: 1px; + margin: 0; + padding: 0; + list-style: none; + } +} + +.menu-icons-container { + display: flex; + align-items: center; + margin-left: auto; +} + +.menu-icons-group { + gap: 1px; + margin: 0; + padding: 0; +} + +.nav-links { + justify-content: right; + padding: 0.66rem; + color: var(--text-color); + font-weight: 340; + font-size: 1em; + line-height: 2.5; + text-decoration: none; +} + +.home-title { + margin-inline-start: -0.12rem; + border: none; + padding: 0.12rem; + color: var(--primary-color); + font-weight: 450; + font-size: 1.7em; + text-decoration: none; +} + +.meta { + padding: 0; + padding-top: 0.7vmin; + padding-bottom: 3vmin; + color: var(--meta-color); + font-weight: 300; + font-size: 0.8rem; + line-height: 1.4rem; + letter-spacing: -0.4px; + + a { + color: var(--meta-color); + font-weight: inherit; + text-decoration: none; + text-decoration-color: none; + } + + ul, + li { + display: inline-block; + margin-inline-end: 0.2rem; + font-family: var(--sans-serif-font); + list-style-type: none; + } + + .tag { + margin-inline-end: 0; + } +} + +.separator { + margin-inline-end: 0.2rem; + user-select: none; +} + +.language-switcher { + display: flex; + justify-content: center; + align-items: center; + margin-inline-start: 0.5rem; + margin-inline-end: 0.5rem; + + .language-switcher-icon { + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' d='M1 12a11 11 90 0 0 22 0 11 11 90 0 0-22 0m1-4h20M2 16h20M11 1a21 21 90 0 0 0 22m2-22a21 21 90 0 1 0 22'/%3E%3C/svg%3E%0A"); + position: relative; + align-self: center; + cursor: pointer; + background: var(--text-color); + width: 1rem; + height: 1rem; + + &:hover { + background: var(--meta-color); + } + } +} + +.dropdown { + display: inline-block; + position: relative; + z-index: 1; + font-size: 0.8rem; + + &:hover .dropdown-content, + &:focus-within .dropdown-content { + display: block; + } + + summary { + list-style: none; + + &::-webkit-details-marker { + display: none; + } + } + + .dropdown-content { + display: none; + position: absolute; + left: 50%; + transform: translateX(-50%); + z-index: 1; + background: var(--background-color); + padding-inline-start: 0.5rem; + padding-inline-end: 0.5rem; + text-align: center; + white-space: nowrap; + + a { + display: block; + } + } +} + +@media only screen and (max-width: 1000px) { + .navbar { + max-width: var(--normal-layout-width); + } + + .nav-navs { + display: flex; + justify-content: center; + } + + .menu-icons-container { + margin-left: 0; + } +} + +@media only screen and (max-width: 600px) { + .nav-navs { + margin-top: 0.8rem; + } + + .navbar { + flex-direction: column; + align-items: center; + } +} + +@media only screen and (max-width: 300px) { + .navbar { + max-width: var(--small-layout-width); + } +} diff --git a/sass/parts/_home-banner.scss b/sass/parts/_home-banner.scss new file mode 100644 index 0000000..ce6b9c1 --- /dev/null +++ b/sass/parts/_home-banner.scss @@ -0,0 +1,82 @@ +#banner-container-home { + display: flex; + justify-content: space-between; + align-items: flex-start; + margin: 0.2rem auto; + width: 100%; + + @media only screen and (max-width: 600px) { + display: block; + margin-block-end: 2rem; + } + + #home-banner-text { + flex: 1; + margin-block-end: 1.5rem; + color: var(--primary-color); + font-size: 1.875rem; + line-height: 3rem; + + li { + font-size: 1rem; + } + + #home-banner-header { + margin: 0; + margin-block-end: 1rem; + font-weight: 550; + font-size: 2.8rem; + + @media only screen and (max-width: 600px) { + margin-block-end: 0; + font-size: 2.2rem; + } + } + + #banner-home-subtitle { + color: var(--text-color); + font-weight: 250; + line-height: 1.75rem; + + p { + font-size: 1rem; + } + + a { + font-weight: 400; + } + } + + @media only screen and (max-width: 600px) { + width: 100%; + } + } + + #image-container-home { + position: relative; + margin: auto 0; + padding-inline-start: 2rem; + max-width: 11rem; + overflow: hidden; + text-align: center; + + #banner-home-img { + border: none; + aspect-ratio: 1 / 1; + width: 100%; + height: 100%; + object-fit: cover; + + @media only screen and (max-width: 600px) { + max-width: 12rem; + max-height: 12rem; + } + } + + @media only screen and (max-width: 600px) { + padding-inline-start: 0; + width: 100%; + max-width: none; + } + } +} diff --git a/sass/parts/_iine.scss b/sass/parts/_iine.scss new file mode 100644 index 0000000..9ac95c4 --- /dev/null +++ b/sass/parts/_iine.scss @@ -0,0 +1,37 @@ +.iine-button { + display: inline-flex; + align-items: center; + gap: 5px; + transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease; + cursor: pointer; + border: none; + background: transparent; + color: inherit; + font-family: var(--sans-serif-font); + -webkit-tap-highlight-color: transparent; + appearance: none; + margin: 0; + padding: 0; + font-size: inherit; + line-height: inherit; + + .icon { + display: inline-flex; + align-items: center; + } + + .counter { + margin-left: .2rem; + font-size: 0.8rem; + } + + svg { + width: 1em; + height: 1em; + } +} + +.iine-auto-buttons { + margin-top: 2rem; + padding: 1rem 0; +} diff --git a/sass/parts/_image-hover.scss b/sass/parts/_image-hover.scss new file mode 100644 index 0000000..9f36f23 --- /dev/null +++ b/sass/parts/_image-hover.scss @@ -0,0 +1,22 @@ +.image-hover-container { + position: relative; + width: 100%; + + .image-default { + display: inline; + } + + .image-hovered { + display: none; + } + + &:hover { + .image-default { + display: none; + } + + .image-hovered { + display: inline; + } + } +} diff --git a/sass/parts/_image-toggler.scss b/sass/parts/_image-toggler.scss new file mode 100644 index 0000000..e2f420e --- /dev/null +++ b/sass/parts/_image-toggler.scss @@ -0,0 +1,24 @@ +.image-label { + cursor: pointer; +} + +.image-toggled { + position: absolute; + top: 0; + left: 0; + visibility: hidden; +} + +.image-toggler-toggle { + display: none; +} + +.image-toggler-toggle:checked ~ .image-label .image-toggled { + position: static; + visibility: visible; +} + +.image-toggler-toggle:checked ~ .image-label .image-default { + position: absolute; + visibility: hidden; +} diff --git a/sass/parts/_image.scss b/sass/parts/_image.scss new file mode 100644 index 0000000..e8bae01 --- /dev/null +++ b/sass/parts/_image.scss @@ -0,0 +1,60 @@ +figure { + display: inline-block; + box-sizing: border-box; + margin: 0; + max-width: 100%; + height: auto; +} + +figcaption { + color: var(--meta-color); + font-size: 0.72rem; + font-family: var(--serif-font); + text-align: center; +} + +img { + display: block; + margin: 0 auto; + max-width: 100%; + height: auto; +} + +img.inline { + display: inline; + vertical-align: middle; +} + +figure h4 { + margin: 0; + margin-block-end: 1em; + font-size: 1rem; +} + +figure h4::before { + content: "↳ "; +} + +.img-dark { + display: none; + &.inline{ + display: none; + } +} + +.img-light.inline { + display: inline; +} + +[data-theme="dark"] { + .img-dark { + display: block; + &.inline { + display: inline; + } + } + + .img-light { + display: none; + } +} diff --git a/sass/parts/_misc.scss b/sass/parts/_misc.scss new file mode 100644 index 0000000..d798ddd --- /dev/null +++ b/sass/parts/_misc.scss @@ -0,0 +1,330 @@ +kbd { + border: 1px solid var(--divider-color); + border-radius: 5px; + background-color: var(--bg-0); + padding: 0.1rem 0.3rem; + font-size: 0.8rem; +} + +.draft-label { + margin-inline-end: 0.3rem; + background-color: var(--primary-color); + padding-inline: 4px; + padding-block: 2px; + color: var(--hover-color); +} + +.article-title { + display: block; + margin: 0; + color: var(--text-color-high-contrast); + font-weight: 550; + font-size: 2rem; + line-height: 3rem; +} + +iframe { + display: block; + margin-inline-start: 15%; + margin-inline-end: 15%; + margin-block-end: 3vmin; + border: none; + aspect-ratio: 16/9; + width: 100vmin; + max-width: 70%; +} + +ul { + margin-top: 0; +} + +.toc-container { + margin-block-end: 4vmin; +} + +.padding-top { + padding-top: 4vmin; +} + +.title-container { + padding-bottom: 8px; + .social { + margin-inline-start: 0.5rem; + } +} + +.bottom-divider { + border-bottom: var(--divider-color) solid 0.5px; +} + +::-moz-selection { + background: var(--primary-color); + color: var(--hover-color); + text-shadow: none; +} + +::selection { + background: var(--primary-color); + color: var(--hover-color); +} + +.nav.tags { + display: inline-block; +} + +blockquote { + margin: 0; + border-inline-start: 0.3rem solid var(--primary-color); + padding-inline-start: 1em; +} + +a { + position: relative; + color: var(--primary-color); + font-weight: inherit; + text-decoration: inherit; +} + +// External link styles with `external_links_class = "external"`. +main { + --external-link-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M11 5h-6v14h14v-6'/%3E%3Cpath d='M13 11l7 -7'/%3E%3Cpath d='M21 3h-6M21 3v6'/%3E%3C/g%3E%3C/svg%3E"); + + a.external:not(:has(img, svg, video, picture, figure))::after { + display: inline-block; + vertical-align: -0.05em; + margin-inline-start: 0.1em; + background-color: currentColor; + width: 0.8em; + height: 0.8em; + content: ''; + -webkit-mask-image: var(--external-link-icon); + -webkit-mask-size: 100% 100%; + } + + &:dir(rtl) a.external:not(:has(img, svg, video, picture, figure))::after { + transform: rotate(-90deg); + } + + .meta a.external:not(:has(img, svg, video, picture, figure))::after { + background-color: var(--meta-color); + } + + a.external:not(:has(img, svg, video, picture, figure)):hover::after { + background-color: var(--hover-color); + } +} + +a:hover { + background-color: var(--primary-color); + color: var(--hover-color); +} + +a:hover rt { + color: var(--text-color); +} + +a:not(.no-hover-padding):hover::before { + display: inline-block; + position: absolute; + z-index: -1; + inset-block-end: 0; + inset-block-start: 0; + inset-inline-end: -0.15em; + inset-inline-start: -0.15em; + background-color: var(--primary-color); + max-inline-size: 105%; + content: ""; +} + +@media screen and (max-width: 600px) { + .list > ul { + margin: 0; + padding: 0; + } +} + +hr { + margin: 3.5rem 0 1rem; + border: none; + background-color: var(--divider-color); + height: 1px; +} + +.footnotes-list, +.footnotes { + text-align: start; +} + +.footnote-reference { + font-size: 0.7rem; + font-family: var(--serif-font); +} + +.footnote-definition { + margin-block-end: 0.6rem; + + sup { + margin-inline-end: 0.15rem; + font-size: 0.75rem; + font-family: var(--serif-font); + } + + p { + display: inline; + } +} + +.footnote-backlink { + margin-inline-start: 0.2rem; + font-size: 0.8rem; +} + +.footnotes-list a[href^="#fr-"], +.footnotes a[href^="#fr-"] { + font-size: 0.8rem; +} + +.footnotes code { + font-size: 0.8rem; +} + +.references p { + margin-inline-start: 2.4rem; + text-indent: -2.4rem; +} + +.info-box { + margin-top: 1rem; + margin-block-end: 1rem; + border: 1px solid var(--primary-color); + border-radius: 10px; + border-inline-start-width: 0.3rem; + padding: 1rem; + text-align: center; +} + +#page-content { + margin-top: 4vmin; +} + +.hidden { + display: none; + visibility: hidden; +} + +.visually-hidden { + clip: rect(0 0 0 0); + position: absolute; + margin: -1px; + border: 0; + padding: 0; + width: 1px; + height: 1px; + overflow: hidden; + white-space: nowrap; +} + +details summary { + cursor: pointer; +} + +.interactive-icon { + cursor: pointer; + + path { + fill: var(--text-color); + } + + :hover path { + fill: var(--meta-color); + } +} + +.article-navigation { + display: flex; + margin-block-start: 2rem; + border-block-start: var(--divider-color) solid 0.5px; + padding-block-start: 2rem; + + div:first-child { + flex: 1; + text-align: start; + } + + div:last-child { + flex: 1; + text-align: end; + } + + div p { + color: var(--meta-color); + font-weight: 300; + line-height: 1.2rem; + font-family: var(--sans-serif-font); + letter-spacing: -0.4px; + } + + @media (max-width: 600px) { + flex-direction: column; + + div { + text-align: center !important; + } + } +} + +:dir(rtl) .arrow { + display: inline-block; + transform: scaleX(-1); +} + +// This for the arrows that point to a corner, (e.g. '↗', '↘', '↙', '↖') +:dir(rtl) .arrow-corner { + display: inline-block; + transform: rotate(-90deg); +} + +.mermaid p { + font-family: var(--sans-serif-font) !important; +} + +.mermaid .node .label { + max-width: none !important; +} + +// For the `force_text_direction` shortcode. +[data-force-text-direction="ltr"] { + direction: ltr; + unicode-bidi: bidi-override; +} + +[data-force-text-direction="rtl"] { + direction: rtl; + unicode-bidi: bidi-override; +} + +[data-force-text-direction="ltr"] *, +[data-force-text-direction="rtl"] * { + direction: inherit; +} + +.title-with-jump { + display: flex; + justify-content: space-between; + align-items: center; +} + +.title-with-jump h1 { + flex: 1; +} + +.jump-link { + flex-shrink: 0; + font-size: 0.9rem; +} + +@media (max-width: 500px) { + .title-with-jump { + flex-direction: column; + } +} diff --git a/sass/parts/_multilingual_quote.scss b/sass/parts/_multilingual_quote.scss new file mode 100644 index 0000000..ecd5f1c --- /dev/null +++ b/sass/parts/_multilingual_quote.scss @@ -0,0 +1,35 @@ +.quote-container { + border: none; +} + +.quote-toggle { + display: none; +} + +.quote-label { + display: none; + cursor: pointer; + border-radius: 5px; + color: var(--meta-color); + font-size: 0.75rem; + font-family: var(--sans-serif-font); + text-align: center; + text-decoration: none; +} + +.quote-toggle:not(:checked) ~ .quote .translated .quote-label-original, +.quote-toggle:checked ~ .quote .original .quote-label-translate { + display: inline; +} + +.original { + display: none; +} + +.quote-toggle:checked ~ .quote .original { + display: block; +} + +.quote-toggle:checked ~ .quote .translated { + display: none; +} diff --git a/sass/parts/_pagination.scss b/sass/parts/_pagination.scss new file mode 100644 index 0000000..5361b1e --- /dev/null +++ b/sass/parts/_pagination.scss @@ -0,0 +1,19 @@ +.pagination { + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 2rem; + padding: 0; + font-size: 1em; + list-style: none; + + .page-item .disabled { + opacity: 0.5; + pointer-events: none; + } + + .page-numbers { + color: var(--meta-color); + font-size: 0.9rem; + } +} diff --git a/sass/parts/_posts_list.scss b/sass/parts/_posts_list.scss new file mode 100644 index 0000000..e74f89c --- /dev/null +++ b/sass/parts/_posts_list.scss @@ -0,0 +1,172 @@ +.bloglist-container { + display: grid; + grid-template-columns: 1fr 8fr; +} + + +$padding: 2.5rem; + +.bloglist-meta { + display: flex; + align-items: flex-start; + background-color: var(--navbar-color); + padding-block: $padding; + min-width: 13.5rem; + + .thumbnail-image { + margin: 0; + margin-inline: auto; // Centred by default. + max-width: 70%; + } + + li.date + li.post-thumbnail .thumbnail-image { + // Styles for the thumbnail when there's a date above (either date or updated). + margin-inline: 0; // Since metadata is left aligned, the image looks weird when centred. + margin-block-start: 0.7rem; + } + + ul { + margin-inline-end: 0.7rem; + padding: 0; + color: var(--meta-color); + font-weight: 300; + font-size: 0.9rem; + + li { + list-style-type: none; + white-space: nowrap; + } + + li.draft-label { + width: fit-content; + line-height: 1.2rem; + } + } +} + +.bloglist-content { + display: flex; + position: relative; + align-items: flex-start; + background-color: var(--navbar-color); + padding: $padding 0; + + .pinned-label { + display: flex; + position: absolute; + top: 0.8rem; + align-items: center; + gap: 0.3rem; + color: var(--meta-color); + font-weight: 300; + font-size: 0.8rem; + } + + .pinned-label svg { + width: 0.8rem; + height: 0.8rem; + } + + div { + flex: 1; + + .bloglist-title { + margin: 0; + font-weight: bold; + font-size: 1.2em; + + a { + color: var(--text-color-high-contrast); + font-weight: 550; + + &:hover { + color: var(--hover-color); + } + } + } + + .bloglist-tags { + margin-top: 0.1rem; + + .tag { + display: inline-block; + margin-inline-end: 0.7rem; + font-weight: 400; + font-size: 0.75rem; + text-transform: uppercase; + } + } + + .description p { + margin: 0.5rem 0 1rem; + color: var(--text-color); + font-weight: 250; + font-size: 0.9rem; + line-height: 1.5rem; + } + } +} + +.all-posts { + font-weight: 350; + font-size: 1.3rem; +} + +#all-projects { + margin-top: 2rem; +} + +.posts-first #featured-projects { + margin-top: 4rem; +} + +.projects-first #posts-list { + margin-top: 4rem; +} + +@media only screen and (max-width: 1100px) { + .bloglist-container { + display: block; + } + + .pinned-label svg { + margin-bottom: -2px; + } + + .bloglist-meta { + border-bottom: 0; + padding-block: 2rem; + + ul { + margin-block-end: 0; + width: 100%; + + li { + display: inline; + margin-inline-end: 0.3rem; + } + } + + .post-thumbnail { + display: none; + } + } + + .bloglist-content { + flex-direction: column; + align-items: flex-start; + padding: 0; + padding-bottom: 2rem; + + + .pinned-label { + position: static; + margin: 0; + margin-top: -1.9rem; + } + + div { + width: 100%; + } + } +} diff --git a/sass/parts/_quick_navigation_buttons.scss b/sass/parts/_quick_navigation_buttons.scss new file mode 100644 index 0000000..768592f --- /dev/null +++ b/sass/parts/_quick_navigation_buttons.scss @@ -0,0 +1,126 @@ +#button-container { + display: flex; + position: fixed; + right: 2rem; + bottom: 2rem; + flex-direction: column; + gap: 0.6rem; + z-index: 2; // Above "copy-code" buttons. Important for the ToC. + + #toc-button, + #comments-button, + #top-button { + display: flex; + justify-content: center; + align-items: center; + z-index: 2; + cursor: pointer; + border: none; + border-radius: 50%; + background-color: var(--bg-1); + padding: 0.4rem; + width: 1rem; + height: 1rem; + text-align: center; + + &:hover { + background-color: var(--bg-3); + + svg { + fill: var(--primary-color); + } + + &::before { + background-color: transparent; + } + } + + svg { + fill: var(--text-color); + width: 1rem; + height: 1rem; + } + } + + #toc-floating-container { + + $padding-vertical: 0.7rem; + $padding-horizontal: 1rem; + + #toc-button { + position: relative; + z-index: 2; + } + + .toc-container { + margin: 0; + margin-top: $padding-vertical; + max-width: 80vw; + } + + .toc-content { + display: none; + position: absolute; + right: 0; + bottom: 100%; + z-index: 2; + margin-block-end: $padding-vertical; + box-shadow: rgba(0, 0, 0, 0.15) 1.95px 1.95px 2.6px; + border: 1px solid var(--divider-color); + border-radius: 5px; + background-color: var(--background-color); + padding-inline-end: $padding-horizontal; + max-height: 70vh; + overflow-y: auto; + font-size: 0.8rem; + text-align: start; + white-space: nowrap; // Prevents wrapping, allowing content to define width. + + ul { + padding-inline-start: $padding-horizontal; + list-style: none; + } + } + + .toggle { + display: none; + + &:checked { + + + .overlay, + + .overlay + #toc-button + .toc-content { + display: block; + } + + + .overlay + #toc-button svg { + fill: var(--primary-color); // Show the ToC icon as toggled. + } + } + } + + .overlay { + display: none; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + opacity: 40%; + z-index: 1; // Lower than the Table of Contents + background: var(--background-color); + } + + } +} + +@media (max-width: 700px) { + #button-container { + display: none !important; + } +} + +@media print { + #button-container { + display: none; + } +} diff --git a/sass/parts/_search.scss b/sass/parts/_search.scss new file mode 100644 index 0000000..df820e4 --- /dev/null +++ b/sass/parts/_search.scss @@ -0,0 +1,160 @@ +$icon-size: 1.3rem; + +#searchModal { + background: color-mix(in srgb, var(--primary-color) 5%, transparent); + text-align: start; + + #searchContainer { + padding: 1rem; + } + + #searchBar { + display: flex; + position: relative; + justify-content: center; + align-items: center; + box-sizing: border-box; + padding: 1rem; + + .search-icon { + position: absolute; + inset-inline-start: 1rem; + width: $icon-size; + height: $icon-size; + + path { + fill: var(--text-color); + } + } + + .close-icon { + display: none; + position: absolute; + right: $icon-size; + margin-inline-start: 1rem; + margin-inline-end: 0.5rem; + width: $icon-size; + height: $icon-size; + } + + #searchInput { + flex: 1; + border: 1px solid var(--divider-color); + border-radius: 20px; + background-color: var(--input-background-color); + padding-inline: 3rem 1rem; + padding-block: 0.75rem; + width: calc(100% - 2rem); + color: var(--text-color); + font-size: 1rem; + } + } + + #results-container { + display: none; + border-top: var(--divider-color) solid 0.5px; + border-bottom-right-radius: 1rem; + border-bottom-left-radius: 1rem; + overflow: hidden; + + #results-info { + padding: 0.5rem; + color: var(--meta-color); + font-size: 0.8rem; + text-align: center; + } + + #results { + display: flex; + flex-direction: column; + max-height: 50vh; + overflow-y: auto; + + b { + font-weight: 590; + } + + a { + display: block; + + &:hover { + background-color: inherit; + } + } + + > div { + cursor: pointer; + padding-inline: 1rem; + padding-block: 0.5rem; + + &[aria-selected="true"] { + background-color: var(--primary-color); + color: var(--hover-color); + + a, + span { + color: inherit; + } + } + } + + span:first-child { + display: block; + color: var(--primary-color); + font-weight: 590; + } + + span:nth-child(2) { + color: var(--text-color); + } + } + + } +} + +.search-icon { + display: block; + position: relative; + align-self: center; + margin-inline-start: 1rem; + margin-inline-end: 0.5rem; + width: $icon-size; + height: $icon-size; +} + +.search-modal { + -webkit-backdrop-filter: blur(8px); + display: none; + position: fixed; + top: 0; + left: 0; + z-index: 1000; + backdrop-filter: blur(8px); + background-color: rgba(0, 0, 0, 0.1); + width: 100%; + height: 100%; + overflow: auto; + + #modal-content { + position: relative; + margin: 8% auto; + border: var(--divider-color) solid 0.5px; + border-radius: 1rem; + background-color: var(--background-color); + width: 80%; + max-width: 28rem; + } +} + +@media only screen and (max-width: 600px) { + .search-modal { + #modal-content { + top: 3.5rem; + width: 92%; + + #results { + max-height: 70vh; + } + } + } +} diff --git a/sass/parts/_spoiler.scss b/sass/parts/_spoiler.scss new file mode 100644 index 0000000..b43911b --- /dev/null +++ b/sass/parts/_spoiler.scss @@ -0,0 +1,53 @@ +.spoiler-toggle { + display: none; // Hide the checkbox. +} + +.spoiler-content { + display: inline-block; // Allow content to only take up its own width. + cursor: help; // Indicate interactive element. + + .spoiler-hidden { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + filter: blur(6px); + user-select: none; + + a { + pointer-events: none; // Make links unclickable. + } + } +} + +.spoiler-toggle:checked + .spoiler-content { + .spoiler-hidden { + filter: none; + user-select: auto; + + a { + pointer-events: auto; // Enable clicking on links when revealed. + } + } +} + +.spoiler-container.fixed-blur { + .spoiler-content:before { + display: inline-block; // Block display within the inline flow. + filter: blur(6px); + content: 'SPOILER'; // Display the word "SPOILER". + } + + .spoiler-content .spoiler-hidden { + display: none; // Completely hide the actual content. + } + + .spoiler-toggle:checked + .spoiler-content { + &:before { + content: none; // Hide the word "SPOILER". + } + + .spoiler-hidden { + display: inline; // Reveal the actual content. + } + } +} diff --git a/sass/parts/_syntax_theme.scss b/sass/parts/_syntax_theme.scss new file mode 100644 index 0000000..ece3930 --- /dev/null +++ b/sass/parts/_syntax_theme.scss @@ -0,0 +1,342 @@ +/* + * based on "Catppuccin Frappe" https://github.com/catppuccin/catppuccin + */ + +:root { + --rosewater: #f2d5cf; + --flamingo: #eebebe; + --pink: #f4b8e4; + --mauve: #ca9ee6; + --red: #e78284; + --maroon: #ea999c; + --peach: #ef9f76; + --yellow: #e5c890; + --green: #a6d189; + --teal: #81c8be; + --sky: #99d1db; + --blue: #8caaee; + --lavender: #b4befe; + --text: #cdd6f4; + --overlay0: #737994; +} + +.z-code { + background-color: var(--codeblock-bg); + color: var(--text); +} + +.z-comment { + color: var(--overlay0); + font-style: italic; +} + +.z-string { + color: var(--green); + + &.z-regexp { + color: var(--sky); + } +} + +.z-constant.z-numeric, +.z-string.z-regexp { + color: var(--sky); +} + +.z-constant { + &.z-character.z-escape { + color: var(--sky); + } + + &.z-language { + color: var(--lavender); + } +} + +.z-support.z-function.z-builtin.z-variable.z-other.z-constant { + color: var(--sky); +} + +.z-keyword { + color: var(--red); + + &.z-control { + + &.z-loop, + &.z-conditional, + &.z-c + + { + color: var(--mauve); + } + + &.z-return, + &.z-flow.z-return { + color: var(--pink); + } + } +} + +.z-support.z-type.z-exception { + color: var(--sky); +} + +.z-keyword.z-operator { + color: var(--teal); +} + +.z-punctuation { + &.z-accessor { + color: var(--teal); + } + + &.z-section { + color: var(--text); + } +} + +.z-keyword.z-control.z-import.z-include { + color: var(--peach); +} + +.z-storage { + color: var(--red); + + &.z-type { + color: var(--yellow); + } + + &.z-modifier { + color: var(--red); + } +} + +.z-entity.z-name.z-namespace, +.z-meta.z-path, +.z-storage.z-type.z-class { + color: var(--rosewater); +} + +.z-entity.z-name.z-label { + color: var(--blue); +} + +.z-keyword.z-declaration.z-class { + color: var(--red); +} + +.z-entity.z-name.z-class, +.z-meta.z-toc-list.z-full-identifier { + color: var(--teal); +} + +.z-entity { + &.z-other.z-inherited-class { + color: var(--teal); + } + + &.z-name.z-function { + color: var(--blue); + font-style: italic; + } +} + +.z-variable.z-function { + color: var(--blue); + font-style: italic; +} + +.z-entity.z-name.z-function.z-preprocessor, +.z-keyword.z-control.z-import { + color: var(--red); +} + +.z-entity.z-name.z-function { + + &.z-constructor, + &.z-destructor { + color: var(--lavender); + } +} + +.z-variable.z-parameter.z-function { + color: var(--rosewater); +} + +.z-keyword.z-declaration.z-function { + color: var(--maroon); +} + +.z-support { + &.z-function { + color: var(--teal); + } + + &.z-constant { + color: var(--blue); + } + + &.z-type, + &.z-class { + color: var(--blue); + font-style: italic; + } +} + +.z-variable { + &.z-function { + color: var(--blue); + } + + &.z-parameter { + color: var(--rosewater); + } + + &.z-other { + color: var(--text); + + &.z-member { + color: var(--rosewater); + } + } + + &.z-language { + color: var(--peach); + } +} + +.z-entity { + &.z-name.z-tag { + color: var(--sky); + } + + &.z-other.z-attribute-name { + color: var(--mauve); + font-style: italic; + } +} + +.z-punctuation.z-definition.z-tag { + color: var(--maroon); +} + +.z-markup.z-underline.z-link.z-markdown { + color: var(--rosewater); + font-style: underline; + font-style: italic; +} + +.z-comment.z-block.z-markdown, +.z-meta.z-code-fence { + color: var(--peach); + font-style: italic; +} + +.z-markup.z-raw { + + &.z-code-fence, + &.z-inline { + color: var(--peach); + font-style: italic; + } +} + +.z-punctuation.z-definition.z-heading, +.z-entity.z-name.z-section { + color: var(--blue); +} + +.z-markup { + &.z-italic { + color: var(--maroon); + font-style: italic; + } + + &.z-bold { + color: var(--maroon); + font-weight: bold; + } +} + +.z-constant.z-character.z-escape, +.z-source.z-shell.z-bash .z-meta.z-function.z-shell .z-meta.z-compound.z-shell .z-meta.z-function-call.z-identifier.z-shell { + color: var(--pink); +} + +.z-variable.z-language.z-shell { + color: var(--red); +} + +.z-source.z-lua .z-meta.z-function.z-lua .z-meta.z-block.z-lua .z-meta.z-mapping { + &.z-value.z-lua .z-meta.z-mapping.z-key.z-lua .z-string.z-unquoted.z-key.z-lua { + color: var(--lavender); + } + + &.z-key.z-lua .z-string.z-unquoted.z-key.z-lua { + color: var(--flamingo); + } +} + +.z-entity.z-name.z-constant.z-java { + color: var(--peach); +} + +.z-support { + &.z-type.z-property-name.z-css { + color: var(--flamingo); + } + + &.z-constant.z-property-value.z-css { + color: var(--text); + } +} + +.z-constant.z-numeric.z-suffix.z-css, +.z-keyword.z-other.z-unit.z-css, +.z-variable.z-other.z-custom-property.z-name.z-css, +.z-support.z-type.z-custom-property.z-name.z-css, +.z-punctuation.z-definition.z-custom-property.z-css { + color: var(--peach); +} + +.z-entity.z-name.z-tag.z-css { + color: var(--lavender); +} + +.z-variable.z-other.z-sass { + color: var(--peach); +} + +.z-invalid { + background-color: var(--red); + color: var(--text); + + &.z-deprecated { + background-color: var(--mauve); + color: var(--text); + } +} + +.z-meta.z-diff { + color: --OVERLAY0; + + &.z-header { + color: --OVERLAY0; + } +} + +.z-markup { + &.z-deleted { + color: var(--red); + } + + &.z-inserted { + color: var(--green); + } + + &.z-changed { + color: var(--yellow); + } +} + +.z-message.z-error { + color: var(--red); +} diff --git a/sass/parts/_table.scss b/sass/parts/_table.scss new file mode 100644 index 0000000..d6e5326 --- /dev/null +++ b/sass/parts/_table.scss @@ -0,0 +1,38 @@ +table { + margin: 1rem auto; + border-style: hidden !important; + border-radius: 5px; + border-collapse: collapse; + border-spacing: 0; + overflow: hidden; + font: inherit; + text-align: center; + + th, + td { + border: 1px solid var(--bg-1); + padding-inline: 13px; + padding-block: 6px; + font-size: large; + } + + thead tr { + background-color: var(--primary-color); + color: var(--hover-color); + + code { + background-color: transparent; + } + } + + tbody { + tr:nth-child(even) { + background-color: var(--bg-0); + } + } + + details, + summary { + font-family: inherit !important; + } +} diff --git a/sass/parts/_tags.scss b/sass/parts/_tags.scss new file mode 100644 index 0000000..ae28d0a --- /dev/null +++ b/sass/parts/_tags.scss @@ -0,0 +1,41 @@ +#tag-cloud { + margin-top: 4vmin; + + ul { + margin: 0; + padding: 0; + list-style: none; + } + + .tags-item { + margin-block-end: 1rem; + } +} + +@mixin column-count($count) { + -webkit-column-count: $count; + -moz-column-count: $count; + column-count: $count; +} + +.two-columns ul { + @include column-count(2); +} + +.three-columns ul { + @include column-count(3); +} + +@media (max-width: 1000px) { + .three-columns ul { + @include column-count(2); + } +} + +@media (max-width: 600px) { + + .two-columns ul, + .three-columns ul { + @include column-count(1); + } +} diff --git a/sass/parts/_theme-switch.scss b/sass/parts/_theme-switch.scss new file mode 100644 index 0000000..9c5bd4f --- /dev/null +++ b/sass/parts/_theme-switch.scss @@ -0,0 +1,42 @@ +.theme-switcher { + -webkit-mask: var(--theme-switcher-svg); + position: relative; + align-self: center; + cursor: pointer; + margin-inline-start: 0.5rem; + background: var(--text-color); + width: 1rem; + height: 1rem; + &:hover { + background: var(--meta-color); + } +} + +.theme-switcher-wrapper { + position: relative; +} + +.theme-resetter { + -webkit-mask: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" %3E%3Cpath d="M295.87-193.869v-78.001h291.152q43.63 0 72.369-33.424 28.739-33.423 28.739-79.271t-28.739-79.391Q630.652-497.5 587.022-497.5H343.913l87.478 87.478-55.652 55.153L193.869-536.5l181.87-181.631 55.652 55.653-87.478 86.978h243.109q75.435 0 127.272 56.522 51.837 56.521 51.837 134.174 0 77.652-51.837 134.293-51.837 56.642-127.272 56.642H295.87Z"/%3E%3C/svg%3E'); + position: absolute; + visibility: hidden; + opacity: 0; + transition: opacity 0.3s ease, visibility 0.3s ease; + transition-delay: 0.5s; + cursor: pointer; + inset-block-start: -0.6rem; + inset-inline-end: -0.6rem; + background: var(--text-color); + width: 0.8rem; + height: 0.8rem; +} + +.theme-switcher-wrapper:hover .theme-resetter.has-custom-theme { + visibility: visible; + opacity: 1; + transition: opacity 0.1s ease, visibility 0.1s ease; + transition-delay: 0s; + &:hover { + background: var(--meta-color); + } +} diff --git a/sass/parts/_webmention.scss b/sass/parts/_webmention.scss new file mode 100644 index 0000000..b6d6338 --- /dev/null +++ b/sass/parts/_webmention.scss @@ -0,0 +1,149 @@ +#webmentions { + position: relative; + z-index: 100; + margin: 0; + background-color: var(--background-color); + color: var(--text-color); + line-height: 1.2em; + + h2 { + margin-bottom: 1.5em; + font-size: 1.1em; + } + + h3 { + display: flex; + align-items: center; + font-size: 0.9em; + + svg { + margin-inline-end: 0.2rem; + } + + .svg-icon, + span { + margin-inline-end: .3rem; + } + } + + ol { + padding: 0; + } + + li, + p { + font-family: inherit; + } + + +.likes { + display: flex; + flex-wrap: wrap; + margin-top: 0.5rem; + padding: 0; + list-style: none; + + li { + position: relative; + transition: transform 0.8s ease-out, z-index 0s linear 0.4s; + margin-bottom: .375rem; + margin-inline-start: -.75rem; + + &:first-child { + margin-inline-start: 0; + } + + &:hover { + transform: scale(1.3) translateY(-4px); + z-index: 10; + transition: transform 0.05s ease-out, z-index 0s linear 0s; + } + + img { + display: block; + border: 2px solid var(--background-color, white); + border-radius: 50%; + aspect-ratio: 1/1; + width: 2.5rem; + height: 2.5rem; + object-fit: cover; + } + } + } + + .comment { + margin-bottom: 1rem; + border-radius: 10px; + background: var(--bg-0); + padding: 1rem; + overflow: hidden; + font-size: 80%; + + div { + display: flex; + flex-wrap: nowrap; + justify-content: space-between; + align-items: center; + } + + p { + margin-bottom: 0; + line-height: 1.5em; + } + + .p-author { + font-style: bold; + font-size: 1.3em; + } + + .u-url { + font-style: italic; + text-decoration: underline; + } + + .u-author { + display: flex; + align-items: center; + + img { + display: block; + margin-inline-end: .625rem; + width: 2rem; + max-width: 100%; + height: 2rem; + } + } + } + + form { + input { + flex: 1; + border: 1px solid var(--divider-color); + border-radius: 20px 0px 0px 20px; + background-color: var(--input-background-color); + padding-inline: 1rem 1rem; + padding-block: .75rem; + width: calc(60% - 2rem); + color: var(--text-color); + font-size: 1rem; + } + + button { + flex: 1; + border: 1px solid var(--divider-color); + border-radius: 0px 20px 20px 0px; + background-color: var(--input-background-color); + padding-inline: 0.7rem 0.7rem; + padding-block: .75rem; + width: 7rem; + color: var(--text-color); + font-size: 1rem; + } + + button:hover { + cursor: pointer; + background-color: var(--primary-color); + color: var(--hover-color); + } + } +} diff --git a/sass/parts/_zola-error.scss b/sass/parts/_zola-error.scss new file mode 100644 index 0000000..3bdbcbc --- /dev/null +++ b/sass/parts/_zola-error.scss @@ -0,0 +1,28 @@ +// Styles Zola error messages. See https://github.com/welpo/tabi/pull/359 +body > div:last-child > div:last-child[style]:not([class]):not([id]) { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 9999; + box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px, rgba(0, 0, 0, 0.3) 0px 30px 60px -30px; + border: 2px solid var(--admonition-danger-border); + border-radius: 5px; + background-color: var(--admonition-danger-bg); + padding: 15px; + width: fit-content; + max-width: 80%; +} + +body > div:last-child > div:last-child[style]:not([class]):not([id]) > p[style]:first-child { + margin: 0; + color: var(--admonition-danger-border); + font-weight: bold; +} + +body > div:last-child > div:last-child[style]:not([class]):not([id]) > pre[style]:last-child { + margin-block-end: 0; + background-color: var(--admonition-danger-code); + padding: 10px; + overflow-x: auto; +} diff --git a/sass/skins/blue.scss b/sass/skins/blue.scss new file mode 100644 index 0000000..d135219 --- /dev/null +++ b/sass/skins/blue.scss @@ -0,0 +1,22 @@ +@mixin theme-variables($theme) { + @if $theme =='light' { + --primary-color: #3271E7; // Contrast ratio: 4.51:1 + } + @else if $theme == 'dark' { + --primary-color: #6cacff; // Contrast ratio: 7.05:1 + } +} + +:root { + @include theme-variables('light'); +} + +[data-theme='dark'] { + @include theme-variables('dark'); +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include theme-variables('dark'); + } +} diff --git a/sass/skins/evangelion.scss b/sass/skins/evangelion.scss new file mode 100644 index 0000000..d0350a5 --- /dev/null +++ b/sass/skins/evangelion.scss @@ -0,0 +1,24 @@ +@mixin theme-variables($theme) { + @if $theme =='light' { + // Evangelion Unit-02. + --primary-color: #d12e36; // Contrast ratio: 5.05:1 + } + @else if $theme == 'dark' { + // Evangelion Unit-01. + --primary-color: #c09bd9; // Contrast ratio: 7.01:1 + } +} + +:root { + @include theme-variables('light'); +} + +[data-theme='dark'] { + @include theme-variables('dark'); +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include theme-variables('dark'); + } +} diff --git a/sass/skins/indigo_ingot.scss b/sass/skins/indigo_ingot.scss new file mode 100644 index 0000000..11a6370 --- /dev/null +++ b/sass/skins/indigo_ingot.scss @@ -0,0 +1,22 @@ +@mixin theme-variables($theme) { + @if $theme =='light' { + --primary-color: #1460bd; // Contrast ratio: 6.1:1 + } + @else if $theme == 'dark' { + --primary-color: #e6c212; // Contrast ratio: 9.48:1 + } +} + +:root { + @include theme-variables('light'); +} + +[data-theme='dark'] { + @include theme-variables('dark'); +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include theme-variables('dark'); + } +} diff --git a/sass/skins/lavender.scss b/sass/skins/lavender.scss new file mode 100644 index 0000000..97a40df --- /dev/null +++ b/sass/skins/lavender.scss @@ -0,0 +1,22 @@ +@mixin theme-variables($theme) { + @if $theme =='light' { + --primary-color: #9055d8; // Contrast ratio: 4.69:1 + } + @else if $theme == 'dark' { + --primary-color: #cba2e8; // Contrast ratio: 7.74:1 + } +} + +:root { + @include theme-variables('light'); +} + +[data-theme='dark'] { + @include theme-variables('dark'); +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include theme-variables('dark'); + } +} diff --git a/sass/skins/lowcontrast_orange.scss b/sass/skins/lowcontrast_orange.scss new file mode 100644 index 0000000..ad84bf4 --- /dev/null +++ b/sass/skins/lowcontrast_orange.scss @@ -0,0 +1,26 @@ +// WARNING! This skin, in light theme, may not provide optimal contrast for readability +// and might not be suitable for users with certain types of visual impairment. +// Furthermore, low contrast will affect your Google Lighthouse rating. +// For more information on web accessibility: https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html +@mixin theme-variables($theme) { + @if $theme =='light' { + --primary-color: #f56a00; // Contrast ratio: 3.02:1. Not very accessible. + } + @else if $theme == 'dark' { + --primary-color: #ec984f; // Contrast ratio: 7.19:1. Accessible. + } +} + +:root { + @include theme-variables('light'); +} + +[data-theme='dark'] { + @include theme-variables('dark'); +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include theme-variables('dark'); + } +} diff --git a/sass/skins/lowcontrast_peach.scss b/sass/skins/lowcontrast_peach.scss new file mode 100644 index 0000000..328a4da --- /dev/null +++ b/sass/skins/lowcontrast_peach.scss @@ -0,0 +1,26 @@ +// WARNING! This skin, in light theme, may not provide optimal contrast for readability +// and might not be suitable for users with certain types of visual impairment. +// Furthermore, low contrast will affect your Google Lighthouse rating. +// For more information on web accessibility: https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html +@mixin theme-variables($theme) { + @if $theme =='light' { + --primary-color: #ffa057; // Contrast ratio: 2.01:1. Not very accessible. + } + @else if $theme == 'dark' { + --primary-color: #ffab7f; // Contrast ratio: 8.93:1. Accessible. + } +} + +:root { + @include theme-variables('light'); +} + +[data-theme='dark'] { + @include theme-variables('dark'); +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include theme-variables('dark'); + } +} diff --git a/sass/skins/lowcontrast_pink.scss b/sass/skins/lowcontrast_pink.scss new file mode 100644 index 0000000..3f96d1d --- /dev/null +++ b/sass/skins/lowcontrast_pink.scss @@ -0,0 +1,26 @@ +// WARNING! This skin, in light theme, may not provide optimal contrast for readability +// and might not be suitable for users with certain types of visual impairment. +// Furthermore, low contrast will affect your Google Lighthouse rating. +// For more information on web accessibility: https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html +@mixin theme-variables($theme) { + @if $theme =='light' { + --primary-color: #ee59d2; // Contrast ratio: 3:1. Not very accessible. + } + @else if $theme == 'dark' { + --primary-color: #f49ee9; // Contrast ratio: 9.87:1. Accessible. + } +} + +:root { + @include theme-variables('light'); +} + +[data-theme='dark'] { + @include theme-variables('dark'); +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include theme-variables('dark'); + } +} diff --git a/sass/skins/mint.scss b/sass/skins/mint.scss new file mode 100644 index 0000000..e598c24 --- /dev/null +++ b/sass/skins/mint.scss @@ -0,0 +1,22 @@ +@mixin theme-variables($theme) { + @if $theme =='light' { + --primary-color: #00804d; // Contrast ratio: 5:1 + } + @else if $theme == 'dark' { + --primary-color: #00b86e; // Contrast ratio: 6.34:1 + } +} + +:root { + @include theme-variables('light'); +} + +[data-theme='dark'] { + @include theme-variables('dark'); +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include theme-variables('dark'); + } +} diff --git a/sass/skins/monochrome.scss b/sass/skins/monochrome.scss new file mode 100644 index 0000000..976e12e --- /dev/null +++ b/sass/skins/monochrome.scss @@ -0,0 +1,22 @@ +@mixin theme-variables($theme) { + @if $theme =='light' { + --primary-color: #727272; // Contrast ratio: 4.81:1 + } + @else if $theme == 'dark' { + --primary-color: #b3b3b3; // Contrast ratio: 7.86:1 + } +} + +:root { + @include theme-variables('light'); +} + +[data-theme='dark'] { + @include theme-variables('dark'); +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include theme-variables('dark'); + } +} diff --git a/sass/skins/red.scss b/sass/skins/red.scss new file mode 100644 index 0000000..169340f --- /dev/null +++ b/sass/skins/red.scss @@ -0,0 +1,22 @@ +@mixin theme-variables($theme) { + @if $theme =='light' { + --primary-color: #ca4963; // Contrast ratio: 4.52:1. + } + @else if $theme == 'dark' { + --primary-color: #ea535f; // Contrast ratio: 4.63:1. + } +} + +:root { + @include theme-variables('light'); +} + +[data-theme='dark'] { + @include theme-variables('dark'); +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include theme-variables('dark'); + } +} diff --git a/sass/skins/sakura.scss b/sass/skins/sakura.scss new file mode 100644 index 0000000..4e418eb --- /dev/null +++ b/sass/skins/sakura.scss @@ -0,0 +1,22 @@ +@mixin theme-variables($theme) { + @if $theme =='light' { + --primary-color: #D33C5C; // Contrast ratio: 4.61:1 + } + @else if $theme == 'dark' { + --primary-color: #fabed2; // Contrast ratio: 10.48:1 + } +} + +:root { + @include theme-variables('light'); +} + +[data-theme='dark'] { + @include theme-variables('dark'); +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include theme-variables('dark'); + } +} diff --git a/sass/skins/teal.scss b/sass/skins/teal.scss new file mode 100644 index 0000000..3a1fbcd --- /dev/null +++ b/sass/skins/teal.scss @@ -0,0 +1,33 @@ +// When creating your own skin, you can use https://webaim.org/resources/contrastchecker/ +// to verify the accessibility and readability of your colourscheme. +// The default light background is #fff and the dark background is #1f1f1f. + +// This defines theme-specific variables. +@mixin theme-variables($theme) { + @if $theme =='light' { + // Light theme colours. + --primary-color: #087e96; // Contrast ratio: 4.73:1 + } + @else if $theme == 'dark' { + // Dark theme colours. + --primary-color: #91e0ee; // Contrast ratio: 11.06:1 + } +} + +// Apply light theme variables by default. +:root { + @include theme-variables('light'); +} + +// Apply dark theme variables when dark theme is explicitly set. +[data-theme='dark'] { + @include theme-variables('dark'); +} + +// Apply dark theme variables when user's system prefers dark mode +// and the theme is not explicitly set to light. +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + @include theme-variables('dark'); + } +} diff --git a/static/custom_subset.css b/static/custom_subset.css new file mode 100644 index 0000000..13ac96e --- /dev/null +++ b/static/custom_subset.css @@ -0,0 +1 @@ +@font-face{font-family:"Inter Subset";src:url(data:application/font-woff2;base64,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);} diff --git a/static/feed_style.xsl b/static/feed_style.xsl new file mode 100644 index 0000000..1e413bb --- /dev/null +++ b/static/feed_style.xsl @@ -0,0 +1,119 @@ + + + + + + + + + + + <xsl:value-of select="/atom:feed/atom:title"/> • Feed + + + + + + + + + + +
+
+
+ + + + + About Feeds + + + + + + +
+ +
+

+
+ +
+ +
+
    + + + + +
  • + +
  • +
    + + +
  • + +
  • +
    + + +
  • + + + + + +
  • +
    +
+
+
+
+ +
+ +
+ + + + + +
+
+
+
+
+
+ + +
+
diff --git a/static/fonts/KaTeX/KaTeX_AMS-Regular.ttf b/static/fonts/KaTeX/KaTeX_AMS-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c6f9a5e7c03f9e64e9c7b4773a8e37ade8eaf406 GIT binary patch literal 63632 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 z

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 Wzz`hit_Frqpau~m1LOby4Ez8eiSx?< literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_AMS-Regular.woff b/static/fonts/KaTeX/KaTeX_AMS-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..b804d7b33a3fa5b2587d2d1d55006aed678e3eb2 GIT binary patch literal 33516 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 C1|J3h literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_AMS-Regular.woff2 b/static/fonts/KaTeX/KaTeX_AMS-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0acaaff03d4bb7606de02a827aeee338e5a86910 GIT binary patch literal 28076 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 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Caligraphic-Bold.ttf b/static/fonts/KaTeX/KaTeX_Caligraphic-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9ff4a5e04421e5107f74c28e27354e0b2a4e7ef8 GIT binary patch literal 12368 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 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Caligraphic-Bold.woff b/static/fonts/KaTeX/KaTeX_Caligraphic-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..9759710d1d3e16eb10012d56babb73f2479ba9f0 GIT binary patch literal 7716 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 WygV|z46!#jJ}@vcF#i9~zz+cDL^zcI literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Caligraphic-Bold.woff2 b/static/fonts/KaTeX/KaTeX_Caligraphic-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f390922eceffe1f6dfb81a3dc086a92d98171b02 GIT binary patch literal 6912 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 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Caligraphic-Regular.ttf b/static/fonts/KaTeX/KaTeX_Caligraphic-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f522294ff0f3f8c52dfdaef7ebfaa06ebfcfaabf GIT binary patch literal 12344 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 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Caligraphic-Regular.woff b/static/fonts/KaTeX/KaTeX_Caligraphic-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..9bdd534fd2beb9b878f0219da9d63ffba56677e2 GIT binary patch literal 7656 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 E04Z<_=l}o! literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Caligraphic-Regular.woff2 b/static/fonts/KaTeX/KaTeX_Caligraphic-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..75344a1f98e37e2c631e178065854c3a81fb842f GIT binary patch literal 6908 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 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Fraktur-Bold.ttf b/static/fonts/KaTeX/KaTeX_Fraktur-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4e98259c3b54076d684bf3459baeaeae8dbce97a GIT binary patch literal 19584 zcmZQzWME+6V`yMtW=QZ4);Dtd5%P(F!JLJGfgvF|H?iR9SvCm<2J;jK28Nd8vJwT} zEljoy3~qB67#M8Q3et0v^nO<}Fqpq!VBq6PPb@BAU| zFfcIITGBB9rFfcG2$W5#$VC3Q3z`$VQ!@$6xke8U7nz*)Bl!3wR1_J|2 zT|s_vNz759*9;8a5ey8B3I#=}1sPta<}fh0eqmr>SkA!2V8p<{aDqvcfti7wfx%eN zSWw+qP}yi&ijfhM=-<~yj2ju47z+M>V0go{iGiI#n1N#}KNlMllaaQWiJ6g@2%C~H zGdr`Isfn4fk(fw$ucQ6JsvSeF~$uuwB*&e zxJ>pR)MAw2;*{X$IK;rf%%JuE1G5LyP6l%ZM+R>OuI+A4_ExH*%tqRb=3>T1=Im<9 zVxl7KV#Y>xOy=Tj%1Y{N%1R(do2!|cn1h@yD#FLaE+!^!W@@6QtR$?a&c-GxB4%vF z3=v=x6=7V@XlYroirFQME!xRIOj(MLOVYF}*sUl&c~VfMjEPgWk%zpCu|aT{gN}oR zhG0{!rfgN1ZfuI0l)4&YvLQ3OC5wzuX@I7PrnDs6AyebRP=^E~2ct+G3qxHcb3+;N ziY#+&A6=V&w`(l`=3Ytn^jZ|6tw1MX6B-NETSUf zVvNyKbVS8P!-6%f<%L*8mDccyo=)y>O9-nF6BhCfEswOEk+BS9R_1?KMmMJWV6!+t zW(k{$35u|@v9X()nVFlJnwqHVF=gJB5DAGjuo6%e=a#f$IxV99FJf|LXqJG0pte@h zb%o9(eNfV6WKdx|$SB3Mk3p7!Z8JaEFUn@-Z0zc0=4$HZV&W$1#%%0n=HhJZV&d#- z>SB8gI2mo^BrLTw&197HISsg2OeEx7<<;#KM9rBP4_X;%D{4r{%1SB9D>`UsS*c2? z%8JTKsEDZn^BQnQIK6w(Ogl`obd)@uE4*=M*k)W zGR7J)Dj5B{B+Te&#Hhi?z{rsBU!CDELqCHs1KVa{PDUebP~uPrg`kCIbqRwWz}G3W(GzEGlu8PPK=Ta%nWRsnHU(2 zv{e<&6`76xvIsN%d~O5^-NgSN89p*JGO#m1;}(*$)J(comR7Go=8{3clyn7pgf zH*1l+c$BeomAIaUyh|O(&1MV?Oe%~o8KfB4HuHeoBCM{;CMqgoY-DC^E~;p1Y$RrE zWM&G=KI(}~j0ys}tRgJg|Ad6Z6C}6=cxBWX56iPRmuwMZWYjWX=H)u*tz*i{z{sG( zz`$g}_?khUfo(G%D6|w6)y+YsC@Zn6+cANP2ynV%XA=eGY;h*Ze`3syZMtfj5kk7A z;mS6i$wDsTVoc0@h4=U*^NK>1O*CbsWMs{Z9AX6=MMardSh-jj7#URl+cR-9zF<&g zVB0Lu28tC(lqxH!gNh6@QxkPHWm6+FnAMO%f{oFNC8Tm)MPh=0mq&2AhVdMe2sdke z9S@pSShj9TvOD$&7l;-nSVT8HD~jGO;l}1cwy zB__@&#{xpqvd# zDdNiNjAo`L%1W&2=8B?BEAvI_`lRpcc3Ss0j&w1pu>znO`eIU=usYYGsT9h@Z8*+fPD#D-YgJ0&Vb z2d^uNtk}|dBersCRN543}Ot*3>;e(Wdt~xjI>oDRg<}yxsf=i(qdCKH8VFeR|h3TSgpj^ z78dDM;3PGz+A*rW_DY{q92cLIw~xI}tebI$ZH;@9mAJcwPy6YdOnFXA|561BYySo* zDL*T_Yz8I<^Zy?hPB7kMU}q3y;MmH;0j__Az;(Hri7<#(R#G!DO9T}(6VD?{~;WFcW26hH%29B-Lf~e+zG7wr>nE*CX45h?mybm_; zZyRRG$;2SWu!KpUF&5l5;n>Q?!UQhA6wMXc70nfyRR4bDX5!-llZ@I%JB=8a7}Wp2 zU|i0$n}L%-hk;|OtN_?e=5Rj=vx6#qP|^fdn{1*Y;-VlCb7%nr5?BfKFt4AAN2;+? zoKKUgjGMVeg{z&Wiit=i*tJ@Wb9DvvbX=93%>%4c

GZIrSwBH08pLQq??^6(vO& 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 MFfuUy|Ife=0DP{HUH||9 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Fraktur-Bold.woff2 b/static/fonts/KaTeX/KaTeX_Fraktur-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..395f28beac23c7b0f7f3a1e714bd8dac253dd3bc GIT binary patch literal 11348 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 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Fraktur-Regular.ttf b/static/fonts/KaTeX/KaTeX_Fraktur-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b8461b275fae76efd0d21fd0f1aaa696a5b10f9a GIT binary patch literal 19572 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 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Fraktur-Regular.woff b/static/fonts/KaTeX/KaTeX_Fraktur-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..acab069f90b6fe6301a004e6f8beaf6a0db48bce GIT binary patch literal 13208 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%0Dh4&O| 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 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Main-Bold.ttf b/static/fonts/KaTeX/KaTeX_Main-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4060e627dc341c1854260cbc3f7386e222a4d297 GIT binary patch literal 51336 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
JClrLtsGadl>i4jr#K^9 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 F_yO6$*$Myv literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Main-Bold.woff b/static/fonts/KaTeX/KaTeX_Main-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..f38136ac1cc2dcdc9d9b10b8521487468b1f768c GIT binary patch literal 29912 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 I|Nj~I0kNv}CjbBd literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Main-Bold.woff2 b/static/fonts/KaTeX/KaTeX_Main-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ab2ad21da6fbe6c171bb869240954d0ead8f68fd GIT binary patch literal 25324 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 Dh1v`w literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Main-BoldItalic.ttf b/static/fonts/KaTeX/KaTeX_Main-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dc007977ee709a236d9e82719cf7d4e5577a81b9 GIT binary patch literal 32968 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

_qt%frLN!OF@ZAZQ>hE6Zr; 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 N`!al0DrdxPW&l6|#Jm6i literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Main-Italic.ttf b/static/fonts/KaTeX/KaTeX_Main-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0e9b0f354ad460202bba554359f5adcc8da666b7 GIT binary patch literal 33580 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 n=O(g;78GaZPXH_EMQ=8 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 Kf${%;27Uk{&p?v^ literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Main-Regular.woff b/static/fonts/KaTeX/KaTeX_Main-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..21f5812968c42392a3eaea9b0c6320870b6b8b38 GIT binary patch literal 30772 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ℜ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 W*>U;iD{=qI)H9$y6662>4EzA1RV=Xp literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Math-BoldItalic.woff2 b/static/fonts/KaTeX/KaTeX_Math-BoldItalic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..29657023adc09956249f6295746c8ce4469b50d3 GIT binary patch literal 16400 zcmXT-cQayOWME)ma1dbN1JPA33=H;LAYvdsDrQSyX!PO8;+(@H$idaPFQRd31fv;~ z3UjjscVip_ivnvW4|{VhPot6ayJXhKGgLPeGHf_mef?&mgc+ZN-r-Au962%#9cSVN z{?z-eOX0C#tvh$7$+t~#F>jiaTf&+J1>*5Dq<;TXX-*HmaMJbXF#~(69JATtU9W0= z{Dfae@T~3F`f=6waPHf;#4PJBzMcJTe{$aEt|}e3Zw;@EH{?F?FZ#sif9~h^cMmMS z$+ELszY$>KWamtoz*2Ui$>Eq8XXHB`-xBq8lG$@&*Xc$7J!V+H_TRO>m9o*f-{s5x z`n`Ssz5aBhXYrq^;@_cK!B=_DyD;|&w)Z)PzRFd5!mBt_JH~Lw;=k8!>~uc2=t*pv z+0o1M+Fm`JceXy8vq;TVwdDWm)ps)Aa!WUb+$*fSx|HeDn&yBjFPB{NTJ`(Vc6YfG z(w7e?ofDEj8Mc5gqTqI}|Ew$tgOpV_<}BZmcCu*Sk7=F3YE|Cz>fdh25%_ar!tEd~ z2c|_FeQyqknqPbN;{N5_P^snJF8o2QSvk44mzRj{**Ein)Kd31@zJMTr*2?c{O5yh zZUc|>rHO)HnkVJgy1rc$7T$a9%;#;h{ihc&{9<|a&iU2NdhhAgj(=U%?z($ykhr+Z zZCh1x`kRg3`ev>YU5DO2HR0G{Xy@b1`DgyQO|qI#6vD6H-K}*)e(J$RewR}_mXuS8;}!iyVp^I)PLDR8S;aKz zbdH9Q9&LEQS7^|epp=K-(h{fvRWu!vXlSqd(YjM9#w~JUGO$v zpz-K;6^=`X^bJ`aC8@sHKUea?(KVvF#Vd5VGZQ)4n+~O{Jth2l+SS)P!hinVA8-Hk z^~~1aGCy9P>ZvdHiMn{E;%fY*ySwjwnB;s}xH)d(QqSN!fB)8h?@8*FX1X96@2iq; zr~kgc`sL15ugN=G)erM00%S*&WDe`7zB$ zdSaTBhG5^;r9tk7iBl9DIh~^wj=nqakd3$E=%KKm;n|+vZ~A|^cyCx~cYW@CM)z5F zmiWZ%FN~k6^WuemMWBeGw&@m!MVC8X@|E}~gtsO3?9uGyXg|)Gl{(?_!rh&>yH{!F za#&Z&2zs$OOfzTY0rcg9hiG)-VYsjnQBf4 z#qhK)ey7h~dxE{WZ1P$PI;)q9u9KK_uFb7UaOY&*L!K$lE)jRRTMb{m4E}Vy=#hut zr`w68-)(c>?31+ICc!FH`dxQomw<`C(v@ujW$`WYQg-qOw>5OcNBoKKYWuy1^Huso zX6@G}^=_XKw9tDQzCP&0!?Y_uN-P~$t4>)g#<5G$mPtq}*U@YK`q?bPtTEr1T%TQB ze!%9Z+m5Ou-Z$SZ5fC<4+wsQZhh5jP8!Y#?Irg5KA6;$y{QdbYGaj_> z_HQctXLqE1_KORP+zl5<1o~*CP4N-o_7dw7wJmO#wd2%Yw^LfXjQD!*UT`u?@_Tje zIYV*t&StYVHiI>CR~;_R3HfnL_2L4DId60|nqE$-IP1aBWt{u)UPVjOAI+jK3w8xti}lQO zJ#g{XpH__x0p|luT~7p<>^)t1`GU&~fj*w!=koXIdSt$SmMsy<;v}-PeAYvMt39O; zJsV=m`ilD)OZ9&EEZHG^b<f6t}-_5z4XKv`?LpHnD&nxVfQIb}xGU}*l zIuqTq=D68%E1qL+CsMNbl4tm_85-RyTAnsp;i|@Ig|m{1?ajTXp9b8X>9$3q$(tcL zAaBOY&ND|vC2vaHwOl0Bv#ZC?`~4Jg;l9kanXT$y=cKO|nl59R9pGT;VjQaFyf&#r zdh*{Ztz26plJ_Y;uVcf8<^{7GZ}Z+sG)RA;_U7Eh6|0#$@|tH(TYAUVdBt|-4!h>X@^T9$ z6hw?UkLoxX&JH-EC{oOM)W+%k&uy6}q)#Mo_*{2r`%{5`mT&%km2bS>kt=l~%ds&c z!eKH0ij=}*n_65Wi*&?Z^LuZT*VSE+%KGhTxpu1Sv`t3dlIMfe%oc{SZrOEU-?A-6 z*U}_kZ|eCPd92MhBbhN*s~~UN+$VAc|Lq&K{EZS+?xbAMEIoU+@r`iAd(I;>BDQ3G zPoF2tq_n4BAZz*KVIMeHGIuMU_`+V2`cS5My}DJc1d}}9pHqU@5^jZL&$!Zg z`0umkn~A4F;zJymN?vvRTygl>laGR22lgyo|I8)$`hFQU=I~vIPb#H_nnmUu^4zVY zc1l=a>dZ+q@8){Px=y}#(5&-__NHu>OwV2G_9k7NbuB_JbMliZlhhJ}H!g8}@Klt? zLfj-EC1j4e7N_eh=Gd3Z(&Ud$^YocowtB1X9jj)AV^w#Rx??3uCJN@U?vK$spu4s* zu*&Y(@)H?tOCr>_gjaX&Dp@mMM~Le)Z=B~s^ZBPuR_vUZxjE;5<$R~pb1WrOr{1{F zuJ&MqGoNs&@8U>~q<|oqrRMINO~TJjiiz!x2iJML-56O(G4!b1u1%rDYA|m znVxxX{ZqW)H~(8*<$E$tJ{P0cS(Gww6!a5`|-sCdH#HLu#%evLgm9_tQv zzA-G^dXxWs*0QYRFTa+x&(_&3GgG0ho$Ez)(<8Rarb>)Qm6{UQ8*KINN>NrbnR4lL zQB9}*-~1O=7ew6-FR;*_^8f30felNh{(a1m@a@tzIfF;j7q9q#tV4Zvz@x1yX+4H@ zS#me|L<`QVDQF)rH0+Bon}1=}X{N~s5(}oyT;R0j%gXO(d5(B5_2OxL$~Vv8ZJomk z-_r+VMO&|23fc1IFt^~}bqktaADQ(+DmdcO!;3nR=g%4LT(-}H<)NlvJ4c&%<8RBE>-H2v$AsMzFFmeQ71TC`nd1&nX6hhbQH#HbuSAIdVlfG@hj~!*cLVB zuTz$Pn>XLTMj z&z`Qf?U;2Sht7f79d;M{qyJr8%+5c}YpIN{#vZH55v!l>D|`9I@}Th zrhG|>YBf!5j?TTH`}o)rsdU!soA#b}Dcm^0EB%hM>@<7dH*Ze74O|p1d?d@f&M~f| zqEO@?8>7hUq!ls>Qj1?$7QeE;nyAyRy=uw~_Fs#w8|@T%g^Vs0ElKauUpR~OX;#Ql_$hfKy{UmB+veZ@DXEHgNqE5jQ$N;(tK9SdI&00kyYuHM{hwIB@r-LxOybP@ z9v{~~i#K0)nJw#mWxvxa&P?-wzsL3$mCnq6XXLw2q1x;8e~Y3MSDDz>h1H1Y|981u zFMinFKyaa%{wYlY6*oSluoomBPjzkEF@_en-e!{$30@e9{JwEMotK<#iQ zPjLHHwdFadc75p4IHOcIL+XTH>&^dp=ThbxyxmtEmz;a{Rg+_&byv|cg?H_$tyzcP zZqtqr&@&K=dRrL3@`!&^cgw+>*)pfox+BxerrkF0NGRLMToLlSKj4Ux@Ol3mC$ycF z-|(oUCwd6J%TqBg&1(+y^t`^?QU89syM^SuBk4D9Sigx+{@(8Rj5#4HwflAD)f?+y zm3ZsjSDN(RiS=;qgiq-KdpZ8Td1)XQwQ0MN_WHnOx2p0>B@ItlRv+##oSl1H@S$A& zQrVa{+K;u3=4-h8b7-)+Ti5#}xxPuAtGjk_^}VGQa;FcZS)Z!BXcV5h`9X_U^X@Zl zYl{O!4ldcGP%Ab~|Age)uV+Hq?q_gHaGzjb8{_)>hsDe?Ty`)U&tAA`1zXOQNj0@Y6iM17{6J+lqIHWUrRv!v!nm?vyJnUA8(q8NciP5xsc~8z(wizD{+~sGk5hznI^@_jj z|A0!9SE}Bn&$hkzm1yUD+U6?b4!N?OrI$iwwDP>CJ$}F7zbf1H&Ipcvet(wLr$ogz zecI3<_#rXDKD&NjX4z!9lDYEhV%9V0|4qEs(tGFVQ(^NU<+-19AJw!AiQH~icAw+1 zD5%Kp=TE+Fd65@Wb#|0Ia;(<%_GzB8+w!u~LXIVVEEA8<__#a5%jRUmsdG%q?z$TT z9$%mFtI$&YwWsFNc%93ieqOSAbj~}a`;cK*-w76Z>}+AC`W| zwo7{Y8tzD0!?kN3`=0)z+5Ss#!ozRVUvR!LbDj{Doa**Fg|}3C`PPpXsYSgzm2xY) zH^-cPx@O%Px949P;}{>#Iko=Lf}8Ao{H?zXUND=U>z{o$x9!Z%ncL>ge5B{H(O{H}f)AC%?`Hh_oo3c0G<9J#yC*1PQkzk(7|1$K0mtB!Mdg?j?dy+(X*A`_oxWC;0P+GqUsLddr57mV&N;yS!OXo1)M3maP| zo8}*py&JnWkfGZDNUT*m*Ymkj9H&?Q+nTU6&g|~a;?gQ5yAL`~B5S67X!BFNzU&p> zcb`Jtzt1Nt{dE23EiS#S>vGoRKV8?RJuvBYpI)+giKJSjbI7gThdwBY-uNo?GASW; z1>@;6rGGvgdTA4WOpAr{%$oeI>)3=67}r(12G5*$Me_O$;p*zbz{+Ut?2Bd}gnVLU zrkD6GRXhF0;QT91w|Idce^)&Jp?bW0<@?JTdv<;F*cAKYuxRe)?^h2kTbx)rd)oIE z3L54*yS>v{J_bzOQew;aORT0^N%qFJ)MksKKlh`LwisD6{(T$ser7<)ymfz8?0RFe z?qOH~@BSsmCL6^&BorcMnNAgV5*3n;JH*d2P3eqoyr>$FqtyK?j(+B=F5NA1v9oEa zIsbZ-#U=&qlVL_ZUTwlwQ&>KVwD-*~d7ZuW&xe1Dzh>DiSgY1J?LFs)m6r;hAF_IV zO>%y#-xmvmBBa)cb%tk61lJ43uQq)ulCQaW=Lmne1J(_ngyxS>jm5xbtae^jwSV zbxdhVdI6I2#Km}8mfBvO8_L`*s?##-@}_9RjkB-$XwPcj_p;1A*sRZC@!F{FEf#9t z(z{hJ3aPa{s#_%S{tI8MX_?fvIXf3#Uw{6E!mINp6XywW-JfD_;+oF1Ei<|2Be%rv zfNU48+o=<-2YBdioTq(##!r@&SsUb%j@V=ruQ8q~%34=wH07#M=d&LlX28qTwO;0S^aN>c_j_k`034fKJ>j&!`|15A| zWjWL3o}Z!%6w;R_Ze(}u-X}SI@>i$lUXj63HrjjpMB|d>mvChNbh>cOpj_krc7|!P zug=(NZo75%iHU0OmF;=6MW&zS$!HXO`|Ns8?}VS7{;TJu_S+)iIy@mQ%;huqnWWp6WOcXF+@c)qZ``^&D$3*I|MXQZXf+nn)h z--+a@EWi7_9E)1D`4sexW-2{>9=q^SoqELXg-3WjUoW>8_iIr{k3$D68GSUsD$RC|4l)8Z-9pI6Si`1icZkMkM_ zT#OjFMNMw9oUW{pQ8&D>e93bcv#cL>YkzE*`2ToE9Itf9_HRjDm+NlVmVV7Tniiz< z$y{vDsX0BKZz}Eg@xLi*@-6(I;y;0tB~5pEfy&ccBD(iZIk-6_1nQg@e`XoB^HBH7 zmOm;{JHN~g;8ASV{PRQP)05rjp6NBM^Jx8_Bj@mJt%M>6m!6x@3SOP4OI1(Jo{MoN zOxI{k4HL9U<&{g-a5b;1)OOYTcz>hVJ^l&OJxTElqKl5se5QG1$DV(??Yt*M|KB3I z`f$4?L)Nsr2Q8j`6S_7#b-U#8YF_bmE)EiVTX_Gpr|U=uu&)Nb>*(qSBtKG*LqM{ytwqa z!7_e}rqACi^3pc3_r2e;>&JYK4`=84%hr5edTyV*_dw7+D;s5zV_ddt@h`4&Xf6R=t zx-n_y1Vf}!mr|@#wl&`NfnfUJC_RS0O*lx4)&uqRQr~Secx5`~U=lEHq zHL|+qBI~2jhqoH#yG3d}mtB`An&uw-qU_MhUr&QNe>1%aaD3(|`@}`KxG}4L!u(xd zZ!DO+sQU2BlZPkG33+dFV^+JnfS%i&+ANv$$-ARAaqrqJuybF#2xD*M`YwlgD$;*- zK88j$y>poOZr8liJ=4zd)toH+RCj)3fXN9)`xo}B{Z8h2&MNb>UdaBjTKV&I-YY!U zImJ&M{ZcXOzLCY2Hw)f%CLO9xUHtnWEWYr zo!zX$|4Z?IuWBQv$J)VVy1H{sUkARhD*xF~X6|_*J3{Ad-9{D9{oi)2+dW}H)4GEJ zw|*b~KH;MD^goGPH!^IT8nQrL>>!_W{fc=1Df@2AuUIkfX@>RsW$){LTv@6A`iOUX zk+XXJyzGzH`@;+V_^kVwxcTGzs@L2B3JgnM8sGi-@J*oq(>>a=>rR?pwoTgbP5sfA zvTG|;r>AaREFX9GrQ*$|t##~s)9yxDWeRy}`X?E$b(iRQy~1g_$)xLX2I-fA`!uaC z?>RPSrL~gq*@xY;8aHO!e5tQEetF}rodVxZy=H2iAfVrO^x21cC0`XIwyG*7!t<+3|FYSyo-$$Hj|=*j)|Z=Eo(jLS^1Y4vxwY~Uo7^k@D89#HM7 z=SWjA(aWD_G`Upy!F1ETbu0BJ%=*4sv7k1ArR!@ldwk+c!zRvU2crJ0@^YEbxy@zw z@+RAd4=tBEt`B*}yEy0=bMNeV-`bA$+>Bm$;6&RBV->X*raEm8qm4c@#t88(Xg{Ut zekZP=y6Wu5i_$z2?$*ziEjn58&Z*)?^qqP4x7MATvnE`rB6RY7CO+{x2lg1&wGN?2 zL+eZ5@AP;!|Le(z?cS$ycj|m@vkm+#|9V;3#&5A&AH%9FkDH%26JIJe(QpSF`$YC< zGp5K+f2XZH&uq$1(U%X(v#!f+7Q8RJ;;zW546U!(pY~K{U0xRdYt6F*b9*h{ba`!i z^6;dpGTFF4%w=NOmdOfGvj+vO3yr)}|_z;=#Sx*+c1E z|Mp1Vg0}inU*qCG=gix?Gu-~x`-Im=7cAm_71p15?7=RPk`1ipCb9*Zhudp6FO0lp zddpPc&ShrbYG%>uEi(5uCq<{Pe(<4J`&JZ7HD~G+N2SLtN6b~!44ni%nd!)ezsY`k zWBCW;sm-k`G)g|)-8Ro`+uH{j-mlF~x!3G6Ikq97GxxN0>hw?5-`cWtN_%hW&YS4J zec?BoxBYp&=Tmg$ACx9Vacb54c*hPO+lV)h8{J8l`Lv`1&#MG@1UR^v~aV_xmW%q{>m#1%)FiCrB6xLa# zW*M@Wa|744n0-F$-Wk2=$qf0|ul4621s=~cbX=dh z(5~%H0Yj;DEv>p2n+~Pmt(tGQDy}ItSt`5%T z$z~D)*RvIlB(Z;$-crhVewDBL@rq_0eKp&E|NYN>STX0LMY#ALp}pezi3VqTj(T2h zjx7GRJ^fnRv5%FCs}k#S!~gDieBW>Sv|pVS>L28vM@KoVn5VH)I;gx+MzDD1iPqnl zQCl6h3i$Zm-F$Gh{>hlbQ_rx>d}gAs^u0t^^u4s@%P;JD_vFc&Gh13!JNOR-2lH<| znRcOe!n^|Zz1)v&qP)9HxlN24eR{gpoh;@~Uw-Ok!DHs)M+c5S-nZWJPJ2+DxK^Fj zV%Z5VB2)ybVp8@0?fjzmC0M5Jo9Xti{ZfMMikoaEL~5Tf&hdq{bG!NGdS|tq z{dscJi-PAVC%lfCI6ElrjwmQReahymNv~j%acEJ_K`TQ$8A0QTefwRWWa)0ay~uQy zlw0J7HEm+;Cj=TLYK-ged99Dx$bGHcNWwYxq^sq@$sKlI4lYvtVb2n^sK9O3wI1&( z2Um81uMvNxgc$p`ywLaT_&#-kTfL%*INzrl4q@KFuRnPn6n**p(L#fX>8fOFo@rU+ zB`n)4oixo1C)&$YaC7!WE{m&salhDFIAH5n&Zh~bwp$!5 zt-ILcrkwh>{`frQ4Yd;4zZBgAy%)I!Jb(7G{LRU`8{~hjwfOMu_13fd#pkF@R=0kV zfAlf0sBNg|#u-lw14HYA!}72FG4pR)kY#Ucy-@WQ zP9pWs173=Kcr|;%#;LOfivn&|=scXTr}6ruf>&;mUOpR4Lb>eD)+{&IUMd{;ux8?4Uy zbaB|Wo~>!!-Pi3kv+-2Ik=VySXS>WWzrWvgw{yg;fF(1O*F_s$IkA6LZpE)#3wQ5b zl_2nZ(Q(A$i3}g~{z7d&(4Dm(!vwmV#bxi!ZFY`peg;zT<@K{jaZ-k6$T$B(>=| zLwlBr;1!#sGWV?Jg<<{{k7Xr)v)b;R#e3zjR&7##{S~Q0?a=FXDn4_q2e*&IoEdI3)k4fy`&+2spYA!&v)xi6M7Z$@#?-^EMH8;?ZeYenUDODwCtY~ZMeSZ z-n(dqs_1JHoJ;1|W@!BE`J^yC^tP{?y+?ArP=ts`Ow*Yphj z#ZxTL&pB=|>&2@%p0&FBly&DbF4@$(Mr)=K)3cr5jEl6nquJ->bGT8>g;FRygAB~gnqA#zsR2AqPbY-M}^=y1JzznhDV*Q z-EF&D*bV(V5B?G{*|}20`q)#kEAn11*X?J1a7uYb>qf z(b?x%`)|BGC%EmrP0ZY-b2w9S0%v~6Q(e~j+~{Ecg-!qaeD^G#_HfNlw*~&uo!@tQ z$hy0%dp23+1oyOqfB*9T`yTP*;dJ|)h`pvktfg_YC!R1l_xYVrr?aM+%nsLQze{{X zq#mXm4l-0Q6kYa9=Vy)W?xn$(n?#iJa?Pdpo?P{Q-Ri4vkDT89yftOJY@NH@#8nf$ ztSgY_3aa@U8uzkc$+^5wi2%x74R$8TKH)_Y}{LdxgrqZb}d z4V0Lqb9v5=HIW5ie43r|*5|gZq5h(-ReNLeO-?YM_@x@E=DdAJ z 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 NY-VqDQetufn^?f2{KJ%iA^8Ra1H+l*vJwTB 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 M%*ep_|33pi0Ir3LyZ`_I literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Math-Italic.woff b/static/fonts/KaTeX/KaTeX_Math-Italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..eb5159d4c1ca83fb92b3190223698427df0e010c GIT binary patch literal 18748 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 VF5i45?q8XD2Gl=f{QsYU9{?ZMyAJ>W literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Math-Italic.woff2 b/static/fonts/KaTeX/KaTeX_Math-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..215c143fd7805a5c2b222bd7892a1a2b09610020 GIT binary patch literal 16440 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 N&g=IVUf^V4006N1@|^$x literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_SansSerif-Bold.ttf b/static/fonts/KaTeX/KaTeX_SansSerif-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2f65a8a3a6d3628d11ea9c26c9077cef672fe427 GIT binary patch literal 24504 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 B?6Uv> literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_SansSerif-Bold.woff2 b/static/fonts/KaTeX/KaTeX_SansSerif-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cfaa3bda59246b49e94298478d6de3b3208066c8 GIT binary patch literal 12216 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 J5*%-s82~RyX?_3z literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_SansSerif-Italic.ttf b/static/fonts/KaTeX/KaTeX_SansSerif-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d5850df98ec19de2eee9ff922ef59586efe471d0 GIT binary patch literal 22364 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 cKaV*eBa=CxI1{45(GnEaj0}wb|1`u;2EMQ>J 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 RzrM!4x@H_?lf03e0RUf*@-+Ye literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_SansSerif-Regular.ttf b/static/fonts/KaTeX/KaTeX_SansSerif-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..537279f6bd2184ed32f1a5168850609147d58ee6 GIT binary patch literal 19436 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 H{~7oJ)si;6 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_SansSerif-Regular.woff b/static/fonts/KaTeX/KaTeX_SansSerif-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..31b84829b42edae20d0148eeec0d922dad2108c4 GIT binary patch literal 12316 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 BE-C;3 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_SansSerif-Regular.woff2 b/static/fonts/KaTeX/KaTeX_SansSerif-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a90eea85f6f7bded69ff5d40114447a6d8b48cfe GIT binary patch literal 10344 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 Ip4HMQo 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 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Script-Regular.ttf b/static/fonts/KaTeX/KaTeX_Script-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fd679bf374af72f2a183b97b40c9c7e9e51fbe5e GIT binary patch literal 16648 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 LGJK6_yG%3ydA5SF literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Size1-Regular.ttf b/static/fonts/KaTeX/KaTeX_Size1-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..871fd7d19d8658f64d8696ed9cdfc82c821ed76d GIT binary patch literal 12228 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 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Size1-Regular.woff b/static/fonts/KaTeX/KaTeX_Size1-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..7f292d91184f257054ef77cc1cd3443db757c9cc GIT binary patch literal 6496 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 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Size1-Regular.woff2 b/static/fonts/KaTeX/KaTeX_Size1-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c5a8462fbfe2c39a7c1857b9e296e62500a8a8a5 GIT binary patch literal 5468 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 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Size2-Regular.ttf b/static/fonts/KaTeX/KaTeX_Size2-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7a212caf91c0007e826fee2d622bf48acbd30dde GIT binary patch literal 11508 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 literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Size3-Regular.woff2 b/static/fonts/KaTeX/KaTeX_Size3-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..249a28662218a7a17ad8bd1fe072169ecb666a49 GIT binary patch literal 3624 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 O1_lO32FCyY8TbJo4e0#< literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Size4-Regular.woff2 b/static/fonts/KaTeX/KaTeX_Size4-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..680c13085076a2f6c5a7e695935ec3f21cddb65f GIT binary patch literal 4928 zcmXT-cQayOWME)m5O!eT1JN357#M_JLBv3ORLqvZ&}hQJ$2o^bkb`T1!1Pi^GbR=0 zMj!4B1{MX@P6qa7EuKahX*1=`6U?&1+J#&<6tX;fYVe5WS1*(`>*f(Ma(?ns za5YPMLTP4j<~^A0n2K8&&yXXPZQG=;z)Eb4)ZZnF}QYc zjZu!1;rtoJNqp(+cF#Sx=Re~y?(p*c|1-V6Get0IewZ@qj|-FU(45 zH4rsAU7&pF{mx1JC9$(Utv&ftcSL7H3rcqBu&WH^VpZa(QY zS9?{Km1#?Yv2f_^H5;TPb2FJuPN!_KGJBGizlG;;#zCWx4G6z|V9&Pw-uBk!j@Z0hE_qVyqBXl-oZ^p*E*cDAX!m3v*W z*?;*2@7d*ven(l~AIatqV~Ks_)&8gFT>6Ue%nMbzGm?ZAb0@5AXy{a$xs7vWY|#9h z$<18nLf71?=y#UR5DME;bzI|1_;jOHYY%eeChXo-+p)6Hnl){e^yF}k-Z?@B9z`s^ z=bS4}ZJIl&U9@s?ifHtO{wu<#Rhm|=W}9_aKwIziH*?*z4W`9@+86h&=FQDYn;}&; zW9q^c-*_Bmf2)$}&YQG$d4@4l+X|kyTFZCt)cIzyMcvYAx7dUz)rN8xz1IQvb#|U9 z{qom0$|}`a{haCNcV{03YTWgntL(N?k}vmW;RCHD9ZT=N7T?wxn6qszPoe&#XooOH z{d7Zbzm1vZi?j`cPnX;i(hy11anaB8pKZ42#o9n&)of42^)nfl-%-yzGNrxq#h+_2 zS%!Se(oSAfjONLhs;g^sF-x#4Imv3n;ZCjWQiZ_nzFki=4xYBPJ}X=xPLqo%=B7wBCA)@;YHz7wf0P}c|BWIUBmP9eWSwNk)+ z?k+a8Hhz7=w4i*?6$Nu|UH5h8f!#ZBY;ZHKsRiiS6S9V~h; zT6{-MU3TgfwdrLh=c2V21UgSTyoASDciF^=4f2&c*Do_Jh{|ZO(lwi}HAhUeG|Iw6 zvcf%(p(xX+C)g|FN?VGEQ?RT-!eh=IMrF*wS2P7pUrJ5(p5482hfbROa$cczpW9Nq zdRQBFnP^_U(#<$oSt{_{h2)$ysYgXvVuSqhFQ{|u6q=fmDsQ_X`oK=kxQkYMe=$zh zPTg#KKI_@Z-uS?}<)#VZ4U2+ar_9#>vWzP@2Xo(B_$l>UV90r++^2uI zv)29AY7%Rg-L!1e5oz<-wVSTYUczhrRv~yI`-~}Jm$tiQDec&8;&Hj&dr9Or$pdD0 zLjx90S*h|X#8leysNc7k@5lb>yX}=}Y31Mi#cSD=ce6O(-VA!HU0q21Bbd(=#L4`wQ}zE*MG41_n1Zq`6-SVi9;| zx#%Y+lbD5eXFhJ-}XYp5YINkBU4K3ZweE{fjvB64Ne(mUXk(t?T-JME%-Ao8zCa7(HC>tru)FFJf_Im%q;= zu~y^4w!X`OO~NWOcbDq?&N%$mRqhy{{Cn}T6dA2oS9BT+d#s|}gtwmO+%(ZesLM6b zv;5h^M|yv!Jw2Mol*erCm!p#J_|Q>5HHynYjcuBR?*!j~cMNsPmvU8R7U-^+Q7I6u z=2-0f_uAbrNo83{9&2Cwv5MT=p<(3bKP#lD;Lg*`i63(=+xR@rJemCe9P?E_Ylj-s zW%W5bcB)*EIlIu}tJ?j-hOKWNc%Q4>Nwb&$^hr8o>Yz*x_ zN6+nDGP|$-_OzYT;}(SM-23+Wvh}R`;+wkoHr<`=dD3Fi@&^|Bt#etH9$_<^6!yld zk9B>MDP!N;?yNo9y~mHPV9vRmd4=(+dr|I+c6EcTx7Tk`KKtRMQ~sQE9`)sOgWs+` zGv%s$;?7G8_i#-(XSQ+mU3G5W!!Q4acN?6)GDo>vwR6p3GdDL(?wjWnAA4TS z_OPaenUU8fk9LpZa9&Ub|7F*LSRTM1r~3h3$Xi9fbOB|!N=HM>QFXvqP61(zqH3i5MHU+SeC;HTtgb zP;KJ{y;S4lCyf|+m$BU1aKS--o?;8@mZLXh3v6m0=M>E3KAhp>8pE8|R5q{alQvt6 z{))|KC&Vg<#Ms4NIq}KU`uF2|77lYRpKVqB=2LxGFlzG2&R6oQ3=Y50(K@~6h6Z!k z7k^8`r#k0+8UF0J743F!!Swkrrp^8&))IJ%W3rXVcJXya2Q{^sm)br#^8d&s?`01p zf8VwgZJ)e{C)#MLW800RjG|4YM^^7Ky!R|iO{Ai1vRH=5nQvNe0v%V>yG$}v>^i>k zl>9SktNIyEul%1&v1ZS>{b+UgwcmCDwh^prR&QR_P=A&~D?zn%rDo3gbCTx|F6le} zW5WxFgbxq*&#!*=u>RZ9jVuiq6d1G%IiZ{X36t z_Fr7mnJx46thAQV8`*%0y`ej~99s0(m!EYJT>RT+?Q$cw-)UUzvnL-ev)=vGXF=xa z@4KQBUyB{wv2bPnuQf9>x37)PA{Y-C6-0EA_4=#0DiMLM5zIx*6w4Gl+C~vqwS+M72HczQvcvo)UhP#u* zLVnM_-4ora8_k;d^^RP9%CGmo&UDy299Z#xeNFWHUgOQTVl~dP#ut6&R#{`HrMYx- z{ezmNkG>}*|4C7cQb>6swsCROe(P_)k9FRQDo=j+E&NWa;QicgrJfb#TUB=O)k^kk zWR)v8YasHZHZXV2x&`drXB5r9EqF5h@}2enmp<957W1v^=jEc}t-G(AC+>2s=U?yt z^Vz2(=cTx~prRJyDUl?xy@J#^eKEy)Dk^&3eVp-|UZ%@m`=uddDafWSM zuidrHpBi=4!q=GXj8nOL?%CXeoV(g#)voj1t<>tKR9w|Q{m#0I`FPt~zcnvj)@S`= z_dI^%Pz;l7bmFGjYxJk?pI_3XyJC%q>3{nlD}HpQpPajOaeJNR<{Q^$&cg z6MvfP#$CPi|1;y=`0rYt-R$z`LxtM1oYuJeLYJEBS)QIHR0qj z`;DJH+Y(tF6C|IVJhtlH_a9%EIqx?JsE-t%_I`(6M7eKTg!%aoDNIkjDrdGwTJl3k1x_L=Iu|uy=A8KskWba z59ho4$aJQBmOFUyDBtpyY3J8}cK-fs>8rNmNgUCw@|$#O)BglSe(&kMz5K4C)nPyD zLvM{gS-sn|O?Yaee7;s7pY_D6_j)(j3OqbJ??K9W(N@`o)lPTcUyF~fkBxrTb#J|% zebeFV(q~?8e7@oFk8<^W4iNHtG(|e@NIhOf4}YdD{uMCAGYtlfBJLq zqV2(dnGtc}+e;5`Id?LfHSEb7y}e)Z7ngVT^?LtY&g8mv-R)1xW--$x)}J=ZjgH%$ z7l2*0;aNaoCO54+hXQa;UZW)KMYezKdDJ2&+>t8}#h z!!<4QJr)m^>qSZ|k-sG=aDX9k!J!P%SziTDALwT9Zb&eD{)nf@=8ojVIe|Gm{~S#x z@8s4<$~tLu!r}O`L=l0VUh+FDj(j&~Y6zZgvbWQ=BQcFRQf*=M{sZ48^C)|Ks?gS* zxU=t6BFl$0@oC`~-R#?{7v8?ayu3iD?WW0_-q5>qj@ZO|>c`tylra5r`x~LM+J1%O zcjNcnYo6INBpgWEpm2`iLD+#H?}EqIqS(T0B2Oo2#jSrj!R=X;>?)1tX?0t!9V)qa zX@91x+;3A8o@AEQ8zlC=aO0om2^|d|cW&_c$jmbPd z%f+{gSW2Av8-2x|N%%}b0@ta)M%D~fw)jWdNu7sfmnhHsqB5beCq>CP@`RU}&`CeO zq9Bo-Cwwo8IByhjm+M;2;pYn7QrdA84#v)4@M&hwm{UUSIq>y{0IM`ns|Z;x{;{#6)ZJby{I^7i~W Ok}2{ROFyhw#|8iuTqTeI literal 0 HcmV?d00001 diff --git a/static/fonts/KaTeX/KaTeX_Typewriter-Regular.ttf b/static/fonts/KaTeX/KaTeX_Typewriter-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c83252c5714c71a3e0ec62195884167339a0129b GIT binary patch literal 27556 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.isso-text-wrapper { + background-color: var(--bg-1); +} + +.isso-textarea, +.isso-preview { + background-color: var(--bg-2); + padding: 10px; + width: 100%; + color: var(--text-color); + font-size: 0.8em; + font-family: var(--sans-serif-font); +} + +.isso-text p { + margin-top: -0.4em; +} + +.isso-text p:last-child { + margin-block-end: 0.2em; +} + +.isso-text h1, +.isso-text h2, +.isso-text h3, +.isso-text h4, +.isso-text h5, +.isso-text h6 { + font-weight: bold; + font-size: 130%; +} + +.isso-comment-footer { + clear: left; + color: var(--meta-color); + font-size: 0.80em; +} + +.isso-feedlink, +.isso-comment-footer a { + margin: 0.4em; + padding: 0.1em; + font-weight: bold; + text-decoration: none; +} + +.isso-comment-footer .isso-votes { + color: var(--meta-color); +} + +.isso-upvote svg, +.isso-downvote svg { + position: relative; + top: .2em; +} + +.isso-upvote:hover svg, +.isso-downvote:hover svg { + fill: var(--hover-color); +} + +/* Reply postbox under existing comment */ +.isso-comment .isso-postbox { + margin-top: 0.8em; +} + +.isso-comment.isso-no-votes>*>.isso-comment-footer .isso-votes { + display: none; +} + +/* ========================================================================== */ +/* Postbox */ +/* ========================================================================== */ +.isso-postbox { + clear: right; + margin: 0 auto 2em; +} + +.isso-form-wrapper { + display: flex; + flex-direction: column; +} + +.isso-textarea, +.isso-preview { + margin-top: 0.2em; + border: 1px solid var(--divider-color); + border-radius: 5px; + width: 100%; +} + +.isso-textarea { + outline: 0; + width: 100%; + resize: none; +} + +.isso-form-wrapper input[type=checkbox] { + position: relative; + bottom: 1px; + vertical-align: middle; + margin-inline-end: 0; +} + +.isso-notification-section { + display: none; + padding-top: .3em; + padding-bottom: 10px; + font-size: 0.90em; +} + +.isso-auth-section { + display: flex; + flex-direction: row; +} + +.isso-input-wrapper, +.isso-post-action { + display: flex; + flex-direction: column; + justify-content: flex-end; + align-items: center; + margin: 0 auto; + max-width: 35%; + font-size: 0.8em; + font-family: var(--sans-serif-font); + text-align: center; +} + +.isso-input-wrapper { + margin-inline-end: 0.5em; +} + +.isso-input-wrapper input, +.isso-post-action input { + margin-top: auto; +} + +.isso-input-wrapper label { + display: inline-block; + margin-top: auto; + height: auto; + line-height: 1.4em; +} + +.isso-input-wrapper input { + border: 1px solid var(--divider-color); + border-radius: 5px; + background-color: var(--bg-2); + padding: 0.3em; + width: 100%; + color: var(--text-color); + line-height: 1.2em; + font-family: var(--sans-serif-font); +} + +.isso-post-action input { + cursor: pointer; + margin: 0.1em; + border: none; + border-radius: 5px; + background-color: var(--primary-color); + padding-inline: 1em; + padding-block: 0.6em; + color: var(--background-color); + font-size: 0.8rem; +} + +.isso-post-action { + display: block; + align-self: flex-end; + margin: 0 auto; +} + +.isso-post-action>input:hover { + opacity: 0.8; +} + +/* ========================================================================== */ +/* Postbox (preview mode) */ +/* ========================================================================== */ +.isso-preview, +.isso-post-action input[name="edit"], +.isso-postbox.isso-preview-mode>.isso-form-wrapper input[name="preview"], +.isso-postbox.isso-preview-mode>.isso-form-wrapper .isso-textarea { + display: none; +} + +.isso-postbox.isso-preview-mode>.isso-form-wrapper .isso-preview { + display: block; +} + +.isso-postbox.isso-preview-mode>.isso-form-wrapper input[name="edit"] { + display: inline; +} + +.isso-preview { + background: repeating-linear-gradient(-45deg, + var(--bg-0), + var(--bg-0) 10px, + var(--bg-2) 10px, + var(--bg-2) 20px); + background-color: var(--bg-0); +} + +/* ========================================================================== */ +/* Animations */ +/* ========================================================================== */ + +/* "target" means the comment that's being linked to, for example: + * https://example.com/blog/example/#isso-15 + */ +.isso-target { + animation: isso-target-fade 5s ease-out; +} + +@keyframes isso-target-fade { + 0% { + background-color: var(--divider-color) + } +} + +/* ========================================================================== */ +/* Media queries */ +/* ========================================================================== */ +@media screen and (max-width:600px) { + .isso-auth-section { + flex-direction: column; + text-align: center; + } + + .isso-input-wrapper { + display: block; + margin: 0 0 .4em; + max-width: 100%; + } + + .isso-input-wrapper input { + width: 100%; + } + + .isso-post-action { + margin: 0.4em auto; + width: 60%; + } +} diff --git a/static/isso.min.css b/static/isso.min.css new file mode 100644 index 0000000..2d7b16c --- /dev/null +++ b/static/isso.min.css @@ -0,0 +1 @@ +.isso-avatar svg,.isso-preview,.isso-textarea{border:1px solid var(--divider-color);width:100%}#isso-thread *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#isso-thread{margin:0 auto;padding:0;width:100%;color:var(--text-color);font-size:.9em;font-family:var(--sans-serif-font)}h4.isso-thread-heading{padding-bottom:.2em;color:var(--text-color);font-size:1.2rem}.isso-feedlink,.isso-note{float:right}.isso-feedlink a{vertical-align:bottom;font-size:.8em}.isso-comment{margin:0 auto;max-width:68em}.isso-preview .isso-comment{margin:0;padding-top:0}.isso-comment:not(:first-of-type),.isso-follow-up .isso-comment{margin-bottom:.5em;border-top:1px solid var(--divider-color)}.isso-avatar{display:block;float:left;margin:.95em .95em 0}.isso-avatar svg{border-radius:3px;max-width:48px;height:100%;max-height:48px}.isso-text-wrapper{display:block;padding:.3em}.isso-follow-up{padding-inline-start:calc(7% + 20px)}.isso-comment-header{font-size:.85em}.isso-comment-header a{text-decoration:none}.isso-comment-header .isso-spacer{padding:0 6px}.isso-note,.isso-parent,.isso-permalink,.isso-spacer{color:var(--meta-color);font-weight:400;text-shadow:none}.isso-note:hover,.isso-parent:hover,.isso-permalink:hover{color:var(--hover-color)}.isso-author{color:var(--text-color);font-weight:500}.isso-page-author-suffix{color:var(--text-color-high-contrast);font-weight:700}.isso-input-wrapper input,.isso-preview,.isso-textarea{background-color:var(--bg-2);color:var(--text-color);font-family:var(--sans-serif-font)}.isso-is-page-author>.isso-text-wrapper{background-color:var(--bg-1)}.isso-preview,.isso-textarea{padding:10px;font-size:.8em}.isso-comment-footer,.isso-comment-footer .isso-votes{color:var(--meta-color)}.isso-text p{margin-top:-.4em}.isso-text p:last-child{margin-bottom:.2em}.isso-text h1,.isso-text h2,.isso-text h3,.isso-text h4,.isso-text h5,.isso-text h6{font-weight:700;font-size:130%}.isso-comment-footer{clear:left;font-size:.8em}.isso-comment-footer a,.isso-feedlink{margin:.4em;padding:.1em;font-weight:700;text-decoration:none}.isso-downvote svg,.isso-upvote svg{position:relative;top:.2em}.isso-downvote:hover svg,.isso-upvote:hover svg{fill:var(--hover-color)}.isso-comment .isso-postbox{margin-top:.8em}.isso-comment.isso-no-votes>*>.isso-comment-footer .isso-votes,.isso-post-action input[name=edit],.isso-postbox.isso-preview-mode>.isso-form-wrapper .isso-textarea,.isso-postbox.isso-preview-mode>.isso-form-wrapper input[name=preview],.isso-preview{display:none}.isso-postbox{clear:right;margin:0 auto 2em}.isso-form-wrapper{display:flex;flex-direction:column}.isso-preview,.isso-textarea{margin-top:.2em;border-radius:5px}.isso-textarea{outline:0;width:100%;resize:none}.isso-form-wrapper input[type=checkbox]{position:relative;bottom:1px;vertical-align:middle;margin-inline-end:0}.isso-notification-section{display:none;padding-top:.3em;padding-bottom:10px;font-size:.9em}.isso-auth-section{display:flex;flex-direction:row}.isso-input-wrapper,.isso-post-action{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;margin:0 auto;max-width:35%;font-size:.8em;font-family:var(--sans-serif-font);text-align:center}.isso-input-wrapper{margin-inline-end:.5em}.isso-input-wrapper input,.isso-post-action input{margin-top:auto}.isso-input-wrapper label{display:inline-block;margin-top:auto;height:auto;line-height:1.4em}.isso-input-wrapper input{border:1px solid var(--divider-color);border-radius:5px;padding:.3em;width:100%;line-height:1.2em}.isso-post-action input{cursor:pointer;margin:.1em;border:none;border-radius:5px;background-color:var(--primary-color);padding:.6em 1em;color:var(--background-color);font-size:.8rem}.isso-post-action{display:block;align-self:flex-end;margin:0 auto}.isso-post-action>input:hover{opacity:.8}.isso-postbox.isso-preview-mode>.isso-form-wrapper .isso-preview{display:block}.isso-postbox.isso-preview-mode>.isso-form-wrapper input[name=edit]{display:inline}.isso-preview{background:repeating-linear-gradient(-45deg,var(--bg-0),var(--bg-0) 10px,var(--bg-2) 10px,var(--bg-2) 20px);background-color:var(--bg-0)}.isso-target{animation:5s ease-out isso-target-fade}@keyframes isso-target-fade{0%{background-color:var(--divider-color)}}@media screen and (max-width:600px){.isso-auth-section{flex-direction:column;text-align:center}.isso-input-wrapper{display:block;margin:0 0 .4em;max-width:100%}.isso-input-wrapper input{width:100%}.isso-post-action{margin:.4em auto;width:60%}} diff --git a/static/js/codeBlockNameLinks.js b/static/js/codeBlockNameLinks.js new file mode 100644 index 0000000..ea0b678 --- /dev/null +++ b/static/js/codeBlockNameLinks.js @@ -0,0 +1,36 @@ +document.addEventListener("DOMContentLoaded", function() { + // Convert URLs in data-name to links. + document.querySelectorAll('code[data-name]').forEach(function(code) { + const name = code.getAttribute('data-name'); + if (name.startsWith('http')) { + const link = document.createElement('a'); + link.href = name; + link.className = 'source-path'; + link.textContent = name; + code.insertBefore(link, code.firstChild); + // Remove data-name to avoid overlap with Zola's native display. + code.removeAttribute('data-name'); + code.parentElement?.removeAttribute('data-name'); + } + }); + + // Legacy support for old shortcode. https://github.com/welpo/tabi/pull/489 + document.querySelectorAll('.code-source').forEach(function(marker) { + const sourceUrl = marker.getAttribute('data-source'); + const nextPre = marker.nextElementSibling; + if (nextPre?.tagName === 'PRE') { + const code = nextPre.querySelector('code'); + if (code) { + if (sourceUrl.startsWith('http')) { + const link = document.createElement('a'); + link.href = sourceUrl; + link.className = 'source-path'; + link.textContent = sourceUrl; + code.insertBefore(link, code.firstChild); + } else { + code.setAttribute('data-name', sourceUrl); + } + } + } + }); +}); diff --git a/static/js/codeBlockNameLinks.min.js b/static/js/codeBlockNameLinks.min.js new file mode 100644 index 0000000..df1f999 --- /dev/null +++ b/static/js/codeBlockNameLinks.min.js @@ -0,0 +1 @@ +document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll("code[data-name]").forEach(function(e){var t,a=e.getAttribute("data-name");a.startsWith("http")&&((t=document.createElement("a")).href=a,t.className="source-path",t.textContent=a,e.insertBefore(t,e.firstChild),e.removeAttribute("data-name"),e.parentElement?.removeAttribute("data-name"))}),document.querySelectorAll(".code-source").forEach(function(e){var t,a=e.getAttribute("data-source");"PRE"===(e=e.nextElementSibling)?.tagName&&(e=e.querySelector("code"))&&(a.startsWith("http")?((t=document.createElement("a")).href=a,t.className="source-path",t.textContent=a,e.insertBefore(t,e.firstChild)):e.setAttribute("data-name",a))})}); diff --git a/static/js/copyCodeToClipboard.js b/static/js/copyCodeToClipboard.js new file mode 100644 index 0000000..805eb59 --- /dev/null +++ b/static/js/copyCodeToClipboard.js @@ -0,0 +1,47 @@ +const copiedText = document.getElementById('copy-success').textContent; +const initCopyText = document.getElementById('copy-init').textContent; + +const changeIcon = (copyDiv, className) => { + copyDiv.classList.add(className); + copyDiv.setAttribute('aria-label', copiedText); + setTimeout(() => { + copyDiv.classList.remove(className); + copyDiv.setAttribute('aria-label', initCopyText); + }, 2500); +}; + +const addCopyEventListenerToDiv = (copyDiv, block) => { + copyDiv.addEventListener('click', () => copyCodeAndChangeIcon(copyDiv, block)); +}; + +const copyCodeAndChangeIcon = async (copyDiv, block) => { + const code = block.querySelector('table') + ? getTableCode(block) + : getNonTableCode(block); + try { + await navigator.clipboard.writeText(code); + changeIcon(copyDiv, 'checked'); + } catch (error) { + changeIcon(copyDiv, 'error'); + } +}; + +const getNonTableCode = (block) => { + return [...block.querySelectorAll('code')].map((code) => code.textContent).join(''); +}; + +const getTableCode = (block) => { + return [...block.querySelectorAll('tr')] + .map((row) => row.querySelector('td:last-child')?.innerText ?? '') + .join(''); +}; + +document.querySelectorAll('pre:not(.mermaid)').forEach((block) => { + const copyDiv = document.createElement('div'); + copyDiv.setAttribute('role', 'button'); + copyDiv.setAttribute('aria-label', initCopyText); + copyDiv.setAttribute('title', initCopyText); + copyDiv.className = 'copy-code'; + block.prepend(copyDiv); + addCopyEventListenerToDiv(copyDiv, block); +}); diff --git a/static/js/copyCodeToClipboard.min.js b/static/js/copyCodeToClipboard.min.js new file mode 100644 index 0000000..240d4ff --- /dev/null +++ b/static/js/copyCodeToClipboard.min.js @@ -0,0 +1 @@ +const copiedText=document.getElementById("copy-success").textContent,initCopyText=document.getElementById("copy-init").textContent,changeIcon=(e,t)=>{e.classList.add(t),e.setAttribute("aria-label",copiedText),setTimeout(()=>{e.classList.remove(t),e.setAttribute("aria-label",initCopyText)},2500)},addCopyEventListenerToDiv=(e,t)=>{e.addEventListener("click",()=>copyCodeAndChangeIcon(e,t))},copyCodeAndChangeIcon=async(t,e)=>{e=(e.querySelector("table")?getTableCode:getNonTableCode)(e);try{await navigator.clipboard.writeText(e),changeIcon(t,"checked")}catch(e){changeIcon(t,"error")}},getNonTableCode=e=>[...e.querySelectorAll("code")].map(e=>e.textContent).join(""),getTableCode=e=>[...e.querySelectorAll("tr")].map(e=>e.querySelector("td:last-child")?.innerText??"").join("");document.querySelectorAll("pre:not(.mermaid)").forEach(e=>{var t=document.createElement("div");t.setAttribute("role","button"),t.setAttribute("aria-label",initCopyText),t.setAttribute("title",initCopyText),t.className="copy-code",e.prepend(t),addCopyEventListenerToDiv(t,e)}); diff --git a/static/js/decodeMail.js b/static/js/decodeMail.js new file mode 100644 index 0000000..f26ac68 --- /dev/null +++ b/static/js/decodeMail.js @@ -0,0 +1,44 @@ +(function () { + 'use strict'; + + // Utility function: Base64 Decoding. + function decodeBase64(encodedString) { + try { + // Can't use atob() directly because it doesn't support non-ascii characters. + // And non-ascii characters are allowed in email addresses and domains. + // See https://en.wikipedia.org/wiki/Email_address#Internationalization + // Code below adapted from Jackie Han: https://stackoverflow.com/a/64752311 + const byteString = atob(encodedString); + + // Convert byteString to an array of char codes. + const charCodes = [...byteString].map((char) => char.charCodeAt(0)); + + // Use TypedArray.prototype.set() to copy the char codes into a Uint8Array. + const bytes = new Uint8Array(charCodes.length); + bytes.set(charCodes); + + const decoder = new TextDecoder('utf-8'); + return decoder.decode(bytes); + } catch (e) { + console.error('Failed to decode Base64 string: ', e); + return null; + } + } + + // Utility function: Update href of an element with a decoded email. + function updateEmailHref(element) { + const encodedEmail = element.getAttribute('data-encoded-email'); + const decodedEmail = decodeBase64(encodedEmail); + + if (decodedEmail) { + element.setAttribute('href', `mailto:${decodedEmail}`); + } else { + // If the decoding fails, hide the email link. + element.style.display = 'none'; + } + } + + // Fetch and process email elements with the "data-encoded-email" attribute. + const encodedEmailElements = document.querySelectorAll('[data-encoded-email]'); + encodedEmailElements.forEach(updateEmailHref); +})(); diff --git a/static/js/decodeMail.min.js b/static/js/decodeMail.min.js new file mode 100644 index 0000000..2b766a0 --- /dev/null +++ b/static/js/decodeMail.min.js @@ -0,0 +1 @@ +!function(){"use strict";document.querySelectorAll("[data-encoded-email]").forEach(function(e){var t=function(e){try{var t=[...atob(e)].map(e=>e.charCodeAt(0)),r=new Uint8Array(t.length);return r.set(t),new TextDecoder("utf-8").decode(r)}catch(e){return console.error("Failed to decode Base64 string: ",e),null}}(e.getAttribute("data-encoded-email"));t?e.setAttribute("href","mailto:"+t):e.style.display="none"})}(); diff --git a/static/js/filterCards.js b/static/js/filterCards.js new file mode 100644 index 0000000..a24137f --- /dev/null +++ b/static/js/filterCards.js @@ -0,0 +1,99 @@ +document.addEventListener('DOMContentLoaded', () => { + const cards = document.querySelectorAll('.card'); + const filterLinks = document.querySelectorAll('.filter-controls a'); + const allProjectsFilter = document.querySelector('#all-projects-filter'); + if (!cards.length || !filterLinks.length) return; + allProjectsFilter.style.display = 'block'; + + // Create a Map for O(1) lookups of links by filter value. + const linkMap = new Map( + Array.from(filterLinks).map(link => [link.dataset.filter, link]) + ); + + // Pre-process cards data for faster filtering. + const cardData = Array.from(cards).map(card => ({ + element: card, + tags: card.dataset.tags?.toLowerCase().split(',').filter(Boolean) ?? [] + })); + + function getTagSlugFromUrl(url) { + return url.split('/').filter(Boolean).pop(); + } + + function getFilterFromHash() { + if (!window.location.hash) return 'all'; + const hash = decodeURIComponent(window.location.hash.slice(1)); + const matchingLink = Array.from(filterLinks).find(link => + getTagSlugFromUrl(link.getAttribute('href')) === hash + ); + return matchingLink?.dataset.filter ?? 'all'; + } + + function setActiveFilter(filterValue, updateHash = true) { + if (updateHash) { + if (filterValue === 'all') { + history.pushState(null, '', window.location.pathname); + } else { + const activeLink = linkMap.get(filterValue); + if (activeLink) { + const tagSlug = getTagSlugFromUrl(activeLink.getAttribute('href')); + history.pushState(null, '', `#${tagSlug}`); + } + } + } + const isAll = filterValue === 'all'; + const display = isAll ? '' : 'none'; + const ariaHidden = isAll ? 'false' : 'true'; + requestAnimationFrame(() => { + filterLinks.forEach(link => { + const isActive = link.dataset.filter === filterValue; + link.classList.toggle('active', isActive); + link.setAttribute('aria-pressed', isActive); + }); + if (isAll) { + cardData.forEach(({ element }) => { + element.style.display = display; + element.setAttribute('aria-hidden', ariaHidden); + }); + } else { + cardData.forEach(({ element, tags }) => { + const shouldShow = tags.includes(filterValue); + element.style.display = shouldShow ? '' : 'none'; + element.setAttribute('aria-hidden', !shouldShow); + }); + } + }); + } + + const filterContainer = filterLinks[0].parentElement.parentElement; + filterContainer.addEventListener('click', e => { + const link = e.target.closest('a'); + if (!link) return; + e.preventDefault(); + const filterValue = link.dataset.filter; + if (filterValue) setActiveFilter(filterValue); + }); + + filterContainer.addEventListener('keydown', e => { + const link = e.target.closest('a'); + if (!link) return; + if (e.key === ' ' || e.key === 'Enter') { + e.preventDefault(); + link.click(); + } + }); + + filterLinks.forEach(link => { + link.setAttribute('role', 'button'); + link.setAttribute('aria-pressed', link.classList.contains('active')); + }); + + window.addEventListener('popstate', () => { + setActiveFilter(getFilterFromHash(), false); + }); + + const initialFilter = getFilterFromHash(); + if (initialFilter !== 'all') { + setActiveFilter(initialFilter, false); + } +}); diff --git a/static/js/filterCards.min.js b/static/js/filterCards.min.js new file mode 100644 index 0000000..b150e70 --- /dev/null +++ b/static/js/filterCards.min.js @@ -0,0 +1 @@ +document.addEventListener("DOMContentLoaded",()=>{var t=document.querySelectorAll(".card");const l=document.querySelectorAll(".filter-controls a");var e=document.querySelector("#all-projects-filter");if(t.length&&l.length){e.style.display="block";const s=new Map(Array.from(l).map(t=>[t.dataset.filter,t])),i=Array.from(t).map(t=>({element:t,tags:t.dataset.tags?.toLowerCase().split(",").filter(Boolean)??[]}));function o(t){return t.split("/").filter(Boolean).pop()}function a(){if(!window.location.hash)return"all";const e=decodeURIComponent(window.location.hash.slice(1));return Array.from(l).find(t=>o(t.getAttribute("href"))===e)?.dataset.filter??"all"}function r(a,t=!0){t&&("all"===a?history.pushState(null,"",window.location.pathname):(t=s.get(a))&&(t=o(t.getAttribute("href")),history.pushState(null,"","#"+t)));const e="all"===a,r=e?"":"none",n=e?"false":"true";requestAnimationFrame(()=>{l.forEach(t=>{var e=t.dataset.filter===a;t.classList.toggle("active",e),t.setAttribute("aria-pressed",e)}),e?i.forEach(({element:t})=>{t.style.display=r,t.setAttribute("aria-hidden",n)}):i.forEach(({element:t,tags:e})=>{e=e.includes(a),t.style.display=e?"":"none",t.setAttribute("aria-hidden",!e)})})}(e=l[0].parentElement.parentElement).addEventListener("click",t=>{var e=t.target.closest("a");e&&(t.preventDefault(),t=e.dataset.filter)&&r(t)}),e.addEventListener("keydown",t=>{var e=t.target.closest("a");!e||" "!==t.key&&"Enter"!==t.key||(t.preventDefault(),e.click())}),l.forEach(t=>{t.setAttribute("role","button"),t.setAttribute("aria-pressed",t.classList.contains("active"))}),window.addEventListener("popstate",()=>{r(a(),!1)}),"all"!==(t=a())&&r(t,!1)}}); diff --git a/static/js/footnoteBacklinks.js b/static/js/footnoteBacklinks.js new file mode 100644 index 0000000..8c20098 --- /dev/null +++ b/static/js/footnoteBacklinks.js @@ -0,0 +1,33 @@ +// Assign unique IDs to the footnote references based on their hashes. +function assignReferenceIds() { + const references = document.querySelectorAll('.footnote-reference'); + for (const ref of references) { + ref.id = `ref:${ref.children[0].hash.substring(1)}`; + } +} + +// Create backlinks for each footnote definition if a corresponding reference exists. +function createFootnoteBacklinks() { + const footnotes = document.querySelectorAll('.footnote-definition'); + for (const footnote of footnotes) { + const backlinkId = `ref:${footnote.id}`; + + // Skip if there's no corresponding reference in the text (i.e. the footnote doesn't reference anything). + if (!document.getElementById(backlinkId)) continue; + + const backlink = document.createElement('a'); + backlink.href = `#${backlinkId}`; + backlink.className = 'footnote-backlink'; + backlink.textContent = '↩'; + footnote.lastElementChild.appendChild(backlink); + } +} + +// Initialise the handlers for the footnote references and definitions. +function initFootnotes() { + assignReferenceIds(); + createFootnoteBacklinks(); +} + +// Wait for the window to load, then execute the main function. +window.addEventListener('load', initFootnotes); diff --git a/static/js/footnoteBacklinks.min.js b/static/js/footnoteBacklinks.min.js new file mode 100644 index 0000000..c2175a7 --- /dev/null +++ b/static/js/footnoteBacklinks.min.js @@ -0,0 +1 @@ +function assignReferenceIds(){for(const e of document.querySelectorAll(".footnote-reference"))e.id="ref:"+e.children[0].hash.substring(1)}function createFootnoteBacklinks(){for(const n of document.querySelectorAll(".footnote-definition")){var e,t="ref:"+n.id;document.getElementById(t)&&((e=document.createElement("a")).href="#"+t,e.className="footnote-backlink",e.textContent="↩",n.lastElementChild.appendChild(e))}}function initFootnotes(){assignReferenceIds(),createFootnoteBacklinks()}window.addEventListener("load",initFootnotes); diff --git a/static/js/giscus.js b/static/js/giscus.js new file mode 100644 index 0000000..1fbe837 --- /dev/null +++ b/static/js/giscus.js @@ -0,0 +1,81 @@ +function setGiscusTheme(newTheme) { + // Get the giscus iframe. + const frame = document.querySelector('iframe.giscus-frame'); + + if (frame) { + // If the iframe exists, send a message to set the theme. + frame.contentWindow.postMessage( + { giscus: { setConfig: { theme: newTheme } } }, + 'https://giscus.app' + ); + } +} + +// Function to initialize Giscus. This function is run when the window loads. +function initGiscus() { + // Get the div that will contain the comments. + const commentsDiv = document.querySelector('.comments'); + if (commentsDiv) { + // Get the various settings from data attributes on the div. + const repo = commentsDiv.getAttribute('data-repo'); + const repoId = commentsDiv.getAttribute('data-repo-id'); + const category = commentsDiv.getAttribute('data-category'); + const categoryId = commentsDiv.getAttribute('data-category-id'); + const strictTitleMatching = commentsDiv.getAttribute('data-strict'); + const term = commentsDiv.getAttribute('data-term'); + const reactionsEnabled = commentsDiv.getAttribute('data-reactions-enabled'); + const inputPosition = commentsDiv.getAttribute('data-input-position'); + const lightTheme = commentsDiv.getAttribute('data-light-theme'); + const darkTheme = commentsDiv.getAttribute('data-dark-theme'); + const lang = commentsDiv.getAttribute('data-lang'); + const lazyLoading = commentsDiv.getAttribute('data-lazy-loading'); + + // Create a new script tag that will load the Giscus script. + const script = document.createElement('script'); + script.src = 'https://giscus.app/client.js'; + script.async = true; + + // Set the various settings as data attributes on the script tag. + script.setAttribute('data-repo', repo); + script.setAttribute('data-repo-id', repoId); + script.setAttribute('data-category', category); + script.setAttribute('data-category-id', categoryId); + script.setAttribute('data-term', term); + script.setAttribute('data-strict', strictTitleMatching); + script.setAttribute('data-reactions-enabled', reactionsEnabled); + script.setAttribute('data-emit-metadata', '0'); + script.setAttribute('data-input-position', inputPosition); + script.setAttribute('data-lang', lang); + script.setAttribute('crossorigin', 'anonymous'); + + // Set the mapping if it is provided. + const mapping = commentsDiv.getAttribute('data-mapping'); + if (mapping) { + script.setAttribute('data-mapping', mapping); + } + + // Choose the correct theme based on the current theme of the document. + const currentTheme = + document.documentElement.getAttribute('data-theme') || 'light'; + const selectedTheme = currentTheme === 'dark' ? darkTheme : lightTheme; + script.setAttribute('data-theme', selectedTheme); + + // Set the loading attribute if lazy loading is enabled. + if (lazyLoading === 'true') { + script.setAttribute('data-loading', 'lazy'); + } + + // Add the script tag to the div. + commentsDiv.appendChild(script); + + // Listen for theme changes and update the Giscus theme when they occur. + window.addEventListener('themeChanged', (event) => { + const selectedTheme = + event.detail.theme === 'dark' ? darkTheme : lightTheme; + setGiscusTheme(selectedTheme); + }); + } +} + +// Initialize Giscus. +initGiscus(); diff --git a/static/js/giscus.min.js b/static/js/giscus.min.js new file mode 100644 index 0000000..2846f22 --- /dev/null +++ b/static/js/giscus.min.js @@ -0,0 +1 @@ +function setGiscusTheme(t){var e=document.querySelector("iframe.giscus-frame");e&&e.contentWindow.postMessage({giscus:{setConfig:{theme:t}}},"https://giscus.app")}function initGiscus(){var t=document.querySelector(".comments");if(t){var e=t.getAttribute("data-repo"),a=t.getAttribute("data-repo-id"),i=t.getAttribute("data-category"),r=t.getAttribute("data-category-id"),d=t.getAttribute("data-strict"),s=t.getAttribute("data-term"),u=t.getAttribute("data-reactions-enabled"),n=t.getAttribute("data-input-position");const b=t.getAttribute("data-light-theme"),A=t.getAttribute("data-dark-theme");var o=t.getAttribute("data-lang"),c=t.getAttribute("data-lazy-loading"),g=document.createElement("script"),e=(g.src="https://giscus.app/client.js",g.async=!0,g.setAttribute("data-repo",e),g.setAttribute("data-repo-id",a),g.setAttribute("data-category",i),g.setAttribute("data-category-id",r),g.setAttribute("data-term",s),g.setAttribute("data-strict",d),g.setAttribute("data-reactions-enabled",u),g.setAttribute("data-emit-metadata","0"),g.setAttribute("data-input-position",n),g.setAttribute("data-lang",o),g.setAttribute("crossorigin","anonymous"),t.getAttribute("data-mapping")),a=(e&&g.setAttribute("data-mapping",e),document.documentElement.getAttribute("data-theme")||"light"),i="dark"===a?A:b;g.setAttribute("data-theme",i),"true"===c&&g.setAttribute("data-loading","lazy"),t.appendChild(g),window.addEventListener("themeChanged",t=>{setGiscusTheme("dark"===t.detail.theme?A:b)})}}initGiscus(); diff --git a/static/js/hyvortalk.js b/static/js/hyvortalk.js new file mode 100644 index 0000000..3f9959d --- /dev/null +++ b/static/js/hyvortalk.js @@ -0,0 +1,44 @@ +function initHyvorTalk() { + // Get the div that will contain the comments. + const commentsDiv = document.querySelector('.comments'); + if (commentsDiv) { + // Get the various settings from data attributes on the div. + const websiteId = commentsDiv.getAttribute('data-website-id'); + const pageId = commentsDiv.getAttribute('data-page-id'); + const pageLanguage = commentsDiv.getAttribute('data-page-language'); + const loading = commentsDiv.getAttribute('data-loading'); + const pageAuthor = commentsDiv.getAttribute('data-page-author'); + + // Create a new script tag that will load the Hyvor Talk script. + const script = document.createElement('script'); + script.src = 'https://talk.hyvor.com/embed/embed.js'; + script.async = true; + script.type = 'module'; + document.head.appendChild(script); + + // Create a new Hyvor Talk comments tag. + const comments = document.createElement('hyvor-talk-comments'); + comments.setAttribute('website-id', websiteId); + comments.setAttribute('page-id', pageId); + comments.setAttribute('page-language', pageLanguage); + comments.setAttribute('loading', loading); + comments.setAttribute('page-author', pageAuthor); + + // Choose the correct theme based on the current theme of the document. + const currentTheme = + document.documentElement.getAttribute('data-theme') || 'light'; + comments.setAttribute('colors', currentTheme); + + // Add the Hyvor Talk comments tag to the div. + commentsDiv.appendChild(comments); + + // Listen for theme changes and update the Hyvor Talk theme when they occur. + window.addEventListener('themeChanged', (event) => { + const selectedTheme = event.detail.theme; + comments.setAttribute('colors', selectedTheme); + }); + } +} + +// Initialize HyvorTalk. +initHyvorTalk(); diff --git a/static/js/hyvortalk.min.js b/static/js/hyvortalk.min.js new file mode 100644 index 0000000..f4ea4f5 --- /dev/null +++ b/static/js/hyvortalk.min.js @@ -0,0 +1 @@ +function initHyvorTalk(){var t=document.querySelector(".comments");if(t){var e=t.getAttribute("data-website-id"),a=t.getAttribute("data-page-id"),i=t.getAttribute("data-page-language"),d=t.getAttribute("data-loading"),r=t.getAttribute("data-page-author"),n=document.createElement("script");n.src="https://talk.hyvor.com/embed/embed.js",n.async=!0,n.type="module",document.head.appendChild(n);const o=document.createElement("hyvor-talk-comments");o.setAttribute("website-id",e),o.setAttribute("page-id",a),o.setAttribute("page-language",i),o.setAttribute("loading",d),o.setAttribute("page-author",r);n=document.documentElement.getAttribute("data-theme")||"light";o.setAttribute("colors",n),t.appendChild(o),window.addEventListener("themeChanged",t=>{t=t.detail.theme;o.setAttribute("colors",t)})}}initHyvorTalk(); diff --git a/static/js/initializeTheme.js b/static/js/initializeTheme.js new file mode 100644 index 0000000..95e754c --- /dev/null +++ b/static/js/initializeTheme.js @@ -0,0 +1,25 @@ +(function () { + // Get the default theme from the HTML data-theme attribute. + const defaultTheme = document.documentElement.getAttribute('data-theme'); + + // Set the data-default-theme attribute only if defaultTheme is not null. + if (defaultTheme) { + document.documentElement.setAttribute('data-default-theme', defaultTheme); + } + + // Attempt to retrieve the current theme from the browser's local storage. + const storedTheme = localStorage.getItem('theme'); + + if (storedTheme) { + document.documentElement.setAttribute('data-theme', storedTheme); + } else if (defaultTheme) { + document.documentElement.setAttribute('data-theme', defaultTheme); + } else { + // If no theme is found in local storage and no default theme is set, use user's system preference. + const isSystemDark = window.matchMedia('(prefers-color-scheme: dark)').matches; + document.documentElement.setAttribute( + 'data-theme', + isSystemDark ? 'dark' : 'light' + ); + } +})(); diff --git a/static/js/initializeTheme.min.js b/static/js/initializeTheme.min.js new file mode 100644 index 0000000..3f65952 --- /dev/null +++ b/static/js/initializeTheme.min.js @@ -0,0 +1 @@ +!function(){var t=document.documentElement.getAttribute("data-theme"),e=(t&&document.documentElement.setAttribute("data-default-theme",t),localStorage.getItem("theme"));e?document.documentElement.setAttribute("data-theme",e):t?document.documentElement.setAttribute("data-theme",t):(e=window.matchMedia("(prefers-color-scheme: dark)").matches,document.documentElement.setAttribute("data-theme",e?"dark":"light"))}(); diff --git a/static/js/isso.js b/static/js/isso.js new file mode 100644 index 0000000..4666604 --- /dev/null +++ b/static/js/isso.js @@ -0,0 +1,81 @@ +// Function to initialise Isso. +function initIsso() { + // Get the div that will contain the comments. + const commentsDiv = document.querySelector('.comments'); + if (commentsDiv) { + // Get the lazy-loading setting from the div. + const lazyLoading = commentsDiv.getAttribute('data-lazy-loading') === 'true'; + + // If lazy-loading is enabled, create an Intersection Observer and use it. + if (lazyLoading) { + const observer = new IntersectionObserver((entries) => { + // Loop over the entries. + entries.forEach((entry) => { + // If the element is in the viewport, initialize Isso. + if (entry.isIntersecting) { + loadIsso(commentsDiv); + // Once the Isso is loaded, we don't need to observe the element anymore. + observer.unobserve(commentsDiv); + } + }); + }); + + // Start observing the comments div. + observer.observe(commentsDiv); + } else { + // If lazy-loading is not enabled, initialise Isso immediately. + loadIsso(commentsDiv); + } + } +} + +// Function to load Isso. +function loadIsso(commentsDiv) { + // Get the various settings from data attributes on the div. + const endpointUrl = commentsDiv.getAttribute('data-endpoint-url'); + const pageId = commentsDiv.getAttribute('data-isso-id'); + const title = commentsDiv.getAttribute('data-title'); + const lang = commentsDiv.getAttribute('data-page-language'); + const maxCommentsTop = commentsDiv.getAttribute('data-max-comments-top'); + const maxCommentsNested = commentsDiv.getAttribute('data-max-comments-nested'); + const avatar = commentsDiv.getAttribute('data-avatar'); + const voting = commentsDiv.getAttribute('data-voting'); + const hashes = commentsDiv.getAttribute('data-page-author-hashes'); + + // Create a new script tag that will load the Isso script. + const script = document.createElement('script'); + script.src = endpointUrl + 'js/embed.min.js'; + script.async = true; + + // Set the various settings as data attributes on the script tag. + script.setAttribute('data-isso', endpointUrl); + script.setAttribute('data-isso-lang', lang); + script.setAttribute('data-isso-max-comments-top', maxCommentsTop); + script.setAttribute('data-isso-max-comments-nested', maxCommentsNested); + script.setAttribute('data-isso-avatar', avatar); + script.setAttribute('data-isso-vote', voting); + script.setAttribute('data-isso-page-author-hashes', hashes); + script.setAttribute('data-isso-css', 'false'); + + // Set the id and data-isso-id of the Isso thread. + const section = document.createElement('section'); + section.id = 'isso-thread'; + section.setAttribute('data-isso-id', pageId); + section.setAttribute('data-title', title); + commentsDiv.appendChild(section); + + // Add the script tag to the div. + commentsDiv.appendChild(script); + + // Create a link tag for the Isso CSS. + const link = document.createElement('link'); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.href = '/isso.min.css'; + + // Add the CSS link tag to the head of the document. + document.head.appendChild(link); +} + +// Initialize Isso. +initIsso(); diff --git a/static/js/isso.min.js b/static/js/isso.min.js new file mode 100644 index 0000000..833eaff --- /dev/null +++ b/static/js/isso.min.js @@ -0,0 +1 @@ +function initIsso(){const e=document.querySelector(".comments");if(e)if("true"===e.getAttribute("data-lazy-loading")){const a=new IntersectionObserver(t=>{t.forEach(t=>{t.isIntersecting&&(loadIsso(e),a.unobserve(e))})});a.observe(e)}else loadIsso(e)}function loadIsso(t){var e=t.getAttribute("data-endpoint-url"),a=t.getAttribute("data-isso-id"),s=t.getAttribute("data-title"),i=t.getAttribute("data-page-language"),o=t.getAttribute("data-max-comments-top"),r=(t.getAttribute("data-max-comments-nested"),t.getAttribute("data-avatar")),d=t.getAttribute("data-voting"),n=t.getAttribute("data-page-author-hashes"),u=document.createElement("script");u.src=e+"js/embed.min.js",u.async=!0,u.setAttribute("data-isso",e),u.setAttribute("data-isso-lang",i),u.setAttribute("data-isso-max-comments-top",o),u.setAttribute("data-isso-avatar",r),u.setAttribute("data-isso-vote",d),u.setAttribute("data-isso-page-author-hashes",n),u.setAttribute("data-isso-css","false"),(e=document.createElement("section")).id="isso-thread",e.setAttribute("data-isso-id",a),e.setAttribute("data-title",s),t.appendChild(e),t.appendChild(u),(i=document.createElement("link")).rel="stylesheet",i.type="text/css",i.href="/isso.min.css",document.head.appendChild(i)}initIsso(); diff --git a/static/js/katex.min.js b/static/js/katex.min.js new file mode 100644 index 0000000..f0f08ba --- /dev/null +++ b/static/js/katex.min.js @@ -0,0 +1 @@ +((e,t)=>{"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()})("undefined"!=typeof self?self:this,function(){{var Jt={d:function(e,t){for(var r in t)Jt.o(t,r)&&!Jt.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},Qt={};Jt.d(Qt,{default:function(){return gr}});class fr{constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;let r,n,a="KaTeX parse error: "+e;var i,o,s=t&&t.loc;return s&&s.start<=s.end&&(o=s.lexer.input,r=s.start,n=s.end,r===o.length?a+=" at end of input: ":a+=" at position "+(r+1)+": ",i=o.slice(r,n).replace(/[^]/g,"$&̲"),s=15":">","<":"<",'"':""","'":"'"},E=/[&><"']/g;var bt={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(E,e=>O[e])},hyphenate:function(e){return e.replace(H,"-$1").toLowerCase()},getBaseElem:e0,isCharacterBox:function(e){return"mathord"===(e=e0(e)).type||"textord"===e.type||"atom"===e.type},protocolFromUrl:function(e){return(e=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e))?":"===e[2]&&/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(e[1])?e[1].toLowerCase():null:"_relative"}};let n={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand ",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};class br{constructor(e){for(var t in this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{},n){var r;n.hasOwnProperty(t)&&(r=n[t],this[t]=void 0!==e[t]?r.processor?r.processor(e[t]):e[t]:(e=>{if(e.default)return e.default;if(e=e.type,"string"!=typeof(e=Array.isArray(e)?e[0]:e))return e.enum[0];switch(e){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}})(r))}}reportNonstrict(e,t,r){let n=this.strict;if((n="function"==typeof n?n(e,t,r):n)&&"ignore"!==n){if(!0===n||"error"===n)throw new ft("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===n?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]")}}useStrictBehavior(e,t,r){let n=this.strict;if("function"==typeof n)try{n=n(e,t,r)}catch(e){n="error"}return!(!n||"ignore"===n||!0!==n&&"error"!==n&&("warn"===n?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]"),1))}isTrusted(e){if(e.url&&!e.protocol){var t=bt.protocolFromUrl(e.url);if(null==t)return!1;e.protocol=t}return t="function"==typeof this.trust?this.trust(e):this.trust,Boolean(t)}}class yr{constructor(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}sup(){return e[L[this.id]]}sub(){return e[V[this.id]]}fracNum(){return e[F[this.id]]}fracDen(){return e[G[this.id]]}cramp(){return e[U[this.id]]}text(){return e[Y[this.id]]}isTight(){return 2<=this.size}}let e=[new yr(0,0,!1),new yr(1,0,!0),new yr(2,1,!1),new yr(3,1,!0),new yr(4,2,!1),new yr(5,2,!0),new yr(6,3,!1),new yr(7,3,!0)],L=[4,5,4,5,6,7,6,7],V=[5,5,5,5,7,7,7,7],F=[2,3,4,5,6,7,6,7],G=[3,3,5,5,7,7,7,7],U=[1,1,3,3,5,5,7,7],Y=[0,1,2,3,2,3,2,3];var yt={DISPLAY:e[0],TEXT:e[2],SCRIPT:e[4],SCRIPTSCRIPT:e[6]};let l=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}],r=[];function t0(t){for(let e=0;e=r[e]&&t<=r[e+1])return 1}l.forEach(e=>e.blocks.forEach(e=>r.push(...e)));let X={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"};class xr{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return bt.contains(this.classes,e)}toNode(){var t=document.createDocumentFragment();for(let e=0;ee.toText()).join("")}}var xt={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}};let a={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},W={"Å":"A","Ð":"D","Þ":"o","å":"a","ð":"d","þ":"o","А":"A","Б":"B","В":"B","Г":"F","Д":"A","Е":"E","Ж":"K","З":"3","И":"N","Й":"N","К":"K","Л":"N","М":"M","Н":"H","О":"O","П":"N","Р":"P","С":"C","Т":"T","У":"y","Ф":"O","Х":"X","Ц":"U","Ч":"h","Ш":"W","Щ":"W","Ъ":"B","Ы":"X","Ь":"B","Э":"3","Ю":"X","Я":"R","а":"a","б":"b","в":"a","г":"r","д":"y","е":"e","ж":"m","з":"e","и":"n","й":"n","к":"n","л":"n","м":"m","н":"n","о":"o","п":"n","р":"p","с":"c","т":"o","у":"y","ф":"b","х":"x","ц":"n","ч":"n","ш":"w","щ":"w","ъ":"a","ы":"m","ь":"a","э":"e","ю":"m","я":"r"};function r0(e,t,r){if(!xt[t])throw new Error("Font metrics not found for font: "+t+".");let n=e.charCodeAt(0),a=xt[t][n];if(!a&&e[0]in W&&(n=W[e[0]].charCodeAt(0),a=xt[t][n]),a||"text"!==r||t0(n)&&(a=xt[t][77]),a)return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}function n0(e,t){return t.size<2?e:j[e-1][t.size-1]}let i={},j=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],_=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488];class wr{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||wr.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=_[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var t,r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(t in e)e.hasOwnProperty(t)&&(r[t]=e[t]);return new wr(r)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:n0(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:_[e-1]})}havingBaseStyle(e){e=e||this.style.text();var t=n0(wr.BASESIZE,e);return this.size===t&&this.textSize===wr.BASESIZE&&this.style===e?this:this.extend({style:e,size:t})}havingBaseSizing(){let e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==wr.BASESIZE?["sizing","reset-size"+this.size,"size"+wr.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=(e=>{var t=5<=e?0:3<=e?1:2;if(!i[t]){var r,n=i[t]={cssEmPerMu:a.quad[t]/18};for(r in a)a.hasOwnProperty(r)&&(n[r]=a[r][t])}return i[t]})(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}wr.BASESIZE=6;var a0=wr;function i0(e){return(e="string"!=typeof e?e.unit:e)in o||e in $||"ex"===e}function wt(e,t){let r;if(e.unit in o)r=o[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)r=t.fontMetrics().cssEmPerMu;else{var n=t.style.isTight()?t.havingStyle(t.style.text()):t;if("ex"===e.unit)r=n.fontMetrics().xHeight;else{if("em"!==e.unit)throw new ft("Invalid unit: '"+e.unit+"'");r=n.fontMetrics().quad}n!==t&&(r*=n.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*r,t.maxSize)}function o0(e){return e.filter(e=>e).join(" ")}function s0(e,t,r){this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},t&&(t.style.isTight()&&this.classes.push("mtight"),e=t.getColor())&&(this.style.color=e)}function l0(e){var t,r,n=document.createElement(e);for(t in n.className=o0(this.classes),this.style)this.style.hasOwnProperty(t)&&(n.style[t]=this.style[t]);for(r in this.attributes)this.attributes.hasOwnProperty(r)&&n.setAttribute(r,this.attributes[r]);for(let e=0;e"}let o={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},$={ex:!0,em:!0,mu:!0},D=function(e){return+e.toFixed(4)+"em"},Z=/[\s"'>/=\x00-\x1f]/;class vr{constructor(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,s0.call(this,e,r,n),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return bt.contains(this.classes,e)}toNode(){return l0.call(this,"span")}toMarkup(){return h0.call(this,"span")}}class kr{constructor(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,s0.call(this,t,n),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return bt.contains(this.classes,e)}toNode(){return l0.call(this,"a")}toMarkup(){return h0.call(this,"a")}}class Sr{constructor(e,t,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return bt.contains(this.classes,e)}toNode(){var e,t=document.createElement("img");for(e in t.src=this.src,t.alt=this.alt,t.className="mord",this.style)this.style.hasOwnProperty(e)&&(t.style[e]=this.style[e]);return t}toMarkup(){let e=''+bt.escape(this.alt)+'{for(let e=0;e=n[0]&&t<=n[1])return r.name}}return null})(this.text.charCodeAt(0)))&&this.classes.push(e+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=K[this.text])}hasClass(e){return bt.contains(this.classes,e)}toNode(){let e=document.createTextNode(this.text),t=null;for(var r in 0")+a+"":a}}class Mr{constructor(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}toNode(){var e,t=document.createElementNS("http://www.w3.org/2000/svg","svg");for(e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(let e=0;e':''}}class Ar{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e,t=document.createElementNS("http://www.w3.org/2000/svg","line");for(e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);return t}toMarkup(){let e="","\\gt",!0),kt(St,zt,Rt,"∈","\\in",!0),kt(St,zt,Rt,"","\\@not"),kt(St,zt,Rt,"⊂","\\subset",!0),kt(St,zt,Rt,"⊃","\\supset",!0),kt(St,zt,Rt,"⊆","\\subseteq",!0),kt(St,zt,Rt,"⊇","\\supseteq",!0),kt(St,At,Rt,"⊈","\\nsubseteq",!0),kt(St,At,Rt,"⊉","\\nsupseteq",!0),kt(St,zt,Rt,"⊨","\\models"),kt(St,zt,Rt,"←","\\leftarrow",!0),kt(St,zt,Rt,"≤","\\le"),kt(St,zt,Rt,"≤","\\leq",!0),kt(St,zt,Rt,"<","\\lt",!0),kt(St,zt,Rt,"→","\\rightarrow",!0),kt(St,zt,Rt,"→","\\to"),kt(St,At,Rt,"≱","\\ngeq",!0),kt(St,At,Rt,"≰","\\nleq",!0),kt(St,zt,Ht," ","\\ "),kt(St,zt,Ht," ","\\space"),kt(St,zt,Ht," ","\\nobreakspace"),kt(Mt,zt,Ht," ","\\ "),kt(Mt,zt,Ht," "," "),kt(Mt,zt,Ht," ","\\space"),kt(Mt,zt,Ht," ","\\nobreakspace"),kt(St,zt,Ht,null,"\\nobreak"),kt(St,zt,Ht,null,"\\allowbreak"),kt(St,zt,p0,",",","),kt(St,zt,p0,";",";"),kt(St,At,Bt,"⊼","\\barwedge",!0),kt(St,At,Bt,"⊻","\\veebar",!0),kt(St,zt,Bt,"⊙","\\odot",!0),kt(St,zt,Bt,"⊕","\\oplus",!0),kt(St,zt,Bt,"⊗","\\otimes",!0),kt(St,zt,Ot,"∂","\\partial",!0),kt(St,zt,Bt,"⊘","\\oslash",!0),kt(St,At,Bt,"⊚","\\circledcirc",!0),kt(St,At,Bt,"⊡","\\boxdot",!0),kt(St,zt,Bt,"△","\\bigtriangleup"),kt(St,zt,Bt,"▽","\\bigtriangledown"),kt(St,zt,Bt,"†","\\dagger"),kt(St,zt,Bt,"⋄","\\diamond"),kt(St,zt,Bt,"⋆","\\star"),kt(St,zt,Bt,"◃","\\triangleleft"),kt(St,zt,Bt,"▹","\\triangleright"),kt(St,zt,It,"{","\\{"),kt(Mt,zt,Ot,"{","\\{"),kt(Mt,zt,Ot,"{","\\textbraceleft"),kt(St,zt,Ct,"}","\\}"),kt(Mt,zt,Ot,"}","\\}"),kt(Mt,zt,Ot,"}","\\textbraceright"),kt(St,zt,It,"{","\\lbrace"),kt(St,zt,Ct,"}","\\rbrace"),kt(St,zt,It,"[","\\lbrack",!0),kt(Mt,zt,Ot,"[","\\lbrack",!0),kt(St,zt,Ct,"]","\\rbrack",!0),kt(Mt,zt,Ot,"]","\\rbrack",!0),kt(St,zt,It,"(","\\lparen",!0),kt(St,zt,Ct,")","\\rparen",!0),kt(Mt,zt,Ot,"<","\\textless",!0),kt(Mt,zt,Ot,">","\\textgreater",!0),kt(St,zt,It,"⌊","\\lfloor",!0),kt(St,zt,Ct,"⌋","\\rfloor",!0),kt(St,zt,It,"⌈","\\lceil",!0),kt(St,zt,Ct,"⌉","\\rceil",!0),kt(St,zt,Ot,"\\","\\backslash"),kt(St,zt,Ot,"∣","|"),kt(St,zt,Ot,"∣","\\vert"),kt(Mt,zt,Ot,"|","\\textbar",!0),kt(St,zt,Ot,"∥","\\|"),kt(St,zt,Ot,"∥","\\Vert"),kt(Mt,zt,Ot,"∥","\\textbardbl"),kt(Mt,zt,Ot,"~","\\textasciitilde"),kt(Mt,zt,Ot,"\\","\\textbackslash"),kt(Mt,zt,Ot,"^","\\textasciicircum"),kt(St,zt,Rt,"↑","\\uparrow",!0),kt(St,zt,Rt,"⇑","\\Uparrow",!0),kt(St,zt,Rt,"↓","\\downarrow",!0),kt(St,zt,Rt,"⇓","\\Downarrow",!0),kt(St,zt,Rt,"↕","\\updownarrow",!0),kt(St,zt,Rt,"⇕","\\Updownarrow",!0),kt(St,zt,qt,"∐","\\coprod"),kt(St,zt,qt,"⋁","\\bigvee"),kt(St,zt,qt,"⋀","\\bigwedge"),kt(St,zt,qt,"⨄","\\biguplus"),kt(St,zt,qt,"⋂","\\bigcap"),kt(St,zt,qt,"⋃","\\bigcup"),kt(St,zt,qt,"∫","\\int"),kt(St,zt,qt,"∫","\\intop"),kt(St,zt,qt,"∬","\\iint"),kt(St,zt,qt,"∭","\\iiint"),kt(St,zt,qt,"∏","\\prod"),kt(St,zt,qt,"∑","\\sum"),kt(St,zt,qt,"⨂","\\bigotimes"),kt(St,zt,qt,"⨁","\\bigoplus"),kt(St,zt,qt,"⨀","\\bigodot"),kt(St,zt,qt,"∮","\\oint"),kt(St,zt,qt,"∯","\\oiint"),kt(St,zt,qt,"∰","\\oiiint"),kt(St,zt,qt,"⨆","\\bigsqcup"),kt(St,zt,qt,"∫","\\smallint"),kt(Mt,zt,c0,"…","\\textellipsis"),kt(St,zt,c0,"…","\\mathellipsis"),kt(Mt,zt,c0,"…","\\ldots",!0),kt(St,zt,c0,"…","\\ldots",!0),kt(St,zt,c0,"⋯","\\@cdots",!0),kt(St,zt,c0,"⋱","\\ddots",!0),kt(St,zt,Ot,"⋮","\\varvdots"),kt(Mt,zt,Ot,"⋮","\\varvdots"),kt(St,zt,Tt,"ˊ","\\acute"),kt(St,zt,Tt,"ˋ","\\grave"),kt(St,zt,Tt,"¨","\\ddot"),kt(St,zt,Tt,"~","\\tilde"),kt(St,zt,Tt,"ˉ","\\bar"),kt(St,zt,Tt,"˘","\\breve"),kt(St,zt,Tt,"ˇ","\\check"),kt(St,zt,Tt,"^","\\hat"),kt(St,zt,Tt,"⃗","\\vec"),kt(St,zt,Tt,"˙","\\dot"),kt(St,zt,Tt,"˚","\\mathring"),kt(St,zt,Nt,"","\\@imath"),kt(St,zt,Nt,"","\\@jmath"),kt(St,zt,Ot,"ı","ı"),kt(St,zt,Ot,"ȷ","ȷ"),kt(Mt,zt,Ot,"ı","\\i",!0),kt(Mt,zt,Ot,"ȷ","\\j",!0),kt(Mt,zt,Ot,"ß","\\ss",!0),kt(Mt,zt,Ot,"æ","\\ae",!0),kt(Mt,zt,Ot,"œ","\\oe",!0),kt(Mt,zt,Ot,"ø","\\o",!0),kt(Mt,zt,Ot,"Æ","\\AE",!0),kt(Mt,zt,Ot,"Œ","\\OE",!0),kt(Mt,zt,Ot,"Ø","\\O",!0),kt(Mt,zt,Tt,"ˊ","\\'"),kt(Mt,zt,Tt,"ˋ","\\`"),kt(Mt,zt,Tt,"ˆ","\\^"),kt(Mt,zt,Tt,"˜","\\~"),kt(Mt,zt,Tt,"ˉ","\\="),kt(Mt,zt,Tt,"˘","\\u"),kt(Mt,zt,Tt,"˙","\\."),kt(Mt,zt,Tt,"¸","\\c"),kt(Mt,zt,Tt,"˚","\\r"),kt(Mt,zt,Tt,"ˇ","\\v"),kt(Mt,zt,Tt,"¨",'\\"'),kt(Mt,zt,Tt,"˝","\\H"),kt(Mt,zt,Tt,"◯","\\textcircled");let ee={"--":!0,"---":!0,"``":!0,"''":!0};kt(Mt,zt,Ot,"–","--",!0),kt(Mt,zt,Ot,"–","\\textendash"),kt(Mt,zt,Ot,"—","---",!0),kt(Mt,zt,Ot,"—","\\textemdash"),kt(Mt,zt,Ot,"‘","`",!0),kt(Mt,zt,Ot,"‘","\\textquoteleft"),kt(Mt,zt,Ot,"’","'",!0),kt(Mt,zt,Ot,"’","\\textquoteright"),kt(Mt,zt,Ot,"“","``",!0),kt(Mt,zt,Ot,"“","\\textquotedblleft"),kt(Mt,zt,Ot,"”","''",!0),kt(Mt,zt,Ot,"”","\\textquotedblright"),kt(St,zt,Ot,"°","\\degree",!0),kt(Mt,zt,Ot,"°","\\degree"),kt(Mt,zt,Ot,"°","\\textdegree",!0),kt(St,zt,Ot,"£","\\pounds"),kt(St,zt,Ot,"£","\\mathsterling",!0),kt(Mt,zt,Ot,"£","\\pounds"),kt(Mt,zt,Ot,"£","\\textsterling",!0),kt(St,At,Ot,"✠","\\maltese"),kt(Mt,At,Ot,"✠","\\maltese");for(let e=0;e<14;e++){var d0='0123456789/@."'.charAt(e);kt(St,zt,Ot,d0,d0)}for(let e=0;e<25;e++){var u0='0123456789!@*()-=+";:?/.,'.charAt(e);kt(Mt,zt,Ot,u0,u0)}var g0="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";for(let e=0;e<52;e++){var f0=g0.charAt(e);kt(St,zt,Nt,f0,f0),kt(Mt,zt,Ot,f0,f0)}kt(St,At,Ot,"C","ℂ"),kt(Mt,At,Ot,"C","ℂ"),kt(St,At,Ot,"H","ℍ"),kt(Mt,At,Ot,"H","ℍ"),kt(St,At,Ot,"N","ℕ"),kt(Mt,At,Ot,"N","ℕ"),kt(St,At,Ot,"P","ℙ"),kt(Mt,At,Ot,"P","ℙ"),kt(St,At,Ot,"Q","ℚ"),kt(Mt,At,Ot,"Q","ℚ"),kt(St,At,Ot,"R","ℝ"),kt(Mt,At,Ot,"R","ℝ"),kt(St,At,Ot,"Z","ℤ"),kt(Mt,At,Ot,"Z","ℤ"),kt(St,zt,Nt,"h","ℎ"),kt(Mt,zt,Nt,"h","ℎ");let t="";for(let e=0;e<52;e++){var Et=g0.charAt(e);kt(St,zt,Nt,Et,t=String.fromCharCode(55349,56320+e)),kt(Mt,zt,Ot,Et,t),kt(St,zt,Nt,Et,t=String.fromCharCode(55349,56372+e)),kt(Mt,zt,Ot,Et,t),kt(St,zt,Nt,Et,t=String.fromCharCode(55349,56424+e)),kt(Mt,zt,Ot,Et,t),kt(St,zt,Nt,Et,t=String.fromCharCode(55349,56580+e)),kt(Mt,zt,Ot,Et,t),kt(St,zt,Nt,Et,t=String.fromCharCode(55349,56684+e)),kt(Mt,zt,Ot,Et,t),kt(St,zt,Nt,Et,t=String.fromCharCode(55349,56736+e)),kt(Mt,zt,Ot,Et,t),kt(St,zt,Nt,Et,t=String.fromCharCode(55349,56788+e)),kt(Mt,zt,Ot,Et,t),kt(St,zt,Nt,Et,t=String.fromCharCode(55349,56840+e)),kt(Mt,zt,Ot,Et,t),kt(St,zt,Nt,Et,t=String.fromCharCode(55349,56944+e)),kt(Mt,zt,Ot,Et,t),e<26&&(kt(St,zt,Nt,Et,t=String.fromCharCode(55349,56632+e)),kt(Mt,zt,Ot,Et,t),kt(St,zt,Nt,Et,t=String.fromCharCode(55349,56476+e)),kt(Mt,zt,Ot,Et,t))}kt(St,zt,Nt,"k",t=String.fromCharCode(55349,56668)),kt(Mt,zt,Ot,"k",t);for(let e=0;e<10;e++){var b0=e.toString();kt(St,zt,Nt,b0,t=String.fromCharCode(55349,57294+e)),kt(Mt,zt,Ot,b0,t),kt(St,zt,Nt,b0,t=String.fromCharCode(55349,57314+e)),kt(Mt,zt,Ot,b0,t),kt(St,zt,Nt,b0,t=String.fromCharCode(55349,57324+e)),kt(Mt,zt,Ot,b0,t),kt(St,zt,Nt,b0,t=String.fromCharCode(55349,57334+e)),kt(Mt,zt,Ot,b0,t)}for(let e=0;e<3;e++){var y0="ÐÞþ".charAt(e);kt(St,zt,Nt,y0,y0),kt(Mt,zt,Ot,y0,y0)}function x0(e,t,r){return{value:e=vt[r][e]&&vt[r][e].replace?vt[r][e].replace:e,metrics:r0(e,t,r)}}function Lt(t,e,r,n,a){let i=x0(t,e,r),o=i.metrics,s;if(t=i.value,o){let e=o.italic;("text"===r||n&&"mathit"===n.font)&&(e=0),s=new jt(t,o.height,o.depth,e,o.skew,o.width,a)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+t+"' in style '"+e+"' and mode '"+r+"'"),s=new jt(t,0,0,0,0,0,a);return n&&(s.maxFontSize=n.sizeMultiplier,n.style.isTight()&&s.classes.push("mtight"),e=n.getColor())&&(s.style.color=e),s}function w0(t){let r=0,n=0,a=0;for(let e=0;er&&(r=i.height),i.depth>n&&(n=i.depth),i.maxFontSize>a&&(a=i.maxFontSize)}t.height=r,t.depth=n,t.maxFontSize=a}function Dt(e,t,r,n){return w0(e=new vr(e,t,r,n)),e}function v0(e){return w0(e=new xr(e)),e}function k0(e,t,r){let n="";switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return n+"-"+("textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")}let c=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathnormal","textit","Math-Italic"],["mathnormal","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],te=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],re=(e,t,r,n)=>new vr(e,t,r,n),ne={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},ae={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]};var Pt={fontMap:ne,makeSymbol:Lt,mathsym:function(e,t,r,n){return void 0===n&&(n=[]),"boldsymbol"===r.font&&x0(e,"Main-Bold",t).metrics?Lt(e,"Main-Bold",t,r,n.concat(["mathbf"])):"\\"===e||"main"===vt[t][e].font?Lt(e,"Main-Regular",t,r,n):Lt(e,"AMS-Regular",t,r,n.concat(["amsrm"]))},makeSpan:Dt,makeSvgSpan:re,makeLineSpan:function(e,t,r){return(e=Dt([e],[],t)).height=Math.max(r||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),e.style.borderBottomWidth=D(e.height),e.maxFontSize=1,e},makeAnchor:function(e,t,r,n){return w0(e=new kr(e,t,r,n)),e},makeFragment:v0,wrapFragment:function(e,t){return e instanceof xr?Dt([],[e],t):e},makeVList:function(e,t){let{children:r,depth:n}=(a=>{if("individualShift"===a.positionType){let t=a.children,r=[t[0]],e=-t[0].shift-t[0].elem.depth,n=e;for(let e=1;e{var r,n=1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536,t="math"===t?0:1;if(119808<=n&&n<120484)return r=Math.floor((n-119808)/26),[c[r][2],c[r][t]];if(120782<=n&&n<=120831)return r=Math.floor((n-120782)/10),[te[r][2],te[r][t]];if(120485==n||120486==n)return[c[0][2],c[0][t]];if(120486{var r=Dt(["mspace"],[],t),e=wt(e,t);return r.style.marginRight=D(e),r},staticSvg:function(e,t){var[e,r,n]=ae[e],e=new zr(e),e=new Mr([e],{width:D(r),height:D(n),style:"width:"+D(r),viewBox:"0 0 "+1e3*r+" "+1e3*n,preserveAspectRatio:"xMinYMin"});return(e=re(["overlay"],[e],t)).height=n,e.style.height=D(n),e.style.width=D(r),e},svgData:ae,tryCombineChars:t=>{for(let e=0;e{if(o0(e.classes)!==o0(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;if(1===e.classes.length){var r=e.classes[0];if("mbin"===r||"mord"===r)return!1}for(var n in e.style)if(e.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;for(var a in t.style)if(t.style.hasOwnProperty(a)&&e.style[a]!==t.style[a])return!1;return!0})(r,n)&&(r.text+=n.text,r.height=Math.max(r.height,n.height),r.depth=Math.max(r.depth,n.depth),r.italic=n.italic,t.splice(e+1,1),e--)}return t}};let h={number:3,unit:"mu"},m={number:4,unit:"mu"},p={number:5,unit:"mu"},ie={mord:{mop:h,mbin:m,mrel:p,minner:h},mop:{mord:h,mop:h,mrel:p,minner:h},mbin:{mord:m,mop:m,mopen:m,minner:m},mrel:{mord:p,mop:p,mopen:p,minner:p},mopen:{},mclose:{mop:h,mbin:m,mrel:p,minner:h},mpunct:{mord:h,mop:h,mrel:p,mopen:h,mclose:h,mpunct:h,minner:h},minner:{mord:h,mop:h,mbin:m,mrel:p,mopen:h,mpunct:h,minner:h}},oe={mord:{mop:h},mop:{mord:h,mop:h},mbin:{},mrel:{},mopen:{},mclose:{mop:h},mpunct:{},minner:{mop:h}},se={},d={},u={};function Vt(e){var{type:e,names:t,props:r,handler:n,htmlBuilder:a,mathmlBuilder:i}=e,o={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:void 0===r.allowedInMath||r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:n};for(let e=0;e{var r=t.classes[0],n=e.classes[0];"mbin"===r&&bt.contains(he,n)?t.classes[0]="mord":"mbin"===n&&bt.contains(le,r)&&(e.classes[0]="mord")},{node:s},a,e),f(i,(e,t)=>{var t=y(t),r=y(e);if(e=t&&r?(e.hasClass("mtight")?oe:ie)[t][r]:null)return Pt.makeGlue(e,n)},{node:s},a,e)}return i}function z0(e,t){return e=["nulldelimiter"].concat(e.baseSizingClasses()),g(t.concat(e))}let g=Pt.makeSpan,le=["leftmost","mbin","mopen","mrel","mop","mpunct"],he=["rightmost","mrel","mclose","mpunct"],me={display:yt.DISPLAY,text:yt.TEXT,script:yt.SCRIPT,scriptscript:yt.SCRIPTSCRIPT},ce={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},f=function(r,e,t,n,a){n&&r.push(n);let i=0;for(;ie=>{r.splice(t+1,0,e),i++})(i))}n&&r.pop()},pe=function(e){return e instanceof xr||e instanceof kr||e instanceof vr&&e.hasClass("enclosing")?e:null},b=function(e,t){var r=pe(e);if(r&&(r=r.children).length){if("right"===t)return b(r[r.length-1],"right");if("left"===t)return b(r[0],"left")}return e},y=function(e,t){return e&&(t&&(e=b(e,t)),ce[e.classes[0]])||null},P=function(t,r,n){if(!t)return g();if(d[t.type]){let e=d[t.type](t,r);return n&&r.size!==n.size&&(e=g(r.sizingClasses(n),[e],r),r=r.sizeMultiplier/n.sizeMultiplier,e.height*=r,e.depth*=r),e}throw new ft("Got group of unknown type: '"+t.type+"'")};function A0(e,t){return e=g(["base"],e,t),(t=g(["strut"])).style.height=D(e.height+e.depth),e.depth&&(t.style.verticalAlign=D(-e.depth)),e.children.unshift(t),e}function T0(e,r){let t=null,n=(1===e.length&&"tag"===e[0].type&&(t=e[0].tag,e=e[0].body),Gt(e,r,"root")),a,i=(2===n.length&&n[1].hasClass("tag")&&(a=n.pop()),[]),o,s=[];for(let t=0;t"}toText(){return this.children.map(e=>e.toText()).join("")}}class $t{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return bt.escape(this.toText())}toText(){return this.text}}var Ut={MathNode:_t,TextNode:$t,SpaceNode:class{constructor(e){this.width=void 0,this.character=void 0,this.width=e,this.character=.05555<=e&&e<=.05556?" ":.1666<=e&&e<=.1667?" ":.2222<=e&&e<=.2223?" ":.2777<=e&&e<=.2778?"  ":-.05556<=e&&e<=-.05555?" ⁣":-.1667<=e&&e<=-.1666?" ⁣":-.2223<=e&&e<=-.2222?" ⁣":-.2778<=e&&e<=-.2777?" ⁣":null}toNode(){var e;return this.character?document.createTextNode(this.character):((e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace")).setAttribute("width",D(this.width)),e)}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character||" "}},newDocumentFragment:B0};function Yt(e,t,r){return!vt[t][e]||!vt[t][e].replace||55349===e.charCodeAt(0)||ee.hasOwnProperty(e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.slice(4,6)||r.font&&"tt"===r.font.slice(4,6))||(e=vt[t][e].replace),new Ut.TextNode(e)}function C0(e){return 1===e.length?e[0]:new Ut.MathNode("mrow",e)}function N0(e,t){var r;return"texttt"===t.fontFamily?"monospace":"textsf"===t.fontFamily?"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif":"textit"===t.fontShape&&"textbf"===t.fontWeight?"bold-italic":"textit"===t.fontShape?"italic":"textbf"===t.fontWeight?"bold":(t=t.font)&&"mathnormal"!==t?(r=e.mode,"mathit"===t?"italic":"boldsymbol"===t?"textord"===e.type?"bold":"bold-italic":"mathbf"===t?"bold":"mathbb"===t?"double-struck":"mathsfit"===t?"sans-serif-italic":"mathfrak"===t?"fraktur":"mathscr"===t||"mathcal"===t?"script":"mathsf"===t?"sans-serif":"mathtt"===t?"monospace":!bt.contains(["\\imath","\\jmath"],e=e.text)&&r0(e=vt[r][e]&&vt[r][e].replace?vt[r][e].replace:e,Pt.fontMap[t].fontName,r)?Pt.fontMap[t].variant:null):null}function q0(e){var t;return e&&("mi"===e.type&&1===e.children.length?(t=e.children[0])instanceof $t&&"."===t.text:"mo"===e.type&&1===e.children.length&&"true"===e.getAttribute("separator")&&"0em"===e.getAttribute("lspace")&&"0em"===e.getAttribute("rspace")&&(t=e.children[0])instanceof $t&&","===t.text)}function I0(e,t,r){return C0(x(e,t,r))}let x=function(t,r,e){var n;if(1===t.length)return n=w(t[0],r),e&&n instanceof _t&&"mo"===n.type&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n];let a=[],i;for(let e=0;e{let h=4e5,m=i.label.slice(1);if(bt.contains(["widehat","widecheck","widetilde","utilde"],m)){var n,a="ordgroup"===(a=i.base).type?a.body.length:1;let e,t,r;return t=5{let e,o,t,s=(a&&"supsub"===a.type?(o=Xt(a.base,"accent"),e=o.base,a.base=e,t=(e=>{if(e instanceof vr)return e;throw new Error("Expected span but got "+String(e)+".")})(P(a,i)),a.base=o):(o=Xt(a,"accent"),e=o.base),a=P(e,i.havingCrampedStyle()),0);o.isShifty&&bt.isCharacterBox(e)&&(l=bt.getBaseElem(e),s=m0(P(l,i.havingCrampedStyle())).skew);var l="\\c"===o.label;let h,m=l?a.height+a.depth:Math.min(a.height,i.fontMetrics().xHeight);if(o.isStretchy)h=O0(o,i),h=Pt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:h,wrapperClasses:["svg-align"],wrapperStyle:0{var r=e.isStretchy?H0(e.label):new Ut.MathNode("mo",[Yt(e.label,e.mode)]);return(e=new Ut.MathNode("mover",[w(e.base,t),r])).setAttribute("accent","true"),e},ye=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|")),k=(Vt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{var t=M0(t[0]),r=!ye.test(e.funcName),n=!r||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:r,isShifty:n,base:t}},htmlBuilder:v,mathmlBuilder:be}),Vt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{t=t[0];let r=e.parser.mode;return"math"===r&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),r="text"),{type:"accent",mode:r,label:e.funcName,isStretchy:!1,isShifty:!0,base:t}},htmlBuilder:v,mathmlBuilder:be}),Vt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{var{parser:e,funcName:r}=e,t=t[0];return{type:"accentUnder",mode:e.mode,label:r,base:t}},htmlBuilder:(e,t)=>{var r=P(e.base,t),n=O0(e,t),n=Pt.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:"\\utilde"===e.label?.12:0},{type:"elem",elem:r}]},t);return Pt.makeSpan(["mord","accentunder"],[n],t)},mathmlBuilder:(e,t)=>{var r=H0(e.label);return(e=new Ut.MathNode("munder",[w(e.base,t),r])).setAttribute("accentunder","true"),e}}),e=>((e=new Ut.MathNode("mpadded",e?[e]:[])).setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e)),xe=(Vt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:e,funcName:n}=e;return{type:"xArrow",mode:e.mode,label:n,body:t[0],below:r[0]}},htmlBuilder(e,t){var r=t.style,n=t.havingStyle(r.sup()),a=Pt.wrapFragment(P(e.body,n,t),t),i="\\x"===e.label.slice(0,2)?"x":"cd";let o;a.classes.push(i+"-arrow-pad"),e.below&&(n=t.havingStyle(r.sub()),(o=Pt.wrapFragment(P(e.below,n,t),t)).classes.push(i+"-arrow-pad")),r=O0(e,t),n=-t.fontMetrics().axisHeight+.5*r.height;let s,l=-t.fontMetrics().axisHeight-.5*r.height-.111;return(.25"atom"!==(e="ordgroup"===e.type&&e.body.length?e.body[0]:e).type||"bin"!==e.family&&"rel"!==e.family?"mord":"m"+e.family,we=(Vt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){return{type:"mclass",mode:(e=e.parser).mode,mclass:S(t[0]),body:Ft(t[1]),isCharacterBox:bt.isCharacterBox(t[1])}}}),Vt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var{parser:e,funcName:r}=e,n=t[1],t=t[0],a="\\stackrel"!==r?S(n):"mrel",n={type:"op",mode:n.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==r,body:Ft(n)},n={type:"supsub",mode:t.mode,base:n,sup:"\\underset"===r?null:t,sub:"\\underset"===r?t:null};return{type:"mclass",mode:e.mode,mclass:a,body:[n],isCharacterBox:bt.isCharacterBox(n)}},htmlBuilder:D0,mathmlBuilder:P0}),Vt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){return{type:"pmb",mode:(e=e.parser).mode,mclass:S(t[0]),body:Ft(t[0])}},htmlBuilder(e,t){var r=Gt(e.body,t,!0);return(e=Pt.makeSpan([e.mclass],r,t)).style.textShadow="0.02em 0.01em 0.04px",e},mathmlBuilder(e,t){return e=x(e.body,t),(t=new Ut.MathNode("mstyle",e)).setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),t}}),{">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"}),ve=e=>"textord"===e.type&&"@"===e.text;function V0(e,t,r){if(r=r0(vt.math[e]&&vt.math[e].replace||e,t,r))return r;throw new Error("Unsupported symbol "+e+" and font size "+t+".")}function F0(e,t,r,n){return t=r.havingBaseStyle(t),n=Pt.makeSpan(n.concat(t.sizingClasses(r)),[e],r),e=t.sizeMultiplier/r.sizeMultiplier,n.height*=e,n.depth*=e,n.maxFontSize=t.sizeMultiplier,n}function G0(e,t,r){r=t.havingBaseStyle(r),r=(1-t.sizeMultiplier/r.sizeMultiplier)*t.fontMetrics().axisHeight,e.classes.push("delimcenter"),e.style.top=D(r),e.height-=r,e.depth+=r}function U0(e,t,r,n,a,i){return e=Pt.makeSymbol(e,"Size"+t+"-Regular",a,n),a=F0(Pt.makeSpan(["delimsizing","size"+t],[e],n),yt.TEXT,n,i),r&&G0(a,n,yt.TEXT),a}function Y0(e,t,r){return{type:"elem",elem:Pt.makeSpan(["delimsizinginner","Size1-Regular"===t?"delim-size1":"delim-size4"],[Pt.makeSpan([],[Pt.makeSymbol(e,t,r)])])}}function X0(e,t,r){var n=(xt["Size4-Regular"][e.charCodeAt(0)]?xt["Size4-Regular"]:xt["Size1-Regular"])[e.charCodeAt(0)][4],e=new zr("inner",((e,t)=>{switch(e){case"⎜":return"M291 0 H417 V"+t+" H291z M291 0 H417 V"+t+" H291z";case"∣":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z";case"∥":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145zM367 0 H410 V"+t+" H367z M367 0 H410 V"+t+" H367z";case"⎟":return"M457 0 H583 V"+t+" H457z M457 0 H583 V"+t+" H457z";case"⎢":return"M319 0 H403 V"+t+" H319z M319 0 H403 V"+t+" H319z";case"⎥":return"M263 0 H347 V"+t+" H263z M263 0 H347 V"+t+" H263z";case"⎪":return"M384 0 H504 V"+t+" H384z M384 0 H504 V"+t+" H384z";case"⏐":return"M312 0 H355 V"+t+" H312z M312 0 H355 V"+t+" H312z";case"‖":return"M257 0 H300 V"+t+" H257z M257 0 H300 V"+t+" H257zM478 0 H521 V"+t+" H478z M478 0 H521 V"+t+" H478z";default:return""}})(e,Math.round(1e3*t))),e=new Mr([e],{width:D(n),height:D(t),style:"width:"+D(n),viewBox:"0 0 "+1e3*n+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"});return(e=Pt.makeSvgSpan([],[e],r)).height=t,e.style.height=D(t),e.style.width=D(n),{type:"elem",elem:e}}function W0(e,t,r,n,a,i){let o,s,l,h,m="",c=0,p=(o=l=h=e,s=null,"Size1-Regular");"\\uparrow"===e?l=h="⏐":"\\Uparrow"===e?l=h="‖":"\\downarrow"===e?o=l="⏐":"\\Downarrow"===e?o=l="‖":"\\updownarrow"===e?(o="\\uparrow",l="⏐",h="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",l="‖",h="\\Downarrow"):bt.contains(Me,e)?(l="∣",m="vert",c=333):bt.contains(ze,e)?(l="∥",m="doublevert",c=556):"["===e||"\\lbrack"===e?(o="⎡",l="⎢",h="⎣",p="Size4-Regular",m="lbrack",c=667):"]"===e||"\\rbrack"===e?(o="⎤",l="⎥",h="⎦",p="Size4-Regular",m="rbrack",c=667):"\\lfloor"===e||"⌊"===e?(l=o="⎢",h="⎣",p="Size4-Regular",m="lfloor",c=667):"\\lceil"===e||"⌈"===e?(o="⎡",l=h="⎢",p="Size4-Regular",m="lceil",c=667):"\\rfloor"===e||"⌋"===e?(l=o="⎥",h="⎦",p="Size4-Regular",m="rfloor",c=667):"\\rceil"===e||"⌉"===e?(o="⎤",l=h="⎥",p="Size4-Regular",m="rceil",c=667):"("===e||"\\lparen"===e?(o="⎛",l="⎜",h="⎝",p="Size4-Regular",m="lparen",c=875):")"===e||"\\rparen"===e?(o="⎞",l="⎟",h="⎠",p="Size4-Regular",m="rparen",c=875):"\\{"===e||"\\lbrace"===e?(o="⎧",s="⎨",h="⎩",l="⎪",p="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="⎫",s="⎬",h="⎭",l="⎪",p="Size4-Regular"):"\\lgroup"===e||"⟮"===e?(o="⎧",h="⎩",l="⎪",p="Size4-Regular"):"\\rgroup"===e||"⟯"===e?(o="⎫",h="⎭",l="⎪",p="Size4-Regular"):"\\lmoustache"===e||"⎰"===e?(o="⎧",h="⎭",l="⎪",p="Size4-Regular"):"\\rmoustache"!==e&&"⎱"!==e||(o="⎫",h="⎩",l="⎪",p="Size4-Regular");var d=(e=V0(o,p,a)).height+e.depth,e=(e=V0(l,p,a)).height+e.depth,u=(u=V0(h,p,a)).height+u.depth;let g=0,f=1;null!==s&&(b=V0(s,p,a),g=b.height+b.depth,f=2);var b=(b=d+u+g)+Math.max(0,Math.ceil((t-b)/(f*e)))*f*e;let y=n.fontMetrics().axisHeight;r&&(y*=n.sizeMultiplier);var x,w,v,k,t=b/2-y,S=[];return 0{switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v1759 h347 v-84\nH403z M403 1759 V0 H319 V1759 v"+t+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v1759 H0 v84 H347z\nM347 1759 V0 H263 V1759 v"+t+" v1759 h84z";case"vert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z";case"doublevert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z\nM367 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v"+t+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+t+" v1715 h263 v84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+t+" v1799 H0 v-84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v602 h84z\nM403 1759 V0 H319 V1759 v"+t+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v602 h84z\nM347 1759 V0 h-84 V1759 v"+t+" v602 h84z";case"lparen":return"M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\n-36,557 l0,"+(t+84)+"c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\nl0,-"+(t+92)+"c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z";case"rparen":return"M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,"+(t+9)+"\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\nl0,-"+(t+144)+"c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z";default:throw new Error("Unknown stretchy delimiter.")}})(m,Math.round(1e3*v)),v=new zr(m,v),x=(c/1e3).toFixed(3)+"em",w=(k/1e3).toFixed(3)+"em",v=new Mr([v],{width:x,height:w,viewBox:"0 0 "+c+" "+k}),(v=Pt.makeSvgSpan([],[v],n)).height=k/1e3,v.style.width=x,v.style.height=w,S.push({type:"elem",elem:v})):(S.push(Y0(h,p,a)),S.push(z),null===s?S.push(X0(l,b-d-u+.016,n)):(k=(b-d-u-g)/2+.016,S.push(X0(l,k,n)),S.push(z),S.push(Y0(s,p,a)),S.push(z),S.push(X0(l,k,n))),S.push(z),S.push(Y0(o,p,a))),e=n.havingBaseStyle(yt.TEXT),r=Pt.makeVList({positionType:"bottom",positionData:t,children:S},e),F0(Pt.makeSpan(["delimsizing","mult"],[r],e),yt.TEXT,n,i)}function j0(o,e,t,r,n){return r=((e,t)=>{e*=1e3;let r="";switch(o){case"sqrtMain":r="M95,"+(622+(i=e)+80)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+i/2.075+" -"+i+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+i)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+i)+" 80h400000v"+(40+i)+"h-400000z";break;case"sqrtSize1":r="M263,"+(601+(i=e)+80)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+i/2.084+" -"+i+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+i)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+i)+" 80h400000v"+(40+i)+"h-400000z";break;case"sqrtSize2":r="M983 "+(10+(a=e)+80)+"\nl"+a/3.13+" -"+a+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+a)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+a)+" 80h400000v"+(40+a)+"h-400000z";break;case"sqrtSize3":r="M424,"+(2398+(a=e)+80)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+a/4.223+" -"+a+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+a)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+a)+" 80\nh400000v"+(40+a)+"h-400000z";break;case"sqrtSize4":r="M473,"+(2713+(n=e)+80)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+n/5.298+" -"+n+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+n)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+n)+" 80h400000v"+(40+n)+"H1017.7z";break;case"sqrtTall":r="M702 "+(80+(n=e))+"H400000"+(40+n)+"\nH742v"+(t-54-80-n)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 80H400000v"+(40+n)+"H742z"}var n,a,i;return r})(r,t),r=new zr(o,r),r=new Mr([r],{width:"400em",height:D(e),viewBox:"0 0 400000 "+t,preserveAspectRatio:"xMinYMin slice"}),Pt.makeSvgSpan(["hide-tail"],[r],n)}function _0(n,a,i,o){for(let r=Math.min(2,3-o.style.size);r{if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")})(i[r]),"math"),t=e.height+e.depth;if("small"===i[r].type&&(t*=o.havingBaseStyle(i[r].style).sizeMultiplier),t>a)return i[r]}return i[i.length-1]}function $0(e,t,r,n,a,i){var o,s,l,h,m,c;return"<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),"small"===(c=_0(e,t,bt.contains(Be,e)?Ce:bt.contains(Ae,e)?qe:Ne,n)).type?(o=e,s=c.style,l=r,m=i,o=F0(Pt.makeSymbol(o,"Main-Regular",a,h=n),s,h,m),l&&G0(o,h,s),o):"large"===c.type?U0(e,c.size,r,n,a,i):W0(e,t,r,n,a,i)}Vt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:e,funcName:r}=e;return{type:"cdlabel",mode:e.mode,side:r.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup());return(r=Pt.wrapFragment(P(e.label,r,t),t)).classes.push("cd-label-"+e.side),r.style.bottom=D(.8-r.depth),r.height=0,r.depth=0,r},mathmlBuilder(e,t){let r=new Ut.MathNode("mrow",[w(e.label,t)]);return(r=new Ut.MathNode("mpadded",[r])).setAttribute("width","0"),"left"===e.side&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),(r=new Ut.MathNode("mstyle",[r])).setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}}),Vt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){return{type:"cdlabelparent",mode:(e=e.parser).mode,fragment:t[0]}},htmlBuilder(e,t){return(e=Pt.wrapFragment(P(e.fragment,t),t)).classes.push("cd-vert-arrow"),e},mathmlBuilder(e,t){return new Ut.MathNode("mrow",[w(e.fragment,t)])}}),Vt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){var e=e.parser,r=Xt(t[0],"ordgroup").body;let n="";for(let e=0;e>10),56320+(1023&t))),{type:"textord",mode:e.mode,text:t}}}),Vt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var e=e.parser,r=Xt(t[0],"color-token").color,t=t[1];return{type:"color",mode:e.mode,color:r,body:Ft(t)}},htmlBuilder:Ht=(e,t)=>(t=Gt(e.body,t.withColor(e.color),!1),Pt.makeFragment(t)),mathmlBuilder:p0=(e,t)=>(t=x(e.body,t.withColor(e.color)),(t=new Ut.MathNode("mstyle",t)).setAttribute("mathcolor",e.color),t)}),Vt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:e,breakOnTokenText:r}=e,t=Xt(t[0],"color-token").color,r=(e.gullet.macros.set("\\current@color",t),e.parseExpression(!0,r));return{type:"color",mode:e.mode,color:t,body:r}},htmlBuilder:Ht,mathmlBuilder:p0}),Vt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var n="["===(e=e.parser).gullet.future().text?e.parseSizeGroup(!0):null,a=!e.settings.displayMode||!e.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:e.mode,newLine:a,size:n&&Xt(n,"size").value}},htmlBuilder(e,t){var r=Pt.makeSpan(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size)&&(r.style.marginTop=D(wt(e.size,t))),r},mathmlBuilder(e,t){var r=new Ut.MathNode("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size)&&r.setAttribute("height",D(wt(e.size,t))),r}});let M={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},ke=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new ft("Expected a control sequence",e);return t},Se=(e,t,r,n)=>{let a=e.gullet.macros.get(r.text);null==a&&(r.noexpand=!0,a={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,a,n)},z=(Vt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:e,funcName:t}=e,r=(e.consumeSpaces(),e.fetch());if(M[r.text])return"\\global"!==t&&"\\\\globallong"!==t||(r.text=M[r.text]),Xt(e.parseFunction(),"internal");throw new ft("Invalid token after macro prefix",r)}}),Vt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){let{parser:t,funcName:r}=e,n=t.gullet.popToken();if(e=n.text,/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new ft("Expected a control sequence",n);let a,i=0;for(var o=[[]];"{"!==t.gullet.future().text;)if("#"===(n=t.gullet.popToken()).text){if("{"===t.gullet.future().text){a=t.gullet.future(),o[i].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new ft('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==i+1)throw new ft('Argument number "'+n.text+'" out of order');i++,o.push([])}else{if("EOF"===n.text)throw new ft("Expected a macro definition");o[i].push(n.text)}let s=t.gullet.consumeArg().tokens;return a&&s.unshift(a),"\\edef"!==r&&"\\xdef"!==r||(s=t.gullet.expandTokens(s)).reverse(),t.gullet.macros.set(e,{tokens:s,numArgs:i,delimiters:o},r===M[r]),{type:"internal",mode:t.mode}}}),Vt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:e,funcName:t}=e,r=ke(e.gullet.popToken()),n=(e.gullet.consumeSpaces(),(e=>{let t=e.gullet.popToken();return t="="===t.text&&" "===(t=e.gullet.popToken()).text?e.gullet.popToken():t})(e));return Se(e,r,n,"\\\\globallet"===t),{type:"internal",mode:e.mode}}}),Vt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:e,funcName:t}=e,r=ke(e.gullet.popToken()),n=e.gullet.popToken(),a=e.gullet.popToken();return Se(e,r,a,"\\\\globalfuture"===t),e.gullet.pushToken(a),e.gullet.pushToken(n),{type:"internal",mode:e.mode}}}),{type:"kern",size:-.008}),Me=["|","\\lvert","\\rvert","\\vert"],ze=["\\|","\\lVert","\\rVert","\\Vert"],Ae=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],Te=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],Be=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],A=[0,1.2,1.8,2.4,3],Ce=[{type:"small",style:yt.SCRIPTSCRIPT},{type:"small",style:yt.SCRIPT},{type:"small",style:yt.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],Ne=[{type:"small",style:yt.SCRIPTSCRIPT},{type:"small",style:yt.SCRIPT},{type:"small",style:yt.TEXT},{type:"stack"}],qe=[{type:"small",style:yt.SCRIPTSCRIPT},{type:"small",style:yt.SCRIPT},{type:"small",style:yt.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}];var Z0={sqrtImage:function(e,t){let r=t.havingBaseSizing(),n=_0("\\surd",e*r.sizeMultiplier,qe,r),a=r.sizeMultiplier;r=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness);let i,o,s=0,l=0,h=0;return o="small"===n.type?(h=1e3+1e3*r+80,e<1?a=1:e<1.4&&(a=.7),s=(1+r+.08)/a,l=(1+r)/a,(i=j0("sqrtMain",s,h,r,t)).style.minWidth="0.853em",.833/a):"large"===n.type?(h=1080*A[n.size],l=(A[n.size]+r)/a,s=(A[n.size]+r+.08)/a,(i=j0("sqrtSize"+n.size,s,h,r,t)).style.minWidth="1.02em",1/a):(s=e+r+.08,l=e+r,h=Math.floor(1e3*e+r)+80,(i=j0("sqrtTall",s,h,r,t)).style.minWidth="0.742em",1.056),i.height=l,i.style.height=D(s),{span:i,advanceWidth:o,ruleWidth:(t.fontMetrics().sqrtRuleThickness+r)*a}},sizedDelim:function(e,t,r,n,a){if("<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),bt.contains(Ae,e)||bt.contains(Be,e))return U0(e,t,!1,r,n,a);if(bt.contains(Te,e))return W0(e,A[t],!1,r,n,a);throw new ft("Illegal delimiter: '"+e+"'")},sizeToMaxHeight:A,customSizedDelim:$0,leftRightDelim:function(e,t,r,n,a,i){var o=n.fontMetrics().axisHeight*n.sizeMultiplier,s=5/n.fontMetrics().ptPerEm,t=Math.max(t-o,r+o);return $0(e,r=Math.max(t/500*901,2*t-s),!0,n,a,i)}};let Ie={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Re=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function K0(e,t){var r=L0(e);if(r&&bt.contains(Re,r.text))return r;throw new ft(r?"Invalid delimiter '"+r.text+"' after '"+t.funcName+"'":"Invalid delimiter type '"+e.type+"'",e)}function J0(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Vt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>(t=K0(t[0],e),{type:"delimsizing",mode:e.parser.mode,size:Ie[e.funcName].size,mclass:Ie[e.funcName].mclass,delim:t.text}),htmlBuilder:(e,t)=>"."===e.delim?Pt.makeSpan([e.mclass]):Z0.sizedDelim(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[],t=("."!==e.delim&&t.push(Yt(e.delim,e.mode)),new Ut.MathNode("mo",t)),e=("mopen"===e.mclass||"mclose"===e.mclass?t.setAttribute("fence","true"):t.setAttribute("fence","false"),t.setAttribute("stretchy","true"),D(Z0.sizeToMaxHeight[e.size]));return t.setAttribute("minsize",e),t.setAttribute("maxsize",e),t}}),Vt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new ft("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:K0(t[0],e).text,color:r}}}),Vt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var t=K0(t[0],e),r=(++(e=e.parser).leftrightDepth,e.parseExpression(!1)),n=(--e.leftrightDepth,e.expect("\\right",!1),Xt(e.parseFunction(),"leftright-right"));return{type:"leftright",mode:e.mode,body:r,left:t.text,right:n.delim,rightColor:n.color}},htmlBuilder:(t,e)=>{J0(t);let r=Gt(t.body,e,!0,["mopen","mclose"]),n,a,i=0,o=0,s=!1;for(let e=0;e{J0(e);var r,t=x(e.body,t);return"."!==e.left&&((r=new Ut.MathNode("mo",[Yt(e.left,e.mode)])).setAttribute("fence","true"),t.unshift(r)),"."!==e.right&&((r=new Ut.MathNode("mo",[Yt(e.right,e.mode)])).setAttribute("fence","true"),e.rightColor&&r.setAttribute("mathcolor",e.rightColor),t.push(r)),C0(t)}}),Vt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{if(t=K0(t[0],e),e.parser.leftrightDepth)return{type:"middle",mode:e.parser.mode,delim:t.text};throw new ft("\\middle without preceding \\left",t)},htmlBuilder:(e,t)=>{let r;return"."===e.delim?r=z0(t,[]):(r=Z0.sizedDelim(e.delim,1,t,e.mode,[]),e={delim:e.delim,options:t},r.isMiddle=e),r},mathmlBuilder:(e,t)=>(e="\\vert"===e.delim||"|"===e.delim?Yt("|","text"):Yt(e.delim,e.mode),(e=new Ut.MathNode("mo",[e])).setAttribute("fence","true"),e.setAttribute("lspace","0.05em"),e.setAttribute("rspace","0.05em"),e)}),Vt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(e,t,r){var{parser:e,funcName:n}=e,a=Xt(t[0],"color-token").color;return{type:"enclose",mode:e.mode,label:n,backgroundColor:a,body:t[1]}},htmlBuilder:Bt=(r,n)=>{let a=Pt.wrapFragment(P(r.body,n),n),i=r.label.slice(1),s,e=n.sizeMultiplier,l=0,h=bt.isCharacterBox(r.body);if("sout"===i)(s=Pt.makeSpan(["stretchy","sout"])).height=n.fontMetrics().defaultRuleThickness/e,l=-.5*n.fontMetrics().xHeight;else if("phase"===i){var t=wt({number:.6,unit:"pt"},n),o=wt({number:.35,unit:"ex"},n),m=(e/=n.havingBaseSizing().sizeMultiplier,a.height+a.depth+t+o),c=(a.style.paddingLeft=D(m/2+t),Math.floor(1e3*m*e)),p="M400000 "+c+" H0 L"+c/2+" 0 l65 45 L145 "+(c-80)+" H400000z",p=new Mr([new zr("phase",p)],{width:"400em",height:D(c/1e3),viewBox:"0 0 400000 "+c,preserveAspectRatio:"xMinYMin slice"});(s=Pt.makeSvgSpan(["hide-tail"],[p],n)).style.height=D(m),l=a.depth+t+o}else{/cancel/.test(i)?h||a.classes.push("cancel-pad"):"angl"===i?a.classes.push("anglpad"):a.classes.push("boxpad");let e=0,o,t=0;o=/box/.test(i)?(t=Math.max(n.fontMetrics().fboxrule,n.minRuleThickness),e=n.fontMetrics().fboxsep+("colorbox"===i?0:t)):"angl"===i?(t=Math.max(n.fontMetrics().defaultRuleThickness,n.minRuleThickness),e=4*t,Math.max(0,.25-a.depth)):e=h?.2:0,s=((e,t,r,n,a)=>{let i;return n=e.height+e.depth+r+o,/fbox|color|angl/.test(t)?(i=Pt.makeSpan(["stretchy",t],[],a),"fbox"===t&&(e=a.color&&a.getColor())&&(i.style.borderColor=e)):(r=[],/^[bx]cancel$/.test(t)&&r.push(new Ar({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&r.push(new Ar({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"})),e=new Mr(r,{width:"100%",height:D(n)}),i=Pt.makeSvgSpan([],[e],a)),i.height=n,i.style.height=D(n),i})(a,i,e,o,n),/fbox|boxed|fcolorbox/.test(i)?(s.style.borderStyle="solid",s.style.borderWidth=D(t)):"angl"===i&&.049!==t&&(s.style.borderTopWidth=D(t),s.style.borderRightWidth=D(t)),l=a.depth+o,r.backgroundColor&&(s.style.backgroundColor=r.backgroundColor,r.borderColor)&&(s.style.borderColor=r.borderColor)}return p=r.backgroundColor?Pt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:l},{type:"elem",elem:a,shift:0}]},n):(c=/cancel|phase/.test(i)?["svg-align"]:[],Pt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:0},{type:"elem",elem:s,shift:l,wrapperClasses:c}]},n)),/cancel/.test(i)&&(p.height=a.height,p.depth=a.depth),/cancel/.test(i)&&!h?Pt.makeSpan(["mord","cancel-lap"],[p],n):Pt.makeSpan(["mord"],[p],n)},mathmlBuilder:It=(e,t)=>{var r=new Ut.MathNode(-1{if(!e.parser.settings.displayMode)throw new ft("{"+e.envName+"} can be used only in display mode.")};function tr(e){if(-1===e.indexOf("ed"))return-1===e.indexOf("*")}function rr(r,e,n){let{hskipBeforeAndAfter:t,addJot:a,cols:i,arraystretch:o,colSeparationType:s,autoTag:l,singleRow:h,emptySingleRow:m,maxNumCols:c,leqno:p}=e;if(r.gullet.beginGroup(),h||r.gullet.macros.set("\\cr","\\\\\\relax"),!o)if(null==(e=r.gullet.expandMacroAsText("\\arraystretch")))o=1;else if(!(o=parseFloat(e))||o<0)throw new ft("Invalid \\arraystretch: "+e);r.gullet.beginGroup();let d=[],u=[d],g=[],f=[],b=null!=l?[]:void 0;function y(){l&&r.gullet.macros.set("\\@eqnsw","1",!0)}function x(){b&&(r.gullet.macros.get("\\df@tag")?(b.push(r.subparse([new Kt("\\df@tag")])),r.gullet.macros.set("\\df@tag",void 0,!0)):b.push(Boolean(l)&&"1"===r.gullet.macros.get("\\@eqnsw")))}for(y(),f.push(er(r));;){let e=r.parseExpression(!1,h?"\\end":"\\\\"),t=(r.gullet.endGroup(),r.gullet.beginGroup(),e={type:"ordgroup",mode:r.mode,body:e},n&&(e={type:"styling",mode:r.mode,style:n,body:[e]}),d.push(e),r.fetch().text);if("&"===t){if(c&&d.length===c){if(h||s)throw new ft("Too many tab characters: &",r.nextToken);r.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}r.consume()}else{if("\\end"===t){x(),1===d.length&&"styling"===e.type&&0===e.body[0].body.length&&(1e))for(l=0;l=c)){(0e.length)),n.cols=new Array(a).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[n],left:t[0],right:t[1],rightColor:void 0}:n},htmlBuilder:ar,mathmlBuilder:ir}),Q0({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){return(e=rr(e.parser,{arraystretch:.5},"script")).colSeparationType="small",e},htmlBuilder:ar,mathmlBuilder:ir}),Q0({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){if(1<(t=(L0(t[0])?[t[0]]:Xt(t[0],"ordgroup").body).map(function(e){var t=E0(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new ft("Unknown column alignment: "+t,e)})).length)throw new ft("{subarray} can contain only one column");if(0<(e=rr(e.parser,{cols:t,hskipBeforeAndAfter:!1,arraystretch:.5},"script")).body.length&&1AV".indexOf(l)))throw new ft('Expected one of "<>AV=|." after @',a[n]);for(let r=0;r<2;r++){let t=!0;for(let e=n+1;e{var n=we[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":var a={type:"atom",text:n,mode:"math",family:"rel"},a={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[a],[]),r.callFunction("\\\\cdright",[t[1]],[])]};return r.callFunction("\\\\cdparent",[a],[]);case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":return r.callFunction("\\Big",[{type:"textord",text:"\\Vert",mode:"math"}],[]);default:return{type:"textord",text:" ",mode:"math"}}})(l,h,o)],mode:"math",style:"display"};r.push(m),e={type:"styling",body:[],mode:"math",style:"display"}}else e.body.push(a[n]);t%2==0?r.push(e):r.shift(),r=[],n.push(r)}return o.gullet.endGroup(),o.gullet.endGroup(),{type:"array",mode:"math",body:n,arraystretch:1,addJot:!0,rowGaps:[null],cols:new Array(n[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25}),colSeparationType:"CD",hLinesBeforeRow:new Array(n.length+1).fill([])}}},htmlBuilder:ar,mathmlBuilder:ir}),Wt("\\nonumber","\\gdef\\@eqnsw{0}"),Wt("\\notag","\\nonumber"),Vt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new ft(e.funcName+" valid only within array environment")}});var sr=He;function lr(e){let t=null;return t=0{var r=e.font,t=t.withFont(r);return P(e.body,t)},De=(e,t)=>{var r=e.font,t=t.withFont(r);return w(e.body,t)},Pe={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"},Ve=(Vt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{var{parser:e,funcName:r}=e,t=M0(t[0]);let n=r;return n in Pe&&(n=Pe[n]),{type:"font",mode:e.mode,font:n.slice(1),body:t}},htmlBuilder:Le,mathmlBuilder:De}),Vt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{var e=e.parser,t=t[0],r=bt.isCharacterBox(t);return{type:"mclass",mode:e.mode,mclass:S(t),body:[{type:"font",mode:e.mode,font:"boldsymbol",body:t}],isCharacterBox:r}}}),Vt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{parser:e,funcName:r,breakOnTokenText:n}=e,a=e.mode,n=e.parseExpression(!0,n);return{type:"font",mode:a,font:"math"+r.slice(1),body:{type:"ordgroup",mode:e.mode,body:n}}},htmlBuilder:Le,mathmlBuilder:De}),(e,t)=>{let r=t;return"display"===e?r=r.id>=yt.SCRIPT.id?r.text():yt.DISPLAY:"text"===e&&r.size===yt.DISPLAY.size?r=yt.TEXT:"script"===e?r=yt.SCRIPT:"scriptscript"===e&&(r=yt.SCRIPTSCRIPT),r}),B=(e,t)=>{var r,n=Ve(e.size,t.style),a=n.fracNum(),i=n.fracDen(),a=t.havingStyle(a),o=P(e.numer,a,t),s=(e.continued&&(s=8.5/t.fontMetrics().ptPerEm,r=3.5/t.fontMetrics().ptPerEm,o.height=o.height{let r=new Ut.MathNode("mfrac",[w(e.numer,t),w(e.denom,t)]);e.hasBarLine?e.barSize&&(n=wt(e.barSize,t),r.setAttribute("linethickness",D(n))):r.setAttribute("linethickness","0px");var n=Ve(e.size,t.style);return n.size!==t.style.size&&(r=new Ut.MathNode("mstyle",[r]),t=n.size===yt.DISPLAY.size?"true":"false",r.setAttribute("displaystyle",t),r.setAttribute("scriptlevel","0")),null==e.leftDelim&&null==e.rightDelim?r:(n=[],null!=e.leftDelim&&((t=new Ut.MathNode("mo",[new Ut.TextNode(e.leftDelim.replace("\\",""))])).setAttribute("fence","true"),n.push(t)),n.push(r),null!=e.rightDelim&&((t=new Ut.MathNode("mo",[new Ut.TextNode(e.rightDelim.replace("\\",""))])).setAttribute("fence","true"),n.push(t)),C0(n))},Fe=(Vt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{var{parser:e,funcName:r}=e,n=t[0],t=t[1];let a,i=null,o=null,s="auto";switch(r){case"\\dfrac":case"\\frac":case"\\tfrac":a=!0;break;case"\\\\atopfrac":a=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a=!1,i="(",o=")";break;case"\\\\bracefrac":a=!1,i="\\{",o="\\}";break;case"\\\\brackfrac":a=!1,i="[",o="]";break;default:throw new Error("Unrecognized genfrac command")}switch(r){case"\\dfrac":case"\\dbinom":s="display";break;case"\\tfrac":case"\\tbinom":s="text"}return{type:"genfrac",mode:e.mode,continued:!1,numer:n,denom:t,hasBarLine:a,leftDelim:i,rightDelim:o,size:s,barSize:null}},htmlBuilder:B,mathmlBuilder:C}),Vt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(e,t)=>{var e=e.parser,r=t[0];return{type:"genfrac",mode:e.mode,continued:!0,numer:r,denom:t[1],hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}}),Vt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){let t,{parser:r,funcName:n,token:a}=e;switch(n){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;case"\\brace":t="\\\\bracefrac";break;case"\\brack":t="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:r.mode,replaceWith:t,token:a}}}),["display","text","script","scriptscript"]),Ge=(Vt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var e=e.parser,r=t[4],n=t[5],a="atom"===(a=M0(t[0])).type&&"open"===a.family?lr(a.text):null,i="atom"===(i=M0(t[1])).type&&"close"===i.family?lr(i.text):null,o=Xt(t[2],"size");let s,l=null,h=(s=!!o.isBlank||0<(l=o.value).number,"auto"),m=t[3];return"ordgroup"===m.type?0{var e=e.parser,r=t[0],n=(e=>{if(e)return e;throw new Error("Expected non-null, but got "+String(e))})(Xt(t[1],"infix").size),a=0{var r=t.style;let n,a;a="supsub"===e.type?(n=e.sup?P(e.sup,t.havingStyle(r.sup()),t):P(e.sub,t.havingStyle(r.sub()),t),Xt(e.base,"horizBrace")):Xt(e,"horizBrace"),r=P(a.base,t.havingBaseStyle(yt.DISPLAY)),e=O0(a,t);let i;return(a.isOver?(i=Pt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:.1},{type:"elem",elem:e}]},t)).children[0].children[0].children[1]:(i=Pt.makeVList({positionType:"bottom",positionData:r.depth+.1+e.height,children:[{type:"elem",elem:e},{type:"kern",size:.1},{type:"elem",elem:r}]},t)).children[0].children[0].children[0]).classes.push("svg-align"),n&&(e=Pt.makeSpan(["mord",a.isOver?"mover":"munder"],[i],t),i=a.isOver?Pt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:e},{type:"kern",size:.2},{type:"elem",elem:n}]},t):Pt.makeVList({positionType:"bottom",positionData:e.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:e}]},t)),Pt.makeSpan(["mord",a.isOver?"mover":"munder"],[i],t)}),Ue=(Vt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(e,t){var{parser:e,funcName:r}=e;return{type:"horizBrace",mode:e.mode,label:r,isOver:/^\\over/.test(r),base:t[0]}},htmlBuilder:Ge,mathmlBuilder:(e,t)=>{var r=H0(e.label);return new Ut.MathNode(e.isOver?"mover":"munder",[w(e.base,t),r])}}),Vt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{var e=e.parser,r=t[1],t=Xt(t[0],"url").url;return e.settings.isTrusted({command:"\\href",url:t})?{type:"href",mode:e.mode,href:t,body:Ft(r)}:e.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{var r=Gt(e.body,t,!1);return Pt.makeAnchor(e.href,[],r,t)},mathmlBuilder:(e,t)=>{let r=I0(e.body,t);return(r=r instanceof _t?r:new _t("mrow",[r])).setAttribute("href",e.href),r}}),Vt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{var e=e.parser,r=Xt(t[0],"url").url;if(!e.settings.isTrusted({command:"\\url",url:r}))return e.formatUnsupportedCmd("\\url");var n=[];for(let t=0;t{var{parser:r,funcName:n}=e,a=Xt(t[0],"raw").string,e=t[1];let i;r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var o={};switch(n){case"\\htmlClass":o.class=a,i={command:"\\htmlClass",class:a};break;case"\\htmlId":o.id=a,i={command:"\\htmlId",id:a};break;case"\\htmlStyle":o.style=a,i={command:"\\htmlStyle",style:a};break;case"\\htmlData":var s=a.split(",");for(let e=0;e{var r,n=Gt(e.body,t,!1),a=["enclosing"],i=(e.attributes.class&&a.push(...e.attributes.class.trim().split(/\s+/)),Pt.makeSpan(a,n,t));for(r in e.attributes)"class"!==r&&e.attributes.hasOwnProperty(r)&&i.setAttribute(r,e.attributes[r]);return i},mathmlBuilder:(e,t)=>I0(e.body,t)}),Vt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(e,t)=>({type:"htmlmathml",mode:(e=e.parser).mode,html:Ft(t[0]),mathml:Ft(t[1])}),htmlBuilder:(e,t)=>(e=Gt(e.html,t,!1),Pt.makeFragment(e)),mathmlBuilder:(e,t)=>I0(e.mathml,t)}),Vt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{let n=e.parser,a={number:0,unit:"em"},i={number:.9,unit:"em"},o={number:0,unit:"em"},s="";if(r[0]){var l=Xt(r[0],"raw").string.split(",");for(let e=0;e{let r=wt(e.height,t),n=0,a=(0{var r=new Ut.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);let n=wt(e.height,t),a=0;return 0{var{parser:e,funcName:r}=e,t=t[0];return{type:"lap",mode:e.mode,alignment:r.slice(5),body:t}},htmlBuilder:(e,t)=>{let r,n=(r="clap"===e.alignment?(r=Pt.makeSpan([],[P(e.body,t)]),Pt.makeSpan(["inner"],[r],t)):Pt.makeSpan(["inner"],[P(e.body,t)]),Pt.makeSpan(["fix"],[])),a=Pt.makeSpan([e.alignment],[r,n],t);return(e=Pt.makeSpan(["strut"])).style.height=D(a.height+a.depth),a.depth&&(e.style.verticalAlign=D(-a.depth)),a.children.unshift(e),a=Pt.makeSpan(["thinbox"],[a],t),Pt.makeSpan(["mord","vbox"],[a],t)},mathmlBuilder:(e,t)=>(t=new Ut.MathNode("mpadded",[w(e.body,t)]),"rlap"!==e.alignment&&(e="llap"===e.alignment?"-1":"-0.5",t.setAttribute("lspace",e+"width")),t.setAttribute("width","0px"),t)}),Vt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:e,parser:r}=e,n=r.mode,e=(r.switchMode("math"),"\\("===e?"\\)":"$"),a=r.parseExpression(!1,e);return r.expect(e),r.switchMode(n),{type:"styling",mode:r.mode,style:"text",body:a}}}),Vt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new ft("Mismatched "+e.funcName)}}),(e,t)=>{switch(t.style.size){case yt.DISPLAY.size:return e.display;case yt.TEXT.size:return e.text;case yt.SCRIPT.size:return e.script;case yt.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}}),Ye=(Vt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>({type:"mathchoice",mode:(e=e.parser).mode,display:Ft(t[0]),text:Ft(t[1]),script:Ft(t[2]),scriptscript:Ft(t[3])}),htmlBuilder:(e,t)=>(e=Gt(e=Ue(e,t),t,!1),Pt.makeFragment(e)),mathmlBuilder:(e,t)=>I0(e=Ue(e,t),t)}),(e,t,r,n,a,i,o)=>{e=Pt.makeSpan([],[e]);let s=r&&bt.isCharacterBox(r),l,h,m;if(t&&(c=P(t,n.havingStyle(a.sup()),n),h={elem:c,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-c.depth)}),r&&(c=P(r,n.havingStyle(a.sub()),n),l={elem:c,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-c.height)}),h&&l)r=n.fontMetrics().bigOpSpacing5+l.elem.height+l.elem.depth+l.kern+e.depth+o,m=Pt.makeVList({positionType:"bottom",positionData:r,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:D(-i)},{type:"kern",size:l.kern},{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:D(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n);else if(l)a=e.height-o,m=Pt.makeVList({positionType:"top",positionData:a,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:D(-i)},{type:"kern",size:l.kern},{type:"elem",elem:e}]},n);else{if(!h)return e;var c=e.depth+o;m=Pt.makeVList({positionType:"bottom",positionData:c,children:[{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:D(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}return t=[m],l&&0!==i&&!s&&((r=Pt.makeSpan(["mspace"],[],n)).style.marginRight=D(i),t.unshift(r)),Pt.makeSpan(["mop","op-limits"],t,n)}),Xe=["\\smallint"],N=(e,n)=>{let t,r,a,i=!1;"supsub"===e.type?(t=e.sup,r=e.sub,a=Xt(e.base,"op"),i=!0):a=Xt(e,"op");let o,s=!1;if((e=n.style).size===yt.DISPLAY.size&&a.symbol&&!bt.contains(Xe,a.name)&&(s=!0),a.symbol){let e=s?"Size2-Regular":"Size1-Regular",t="",r;"\\oiint"!==a.name&&"\\oiiint"!==a.name||(t=a.name.slice(1),a.name="oiint"===t?"\\iint":"\\iiint"),o=Pt.makeSymbol(a.name,e,"math",n,["mop","op-symbol",s?"large-op":"small-op"]),0{let r;return e.symbol?(r=new _t("mo",[Yt(e.name,e.mode)]),bt.contains(Xe,e.name)&&r.setAttribute("largeop","false")):r=e.body?new _t("mo",x(e.body,t)):(r=new _t("mi",[new $t(e.name.slice(1))]),t=new _t("mo",[Yt("⁡","text")]),e.parentIsSupSub?new _t("mrow",[r,t]):B0([r,t])),r},We={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"},je=(Vt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(e,t)=>{let{parser:r,funcName:n}=e,a=n;return 1===a.length&&(a=We[a]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:N,mathmlBuilder:q}),Vt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>(e=e.parser,t=t[0],{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Ft(t)}),htmlBuilder:N,mathmlBuilder:q}),{"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"}),_e=(Vt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:e,funcName:t}=e;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:t}},htmlBuilder:N,mathmlBuilder:q}),Vt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:e,funcName:t}=e;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:t}},htmlBuilder:N,mathmlBuilder:q}),Vt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler(e){let{parser:t,funcName:r}=e,n=r;return 1===n.length&&(n=je[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:N,mathmlBuilder:q}),(e,t)=>{let r,n,a,i,o=!1;if("supsub"===e.type?(r=e.sup,n=e.sub,a=Xt(e.base,"operatorname"),o=!0):a=Xt(e,"operatorname"),0{var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e}),t.withFont("mathrm"),!0);for(let e=0;e{var{parser:e,funcName:r}=e,t=t[0];return{type:"operatorname",mode:e.mode,body:Ft(t),alwaysHandleSupSub:"\\operatornamewithlimits"===r,limits:!1,parentIsSupSub:!1}},htmlBuilder:_e,mathmlBuilder:(e,t)=>{let r=x(e.body,t.withFont("mathrm")),n=!0;for(let e=0;ee.toText()).join(""),r=[new Ut.TextNode(o)]),(t=new Ut.MathNode("mi",r)).setAttribute("mathvariant","normal");var o=new Ut.MathNode("mo",[Yt("⁡","text")]);return e.parentIsSupSub?new Ut.MathNode("mrow",[t,o]):Ut.newDocumentFragment([t,o])}}),Wt("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),S0({type:"ordgroup",htmlBuilder(e,t){return e.semisimple?Pt.makeFragment(Gt(e.body,t,!1)):Pt.makeSpan(["mord"],Gt(e.body,t,!0),t)},mathmlBuilder(e,t){return I0(e.body,t,!0)}}),Vt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){return e=e.parser,t=t[0],{type:"overline",mode:e.mode,body:t}},htmlBuilder(e,t){var e=P(e.body,t.havingCrampedStyle()),r=Pt.makeLineSpan("overline-line",t),n=t.fontMetrics().defaultRuleThickness,e=Pt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:e},{type:"kern",size:3*n},{type:"elem",elem:r},{type:"kern",size:n}]},t);return Pt.makeSpan(["mord","overline"],[e],t)},mathmlBuilder(e,t){var r=new Ut.MathNode("mo",[new Ut.TextNode("‾")]);return r.setAttribute("stretchy","true"),(e=new Ut.MathNode("mover",[w(e.body,t),r])).setAttribute("accent","true"),e}}),Vt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>(e=e.parser,t=t[0],{type:"phantom",mode:e.mode,body:Ft(t)}),htmlBuilder:(e,t)=>(e=Gt(e.body,t.withPhantom(),!1),Pt.makeFragment(e)),mathmlBuilder:(e,t)=>(e=x(e.body,t),new Ut.MathNode("mphantom",e))}),Vt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>(e=e.parser,t=t[0],{type:"hphantom",mode:e.mode,body:t}),htmlBuilder:(e,t)=>{let r=Pt.makeSpan([],[P(e.body,t.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(let e=0;e(e=x(Ft(e.body),t),t=new Ut.MathNode("mphantom",e),(e=new Ut.MathNode("mpadded",[t])).setAttribute("height","0px"),e.setAttribute("depth","0px"),e)}),Vt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>(e=e.parser,t=t[0],{type:"vphantom",mode:e.mode,body:t}),htmlBuilder:(e,t)=>{var e=Pt.makeSpan(["inner"],[P(e.body,t.withPhantom())]),r=Pt.makeSpan(["fix"],[]);return Pt.makeSpan(["mord","rlap"],[e,r],t)},mathmlBuilder:(e,t)=>(e=x(Ft(e.body),t),t=new Ut.MathNode("mphantom",e),(e=new Ut.MathNode("mpadded",[t])).setAttribute("width","0px"),e)}),Vt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var e=e.parser,r=Xt(t[0],"size").value;return{type:"raisebox",mode:e.mode,dy:r,body:t[1]}},htmlBuilder(e,t){var r=P(e.body,t),e=wt(e.dy,t);return Pt.makeVList({positionType:"shift",positionData:-e,children:[{type:"elem",elem:r}]},t)},mathmlBuilder(e,t){return t=new Ut.MathNode("mpadded",[w(e.body,t)]),e=e.dy.number+e.dy.unit,t.setAttribute("voffset",e),t}}),Vt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){return{type:"internal",mode:(e=e.parser).mode}}}),Vt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var e=e.parser,r=r[0],n=Xt(t[0],"size"),t=Xt(t[1],"size");return{type:"rule",mode:e.mode,shift:r&&Xt(r,"size").value,width:n.value,height:t.value}},htmlBuilder(e,t){var r=Pt.makeSpan(["mord","rule"],[],t),n=wt(e.width,t),a=wt(e.height,t),e=e.shift?wt(e.shift,t):0;return r.style.borderRightWidth=D(n),r.style.borderTopWidth=D(a),r.style.bottom=D(e),r.width=n,r.height=a+e,r.depth=-e,r.maxFontSize=1.125*a*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=wt(e.width,t),n=wt(e.height,t),e=e.shift?wt(e.shift,t):0,t=t.color&&t.getColor()||"black",a=new Ut.MathNode("mspace"),t=(a.setAttribute("mathbackground",t),a.setAttribute("width",D(r)),a.setAttribute("height",D(n)),new Ut.MathNode("mpadded",[a]));return 0<=e?t.setAttribute("height",D(e)):(t.setAttribute("height",D(e)),t.setAttribute("depth",D(-e))),t.setAttribute("voffset",D(e)),t}});let $e=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],Ze=(Vt({type:"sizing",names:$e,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{breakOnTokenText:e,funcName:r,parser:n}=e,e=n.parseExpression(!1,e);return{type:"sizing",mode:n.mode,size:$e.indexOf(r)+1,body:e}},htmlBuilder:(e,t)=>{var r=t.havingSize(e.size);return mr(e.body,r,t)},mathmlBuilder:(e,t)=>(t=t.havingSize(e.size),e=x(e.body,t),(e=new Ut.MathNode("mstyle",e)).setAttribute("mathsize",D(t.sizeMultiplier)),e)}),Vt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{let n=e.parser,a=!1,i=!1,o=r[0]&&Xt(r[0],"ordgroup"),s;if(o)for(let e=0;e{var r=Pt.makeSpan([],[P(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0,r.children))for(let e=0;e(t=new Ut.MathNode("mpadded",[w(e.body,t)]),e.smashHeight&&t.setAttribute("height","0px"),e.smashDepth&&t.setAttribute("depth","0px"),t)}),Vt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){return e=e.parser,r=r[0],t=t[0],{type:"sqrt",mode:e.mode,body:t,index:r}},htmlBuilder(e,t){let r=P(e.body,t.havingCrampedStyle()),n=(0===r.height&&(r.height=t.fontMetrics().xHeight),r=Pt.wrapFragment(r,t),t.fontMetrics().defaultRuleThickness),a=n,i=n+(t.style.idr.height+r.depth+i&&(i=(i+m-r.height-r.depth)/2);var c,p=s.height-r.height-i-l,p=(r.style.paddingLeft=D(h),Pt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:s},{type:"kern",size:l}]},t));return e.index?(c=t.havingStyle(yt.SCRIPTSCRIPT),e=P(e.index,c,t),c=.6*(p.height-p.depth),c=Pt.makeVList({positionType:"shift",positionData:-c,children:[{type:"elem",elem:e}]},t),e=Pt.makeSpan(["root"],[c]),Pt.makeSpan(["mord","sqrt"],[e,p],t)):Pt.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){var{body:e,index:r}=e;return r?new Ut.MathNode("mroot",[w(e,t),w(r,t)]):new Ut.MathNode("msqrt",[w(e,t)])}}),{display:yt.DISPLAY,text:yt.TEXT,script:yt.SCRIPT,scriptscript:yt.SCRIPTSCRIPT}),Ke=(Vt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:e,funcName:r,parser:n}=e,e=n.parseExpression(!0,e),r=r.slice(1,r.length-5);return{type:"styling",mode:n.mode,style:r,body:e}},htmlBuilder(e,t){var r=Ze[e.style],r=t.havingStyle(r).withFont("");return mr(e.body,r,t)},mathmlBuilder(e,t){var r=Ze[e.style],t=t.havingStyle(r),r=x(e.body,t),t=new Ut.MathNode("mstyle",r),r={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return t.setAttribute("scriptlevel",r[0]),t.setAttribute("displaystyle",r[1]),t}}),S0({type:"supsub",htmlBuilder(e,t){var r=t;if(i=(a=(n=e).base)?"op"===a.type?a.limits&&(r.style.size===yt.DISPLAY.size||a.alwaysHandleSupSub)?N:null:"operatorname"===a.type?a.alwaysHandleSupSub&&(r.style.size===yt.DISPLAY.size||a.limits)?_e:null:"accent"===a.type?bt.isCharacterBox(a.base)?v:null:"horizBrace"===a.type&&!n.sub===a.isOver?Ge:null:null)return i(e,t);var{base:r,sup:n,sub:a}=e,i=P(r,t);let o,s,l=t.fontMetrics(),h=0,m=0;r=r&&bt.isCharacterBox(r),n&&(d=t.havingStyle(t.style.sup()),o=P(n,d,t),r||(h=i.height-d.fontMetrics().supDrop*d.sizeMultiplier/t.sizeMultiplier)),a&&(d=t.havingStyle(t.style.sub()),s=P(a,d,t),r||(m=i.depth+d.fontMetrics().subDrop*d.sizeMultiplier/t.sizeMultiplier)),n=t.style===yt.DISPLAY?l.sup1:t.style.cramped?l.sup3:l.sup2,a=t.sizeMultiplier,r=D(.5/l.ptPerEm/a);let c,p=null;if(s&&(d=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name),i instanceof jt||d)&&(p=D(-i.italic)),o&&s)h=Math.max(h,n,o.depth+.25*l.xHeight),m=Math.max(m,l.sub2),e=4*l.defaultRuleThickness,h-o.depth-(s.height-m){var e=new Ut.MathNode("mtd",[]);return e.setAttribute("width","50%"),e}),et=(S0({type:"tag",mathmlBuilder(e,t){return(e=new Ut.MathNode("mtable",[new Ut.MathNode("mtr",[Qe(),new Ut.MathNode("mtd",[I0(e.body,t)]),Qe(),new Ut.MathNode("mtd",[I0(e.tag,t)])])])).setAttribute("width","100%"),e}}),{"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"}),tt={"\\textbf":"textbf","\\textmd":"textmd"},rt={"\\textit":"textit","\\textup":"textup"},nt=(e,t)=>(e=e.font)?et[e]?t.withTextFontFamily(et[e]):tt[e]?t.withTextFontWeight(tt[e]):"\\emph"===e?"textit"===t.fontShape?t.withTextFontShape("textup"):t.withTextFontShape("textit"):t.withTextFontShape(rt[e]):t,at=(Vt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:e,funcName:r}=e,t=t[0];return{type:"text",mode:e.mode,body:Ft(t),font:r}},htmlBuilder(e,t){return t=nt(e,t),e=Gt(e.body,t,!0),Pt.makeSpan(["mord","text"],e,t)},mathmlBuilder(e,t){return t=nt(e,t),I0(e.body,t)}}),Vt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){return{type:"underline",mode:(e=e.parser).mode,body:t[0]}},htmlBuilder(e,t){var e=P(e.body,t),r=Pt.makeLineSpan("underline-line",t),n=t.fontMetrics().defaultRuleThickness,r=Pt.makeVList({positionType:"top",positionData:e.height,children:[{type:"kern",size:n},{type:"elem",elem:r},{type:"kern",size:3*n},{type:"elem",elem:e}]},t);return Pt.makeSpan(["mord","underline"],[r],t)},mathmlBuilder(e,t){var r=new Ut.MathNode("mo",[new Ut.TextNode("‾")]);return r.setAttribute("stretchy","true"),(e=new Ut.MathNode("munder",[w(e.body,t),r])).setAttribute("accentunder","true"),e}}),Vt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){return{type:"vcenter",mode:(e=e.parser).mode,body:t[0]}},htmlBuilder(e,t){var e=P(e.body,t),r=t.fontMetrics().axisHeight,r=.5*(e.height-r-(e.depth+r));return Pt.makeVList({positionType:"shift",positionData:r,children:[{type:"elem",elem:e}]},t)},mathmlBuilder(e,t){return new Ut.MathNode("mpadded",[w(e.body,t)],["vcenter"])}}),Vt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new ft("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(r,e){var n=at(r),a=[],i=e.havingStyle(e.style.text());for(let t=0;te.body.replace(/ /g,e.star?"␣":" "));var cr=se;let it=new RegExp("[̀-ͯ]+$");class Tr{constructor(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp("([ \r\n\t]+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-‧‪-퟿豈-￿][̀-ͯ]*|[\ud800-\udbff][\udc00-\udfff][̀-ͯ]*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|(\\\\[a-zA-Z@]+)[ \r\n\t]*|\\\\[^\ud800-\udfff])","g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new Kt("EOF",new Zt(this,t,t));var r=this.tokenRegex.exec(e);if(null===r||r.index!==t)throw new ft("Unexpected character: '"+e[t]+"'",new Kt(e[t],new Zt(this,t,t+1)));return r=r[6]||r[3]||(r[2]?"\\ ":" "),14!==this.catcodes[r]?new Kt(r,new Zt(this,t,this.tokenRegex.lastIndex)):(-1===(r=e.indexOf("\n",this.tokenRegex.lastIndex))?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=r+1,this.lex())}}class Br{constructor(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new ft("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e,t=this.undefStack.pop();for(e in t)t.hasOwnProperty(e)&&(null==t[e]?delete this.current[e]:this.current[e]=t[e])}endGroups(){for(;0=t)throw new ft("Invalid base-"+t+" digit "+r.text);for(var a;null!=(a=ot[e.future().text])&&a{let a=r.consumeArg().tokens;if(1!==a.length)throw new ft("\\newcommand's first argument must be a macro name");var i=a[0].text,o=r.isDefined(i);if(o&&!e)throw new ft("\\newcommand{"+i+"} attempting to redefine "+i+"; use \\renewcommand");if(!o&&!t)throw new ft("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");let s=0;if(1===(a=r.consumeArg().tokens).length&&"["===a[0].text){let e="",t=r.expandNextToken();for(;"]"!==t.text&&"EOF"!==t.text;)e+=t.text,t=r.expandNextToken();if(!e.match(/^\s*[0-9]+\s*$/))throw new ft("Invalid number of arguments: "+e);s=parseInt(e),a=r.consumeArg().tokens}return o&&n||r.macros.set(i,{tokens:a,numArgs:s}),""}),lt=(Wt("\\newcommand",e=>st(e,!1,!0,!1)),Wt("\\renewcommand",e=>st(e,!0,!1,!1)),Wt("\\providecommand",e=>st(e,!0,!0,!0)),Wt("\\message",e=>(e=e.consumeArgs(1)[0],console.log(e.reverse().map(e=>e.text).join("")),"")),Wt("\\errmessage",e=>(e=e.consumeArgs(1)[0],console.error(e.reverse().map(e=>e.text).join("")),"")),Wt("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),cr[r],vt.math[r],vt.text[r]),""}),Wt("\\bgroup","{"),Wt("\\egroup","}"),Wt("~","\\nobreakspace"),Wt("\\lq","`"),Wt("\\rq","'"),Wt("\\aa","\\r a"),Wt("\\AA","\\r A"),Wt("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}"),Wt("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),Wt("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"),Wt("ℬ","\\mathscr{B}"),Wt("ℰ","\\mathscr{E}"),Wt("ℱ","\\mathscr{F}"),Wt("ℋ","\\mathscr{H}"),Wt("ℐ","\\mathscr{I}"),Wt("ℒ","\\mathscr{L}"),Wt("ℳ","\\mathscr{M}"),Wt("ℛ","\\mathscr{R}"),Wt("ℭ","\\mathfrak{C}"),Wt("ℌ","\\mathfrak{H}"),Wt("ℨ","\\mathfrak{Z}"),Wt("\\Bbbk","\\Bbb{k}"),Wt("·","\\cdotp"),Wt("\\llap","\\mathllap{\\textrm{#1}}"),Wt("\\rlap","\\mathrlap{\\textrm{#1}}"),Wt("\\clap","\\mathclap{\\textrm{#1}}"),Wt("\\mathstrut","\\vphantom{(}"),Wt("\\underbar","\\underline{\\text{#1}}"),Wt("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),Wt("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}"),Wt("\\ne","\\neq"),Wt("≠","\\neq"),Wt("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}"),Wt("∉","\\notin"),Wt("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}"),Wt("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}"),Wt("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}"),Wt("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}"),Wt("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}"),Wt("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}"),Wt("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}"),Wt("⟂","\\perp"),Wt("‼","\\mathclose{!\\mkern-0.8mu!}"),Wt("∌","\\notni"),Wt("⌜","\\ulcorner"),Wt("⌝","\\urcorner"),Wt("⌞","\\llcorner"),Wt("⌟","\\lrcorner"),Wt("©","\\copyright"),Wt("®","\\textregistered"),Wt("️","\\textregistered"),Wt("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'),Wt("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'),Wt("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'),Wt("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'),Wt("\\vdots","{\\varvdots\\rule{0pt}{15pt}}"),Wt("⋮","\\vdots"),Wt("\\varGamma","\\mathit{\\Gamma}"),Wt("\\varDelta","\\mathit{\\Delta}"),Wt("\\varTheta","\\mathit{\\Theta}"),Wt("\\varLambda","\\mathit{\\Lambda}"),Wt("\\varXi","\\mathit{\\Xi}"),Wt("\\varPi","\\mathit{\\Pi}"),Wt("\\varSigma","\\mathit{\\Sigma}"),Wt("\\varUpsilon","\\mathit{\\Upsilon}"),Wt("\\varPhi","\\mathit{\\Phi}"),Wt("\\varPsi","\\mathit{\\Psi}"),Wt("\\varOmega","\\mathit{\\Omega}"),Wt("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),Wt("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"),Wt("\\boxed","\\fbox{$\\displaystyle{#1}$}"),Wt("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),Wt("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),Wt("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;"),Wt("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}"),Wt("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}"),{",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"}),ht=(Wt("\\dots",function(e){let t="\\dotso";return(e=e.expandAfterFuture().text)in lt?t=lt[e]:("\\not"===e.slice(0,4)||e in vt.math&&bt.contains(["bin","rel"],vt.math[e].group))&&(t="\\dotsb"),t}),{")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0}),mt=(Wt("\\dotso",function(e){return e.future().text in ht?"\\ldots\\,":"\\ldots"}),Wt("\\dotsc",function(e){return(e=e.future().text)in ht&&","!==e?"\\ldots\\,":"\\ldots"}),Wt("\\cdots",function(e){return e.future().text in ht?"\\@cdots\\,":"\\@cdots"}),Wt("\\dotsb","\\cdots"),Wt("\\dotsm","\\cdots"),Wt("\\dotsi","\\!\\cdots"),Wt("\\dotsx","\\ldots\\,"),Wt("\\DOTSI","\\relax"),Wt("\\DOTSB","\\relax"),Wt("\\DOTSX","\\relax"),Wt("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Wt("\\,","\\tmspace+{3mu}{.1667em}"),Wt("\\thinspace","\\,"),Wt("\\>","\\mskip{4mu}"),Wt("\\:","\\tmspace+{4mu}{.2222em}"),Wt("\\medspace","\\:"),Wt("\\;","\\tmspace+{5mu}{.2777em}"),Wt("\\thickspace","\\;"),Wt("\\!","\\tmspace-{3mu}{.1667em}"),Wt("\\negthinspace","\\!"),Wt("\\negmedspace","\\tmspace-{4mu}{.2222em}"),Wt("\\negthickspace","\\tmspace-{5mu}{.277em}"),Wt("\\enspace","\\kern.5em "),Wt("\\enskip","\\hskip.5em\\relax"),Wt("\\quad","\\hskip1em\\relax"),Wt("\\qquad","\\hskip2em\\relax"),Wt("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Wt("\\tag@paren","\\tag@literal{({#1})}"),Wt("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new ft("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),Wt("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),Wt("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Wt("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Wt("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Wt("\\newline","\\\\\\relax"),Wt("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}"),Wt("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+(Ct=D(xt["Main-Regular"]["T".charCodeAt(0)][1]-.7*xt["Main-Regular"]["A".charCodeAt(0)][1]))+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),Wt("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+Ct+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),Wt("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Wt("\\@hspace","\\hskip #1\\relax"),Wt("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Wt("\\ordinarycolon",":"),Wt("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),Wt("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),Wt("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),Wt("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),Wt("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),Wt("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),Wt("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),Wt("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),Wt("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),Wt("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),Wt("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),Wt("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),Wt("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),Wt("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),Wt("∷","\\dblcolon"),Wt("∹","\\eqcolon"),Wt("≔","\\coloneqq"),Wt("≕","\\eqqcolon"),Wt("⩴","\\Coloneqq"),Wt("\\ratio","\\vcentcolon"),Wt("\\coloncolon","\\dblcolon"),Wt("\\colonequals","\\coloneqq"),Wt("\\coloncolonequals","\\Coloneqq"),Wt("\\equalscolon","\\eqqcolon"),Wt("\\equalscoloncolon","\\Eqqcolon"),Wt("\\colonminus","\\coloneq"),Wt("\\coloncolonminus","\\Coloneq"),Wt("\\minuscolon","\\eqcolon"),Wt("\\minuscoloncolon","\\Eqcolon"),Wt("\\coloncolonapprox","\\Colonapprox"),Wt("\\coloncolonsim","\\Colonsim"),Wt("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Wt("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Wt("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Wt("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Wt("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}"),Wt("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Wt("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Wt("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Wt("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Wt("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),Wt("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),Wt("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),Wt("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),Wt("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}"),Wt("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}"),Wt("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}"),Wt("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}"),Wt("\\nleqq","\\html@mathml{\\@nleqq}{≰}"),Wt("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}"),Wt("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}"),Wt("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}"),Wt("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}"),Wt("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}"),Wt("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}"),Wt("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}"),Wt("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}"),Wt("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}"),Wt("\\imath","\\html@mathml{\\@imath}{ı}"),Wt("\\jmath","\\html@mathml{\\@jmath}{ȷ}"),Wt("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}"),Wt("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}"),Wt("⟦","\\llbracket"),Wt("⟧","\\rrbracket"),Wt("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}"),Wt("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}"),Wt("⦃","\\lBrace"),Wt("⦄","\\rBrace"),Wt("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}"),Wt("⦵","\\minuso"),Wt("\\darr","\\downarrow"),Wt("\\dArr","\\Downarrow"),Wt("\\Darr","\\Downarrow"),Wt("\\lang","\\langle"),Wt("\\rang","\\rangle"),Wt("\\uarr","\\uparrow"),Wt("\\uArr","\\Uparrow"),Wt("\\Uarr","\\Uparrow"),Wt("\\N","\\mathbb{N}"),Wt("\\R","\\mathbb{R}"),Wt("\\Z","\\mathbb{Z}"),Wt("\\alef","\\aleph"),Wt("\\alefsym","\\aleph"),Wt("\\Alpha","\\mathrm{A}"),Wt("\\Beta","\\mathrm{B}"),Wt("\\bull","\\bullet"),Wt("\\Chi","\\mathrm{X}"),Wt("\\clubs","\\clubsuit"),Wt("\\cnums","\\mathbb{C}"),Wt("\\Complex","\\mathbb{C}"),Wt("\\Dagger","\\ddagger"),Wt("\\diamonds","\\diamondsuit"),Wt("\\empty","\\emptyset"),Wt("\\Epsilon","\\mathrm{E}"),Wt("\\Eta","\\mathrm{H}"),Wt("\\exist","\\exists"),Wt("\\harr","\\leftrightarrow"),Wt("\\hArr","\\Leftrightarrow"),Wt("\\Harr","\\Leftrightarrow"),Wt("\\hearts","\\heartsuit"),Wt("\\image","\\Im"),Wt("\\infin","\\infty"),Wt("\\Iota","\\mathrm{I}"),Wt("\\isin","\\in"),Wt("\\Kappa","\\mathrm{K}"),Wt("\\larr","\\leftarrow"),Wt("\\lArr","\\Leftarrow"),Wt("\\Larr","\\Leftarrow"),Wt("\\lrarr","\\leftrightarrow"),Wt("\\lrArr","\\Leftrightarrow"),Wt("\\Lrarr","\\Leftrightarrow"),Wt("\\Mu","\\mathrm{M}"),Wt("\\natnums","\\mathbb{N}"),Wt("\\Nu","\\mathrm{N}"),Wt("\\Omicron","\\mathrm{O}"),Wt("\\plusmn","\\pm"),Wt("\\rarr","\\rightarrow"),Wt("\\rArr","\\Rightarrow"),Wt("\\Rarr","\\Rightarrow"),Wt("\\real","\\Re"),Wt("\\reals","\\mathbb{R}"),Wt("\\Reals","\\mathbb{R}"),Wt("\\Rho","\\mathrm{P}"),Wt("\\sdot","\\cdot"),Wt("\\sect","\\S"),Wt("\\spades","\\spadesuit"),Wt("\\sub","\\subset"),Wt("\\sube","\\subseteq"),Wt("\\supe","\\supseteq"),Wt("\\Tau","\\mathrm{T}"),Wt("\\thetasym","\\vartheta"),Wt("\\weierp","\\wp"),Wt("\\Zeta","\\mathrm{Z}"),Wt("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Wt("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Wt("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),Wt("\\bra","\\mathinner{\\langle{#1}|}"),Wt("\\ket","\\mathinner{|{#1}\\rangle}"),Wt("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Wt("\\Bra","\\left\\langle#1\\right|"),Wt("\\Ket","\\left|#1\\right\\rangle"),Wt("\\bra@ket",(Rt=l=>e=>{let t=e.consumeArg().tokens,n=e.consumeArg().tokens,a=e.consumeArg().tokens,r=e.consumeArg().tokens,i=e.macros.get("|"),o=e.macros.get("\\|");e.macros.beginGroup();var s=r=>e=>{l&&(e.macros.set("|",i),a.length)&&e.macros.set("\\|",o);let t=r;return!r&&a.length&&"|"===e.future().text&&(e.popToken(),t=!0),{tokens:t?a:n,numArgs:0}},s=(e.macros.set("|",s(!1)),a.length&&e.macros.set("\\|",s(!0)),e.consumeArg().tokens),s=e.expandTokens([...r,...s,...t]);return e.macros.endGroup(),{tokens:s.reverse(),numArgs:0}})(!1)),Wt("\\bra@set",Rt(!0)),Wt("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),Wt("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),Wt("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),Wt("\\angln","{\\angl n}"),Wt("\\blue","\\textcolor{##6495ed}{#1}"),Wt("\\orange","\\textcolor{##ffa500}{#1}"),Wt("\\pink","\\textcolor{##ff00af}{#1}"),Wt("\\red","\\textcolor{##df0030}{#1}"),Wt("\\green","\\textcolor{##28ae7b}{#1}"),Wt("\\gray","\\textcolor{gray}{#1}"),Wt("\\purple","\\textcolor{##9d38bd}{#1}"),Wt("\\blueA","\\textcolor{##ccfaff}{#1}"),Wt("\\blueB","\\textcolor{##80f6ff}{#1}"),Wt("\\blueC","\\textcolor{##63d9ea}{#1}"),Wt("\\blueD","\\textcolor{##11accd}{#1}"),Wt("\\blueE","\\textcolor{##0c7f99}{#1}"),Wt("\\tealA","\\textcolor{##94fff5}{#1}"),Wt("\\tealB","\\textcolor{##26edd5}{#1}"),Wt("\\tealC","\\textcolor{##01d1c1}{#1}"),Wt("\\tealD","\\textcolor{##01a995}{#1}"),Wt("\\tealE","\\textcolor{##208170}{#1}"),Wt("\\greenA","\\textcolor{##b6ffb0}{#1}"),Wt("\\greenB","\\textcolor{##8af281}{#1}"),Wt("\\greenC","\\textcolor{##74cf70}{#1}"),Wt("\\greenD","\\textcolor{##1fab54}{#1}"),Wt("\\greenE","\\textcolor{##0d923f}{#1}"),Wt("\\goldA","\\textcolor{##ffd0a9}{#1}"),Wt("\\goldB","\\textcolor{##ffbb71}{#1}"),Wt("\\goldC","\\textcolor{##ff9c39}{#1}"),Wt("\\goldD","\\textcolor{##e07d10}{#1}"),Wt("\\goldE","\\textcolor{##a75a05}{#1}"),Wt("\\redA","\\textcolor{##fca9a9}{#1}"),Wt("\\redB","\\textcolor{##ff8482}{#1}"),Wt("\\redC","\\textcolor{##f9685d}{#1}"),Wt("\\redD","\\textcolor{##e84d39}{#1}"),Wt("\\redE","\\textcolor{##bc2612}{#1}"),Wt("\\maroonA","\\textcolor{##ffbde0}{#1}"),Wt("\\maroonB","\\textcolor{##ff92c6}{#1}"),Wt("\\maroonC","\\textcolor{##ed5fa6}{#1}"),Wt("\\maroonD","\\textcolor{##ca337c}{#1}"),Wt("\\maroonE","\\textcolor{##9e034e}{#1}"),Wt("\\purpleA","\\textcolor{##ddd7ff}{#1}"),Wt("\\purpleB","\\textcolor{##c6b9fc}{#1}"),Wt("\\purpleC","\\textcolor{##aa87ff}{#1}"),Wt("\\purpleD","\\textcolor{##7854ab}{#1}"),Wt("\\purpleE","\\textcolor{##543b78}{#1}"),Wt("\\mintA","\\textcolor{##f5f9e8}{#1}"),Wt("\\mintB","\\textcolor{##edf2df}{#1}"),Wt("\\mintC","\\textcolor{##e0e5cc}{#1}"),Wt("\\grayA","\\textcolor{##f6f7f7}{#1}"),Wt("\\grayB","\\textcolor{##f0f1f2}{#1}"),Wt("\\grayC","\\textcolor{##e3e5e6}{#1}"),Wt("\\grayD","\\textcolor{##d6d8da}{#1}"),Wt("\\grayE","\\textcolor{##babec2}{#1}"),Wt("\\grayF","\\textcolor{##888d93}{#1}"),Wt("\\grayG","\\textcolor{##626569}{#1}"),Wt("\\grayH","\\textcolor{##3b3e40}{#1}"),Wt("\\grayI","\\textcolor{##21242c}{#1}"),Wt("\\kaBlue","\\textcolor{##314453}{#1}"),Wt("\\kaGreen","\\textcolor{##71B307}{#1}"),{"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0});class Cr{constructor(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new Br(pr,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new Tr(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){let t,r,n;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken(),{tokens:n,end:r}=this.consumeArg(["]"])}else({tokens:n,start:t,end:r}=this.consumeArg());return this.pushToken(new Kt("EOF",r.loc)),this.pushTokens(n),t.range(r,"")}consumeSpaces(){for(;" "===this.future().text;)this.stack.pop()}consumeArg(e){let t=[],r=e&&0this.settings.maxExpand)throw new ft("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var t=this.popToken(),r=t.text,n=t.noexpand?null:this._getExpansion(r);if(null==n||e&&n.unexpandable){if(e&&null==n&&"\\"===r[0]&&!this.isDefined(r))throw new ft("Undefined control sequence: "+r);return this.pushToken(t),!1}this.countExpansion(1);let a=n.tokens,i=this.consumeArgs(n.numArgs,n.delimiters);if(n.numArgs)for(let e=(a=a.slice()).length-1;0<=e;--e){var o=a[e];if("#"===o.text){if(0===e)throw new ft("Incomplete placeholder at end of macro body",o);if("#"===(o=a[--e]).text)a.splice(e+1,1);else{if(!/^[1-9]$/.test(o.text))throw new ft("Not a valid argument number",o);a.splice(e,2,...i[+o.text-1])}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;){var e;if(!1===this.expandOnce())return(e=this.stack.pop()).treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Kt(e)]):void 0}expandTokens(e){var t,r=[],n=this.stack.length;for(this.pushTokens(e);this.stack.length>n;)!1===this.expandOnce(!0)&&((t=this.stack.pop()).treatAsRelax&&(t.noexpand=!1,t.treatAsRelax=!1),r.push(t));return this.countExpansion(r.length),r}expandMacroAsText(e){return(e=this.expandMacro(e))&&e.map(e=>e.text).join("")}_getExpansion(a){var e=this.macros.get(a);if(null==e)return e;if(1===a.length){var t=this.lexer.catcodes[a];if(null!=t&&13!==t)return}if("string"!=typeof(a="function"==typeof e?e(this):e))return a;{let e=0;if(-1!==a.indexOf("#"))for(var i=a.replace(/##/g,"");-1!==i.indexOf("#"+(e+1));)++e;let t=new Tr(a,this.settings),r=[],n=t.lex();for(;"EOF"!==n.text;)r.push(n),n=t.lex();return r.reverse(),{tokens:r,numArgs:e}}}isDefined(e){return this.macros.has(e)||cr.hasOwnProperty(e)||vt.math.hasOwnProperty(e)||vt.text.hasOwnProperty(e)||mt.hasOwnProperty(e)}isExpandable(e){var t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:cr.hasOwnProperty(e)&&!cr[e].primitive}}let ct=/^[\u208a\u208b\u208c\u208d\u208e\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u2090\u2091\u2095\u1d62\u2c7c\u2096\u2097\u2098\u2099\u2092\u209a\u1d63\u209b\u209c\u1d64\u1d65\u2093\u1d66\u1d67\u1d68\u1d69\u1d6a]/,R=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g","ʰ":"h","ⁱ":"i","ʲ":"j","ᵏ":"k","ˡ":"l","ᵐ":"m","ⁿ":"n","ᵒ":"o","ᵖ":"p","ʳ":"r","ˢ":"s","ᵗ":"t","ᵘ":"u","ᵛ":"v","ʷ":"w","ˣ":"x","ʸ":"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),pt={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},dt={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","ḉ":"ḉ","č":"č","ĉ":"ĉ","ċ":"ċ","ç":"ç","ď":"ď","ḋ":"ḋ","ḑ":"ḑ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ḝ":"ḝ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ȩ":"ȩ","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ģ":"ģ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","ḩ":"ḩ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ķ":"ķ","ĺ":"ĺ","ľ":"ľ","ļ":"ļ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ņ":"ņ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ŗ":"ŗ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ş":"ş","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ţ":"ţ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Ḉ":"Ḉ","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ç":"Ç","Ď":"Ď","Ḋ":"Ḋ","Ḑ":"Ḑ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ḝ":"Ḝ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ȩ":"Ȩ","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ģ":"Ģ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Ḩ":"Ḩ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ķ":"Ķ","Ĺ":"Ĺ","Ľ":"Ľ","Ļ":"Ļ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ņ":"Ņ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ŗ":"Ŗ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ş":"Ş","Ť":"Ť","Ṫ":"Ṫ","Ţ":"Ţ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"};class Nr{constructor(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new Cr(e,t,this.mode),this.settings=t,this.leftrightDepth=0}expect(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new ft("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var t=this.nextToken,e=(this.consume(),this.gullet.pushToken(new Kt("}")),this.gullet.pushTokens(e),this.parseExpression(!1));return this.expect("}"),this.nextToken=t,e}parseExpression(e,t){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var n=this.fetch();if(-1!==Nr.endOfExpression.indexOf(n.text))break;if(t&&n.text===t)break;if(e&&cr[n.text]&&cr[n.text].infix)break;if(!(n=this.parseAtom(t)))break;"internal"!==n.type&&r.push(n)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(t){let r,n=-1;for(let e=0;e{"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)})("undefined"!=typeof self?self:this,function(t){return r={771:function(e){e.exports=t}},a={},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.d(p={},{default:function(){return o}}),e=n(771),s=n.n(e),l=function(e,t,r){for(var n=r,a=0,i=e.length;n{var t=" "+a.className+" ";-1===r.ignoredTags.indexOf(a.nodeName.toLowerCase())&&r.ignoredClasses.every(function(e){return-1===t.indexOf(" "+e+" ")})&&e(a,r)})()}},o=function(e,t){if(!e)throw Error("No element provided to render");var r,n={};for(r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);n.delimiters=n.delimiters||[{left:"$$",right:"$$",display:!0},{left:"$",right:"$",display:!1},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],n.ignoredTags=n.ignoredTags||["script","noscript","style","textarea","pre","code","option"],n.ignoredClasses=n.ignoredClasses||[],n.errorCallback=n.errorCallback||console.error,n.macros=n.macros||{},i(e,n)},p.default;function n(e){var t=a[e];return void 0===t&&(t=a[e]={exports:{}},r[e](t,t.exports,n)),t.exports}var r,a,e,s,l,h,m,c,i,o,p}),document.addEventListener("DOMContentLoaded",function(){renderMathInElement(document.body)}); diff --git a/static/js/loadComments.js b/static/js/loadComments.js new file mode 100644 index 0000000..911f1ca --- /dev/null +++ b/static/js/loadComments.js @@ -0,0 +1,26 @@ +// Wait for the full HTML document to be parsed and ready. +document.addEventListener('DOMContentLoaded', () => { + // Retrieve the button element. + const loadCommentsButton = document.querySelector('#load-comments'); + + // If the button exists… + if (loadCommentsButton) { + // Add a "click" event listener to the button. + loadCommentsButton.addEventListener('click', () => { + // Create a new "script" HTML element. + const script = document.createElement('script'); + + // Set the source of the script to the URL in the button's "data-script-src" attribute. + script.src = loadCommentsButton.dataset.scriptSrc; + + // Load asynchronously. + script.async = true; + + // Add the script element to the end of the document body, which causes the script to start loading and executing. + document.body.appendChild(script); + + // Hide the button after it's clicked. + loadCommentsButton.style.display = 'none'; + }); + } +}); diff --git a/static/js/loadComments.min.js b/static/js/loadComments.min.js new file mode 100644 index 0000000..ef14653 --- /dev/null +++ b/static/js/loadComments.min.js @@ -0,0 +1 @@ +document.addEventListener("DOMContentLoaded",()=>{const t=document.querySelector("#load-comments");t&&t.addEventListener("click",()=>{var e=document.createElement("script");e.src=t.dataset.scriptSrc,e.async=!0,document.body.appendChild(e),t.style.display="none"})}); diff --git a/static/js/lunr/lunr.da.js b/static/js/lunr/lunr.da.js new file mode 100644 index 0000000..32c6d01 --- /dev/null +++ b/static/js/lunr/lunr.da.js @@ -0,0 +1,280 @@ +/*! + * Lunr languages, `Danish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.da = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.da.trimmer, + lunr.da.stopWordFilter, + lunr.da.stemmer + ); + }; + + /* lunr trimmer function */ + lunr.da.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.da.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.da.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.da.trimmer, 'trimmer-da'); + + /* lunr stemmer function */ + lunr.da.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function DanishStemmer() { + var a_0 = [new Among("hed", -1, 1), new Among("ethed", 0, 1), + new Among("ered", -1, 1), new Among("e", -1, 1), + new Among("erede", 3, 1), new Among("ende", 3, 1), + new Among("erende", 5, 1), new Among("ene", 3, 1), + new Among("erne", 3, 1), new Among("ere", 3, 1), + new Among("en", -1, 1), new Among("heden", 10, 1), + new Among("eren", 10, 1), new Among("er", -1, 1), + new Among("heder", 13, 1), new Among("erer", 13, 1), + new Among("s", -1, 2), new Among("heds", 16, 1), + new Among("es", 16, 1), new Among("endes", 18, 1), + new Among("erendes", 19, 1), new Among("enes", 18, 1), + new Among("ernes", 18, 1), new Among("eres", 18, 1), + new Among("ens", 16, 1), new Among("hedens", 24, 1), + new Among("erens", 24, 1), new Among("ers", 16, 1), + new Among("ets", 16, 1), new Among("erets", 28, 1), + new Among("et", -1, 1), new Among("eret", 30, 1) + ], + a_1 = [ + new Among("gd", -1, -1), new Among("dt", -1, -1), + new Among("gt", -1, -1), new Among("kt", -1, -1) + ], + a_2 = [ + new Among("ig", -1, 1), new Among("lig", 0, 1), + new Among("elig", 1, 1), new Among("els", -1, 1), + new Among("l\u00F8st", -1, 2) + ], + g_v = [17, 65, 16, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 + ], + g_s_ending = [239, 254, 42, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 + ], + I_x, I_p1, S_ch, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_mark_regions() { + var v_1, c = sbp.cursor + 3; + I_p1 = sbp.limit; + if (0 <= c && c <= sbp.limit) { + I_x = c; + while (true) { + v_1 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 248)) { + sbp.cursor = v_1; + break; + } + sbp.cursor = v_1; + if (v_1 >= sbp.limit) + return; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 248)) { + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + I_p1 = sbp.cursor; + if (I_p1 < I_x) + I_p1 = I_x; + } + } + + function r_main_suffix() { + var among_var, v_1; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_0, 32); + sbp.limit_backward = v_1; + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + if (sbp.in_grouping_b(g_s_ending, 97, 229)) + sbp.slice_del(); + break; + } + } + } + } + + function r_consonant_pair() { + var v_1 = sbp.limit - sbp.cursor, + v_2; + if (sbp.cursor >= I_p1) { + v_2 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + if (sbp.find_among_b(a_1, 4)) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_2; + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } else + sbp.limit_backward = v_2; + } + } + + function r_other_suffix() { + var among_var, v_1 = sbp.limit - sbp.cursor, + v_2, v_3; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "st")) { + sbp.bra = sbp.cursor; + if (sbp.eq_s_b(2, "ig")) + sbp.slice_del(); + } + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor >= I_p1) { + v_2 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 5); + sbp.limit_backward = v_2; + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_del(); + v_3 = sbp.limit - sbp.cursor; + r_consonant_pair(); + sbp.cursor = sbp.limit - v_3; + break; + case 2: + sbp.slice_from("l\u00F8s"); + break; + } + } + } + } + + function r_undouble() { + var v_1; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + if (sbp.out_grouping_b(g_v, 97, 248)) { + sbp.bra = sbp.cursor; + S_ch = sbp.slice_to(S_ch); + sbp.limit_backward = v_1; + if (sbp.eq_v_b(S_ch)) + sbp.slice_del(); + } else + sbp.limit_backward = v_1; + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_main_suffix(); + sbp.cursor = sbp.limit; + r_consonant_pair(); + sbp.cursor = sbp.limit; + r_other_suffix(); + sbp.cursor = sbp.limit; + r_undouble(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.da.stemmer, 'stemmer-da'); + + /* stop word filter function */ + lunr.da.stopWordFilter = function(token) { + if (lunr.da.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.da.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.da.stopWordFilter.stopWords.length = 95; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.da.stopWordFilter.stopWords.elements = ' ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været'.split(' '); + + lunr.Pipeline.registerFunction(lunr.da.stopWordFilter, 'stopWordFilter-da'); + }; +})) diff --git a/static/js/lunr/lunr.da.min.js b/static/js/lunr/lunr.da.min.js new file mode 100644 index 0000000..eb41d29 --- /dev/null +++ b/static/js/lunr/lunr.da.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var e,t,i;r.da=function(){this.pipeline.reset(),this.pipeline.add(r.da.trimmer,r.da.stopWordFilter,r.da.stemmer)},r.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.da.trimmer=r.trimmerSupport.generateTrimmer(r.da.wordCharacters),r.Pipeline.registerFunction(r.da.trimmer,"trimmer-da"),r.da.stemmer=(e=r.stemmerSupport.Among,t=r.stemmerSupport.SnowballProgram,i=new function(){var n,s,o,d=[new e("hed",-1,1),new e("ethed",0,1),new e("ered",-1,1),new e("e",-1,1),new e("erede",3,1),new e("ende",3,1),new e("erende",5,1),new e("ene",3,1),new e("erne",3,1),new e("ere",3,1),new e("en",-1,1),new e("heden",10,1),new e("eren",10,1),new e("er",-1,1),new e("heder",13,1),new e("erer",13,1),new e("s",-1,2),new e("heds",16,1),new e("es",16,1),new e("endes",18,1),new e("erendes",19,1),new e("enes",18,1),new e("ernes",18,1),new e("eres",18,1),new e("ens",16,1),new e("hedens",24,1),new e("erens",24,1),new e("ers",16,1),new e("ets",16,1),new e("erets",28,1),new e("et",-1,1),new e("eret",30,1)],i=[new e("gd",-1,-1),new e("dt",-1,-1),new e("gt",-1,-1),new e("kt",-1,-1)],a=[new e("ig",-1,1),new e("lig",0,1),new e("elig",1,1),new e("els",-1,1),new e("løst",-1,2)],u=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],l=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],c=new t;function m(){var e,r=c.limit-c.cursor;c.cursor>=s&&(e=c.limit_backward,c.limit_backward=s,c.ket=c.cursor,c.find_among_b(i,4)?(c.bra=c.cursor,c.limit_backward=e,c.cursor=c.limit-r,c.cursor>c.limit_backward&&(c.cursor--,c.bra=c.cursor,c.slice_del())):c.limit_backward=e)}this.setCurrent=function(e){c.setCurrent(e)},this.getCurrent=function(){return c.getCurrent()},this.stem=function(){var e,r=c.cursor;if(function(){var e,r=c.cursor+3;if(s=c.limit,0<=r&&r<=c.limit){for(n=r;;){if(e=c.cursor,c.in_grouping(u,97,248)){c.cursor=e;break}if((c.cursor=e)>=c.limit)return;c.cursor++}for(;!c.out_grouping(u,97,248);){if(c.cursor>=c.limit)return;c.cursor++}(s=c.cursor)=s&&(r=c.limit_backward,c.limit_backward=s,c.ket=c.cursor,e=c.find_among_b(d,32),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del();break;case 2:c.in_grouping_b(l,97,229)&&c.slice_del()}c.cursor=c.limit,m(),c.cursor=c.limit;var i,t,r=c.limit-c.cursor;if(c.ket=c.cursor,c.eq_s_b(2,"st")&&(c.bra=c.cursor,c.eq_s_b(2,"ig"))&&c.slice_del(),c.cursor=c.limit-r,c.cursor>=s&&(r=c.limit_backward,c.limit_backward=s,c.ket=c.cursor,i=c.find_among_b(a,5),c.limit_backward=r,i))switch(c.bra=c.cursor,i){case 1:c.slice_del(),t=c.limit-c.cursor,m(),c.cursor=c.limit-t;break;case 2:c.slice_from("løs")}return c.cursor=c.limit,c.cursor>=s&&(e=c.limit_backward,c.limit_backward=s,c.ket=c.cursor,c.out_grouping_b(u,97,248)?(c.bra=c.cursor,o=c.slice_to(o),c.limit_backward=e,c.eq_v_b(o)&&c.slice_del()):c.limit_backward=e),!0}},function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}),r.Pipeline.registerFunction(r.da.stemmer,"stemmer-da"),r.da.stopWordFilter=function(e){if(-1===r.da.stopWordFilter.stopWords.indexOf(e))return e},r.da.stopWordFilter.stopWords=new r.SortedSet,r.da.stopWordFilter.stopWords.length=95,r.da.stopWordFilter.stopWords.elements=" ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" "),r.Pipeline.registerFunction(r.da.stopWordFilter,"stopWordFilter-da")}}); diff --git a/static/js/lunr/lunr.de.js b/static/js/lunr/lunr.de.js new file mode 100644 index 0000000..5cd9243 --- /dev/null +++ b/static/js/lunr/lunr.de.js @@ -0,0 +1,380 @@ +/*! + * Lunr languages, `German` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.de = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.de.trimmer, + lunr.de.stopWordFilter, + lunr.de.stemmer + ); + }; + + /* lunr trimmer function */ + lunr.de.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.de.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.de.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.de.trimmer, 'trimmer-de'); + + /* lunr stemmer function */ + lunr.de.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function GermanStemmer() { + var a_0 = [new Among("", -1, 6), new Among("U", 0, 2), + new Among("Y", 0, 1), new Among("\u00E4", 0, 3), + new Among("\u00F6", 0, 4), new Among("\u00FC", 0, 5) + ], + a_1 = [ + new Among("e", -1, 2), new Among("em", -1, 1), + new Among("en", -1, 2), new Among("ern", -1, 1), + new Among("er", -1, 1), new Among("s", -1, 3), + new Among("es", 5, 2) + ], + a_2 = [new Among("en", -1, 1), + new Among("er", -1, 1), new Among("st", -1, 2), + new Among("est", 2, 1) + ], + a_3 = [new Among("ig", -1, 1), + new Among("lich", -1, 1) + ], + a_4 = [new Among("end", -1, 1), + new Among("ig", -1, 2), new Among("ung", -1, 1), + new Among("lich", -1, 3), new Among("isch", -1, 2), + new Among("ik", -1, 2), new Among("heit", -1, 3), + new Among("keit", -1, 4) + ], + g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 8, 0, 32, 8 + ], + g_s_ending = [117, 30, 5], + g_st_ending = [ + 117, 30, 4 + ], + I_x, I_p2, I_p1, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr1(c1, c2, v_1) { + if (sbp.eq_s(1, c1)) { + sbp.ket = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 252)) { + sbp.slice_from(c2); + sbp.cursor = v_1; + return true; + } + } + return false; + } + + function r_prelude() { + var v_1 = sbp.cursor, + v_2, v_3, v_4, v_5; + while (true) { + v_2 = sbp.cursor; + sbp.bra = v_2; + if (sbp.eq_s(1, "\u00DF")) { + sbp.ket = sbp.cursor; + sbp.slice_from("ss"); + } else { + if (v_2 >= sbp.limit) + break; + sbp.cursor = v_2 + 1; + } + } + sbp.cursor = v_1; + while (true) { + v_3 = sbp.cursor; + while (true) { + v_4 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 252)) { + v_5 = sbp.cursor; + sbp.bra = v_5; + if (habr1("u", "U", v_4)) + break; + sbp.cursor = v_5; + if (habr1("y", "Y", v_4)) + break; + } + if (v_4 >= sbp.limit) { + sbp.cursor = v_3; + return; + } + sbp.cursor = v_4 + 1; + } + } + } + + function habr2() { + while (!sbp.in_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + + function r_mark_regions() { + I_p1 = sbp.limit; + I_p2 = I_p1; + var c = sbp.cursor + 3; + if (0 <= c && c <= sbp.limit) { + I_x = c; + if (!habr2()) { + I_p1 = sbp.cursor; + if (I_p1 < I_x) + I_p1 = I_x; + if (!habr2()) + I_p2 = sbp.cursor; + } + } + } + + function r_postlude() { + var among_var, v_1; + while (true) { + v_1 = sbp.cursor; + sbp.bra = v_1; + among_var = sbp.find_among(a_0, 6); + if (!among_var) + return; + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("y"); + break; + case 2: + case 5: + sbp.slice_from("u"); + break; + case 3: + sbp.slice_from("a"); + break; + case 4: + sbp.slice_from("o"); + break; + case 6: + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + break; + } + } + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_standard_suffix() { + var among_var, v_1 = sbp.limit - sbp.cursor, + v_2, v_3, v_4; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_1, 7); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "s")) { + sbp.bra = sbp.cursor; + if (sbp.eq_s_b(3, "nis")) + sbp.slice_del(); + } + break; + case 3: + if (sbp.in_grouping_b(g_s_ending, 98, 116)) + sbp.slice_del(); + break; + } + } + } + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 4); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + if (sbp.in_grouping_b(g_st_ending, 98, 116)) { + var c = sbp.cursor - 3; + if (sbp.limit_backward <= c && c <= sbp.limit) { + sbp.cursor = c; + sbp.slice_del(); + } + } + break; + } + } + } + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 8); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2()) { + switch (among_var) { + case 1: + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "ig")) { + sbp.bra = sbp.cursor; + v_2 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "e")) { + sbp.cursor = sbp.limit - v_2; + if (r_R2()) + sbp.slice_del(); + } + } + break; + case 2: + v_3 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "e")) { + sbp.cursor = sbp.limit - v_3; + sbp.slice_del(); + } + break; + case 3: + sbp.slice_del(); + sbp.ket = sbp.cursor; + v_4 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(2, "er")) { + sbp.cursor = sbp.limit - v_4; + if (!sbp.eq_s_b(2, "en")) + break; + } + sbp.bra = sbp.cursor; + if (r_R1()) + sbp.slice_del(); + break; + case 4: + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 2); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2() && among_var == 1) + sbp.slice_del(); + } + break; + } + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_prelude(); + sbp.cursor = v_1; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_standard_suffix(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.de.stemmer, 'stemmer-de'); + + /* stop word filter function */ + lunr.de.stopWordFilter = function(token) { + if (lunr.de.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.de.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.de.stopWordFilter.stopWords.length = 232; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.de.stopWordFilter.stopWords.elements = ' aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daß dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über'.split(' '); + + lunr.Pipeline.registerFunction(lunr.de.stopWordFilter, 'stopWordFilter-de'); + }; +})) diff --git a/static/js/lunr/lunr.de.min.js b/static/js/lunr/lunr.de.min.js new file mode 100644 index 0000000..7d099c6 --- /dev/null +++ b/static/js/lunr/lunr.de.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var e,n,i;r.de=function(){this.pipeline.reset(),this.pipeline.add(r.de.trimmer,r.de.stopWordFilter,r.de.stemmer)},r.de.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.de.trimmer=r.trimmerSupport.generateTrimmer(r.de.wordCharacters),r.Pipeline.registerFunction(r.de.trimmer,"trimmer-de"),r.de.stemmer=(e=r.stemmerSupport.Among,n=r.stemmerSupport.SnowballProgram,i=new function(){var t,o,c,u=[new e("",-1,6),new e("U",0,2),new e("Y",0,1),new e("ä",0,3),new e("ö",0,4),new e("ü",0,5)],d=[new e("e",-1,2),new e("em",-1,1),new e("en",-1,2),new e("ern",-1,1),new e("er",-1,1),new e("s",-1,3),new e("es",5,2)],l=[new e("en",-1,1),new e("er",-1,1),new e("st",-1,2),new e("est",2,1)],a=[new e("ig",-1,1),new e("lich",-1,1)],m=[new e("end",-1,1),new e("ig",-1,2),new e("ung",-1,1),new e("lich",-1,3),new e("isch",-1,2),new e("ik",-1,2),new e("heit",-1,3),new e("keit",-1,4)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8],h=[117,30,5],b=[117,30,4],f=new n;function _(e,r,n){return f.eq_s(1,e)&&(f.ket=f.cursor,f.in_grouping(w,97,252))&&(f.slice_from(r),f.cursor=n,1)}function p(){for(;!f.in_grouping(w,97,252);){if(f.cursor>=f.limit)return 1;f.cursor++}for(;!f.out_grouping(w,97,252);){if(f.cursor>=f.limit)return 1;f.cursor++}}function g(){return c<=f.cursor}function k(){return o<=f.cursor}this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var e=f.cursor;!function(){for(var e,r,n,i,s=f.cursor;;)if(e=f.cursor,f.bra=e,f.eq_s(1,"ß"))f.ket=f.cursor,f.slice_from("ss");else{if(e>=f.limit)break;f.cursor=e+1}for(f.cursor=s;;)for(r=f.cursor;;){if(n=f.cursor,f.in_grouping(w,97,252)){if(i=f.cursor,f.bra=i,_("u","U",n))break;if(f.cursor=i,_("y","Y",n))break}if(n>=f.limit)return f.cursor=r;f.cursor=n+1}}(),f.cursor=e,c=f.limit,o=c,0<=(s=f.cursor+3)&&s<=f.limit&&(t=s,p()||((c=f.cursor)=f.limit)return;f.cursor++}}}(),!0}},function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}),r.Pipeline.registerFunction(r.de.stemmer,"stemmer-de"),r.de.stopWordFilter=function(e){if(-1===r.de.stopWordFilter.stopWords.indexOf(e))return e},r.de.stopWordFilter.stopWords=new r.SortedSet,r.de.stopWordFilter.stopWords.length=232,r.de.stopWordFilter.stopWords.elements=" aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daß dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über".split(" "),r.Pipeline.registerFunction(r.de.stopWordFilter,"stopWordFilter-de")}}); diff --git a/static/js/lunr/lunr.du.js b/static/js/lunr/lunr.du.js new file mode 100644 index 0000000..cf4eda5 --- /dev/null +++ b/static/js/lunr/lunr.du.js @@ -0,0 +1,444 @@ +/*! + * Lunr languages, `Dutch` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.du = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.du.trimmer, + lunr.du.stopWordFilter, + lunr.du.stemmer + ); + }; + + /* lunr trimmer function */ + lunr.du.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.du.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.du.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.du.trimmer, 'trimmer-du'); + + /* lunr stemmer function */ + lunr.du.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function DutchStemmer() { + var a_0 = [new Among("", -1, 6), new Among("\u00E1", 0, 1), + new Among("\u00E4", 0, 1), new Among("\u00E9", 0, 2), + new Among("\u00EB", 0, 2), new Among("\u00ED", 0, 3), + new Among("\u00EF", 0, 3), new Among("\u00F3", 0, 4), + new Among("\u00F6", 0, 4), new Among("\u00FA", 0, 5), + new Among("\u00FC", 0, 5) + ], + a_1 = [new Among("", -1, 3), + new Among("I", 0, 2), new Among("Y", 0, 1) + ], + a_2 = [ + new Among("dd", -1, -1), new Among("kk", -1, -1), + new Among("tt", -1, -1) + ], + a_3 = [new Among("ene", -1, 2), + new Among("se", -1, 3), new Among("en", -1, 2), + new Among("heden", 2, 1), new Among("s", -1, 3) + ], + a_4 = [ + new Among("end", -1, 1), new Among("ig", -1, 2), + new Among("ing", -1, 1), new Among("lijk", -1, 3), + new Among("baar", -1, 4), new Among("bar", -1, 5) + ], + a_5 = [ + new Among("aa", -1, -1), new Among("ee", -1, -1), + new Among("oo", -1, -1), new Among("uu", -1, -1) + ], + g_v = [17, 65, + 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 + ], + g_v_I = [1, 0, 0, + 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 + ], + g_v_j = [ + 17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 + ], + I_p2, I_p1, B_e_found, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_prelude() { + var among_var, v_1 = sbp.cursor, + v_2, v_3; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_0, 11); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("a"); + continue; + case 2: + sbp.slice_from("e"); + continue; + case 3: + sbp.slice_from("i"); + continue; + case 4: + sbp.slice_from("o"); + continue; + case 5: + sbp.slice_from("u"); + continue; + case 6: + if (sbp.cursor >= sbp.limit) + break; + sbp.cursor++; + continue; + } + } + break; + } + sbp.cursor = v_1; + sbp.bra = v_1; + if (sbp.eq_s(1, "y")) { + sbp.ket = sbp.cursor; + sbp.slice_from("Y"); + } else + sbp.cursor = v_1; + while (true) { + v_2 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 232)) { + v_3 = sbp.cursor; + sbp.bra = v_3; + if (sbp.eq_s(1, "i")) { + sbp.ket = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 232)) { + sbp.slice_from("I"); + sbp.cursor = v_2; + } + } else { + sbp.cursor = v_3; + if (sbp.eq_s(1, "y")) { + sbp.ket = sbp.cursor; + sbp.slice_from("Y"); + sbp.cursor = v_2; + } else if (habr1(v_2)) + break; + } + } else if (habr1(v_2)) + break; + } + } + + function habr1(v_1) { + sbp.cursor = v_1; + if (v_1 >= sbp.limit) + return true; + sbp.cursor++; + return false; + } + + function r_mark_regions() { + I_p1 = sbp.limit; + I_p2 = I_p1; + if (!habr2()) { + I_p1 = sbp.cursor; + if (I_p1 < 3) + I_p1 = 3; + if (!habr2()) + I_p2 = sbp.cursor; + } + } + + function habr2() { + while (!sbp.in_grouping(g_v, 97, 232)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 232)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + + function r_postlude() { + var among_var; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_1, 3); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("y"); + break; + case 2: + sbp.slice_from("i"); + break; + case 3: + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + break; + } + } + } + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_undouble() { + var v_1 = sbp.limit - sbp.cursor; + if (sbp.find_among_b(a_2, 3)) { + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } + } + + function r_e_ending() { + var v_1; + B_e_found = false; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "e")) { + sbp.bra = sbp.cursor; + if (r_R1()) { + v_1 = sbp.limit - sbp.cursor; + if (sbp.out_grouping_b(g_v, 97, 232)) { + sbp.cursor = sbp.limit - v_1; + sbp.slice_del(); + B_e_found = true; + r_undouble(); + } + } + } + } + + function r_en_ending() { + var v_1; + if (r_R1()) { + v_1 = sbp.limit - sbp.cursor; + if (sbp.out_grouping_b(g_v, 97, 232)) { + sbp.cursor = sbp.limit - v_1; + if (!sbp.eq_s_b(3, "gem")) { + sbp.cursor = sbp.limit - v_1; + sbp.slice_del(); + r_undouble(); + } + } + } + } + + function r_standard_suffix() { + var among_var, v_1 = sbp.limit - sbp.cursor, + v_2, v_3, v_4, v_5, v_6; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 5); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_R1()) + sbp.slice_from("heid"); + break; + case 2: + r_en_ending(); + break; + case 3: + if (r_R1() && sbp.out_grouping_b(g_v_j, 97, 232)) + sbp.slice_del(); + break; + } + } + sbp.cursor = sbp.limit - v_1; + r_e_ending(); + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(4, "heid")) { + sbp.bra = sbp.cursor; + if (r_R2()) { + v_2 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "c")) { + sbp.cursor = sbp.limit - v_2; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "en")) { + sbp.bra = sbp.cursor; + r_en_ending(); + } + } + } + } + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 6); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_R2()) { + sbp.slice_del(); + v_3 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "ig")) { + sbp.bra = sbp.cursor; + if (r_R2()) { + v_4 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "e")) { + sbp.cursor = sbp.limit - v_4; + sbp.slice_del(); + break; + } + } + } + sbp.cursor = sbp.limit - v_3; + r_undouble(); + } + break; + case 2: + if (r_R2()) { + v_5 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "e")) { + sbp.cursor = sbp.limit - v_5; + sbp.slice_del(); + } + } + break; + case 3: + if (r_R2()) { + sbp.slice_del(); + r_e_ending(); + } + break; + case 4: + if (r_R2()) + sbp.slice_del(); + break; + case 5: + if (r_R2() && B_e_found) + sbp.slice_del(); + break; + } + } + sbp.cursor = sbp.limit - v_1; + if (sbp.out_grouping_b(g_v_I, 73, 232)) { + v_6 = sbp.limit - sbp.cursor; + if (sbp.find_among_b(a_5, 4) && sbp.out_grouping_b(g_v, 97, 232)) { + sbp.cursor = sbp.limit - v_6; + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_prelude(); + sbp.cursor = v_1; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_standard_suffix(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.du.stemmer, 'stemmer-du'); + + /* stop word filter function */ + lunr.du.stopWordFilter = function(token) { + if (lunr.du.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.du.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.du.stopWordFilter.stopWords.length = 103; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.du.stopWordFilter.stopWords.elements = ' aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou'.split(' '); + + lunr.Pipeline.registerFunction(lunr.du.stopWordFilter, 'stopWordFilter-du'); + }; +})) diff --git a/static/js/lunr/lunr.du.min.js b/static/js/lunr/lunr.du.min.js new file mode 100644 index 0000000..8ac0d07 --- /dev/null +++ b/static/js/lunr/lunr.du.min.js @@ -0,0 +1 @@ +!function(r,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(r.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,i,o;e.du=function(){this.pipeline.reset(),this.pipeline.add(e.du.trimmer,e.du.stopWordFilter,e.du.stemmer)},e.du.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.du.trimmer=e.trimmerSupport.generateTrimmer(e.du.wordCharacters),e.Pipeline.registerFunction(e.du.trimmer,"trimmer-du"),e.du.stemmer=(r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,o=new function(){var c,a,l,m=[new r("",-1,6),new r("á",0,1),new r("ä",0,1),new r("é",0,2),new r("ë",0,2),new r("í",0,3),new r("ï",0,3),new r("ó",0,4),new r("ö",0,4),new r("ú",0,5),new r("ü",0,5)],d=[new r("",-1,3),new r("I",0,2),new r("Y",0,1)],e=[new r("dd",-1,-1),new r("kk",-1,-1),new r("tt",-1,-1)],f=[new r("ene",-1,2),new r("se",-1,3),new r("en",-1,2),new r("heden",2,1),new r("s",-1,3)],_=[new r("end",-1,1),new r("ig",-1,2),new r("ing",-1,1),new r("lijk",-1,3),new r("baar",-1,4),new r("bar",-1,5)],w=[new r("aa",-1,-1),new r("ee",-1,-1),new r("oo",-1,-1),new r("uu",-1,-1)],b=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],p=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],g=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],k=new i;function h(r){if((k.cursor=r)>=k.limit)return 1;k.cursor++}function v(){for(;!k.in_grouping(b,97,232);){if(k.cursor>=k.limit)return 1;k.cursor++}for(;!k.out_grouping(b,97,232);){if(k.cursor>=k.limit)return 1;k.cursor++}}function q(){return a<=k.cursor}function z(){return c<=k.cursor}function W(){var r=k.limit-k.cursor;k.find_among_b(e,3)&&(k.cursor=k.limit-r,k.ket=k.cursor,k.cursor>k.limit_backward)&&(k.cursor--,k.bra=k.cursor,k.slice_del())}function j(){var r;l=!1,k.ket=k.cursor,k.eq_s_b(1,"e")&&(k.bra=k.cursor,q())&&(r=k.limit-k.cursor,k.out_grouping_b(b,97,232))&&(k.cursor=k.limit-r,k.slice_del(),l=!0,W())}function F(){var r;q()&&(r=k.limit-k.cursor,k.out_grouping_b(b,97,232))&&(k.cursor=k.limit-r,k.eq_s_b(3,"gem")||(k.cursor=k.limit-r,k.slice_del(),W()))}this.setCurrent=function(r){k.setCurrent(r)},this.getCurrent=function(){return k.getCurrent()},this.stem=function(){for(var r,e,i,o=k.cursor,t=k.cursor;;){if(k.bra=k.cursor,r=k.find_among(m,11))switch(k.ket=k.cursor,r){case 1:k.slice_from("a");continue;case 2:k.slice_from("e");continue;case 3:k.slice_from("i");continue;case 4:k.slice_from("o");continue;case 5:k.slice_from("u");continue;case 6:if(!(k.cursor>=k.limit)){k.cursor++;continue}}break}for(k.cursor=t,k.bra=t,k.eq_s(1,"y")?(k.ket=k.cursor,k.slice_from("Y")):k.cursor=t;;)if(e=k.cursor,k.in_grouping(b,97,232)){if(i=k.cursor,k.bra=i,k.eq_s(1,"i"))k.ket=k.cursor,k.in_grouping(b,97,232)&&(k.slice_from("I"),k.cursor=e);else if(k.cursor=i,k.eq_s(1,"y"))k.ket=k.cursor,k.slice_from("Y"),k.cursor=e;else if(h(e))break}else if(h(e))break;k.cursor=o,a=k.limit,c=a,v()||((a=k.cursor)<3&&(a=3),v())||(c=k.cursor),k.limit_backward=o,k.cursor=k.limit;var s,n,u,t=k.limit-k.cursor;if(k.ket=k.cursor,o=k.find_among_b(f,5))switch(k.bra=k.cursor,o){case 1:q()&&k.slice_from("heid");break;case 2:F();break;case 3:q()&&k.out_grouping_b(g,97,232)&&k.slice_del()}if(k.cursor=k.limit-t,j(),k.cursor=k.limit-t,k.ket=k.cursor,k.eq_s_b(4,"heid")&&(k.bra=k.cursor,z())&&(u=k.limit-k.cursor,k.eq_s_b(1,"c")||(k.cursor=k.limit-u,k.slice_del(),k.ket=k.cursor,k.eq_s_b(2,"en")&&(k.bra=k.cursor,F()))),k.cursor=k.limit-t,k.ket=k.cursor,o=k.find_among_b(_,6))switch(k.bra=k.cursor,o){case 1:if(z()){if(k.slice_del(),s=k.limit-k.cursor,k.ket=k.cursor,k.eq_s_b(2,"ig")&&(k.bra=k.cursor,z())&&(n=k.limit-k.cursor,!k.eq_s_b(1,"e"))){k.cursor=k.limit-n,k.slice_del();break}k.cursor=k.limit-s,W()}break;case 2:z()&&(n=k.limit-k.cursor,k.eq_s_b(1,"e")||(k.cursor=k.limit-n,k.slice_del()));break;case 3:z()&&(k.slice_del(),j());break;case 4:z()&&k.slice_del();break;case 5:z()&&l&&k.slice_del()}return k.cursor=k.limit-t,k.out_grouping_b(p,73,232)&&(u=k.limit-k.cursor,k.find_among_b(w,4))&&k.out_grouping_b(b,97,232)&&(k.cursor=k.limit-u,k.ket=k.cursor,k.cursor>k.limit_backward)&&(k.cursor--,k.bra=k.cursor,k.slice_del()),k.cursor=k.limit_backward,function(){for(var r;;)if(k.bra=k.cursor,r=k.find_among(d,3))switch(k.ket=k.cursor,r){case 1:k.slice_from("y");break;case 2:k.slice_from("i");break;case 3:if(k.cursor>=k.limit)return;k.cursor++}}(),!0}},function(r){return o.setCurrent(r),o.stem(),o.getCurrent()}),e.Pipeline.registerFunction(e.du.stemmer,"stemmer-du"),e.du.stopWordFilter=function(r){if(-1===e.du.stopWordFilter.stopWords.indexOf(r))return r},e.du.stopWordFilter.stopWords=new e.SortedSet,e.du.stopWordFilter.stopWords.length=103,e.du.stopWordFilter.stopWords.elements=" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" "),e.Pipeline.registerFunction(e.du.stopWordFilter,"stopWordFilter-du")}}); diff --git a/static/js/lunr/lunr.es.js b/static/js/lunr/lunr.es.js new file mode 100644 index 0000000..aa43b27 --- /dev/null +++ b/static/js/lunr/lunr.es.js @@ -0,0 +1,595 @@ +/*! + * Lunr languages, `Spanish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.es = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.es.trimmer, + lunr.es.stopWordFilter, + lunr.es.stemmer + ); + }; + + /* lunr trimmer function */ + lunr.es.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.es.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.es.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.es.trimmer, 'trimmer-es'); + + /* lunr stemmer function */ + lunr.es.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function SpanishStemmer() { + var a_0 = [new Among("", -1, 6), new Among("\u00E1", 0, 1), + new Among("\u00E9", 0, 2), new Among("\u00ED", 0, 3), + new Among("\u00F3", 0, 4), new Among("\u00FA", 0, 5) + ], + a_1 = [ + new Among("la", -1, -1), new Among("sela", 0, -1), + new Among("le", -1, -1), new Among("me", -1, -1), + new Among("se", -1, -1), new Among("lo", -1, -1), + new Among("selo", 5, -1), new Among("las", -1, -1), + new Among("selas", 7, -1), new Among("les", -1, -1), + new Among("los", -1, -1), new Among("selos", 10, -1), + new Among("nos", -1, -1) + ], + a_2 = [new Among("ando", -1, 6), + new Among("iendo", -1, 6), new Among("yendo", -1, 7), + new Among("\u00E1ndo", -1, 2), new Among("i\u00E9ndo", -1, 1), + new Among("ar", -1, 6), new Among("er", -1, 6), + new Among("ir", -1, 6), new Among("\u00E1r", -1, 3), + new Among("\u00E9r", -1, 4), new Among("\u00EDr", -1, 5) + ], + a_3 = [ + new Among("ic", -1, -1), new Among("ad", -1, -1), + new Among("os", -1, -1), new Among("iv", -1, 1) + ], + a_4 = [ + new Among("able", -1, 1), new Among("ible", -1, 1), + new Among("ante", -1, 1) + ], + a_5 = [new Among("ic", -1, 1), + new Among("abil", -1, 1), new Among("iv", -1, 1) + ], + a_6 = [ + new Among("ica", -1, 1), new Among("ancia", -1, 2), + new Among("encia", -1, 5), new Among("adora", -1, 2), + new Among("osa", -1, 1), new Among("ista", -1, 1), + new Among("iva", -1, 9), new Among("anza", -1, 1), + new Among("log\u00EDa", -1, 3), new Among("idad", -1, 8), + new Among("able", -1, 1), new Among("ible", -1, 1), + new Among("ante", -1, 2), new Among("mente", -1, 7), + new Among("amente", 13, 6), new Among("aci\u00F3n", -1, 2), + new Among("uci\u00F3n", -1, 4), new Among("ico", -1, 1), + new Among("ismo", -1, 1), new Among("oso", -1, 1), + new Among("amiento", -1, 1), new Among("imiento", -1, 1), + new Among("ivo", -1, 9), new Among("ador", -1, 2), + new Among("icas", -1, 1), new Among("ancias", -1, 2), + new Among("encias", -1, 5), new Among("adoras", -1, 2), + new Among("osas", -1, 1), new Among("istas", -1, 1), + new Among("ivas", -1, 9), new Among("anzas", -1, 1), + new Among("log\u00EDas", -1, 3), new Among("idades", -1, 8), + new Among("ables", -1, 1), new Among("ibles", -1, 1), + new Among("aciones", -1, 2), new Among("uciones", -1, 4), + new Among("adores", -1, 2), new Among("antes", -1, 2), + new Among("icos", -1, 1), new Among("ismos", -1, 1), + new Among("osos", -1, 1), new Among("amientos", -1, 1), + new Among("imientos", -1, 1), new Among("ivos", -1, 9) + ], + a_7 = [ + new Among("ya", -1, 1), new Among("ye", -1, 1), + new Among("yan", -1, 1), new Among("yen", -1, 1), + new Among("yeron", -1, 1), new Among("yendo", -1, 1), + new Among("yo", -1, 1), new Among("yas", -1, 1), + new Among("yes", -1, 1), new Among("yais", -1, 1), + new Among("yamos", -1, 1), new Among("y\u00F3", -1, 1) + ], + a_8 = [ + new Among("aba", -1, 2), new Among("ada", -1, 2), + new Among("ida", -1, 2), new Among("ara", -1, 2), + new Among("iera", -1, 2), new Among("\u00EDa", -1, 2), + new Among("ar\u00EDa", 5, 2), new Among("er\u00EDa", 5, 2), + new Among("ir\u00EDa", 5, 2), new Among("ad", -1, 2), + new Among("ed", -1, 2), new Among("id", -1, 2), + new Among("ase", -1, 2), new Among("iese", -1, 2), + new Among("aste", -1, 2), new Among("iste", -1, 2), + new Among("an", -1, 2), new Among("aban", 16, 2), + new Among("aran", 16, 2), new Among("ieran", 16, 2), + new Among("\u00EDan", 16, 2), new Among("ar\u00EDan", 20, 2), + new Among("er\u00EDan", 20, 2), new Among("ir\u00EDan", 20, 2), + new Among("en", -1, 1), new Among("asen", 24, 2), + new Among("iesen", 24, 2), new Among("aron", -1, 2), + new Among("ieron", -1, 2), new Among("ar\u00E1n", -1, 2), + new Among("er\u00E1n", -1, 2), new Among("ir\u00E1n", -1, 2), + new Among("ado", -1, 2), new Among("ido", -1, 2), + new Among("ando", -1, 2), new Among("iendo", -1, 2), + new Among("ar", -1, 2), new Among("er", -1, 2), + new Among("ir", -1, 2), new Among("as", -1, 2), + new Among("abas", 39, 2), new Among("adas", 39, 2), + new Among("idas", 39, 2), new Among("aras", 39, 2), + new Among("ieras", 39, 2), new Among("\u00EDas", 39, 2), + new Among("ar\u00EDas", 45, 2), new Among("er\u00EDas", 45, 2), + new Among("ir\u00EDas", 45, 2), new Among("es", -1, 1), + new Among("ases", 49, 2), new Among("ieses", 49, 2), + new Among("abais", -1, 2), new Among("arais", -1, 2), + new Among("ierais", -1, 2), new Among("\u00EDais", -1, 2), + new Among("ar\u00EDais", 55, 2), new Among("er\u00EDais", 55, 2), + new Among("ir\u00EDais", 55, 2), new Among("aseis", -1, 2), + new Among("ieseis", -1, 2), new Among("asteis", -1, 2), + new Among("isteis", -1, 2), new Among("\u00E1is", -1, 2), + new Among("\u00E9is", -1, 1), new Among("ar\u00E9is", 64, 2), + new Among("er\u00E9is", 64, 2), new Among("ir\u00E9is", 64, 2), + new Among("ados", -1, 2), new Among("idos", -1, 2), + new Among("amos", -1, 2), new Among("\u00E1bamos", 70, 2), + new Among("\u00E1ramos", 70, 2), new Among("i\u00E9ramos", 70, 2), + new Among("\u00EDamos", 70, 2), new Among("ar\u00EDamos", 74, 2), + new Among("er\u00EDamos", 74, 2), new Among("ir\u00EDamos", 74, 2), + new Among("emos", -1, 1), new Among("aremos", 78, 2), + new Among("eremos", 78, 2), new Among("iremos", 78, 2), + new Among("\u00E1semos", 78, 2), new Among("i\u00E9semos", 78, 2), + new Among("imos", -1, 2), new Among("ar\u00E1s", -1, 2), + new Among("er\u00E1s", -1, 2), new Among("ir\u00E1s", -1, 2), + new Among("\u00EDs", -1, 2), new Among("ar\u00E1", -1, 2), + new Among("er\u00E1", -1, 2), new Among("ir\u00E1", -1, 2), + new Among("ar\u00E9", -1, 2), new Among("er\u00E9", -1, 2), + new Among("ir\u00E9", -1, 2), new Among("i\u00F3", -1, 2) + ], + a_9 = [ + new Among("a", -1, 1), new Among("e", -1, 2), + new Among("o", -1, 1), new Among("os", -1, 1), + new Among("\u00E1", -1, 1), new Among("\u00E9", -1, 2), + new Among("\u00ED", -1, 1), new Among("\u00F3", -1, 1) + ], + g_v = [17, + 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10 + ], + I_p2, I_p1, I_pV, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr1() { + if (sbp.out_grouping(g_v, 97, 252)) { + while (!sbp.in_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + return true; + } + + function habr2() { + if (sbp.in_grouping(g_v, 97, 252)) { + var v_1 = sbp.cursor; + if (habr1()) { + sbp.cursor = v_1; + if (!sbp.in_grouping(g_v, 97, 252)) + return true; + while (!sbp.out_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + } + return false; + } + return true; + } + + function habr3() { + var v_1 = sbp.cursor, + v_2; + if (habr2()) { + sbp.cursor = v_1; + if (!sbp.out_grouping(g_v, 97, 252)) + return; + v_2 = sbp.cursor; + if (habr1()) { + sbp.cursor = v_2; + if (!sbp.in_grouping(g_v, 97, 252) || sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + } + I_pV = sbp.cursor; + } + + function habr4() { + while (!sbp.in_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function r_mark_regions() { + var v_1 = sbp.cursor; + I_pV = sbp.limit; + I_p1 = I_pV; + I_p2 = I_pV; + habr3(); + sbp.cursor = v_1; + if (habr4()) { + I_p1 = sbp.cursor; + if (habr4()) + I_p2 = sbp.cursor; + } + } + + function r_postlude() { + var among_var; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_0, 6); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("a"); + continue; + case 2: + sbp.slice_from("e"); + continue; + case 3: + sbp.slice_from("i"); + continue; + case 4: + sbp.slice_from("o"); + continue; + case 5: + sbp.slice_from("u"); + continue; + case 6: + if (sbp.cursor >= sbp.limit) + break; + sbp.cursor++; + continue; + } + } + break; + } + } + + function r_RV() { + return I_pV <= sbp.cursor; + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_attached_pronoun() { + var among_var; + sbp.ket = sbp.cursor; + if (sbp.find_among_b(a_1, 13)) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among_b(a_2, 11); + if (among_var && r_RV()) + switch (among_var) { + case 1: + sbp.bra = sbp.cursor; + sbp.slice_from("iendo"); + break; + case 2: + sbp.bra = sbp.cursor; + sbp.slice_from("ando"); + break; + case 3: + sbp.bra = sbp.cursor; + sbp.slice_from("ar"); + break; + case 4: + sbp.bra = sbp.cursor; + sbp.slice_from("er"); + break; + case 5: + sbp.bra = sbp.cursor; + sbp.slice_from("ir"); + break; + case 6: + sbp.slice_del(); + break; + case 7: + if (sbp.eq_s_b(1, "u")) + sbp.slice_del(); + break; + } + } + } + + function habr5(a, n) { + if (!r_R2()) + return true; + sbp.slice_del(); + sbp.ket = sbp.cursor; + var among_var = sbp.find_among_b(a, n); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1 && r_R2()) + sbp.slice_del(); + } + return false; + } + + function habr6(c1) { + if (!r_R2()) + return true; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, c1)) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + return false; + } + + function r_standard_suffix() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 46); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + return false; + sbp.slice_del(); + break; + case 2: + if (habr6("ic")) + return false; + break; + case 3: + if (!r_R2()) + return false; + sbp.slice_from("log"); + break; + case 4: + if (!r_R2()) + return false; + sbp.slice_from("u"); + break; + case 5: + if (!r_R2()) + return false; + sbp.slice_from("ente"); + break; + case 6: + if (!r_R1()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 4); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2()) { + sbp.slice_del(); + if (among_var == 1) { + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + } + } + } + break; + case 7: + if (habr5(a_4, 3)) + return false; + break; + case 8: + if (habr5(a_5, 3)) + return false; + break; + case 9: + if (habr6("at")) + return false; + break; + } + return true; + } + return false; + } + + function r_y_verb_suffix() { + var among_var, v_1; + if (sbp.cursor >= I_pV) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 12); + sbp.limit_backward = v_1; + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) { + if (!sbp.eq_s_b(1, "u")) + return false; + sbp.slice_del(); + } + return true; + } + } + return false; + } + + function r_verb_suffix() { + var among_var, v_1, v_2, v_3; + if (sbp.cursor >= I_pV) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_8, 96); + sbp.limit_backward = v_1; + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + v_2 = sbp.limit - sbp.cursor; + if (sbp.eq_s_b(1, "u")) { + v_3 = sbp.limit - sbp.cursor; + if (sbp.eq_s_b(1, "g")) + sbp.cursor = sbp.limit - v_3; + else + sbp.cursor = sbp.limit - v_2; + } else + sbp.cursor = sbp.limit - v_2; + sbp.bra = sbp.cursor; + case 2: + sbp.slice_del(); + break; + } + } + } + } + + function r_residual_suffix() { + var among_var, v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_9, 8); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_RV()) + sbp.slice_del(); + break; + case 2: + if (r_RV()) { + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "u")) { + sbp.bra = sbp.cursor; + v_1 = sbp.limit - sbp.cursor; + if (sbp.eq_s_b(1, "g")) { + sbp.cursor = sbp.limit - v_1; + if (r_RV()) + sbp.slice_del(); + } + } + } + break; + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_attached_pronoun(); + sbp.cursor = sbp.limit; + if (!r_standard_suffix()) { + sbp.cursor = sbp.limit; + if (!r_y_verb_suffix()) { + sbp.cursor = sbp.limit; + r_verb_suffix(); + } + } + sbp.cursor = sbp.limit; + r_residual_suffix(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.es.stemmer, 'stemmer-es'); + + /* stop word filter function */ + lunr.es.stopWordFilter = function(token) { + if (lunr.es.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.es.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.es.stopWordFilter.stopWords.length = 309; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.es.stopWordFilter.stopWords.elements = ' a al algo algunas algunos ante antes como con contra cual cuando de del desde donde durante e el ella ellas ellos en entre era erais eran eras eres es esa esas ese eso esos esta estaba estabais estaban estabas estad estada estadas estado estados estamos estando estar estaremos estará estarán estarás estaré estaréis estaría estaríais estaríamos estarían estarías estas este estemos esto estos estoy estuve estuviera estuvierais estuvieran estuvieras estuvieron estuviese estuvieseis estuviesen estuvieses estuvimos estuviste estuvisteis estuviéramos estuviésemos estuvo está estábamos estáis están estás esté estéis estén estés fue fuera fuerais fueran fueras fueron fuese fueseis fuesen fueses fui fuimos fuiste fuisteis fuéramos fuésemos ha habida habidas habido habidos habiendo habremos habrá habrán habrás habré habréis habría habríais habríamos habrían habrías habéis había habíais habíamos habían habías han has hasta hay haya hayamos hayan hayas hayáis he hemos hube hubiera hubierais hubieran hubieras hubieron hubiese hubieseis hubiesen hubieses hubimos hubiste hubisteis hubiéramos hubiésemos hubo la las le les lo los me mi mis mucho muchos muy más mí mía mías mío míos nada ni no nos nosotras nosotros nuestra nuestras nuestro nuestros o os otra otras otro otros para pero poco por porque que quien quienes qué se sea seamos sean seas seremos será serán serás seré seréis sería seríais seríamos serían serías seáis sido siendo sin sobre sois somos son soy su sus suya suyas suyo suyos sí también tanto te tendremos tendrá tendrán tendrás tendré tendréis tendría tendríais tendríamos tendrían tendrías tened tenemos tenga tengamos tengan tengas tengo tengáis tenida tenidas tenido tenidos teniendo tenéis tenía teníais teníamos tenían tenías ti tiene tienen tienes todo todos tu tus tuve tuviera tuvierais tuvieran tuvieras tuvieron tuviese tuvieseis tuviesen tuvieses tuvimos tuviste tuvisteis tuviéramos tuviésemos tuvo tuya tuyas tuyo tuyos tú un una uno unos vosotras vosotros vuestra vuestras vuestro vuestros y ya yo él éramos'.split(' '); + + lunr.Pipeline.registerFunction(lunr.es.stopWordFilter, 'stopWordFilter-es'); + }; +})) diff --git a/static/js/lunr/lunr.es.min.js b/static/js/lunr/lunr.es.min.js new file mode 100644 index 0000000..dc48558 --- /dev/null +++ b/static/js/lunr/lunr.es.min.js @@ -0,0 +1 @@ +!function(e,s){"function"==typeof define&&define.amd?define(s):"object"==typeof exports?module.exports=s():s()(e.lunr)}(this,function(){return function(s){if(void 0===s)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===s.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var e,r,n;s.es=function(){this.pipeline.reset(),this.pipeline.add(s.es.trimmer,s.es.stopWordFilter,s.es.stemmer)},s.es.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",s.es.trimmer=s.trimmerSupport.generateTrimmer(s.es.wordCharacters),s.Pipeline.registerFunction(s.es.trimmer,"trimmer-es"),s.es.stemmer=(e=s.stemmerSupport.Among,r=s.stemmerSupport.SnowballProgram,n=new function(){var u,w,c,m=[new e("",-1,6),new e("á",0,1),new e("é",0,2),new e("í",0,3),new e("ó",0,4),new e("ú",0,5)],l=[new e("la",-1,-1),new e("sela",0,-1),new e("le",-1,-1),new e("me",-1,-1),new e("se",-1,-1),new e("lo",-1,-1),new e("selo",5,-1),new e("las",-1,-1),new e("selas",7,-1),new e("les",-1,-1),new e("los",-1,-1),new e("selos",10,-1),new e("nos",-1,-1)],d=[new e("ando",-1,6),new e("iendo",-1,6),new e("yendo",-1,7),new e("ándo",-1,2),new e("iéndo",-1,1),new e("ar",-1,6),new e("er",-1,6),new e("ir",-1,6),new e("ár",-1,3),new e("ér",-1,4),new e("ír",-1,5)],b=[new e("ic",-1,-1),new e("ad",-1,-1),new e("os",-1,-1),new e("iv",-1,1)],f=[new e("able",-1,1),new e("ible",-1,1),new e("ante",-1,1)],_=[new e("ic",-1,1),new e("abil",-1,1),new e("iv",-1,1)],h=[new e("ica",-1,1),new e("ancia",-1,2),new e("encia",-1,5),new e("adora",-1,2),new e("osa",-1,1),new e("ista",-1,1),new e("iva",-1,9),new e("anza",-1,1),new e("logía",-1,3),new e("idad",-1,8),new e("able",-1,1),new e("ible",-1,1),new e("ante",-1,2),new e("mente",-1,7),new e("amente",13,6),new e("ación",-1,2),new e("ución",-1,4),new e("ico",-1,1),new e("ismo",-1,1),new e("oso",-1,1),new e("amiento",-1,1),new e("imiento",-1,1),new e("ivo",-1,9),new e("ador",-1,2),new e("icas",-1,1),new e("ancias",-1,2),new e("encias",-1,5),new e("adoras",-1,2),new e("osas",-1,1),new e("istas",-1,1),new e("ivas",-1,9),new e("anzas",-1,1),new e("logías",-1,3),new e("idades",-1,8),new e("ables",-1,1),new e("ibles",-1,1),new e("aciones",-1,2),new e("uciones",-1,4),new e("adores",-1,2),new e("antes",-1,2),new e("icos",-1,1),new e("ismos",-1,1),new e("osos",-1,1),new e("amientos",-1,1),new e("imientos",-1,1),new e("ivos",-1,9)],p=[new e("ya",-1,1),new e("ye",-1,1),new e("yan",-1,1),new e("yen",-1,1),new e("yeron",-1,1),new e("yendo",-1,1),new e("yo",-1,1),new e("yas",-1,1),new e("yes",-1,1),new e("yais",-1,1),new e("yamos",-1,1),new e("yó",-1,1)],v=[new e("aba",-1,2),new e("ada",-1,2),new e("ida",-1,2),new e("ara",-1,2),new e("iera",-1,2),new e("ía",-1,2),new e("aría",5,2),new e("ería",5,2),new e("iría",5,2),new e("ad",-1,2),new e("ed",-1,2),new e("id",-1,2),new e("ase",-1,2),new e("iese",-1,2),new e("aste",-1,2),new e("iste",-1,2),new e("an",-1,2),new e("aban",16,2),new e("aran",16,2),new e("ieran",16,2),new e("ían",16,2),new e("arían",20,2),new e("erían",20,2),new e("irían",20,2),new e("en",-1,1),new e("asen",24,2),new e("iesen",24,2),new e("aron",-1,2),new e("ieron",-1,2),new e("arán",-1,2),new e("erán",-1,2),new e("irán",-1,2),new e("ado",-1,2),new e("ido",-1,2),new e("ando",-1,2),new e("iendo",-1,2),new e("ar",-1,2),new e("er",-1,2),new e("ir",-1,2),new e("as",-1,2),new e("abas",39,2),new e("adas",39,2),new e("idas",39,2),new e("aras",39,2),new e("ieras",39,2),new e("ías",39,2),new e("arías",45,2),new e("erías",45,2),new e("irías",45,2),new e("es",-1,1),new e("ases",49,2),new e("ieses",49,2),new e("abais",-1,2),new e("arais",-1,2),new e("ierais",-1,2),new e("íais",-1,2),new e("aríais",55,2),new e("eríais",55,2),new e("iríais",55,2),new e("aseis",-1,2),new e("ieseis",-1,2),new e("asteis",-1,2),new e("isteis",-1,2),new e("áis",-1,2),new e("éis",-1,1),new e("aréis",64,2),new e("eréis",64,2),new e("iréis",64,2),new e("ados",-1,2),new e("idos",-1,2),new e("amos",-1,2),new e("ábamos",70,2),new e("áramos",70,2),new e("iéramos",70,2),new e("íamos",70,2),new e("aríamos",74,2),new e("eríamos",74,2),new e("iríamos",74,2),new e("emos",-1,1),new e("aremos",78,2),new e("eremos",78,2),new e("iremos",78,2),new e("ásemos",78,2),new e("iésemos",78,2),new e("imos",-1,2),new e("arás",-1,2),new e("erás",-1,2),new e("irás",-1,2),new e("ís",-1,2),new e("ará",-1,2),new e("erá",-1,2),new e("irá",-1,2),new e("aré",-1,2),new e("eré",-1,2),new e("iré",-1,2),new e("ió",-1,2)],g=[new e("a",-1,1),new e("e",-1,2),new e("o",-1,1),new e("os",-1,1),new e("á",-1,1),new e("é",-1,2),new e("í",-1,1),new e("ó",-1,1)],k=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,4,10],y=new r;function q(){if(!y.out_grouping(k,97,252))return 1;for(;!y.in_grouping(k,97,252);){if(y.cursor>=y.limit)return 1;y.cursor++}}function W(){for(;!y.in_grouping(k,97,252);){if(y.cursor>=y.limit)return;y.cursor++}for(;!y.out_grouping(k,97,252);){if(y.cursor>=y.limit)return;y.cursor++}return 1}function F(){return c<=y.cursor}function C(){return u<=y.cursor}function S(e,s){if(!C())return 1;y.slice_del(),y.ket=y.cursor,(e=y.find_among_b(e,s))&&(y.bra=y.cursor,1==e)&&C()&&y.slice_del()}function P(e){if(!C())return 1;y.slice_del(),y.ket=y.cursor,y.eq_s_b(2,e)&&(y.bra=y.cursor,C())&&y.slice_del()}this.setCurrent=function(e){y.setCurrent(e)},this.getCurrent=function(){return y.getCurrent()},this.stem=function(){var e,s,r,n,i,a,o=y.cursor,t=y.cursor;if(c=y.limit,u=w=c,function(){var e=y.cursor;if(function(){if(!y.in_grouping(k,97,252))return 1;var e=y.cursor;if(q()){if(y.cursor=e,!y.in_grouping(k,97,252))return 1;for(;!y.out_grouping(k,97,252);){if(y.cursor>=y.limit)return 1;y.cursor++}}}()){if(y.cursor=e,!y.out_grouping(k,97,252))return;if(e=y.cursor,q()){if(y.cursor=e,!y.in_grouping(k,97,252)||y.cursor>=y.limit)return;y.cursor++}}c=y.cursor}(),y.cursor=t,W()&&(w=y.cursor,W())&&(u=y.cursor),y.limit_backward=o,y.cursor=y.limit,y.ket=y.cursor,y.find_among_b(l,13)&&(y.bra=y.cursor,e=y.find_among_b(d,11))&&F())switch(e){case 1:y.bra=y.cursor,y.slice_from("iendo");break;case 2:y.bra=y.cursor,y.slice_from("ando");break;case 3:y.bra=y.cursor,y.slice_from("ar");break;case 4:y.bra=y.cursor,y.slice_from("er");break;case 5:y.bra=y.cursor,y.slice_from("ir");break;case 6:y.slice_del();break;case 7:y.eq_s_b(1,"u")&&y.slice_del()}if(y.cursor=y.limit,!function(){var e;if(y.ket=y.cursor,e=y.find_among_b(h,46)){switch(y.bra=y.cursor,e){case 1:if(!C())return;y.slice_del();break;case 2:if(P("ic"))return;break;case 3:if(!C())return;y.slice_from("log");break;case 4:if(!C())return;y.slice_from("u");break;case 5:if(!C())return;y.slice_from("ente");break;case 6:if(!(w<=y.cursor))return;y.slice_del(),y.ket=y.cursor,(e=y.find_among_b(b,4))&&(y.bra=y.cursor,C())&&(y.slice_del(),1==e)&&(y.ket=y.cursor,y.eq_s_b(2,"at"))&&(y.bra=y.cursor,C())&&y.slice_del();break;case 7:if(S(f,3))return;break;case 8:if(S(_,3))return;break;case 9:if(P("at"))return}return 1}}()&&(y.cursor=y.limit,!function(){var e,s;if(y.cursor>=c&&(s=y.limit_backward,y.limit_backward=c,y.ket=y.cursor,e=y.find_among_b(p,12),y.limit_backward=s,e)){if(y.bra=y.cursor,1==e){if(!y.eq_s_b(1,"u"))return;y.slice_del()}return 1}}())&&(y.cursor=y.limit,y.cursor>=c)&&(t=y.limit_backward,y.limit_backward=c,y.ket=y.cursor,s=y.find_among_b(v,96),y.limit_backward=t,s))switch(y.bra=y.cursor,s){case 1:r=y.limit-y.cursor,y.eq_s_b(1,"u")&&(n=y.limit-y.cursor,y.eq_s_b(1,"g"))?y.cursor=y.limit-n:y.cursor=y.limit-r,y.bra=y.cursor;case 2:y.slice_del()}if(y.cursor=y.limit,y.ket=y.cursor,o=y.find_among_b(g,8))switch(y.bra=y.cursor,o){case 1:F()&&y.slice_del();break;case 2:F()&&(y.slice_del(),y.ket=y.cursor,y.eq_s_b(1,"u"))&&(y.bra=y.cursor,i=y.limit-y.cursor,y.eq_s_b(1,"g"))&&(y.cursor=y.limit-i,F())&&y.slice_del()}for(y.cursor=y.limit_backward;;){if(y.bra=y.cursor,a=y.find_among(m,6))switch(y.ket=y.cursor,a){case 1:y.slice_from("a");continue;case 2:y.slice_from("e");continue;case 3:y.slice_from("i");continue;case 4:y.slice_from("o");continue;case 5:y.slice_from("u");continue;case 6:if(!(y.cursor>=y.limit)){y.cursor++;continue}}break}return!0}},function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}),s.Pipeline.registerFunction(s.es.stemmer,"stemmer-es"),s.es.stopWordFilter=function(e){if(-1===s.es.stopWordFilter.stopWords.indexOf(e))return e},s.es.stopWordFilter.stopWords=new s.SortedSet,s.es.stopWordFilter.stopWords.length=309,s.es.stopWordFilter.stopWords.elements=" a al algo algunas algunos ante antes como con contra cual cuando de del desde donde durante e el ella ellas ellos en entre era erais eran eras eres es esa esas ese eso esos esta estaba estabais estaban estabas estad estada estadas estado estados estamos estando estar estaremos estará estarán estarás estaré estaréis estaría estaríais estaríamos estarían estarías estas este estemos esto estos estoy estuve estuviera estuvierais estuvieran estuvieras estuvieron estuviese estuvieseis estuviesen estuvieses estuvimos estuviste estuvisteis estuviéramos estuviésemos estuvo está estábamos estáis están estás esté estéis estén estés fue fuera fuerais fueran fueras fueron fuese fueseis fuesen fueses fui fuimos fuiste fuisteis fuéramos fuésemos ha habida habidas habido habidos habiendo habremos habrá habrán habrás habré habréis habría habríais habríamos habrían habrías habéis había habíais habíamos habían habías han has hasta hay haya hayamos hayan hayas hayáis he hemos hube hubiera hubierais hubieran hubieras hubieron hubiese hubieseis hubiesen hubieses hubimos hubiste hubisteis hubiéramos hubiésemos hubo la las le les lo los me mi mis mucho muchos muy más mí mía mías mío míos nada ni no nos nosotras nosotros nuestra nuestras nuestro nuestros o os otra otras otro otros para pero poco por porque que quien quienes qué se sea seamos sean seas seremos será serán serás seré seréis sería seríais seríamos serían serías seáis sido siendo sin sobre sois somos son soy su sus suya suyas suyo suyos sí también tanto te tendremos tendrá tendrán tendrás tendré tendréis tendría tendríais tendríamos tendrían tendrías tened tenemos tenga tengamos tengan tengas tengo tengáis tenida tenidas tenido tenidos teniendo tenéis tenía teníais teníamos tenían tenías ti tiene tienen tienes todo todos tu tus tuve tuviera tuvierais tuvieran tuvieras tuvieron tuviese tuvieseis tuviesen tuvieses tuvimos tuviste tuvisteis tuviéramos tuviésemos tuvo tuya tuyas tuyo tuyos tú un una uno unos vosotras vosotros vuestra vuestras vuestro vuestros y ya yo él éramos".split(" "),s.Pipeline.registerFunction(s.es.stopWordFilter,"stopWordFilter-es")}}); diff --git a/static/js/lunr/lunr.fi.js b/static/js/lunr/lunr.fi.js new file mode 100644 index 0000000..8f78b5d --- /dev/null +++ b/static/js/lunr/lunr.fi.js @@ -0,0 +1,536 @@ +/*! + * Lunr languages, `Finnish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.fi = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.fi.trimmer, + lunr.fi.stopWordFilter, + lunr.fi.stemmer + ); + }; + + /* lunr trimmer function */ + lunr.fi.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.fi.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.fi.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.fi.trimmer, 'trimmer-fi'); + + /* lunr stemmer function */ + lunr.fi.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function FinnishStemmer() { + var a_0 = [new Among("pa", -1, 1), new Among("sti", -1, 2), + new Among("kaan", -1, 1), new Among("han", -1, 1), + new Among("kin", -1, 1), new Among("h\u00E4n", -1, 1), + new Among("k\u00E4\u00E4n", -1, 1), new Among("ko", -1, 1), + new Among("p\u00E4", -1, 1), new Among("k\u00F6", -1, 1) + ], + a_1 = [ + new Among("lla", -1, -1), new Among("na", -1, -1), + new Among("ssa", -1, -1), new Among("ta", -1, -1), + new Among("lta", 3, -1), new Among("sta", 3, -1) + ], + a_2 = [ + new Among("ll\u00E4", -1, -1), new Among("n\u00E4", -1, -1), + new Among("ss\u00E4", -1, -1), new Among("t\u00E4", -1, -1), + new Among("lt\u00E4", 3, -1), new Among("st\u00E4", 3, -1) + ], + a_3 = [ + new Among("lle", -1, -1), new Among("ine", -1, -1) + ], + a_4 = [ + new Among("nsa", -1, 3), new Among("mme", -1, 3), + new Among("nne", -1, 3), new Among("ni", -1, 2), + new Among("si", -1, 1), new Among("an", -1, 4), + new Among("en", -1, 6), new Among("\u00E4n", -1, 5), + new Among("ns\u00E4", -1, 3) + ], + a_5 = [new Among("aa", -1, -1), + new Among("ee", -1, -1), new Among("ii", -1, -1), + new Among("oo", -1, -1), new Among("uu", -1, -1), + new Among("\u00E4\u00E4", -1, -1), + new Among("\u00F6\u00F6", -1, -1) + ], + a_6 = [new Among("a", -1, 8), + new Among("lla", 0, -1), new Among("na", 0, -1), + new Among("ssa", 0, -1), new Among("ta", 0, -1), + new Among("lta", 4, -1), new Among("sta", 4, -1), + new Among("tta", 4, 9), new Among("lle", -1, -1), + new Among("ine", -1, -1), new Among("ksi", -1, -1), + new Among("n", -1, 7), new Among("han", 11, 1), + new Among("den", 11, -1, r_VI), new Among("seen", 11, -1, r_LONG), + new Among("hen", 11, 2), new Among("tten", 11, -1, r_VI), + new Among("hin", 11, 3), new Among("siin", 11, -1, r_VI), + new Among("hon", 11, 4), new Among("h\u00E4n", 11, 5), + new Among("h\u00F6n", 11, 6), new Among("\u00E4", -1, 8), + new Among("ll\u00E4", 22, -1), new Among("n\u00E4", 22, -1), + new Among("ss\u00E4", 22, -1), new Among("t\u00E4", 22, -1), + new Among("lt\u00E4", 26, -1), new Among("st\u00E4", 26, -1), + new Among("tt\u00E4", 26, 9) + ], + a_7 = [new Among("eja", -1, -1), + new Among("mma", -1, 1), new Among("imma", 1, -1), + new Among("mpa", -1, 1), new Among("impa", 3, -1), + new Among("mmi", -1, 1), new Among("immi", 5, -1), + new Among("mpi", -1, 1), new Among("impi", 7, -1), + new Among("ej\u00E4", -1, -1), new Among("mm\u00E4", -1, 1), + new Among("imm\u00E4", 10, -1), new Among("mp\u00E4", -1, 1), + new Among("imp\u00E4", 12, -1) + ], + a_8 = [new Among("i", -1, -1), + new Among("j", -1, -1) + ], + a_9 = [new Among("mma", -1, 1), + new Among("imma", 0, -1) + ], + g_AEI = [17, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 8 + ], + g_V1 = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 8, 0, 32 + ], + g_V2 = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 8, 0, 32 + ], + g_particle_end = [17, 97, 24, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 + ], + B_ending_removed, S_x, I_p2, I_p1, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_mark_regions() { + I_p1 = sbp.limit; + I_p2 = I_p1; + if (!habr1()) { + I_p1 = sbp.cursor; + if (!habr1()) + I_p2 = sbp.cursor; + } + } + + function habr1() { + var v_1; + while (true) { + v_1 = sbp.cursor; + if (sbp.in_grouping(g_V1, 97, 246)) + break; + sbp.cursor = v_1; + if (v_1 >= sbp.limit) + return true; + sbp.cursor++; + } + sbp.cursor = v_1; + while (!sbp.out_grouping(g_V1, 97, 246)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_particle_etc() { + var among_var, v_1; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_0, 10); + if (among_var) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_1; + switch (among_var) { + case 1: + if (!sbp.in_grouping_b(g_particle_end, 97, 246)) + return; + break; + case 2: + if (!r_R2()) + return; + break; + } + sbp.slice_del(); + } else + sbp.limit_backward = v_1; + } + } + + function r_possessive() { + var among_var, v_1, v_2; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 9); + if (among_var) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_1; + switch (among_var) { + case 1: + v_2 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "k")) { + sbp.cursor = sbp.limit - v_2; + sbp.slice_del(); + } + break; + case 2: + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(3, "kse")) { + sbp.bra = sbp.cursor; + sbp.slice_from("ksi"); + } + break; + case 3: + sbp.slice_del(); + break; + case 4: + if (sbp.find_among_b(a_1, 6)) + sbp.slice_del(); + break; + case 5: + if (sbp.find_among_b(a_2, 6)) + sbp.slice_del(); + break; + case 6: + if (sbp.find_among_b(a_3, 2)) + sbp.slice_del(); + break; + } + } else + sbp.limit_backward = v_1; + } + } + + function r_LONG() { + return sbp.find_among_b(a_5, 7); + } + + function r_VI() { + return sbp.eq_s_b(1, "i") && sbp.in_grouping_b(g_V2, 97, 246); + } + + function r_case_ending() { + var among_var, v_1, v_2; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 30); + if (among_var) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_1; + switch (among_var) { + case 1: + if (!sbp.eq_s_b(1, "a")) + return; + break; + case 2: + case 9: + if (!sbp.eq_s_b(1, "e")) + return; + break; + case 3: + if (!sbp.eq_s_b(1, "i")) + return; + break; + case 4: + if (!sbp.eq_s_b(1, "o")) + return; + break; + case 5: + if (!sbp.eq_s_b(1, "\u00E4")) + return; + break; + case 6: + if (!sbp.eq_s_b(1, "\u00F6")) + return; + break; + case 7: + v_2 = sbp.limit - sbp.cursor; + if (!r_LONG()) { + sbp.cursor = sbp.limit - v_2; + if (!sbp.eq_s_b(2, "ie")) { + sbp.cursor = sbp.limit - v_2; + break; + } + } + sbp.cursor = sbp.limit - v_2; + if (sbp.cursor <= sbp.limit_backward) { + sbp.cursor = sbp.limit - v_2; + break; + } + sbp.cursor--; + sbp.bra = sbp.cursor; + break; + case 8: + if (!sbp.in_grouping_b(g_V1, 97, 246) || !sbp.out_grouping_b(g_V1, 97, 246)) + return; + break; + } + sbp.slice_del(); + B_ending_removed = true; + } else + sbp.limit_backward = v_1; + } + } + + function r_other_endings() { + var among_var, v_1, v_2; + if (sbp.cursor >= I_p2) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p2; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 14); + if (among_var) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_1; + if (among_var == 1) { + v_2 = sbp.limit - sbp.cursor; + if (sbp.eq_s_b(2, "po")) + return; + sbp.cursor = sbp.limit - v_2; + } + sbp.slice_del(); + } else + sbp.limit_backward = v_1; + } + } + + function r_i_plural() { + var v_1; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + if (sbp.find_among_b(a_8, 2)) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_1; + sbp.slice_del(); + } else + sbp.limit_backward = v_1; + } + } + + function r_t_plural() { + var among_var, v_1, v_2, v_3, v_4, v_5; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "t")) { + sbp.bra = sbp.cursor; + v_2 = sbp.limit - sbp.cursor; + if (sbp.in_grouping_b(g_V1, 97, 246)) { + sbp.cursor = sbp.limit - v_2; + sbp.slice_del(); + sbp.limit_backward = v_1; + v_3 = sbp.limit - sbp.cursor; + if (sbp.cursor >= I_p2) { + sbp.cursor = I_p2; + v_4 = sbp.limit_backward; + sbp.limit_backward = sbp.cursor; + sbp.cursor = sbp.limit - v_3; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_9, 2); + if (among_var) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_4; + if (among_var == 1) { + v_5 = sbp.limit - sbp.cursor; + if (sbp.eq_s_b(2, "po")) + return; + sbp.cursor = sbp.limit - v_5; + } + sbp.slice_del(); + return; + } + } + } + } + sbp.limit_backward = v_1; + } + } + + function r_tidy() { + var v_1, v_2, v_3, v_4; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + v_2 = sbp.limit - sbp.cursor; + if (r_LONG()) { + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (sbp.in_grouping_b(g_AEI, 97, 228)) { + sbp.bra = sbp.cursor; + if (sbp.out_grouping_b(g_V1, 97, 246)) + sbp.slice_del(); + } + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "j")) { + sbp.bra = sbp.cursor; + v_3 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "o")) { + sbp.cursor = sbp.limit - v_3; + if (sbp.eq_s_b(1, "u")) + sbp.slice_del(); + } else + sbp.slice_del(); + } + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "o")) { + sbp.bra = sbp.cursor; + if (sbp.eq_s_b(1, "j")) + sbp.slice_del(); + } + sbp.cursor = sbp.limit - v_2; + sbp.limit_backward = v_1; + while (true) { + v_4 = sbp.limit - sbp.cursor; + if (sbp.out_grouping_b(g_V1, 97, 246)) { + sbp.cursor = sbp.limit - v_4; + break; + } + sbp.cursor = sbp.limit - v_4; + if (sbp.cursor <= sbp.limit_backward) + return; + sbp.cursor--; + } + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + S_x = sbp.slice_to(); + if (sbp.eq_v_b(S_x)) + sbp.slice_del(); + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_mark_regions(); + B_ending_removed = false; + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_particle_etc(); + sbp.cursor = sbp.limit; + r_possessive(); + sbp.cursor = sbp.limit; + r_case_ending(); + sbp.cursor = sbp.limit; + r_other_endings(); + sbp.cursor = sbp.limit; + if (B_ending_removed) { + r_i_plural(); + sbp.cursor = sbp.limit; + } else { + sbp.cursor = sbp.limit; + r_t_plural(); + sbp.cursor = sbp.limit; + } + r_tidy(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.fi.stemmer, 'stemmer-fi'); + + /* stop word filter function */ + lunr.fi.stopWordFilter = function(token) { + if (lunr.fi.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.fi.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.fi.stopWordFilter.stopWords.length = 236; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.fi.stopWordFilter.stopWords.elements = ' ei eivät emme en et ette että he heidän heidät heihin heille heillä heiltä heissä heistä heitä hän häneen hänelle hänellä häneltä hänen hänessä hänestä hänet häntä itse ja johon joiden joihin joiksi joilla joille joilta joina joissa joista joita joka joksi jolla jolle jolta jona jonka jos jossa josta jota jotka kanssa keiden keihin keiksi keille keillä keiltä keinä keissä keistä keitä keneen keneksi kenelle kenellä keneltä kenen kenenä kenessä kenestä kenet ketkä ketkä ketä koska kuin kuka kun me meidän meidät meihin meille meillä meiltä meissä meistä meitä mihin miksi mikä mille millä miltä minkä minkä minua minulla minulle minulta minun minussa minusta minut minuun minä minä missä mistä mitkä mitä mukaan mutta ne niiden niihin niiksi niille niillä niiltä niin niin niinä niissä niistä niitä noiden noihin noiksi noilla noille noilta noin noina noissa noista noita nuo nyt näiden näihin näiksi näille näillä näiltä näinä näissä näistä näitä nämä ole olemme olen olet olette oli olimme olin olisi olisimme olisin olisit olisitte olisivat olit olitte olivat olla olleet ollut on ovat poikki se sekä sen siihen siinä siitä siksi sille sillä sillä siltä sinua sinulla sinulle sinulta sinun sinussa sinusta sinut sinuun sinä sinä sitä tai te teidän teidät teihin teille teillä teiltä teissä teistä teitä tuo tuohon tuoksi tuolla tuolle tuolta tuon tuona tuossa tuosta tuota tähän täksi tälle tällä tältä tämä tämän tänä tässä tästä tätä vaan vai vaikka yli'.split(' '); + + lunr.Pipeline.registerFunction(lunr.fi.stopWordFilter, 'stopWordFilter-fi'); + }; +})) diff --git a/static/js/lunr/lunr.fi.min.js b/static/js/lunr/lunr.fi.min.js new file mode 100644 index 0000000..a99beca --- /dev/null +++ b/static/js/lunr/lunr.fi.min.js @@ -0,0 +1 @@ +!function(i,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(i.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var q,v,r;e.fi=function(){this.pipeline.reset(),this.pipeline.add(e.fi.trimmer,e.fi.stopWordFilter,e.fi.stemmer)},e.fi.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.fi.trimmer=e.trimmerSupport.generateTrimmer(e.fi.wordCharacters),e.Pipeline.registerFunction(e.fi.trimmer,"trimmer-fi"),e.fi.stemmer=(q=e.stemmerSupport.Among,v=e.stemmerSupport.SnowballProgram,r=new function(){var n,t,s,o,l=[new q("pa",-1,1),new q("sti",-1,2),new q("kaan",-1,1),new q("han",-1,1),new q("kin",-1,1),new q("hän",-1,1),new q("kään",-1,1),new q("ko",-1,1),new q("pä",-1,1),new q("kö",-1,1)],a=[new q("lla",-1,-1),new q("na",-1,-1),new q("ssa",-1,-1),new q("ta",-1,-1),new q("lta",3,-1),new q("sta",3,-1)],u=[new q("llä",-1,-1),new q("nä",-1,-1),new q("ssä",-1,-1),new q("tä",-1,-1),new q("ltä",3,-1),new q("stä",3,-1)],c=[new q("lle",-1,-1),new q("ine",-1,-1)],m=[new q("nsa",-1,3),new q("mme",-1,3),new q("nne",-1,3),new q("ni",-1,2),new q("si",-1,1),new q("an",-1,4),new q("en",-1,6),new q("än",-1,5),new q("nsä",-1,3)],i=[new q("aa",-1,-1),new q("ee",-1,-1),new q("ii",-1,-1),new q("oo",-1,-1),new q("uu",-1,-1),new q("ää",-1,-1),new q("öö",-1,-1)],w=[new q("a",-1,8),new q("lla",0,-1),new q("na",0,-1),new q("ssa",0,-1),new q("ta",0,-1),new q("lta",4,-1),new q("sta",4,-1),new q("tta",4,9),new q("lle",-1,-1),new q("ine",-1,-1),new q("ksi",-1,-1),new q("n",-1,7),new q("han",11,1),new q("den",11,-1,r),new q("seen",11,-1,j),new q("hen",11,2),new q("tten",11,-1,r),new q("hin",11,3),new q("siin",11,-1,r),new q("hon",11,4),new q("hän",11,5),new q("hön",11,6),new q("ä",-1,8),new q("llä",22,-1),new q("nä",22,-1),new q("ssä",22,-1),new q("tä",22,-1),new q("ltä",26,-1),new q("stä",26,-1),new q("ttä",26,9)],_=[new q("eja",-1,-1),new q("mma",-1,1),new q("imma",1,-1),new q("mpa",-1,1),new q("impa",3,-1),new q("mmi",-1,1),new q("immi",5,-1),new q("mpi",-1,1),new q("impi",7,-1),new q("ejä",-1,-1),new q("mmä",-1,1),new q("immä",10,-1),new q("mpä",-1,1),new q("impä",12,-1)],k=[new q("i",-1,-1),new q("j",-1,-1)],b=[new q("mma",-1,1),new q("imma",0,-1)],d=[17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8],f=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],e=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],p=[17,97,24,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],h=new v;function g(){for(var i;i=h.cursor,!h.in_grouping(f,97,246);){if((h.cursor=i)>=h.limit)return 1;h.cursor++}for(h.cursor=i;!h.out_grouping(f,97,246);){if(h.cursor>=h.limit)return 1;h.cursor++}}function j(){return h.find_among_b(i,7)}function r(){return h.eq_s_b(1,"i")&&h.in_grouping_b(e,97,246)}this.setCurrent=function(i){h.setCurrent(i)},this.getCurrent=function(){return h.getCurrent()},this.stem=function(){var i,e,r=h.cursor;if(o=h.limit,s=o,g()||(o=h.cursor,g())||(s=h.cursor),n=!1,h.limit_backward=r,h.cursor=h.limit,function(){var i,e;if(h.cursor>=o)if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,i=h.find_among_b(l,10)){switch(h.bra=h.cursor,h.limit_backward=e,i){case 1:if(h.in_grouping_b(p,97,246))break;return;case 2:if(s<=h.cursor)break;return}h.slice_del()}else h.limit_backward=e}(),h.cursor=h.limit,h.cursor>=o)if(r=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,e=h.find_among_b(m,9))switch(h.bra=h.cursor,h.limit_backward=r,e){case 1:i=h.limit-h.cursor,h.eq_s_b(1,"k")||(h.cursor=h.limit-i,h.slice_del());break;case 2:h.slice_del(),h.ket=h.cursor,h.eq_s_b(3,"kse")&&(h.bra=h.cursor,h.slice_from("ksi"));break;case 3:h.slice_del();break;case 4:h.find_among_b(a,6)&&h.slice_del();break;case 5:h.find_among_b(u,6)&&h.slice_del();break;case 6:h.find_among_b(c,2)&&h.slice_del()}else h.limit_backward=r;return h.cursor=h.limit,function(){var i,e,r;if(h.cursor>=o)if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,i=h.find_among_b(w,30)){switch(h.bra=h.cursor,h.limit_backward=e,i){case 1:if(h.eq_s_b(1,"a"))break;return;case 2:case 9:if(h.eq_s_b(1,"e"))break;return;case 3:if(h.eq_s_b(1,"i"))break;return;case 4:if(h.eq_s_b(1,"o"))break;return;case 5:if(h.eq_s_b(1,"ä"))break;return;case 6:if(h.eq_s_b(1,"ö"))break;return;case 7:r=h.limit-h.cursor,!j()&&(h.cursor=h.limit-r,!h.eq_s_b(2,"ie"))||(h.cursor=h.limit-r,h.cursor<=h.limit_backward)?h.cursor=h.limit-r:(h.cursor--,h.bra=h.cursor);break;case 8:if(h.in_grouping_b(f,97,246)&&h.out_grouping_b(f,97,246))break;return}h.slice_del(),n=!0}else h.limit_backward=e}(),h.cursor=h.limit,function(){var i,e;if(h.cursor>=s)if(i=h.limit_backward,h.limit_backward=s,h.ket=h.cursor,e=h.find_among_b(_,14)){if(h.bra=h.cursor,h.limit_backward=i,1==e){if(e=h.limit-h.cursor,h.eq_s_b(2,"po"))return;h.cursor=h.limit-e}h.slice_del()}else h.limit_backward=i}(),h.cursor=h.limit,n?h.cursor>=o&&(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,h.find_among_b(k,2)?(h.bra=h.cursor,h.limit_backward=e,h.slice_del()):h.limit_backward=e):(h.cursor=h.limit,function(){var i,e,r,n;if(h.cursor>=o)if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,h.eq_s_b(1,"t")&&(h.bra=h.cursor,n=h.limit-h.cursor,h.in_grouping_b(f,97,246))&&(h.cursor=h.limit-n,h.slice_del(),h.limit_backward=e,n=h.limit-h.cursor,h.cursor>=s)&&(h.cursor=s,r=h.limit_backward,h.limit_backward=h.cursor,h.cursor=h.limit-n,h.ket=h.cursor,i=h.find_among_b(b,2))){if(h.bra=h.cursor,h.limit_backward=r,1==i){if(n=h.limit-h.cursor,h.eq_s_b(2,"po"))return;h.cursor=h.limit-n}h.slice_del()}else h.limit_backward=e}()),h.cursor=h.limit,function(){var i,e,r,n;if(h.cursor>=o){for(i=h.limit_backward,h.limit_backward=o,e=h.limit-h.cursor,j()&&(h.cursor=h.limit-e,h.ket=h.cursor,h.cursor>h.limit_backward)&&(h.cursor--,h.bra=h.cursor,h.slice_del()),h.cursor=h.limit-e,h.ket=h.cursor,h.in_grouping_b(d,97,228)&&(h.bra=h.cursor,h.out_grouping_b(f,97,246))&&h.slice_del(),h.cursor=h.limit-e,h.ket=h.cursor,h.eq_s_b(1,"j")&&(h.bra=h.cursor,r=h.limit-h.cursor,h.eq_s_b(1,"o")||(h.cursor=h.limit-r,h.eq_s_b(1,"u")))&&h.slice_del(),h.cursor=h.limit-e,h.ket=h.cursor,h.eq_s_b(1,"o")&&(h.bra=h.cursor,h.eq_s_b(1,"j"))&&h.slice_del(),h.cursor=h.limit-e,h.limit_backward=i;;){if(n=h.limit-h.cursor,h.out_grouping_b(f,97,246)){h.cursor=h.limit-n;break}if(h.cursor=h.limit-n,h.cursor<=h.limit_backward)return;h.cursor--}h.ket=h.cursor,h.cursor>h.limit_backward&&(h.cursor--,h.bra=h.cursor,t=h.slice_to(),h.eq_v_b(t))&&h.slice_del()}}(),!0}},function(i){return r.setCurrent(i),r.stem(),r.getCurrent()}),e.Pipeline.registerFunction(e.fi.stemmer,"stemmer-fi"),e.fi.stopWordFilter=function(i){if(-1===e.fi.stopWordFilter.stopWords.indexOf(i))return i},e.fi.stopWordFilter.stopWords=new e.SortedSet,e.fi.stopWordFilter.stopWords.length=236,e.fi.stopWordFilter.stopWords.elements=" ei eivät emme en et ette että he heidän heidät heihin heille heillä heiltä heissä heistä heitä hän häneen hänelle hänellä häneltä hänen hänessä hänestä hänet häntä itse ja johon joiden joihin joiksi joilla joille joilta joina joissa joista joita joka joksi jolla jolle jolta jona jonka jos jossa josta jota jotka kanssa keiden keihin keiksi keille keillä keiltä keinä keissä keistä keitä keneen keneksi kenelle kenellä keneltä kenen kenenä kenessä kenestä kenet ketkä ketkä ketä koska kuin kuka kun me meidän meidät meihin meille meillä meiltä meissä meistä meitä mihin miksi mikä mille millä miltä minkä minkä minua minulla minulle minulta minun minussa minusta minut minuun minä minä missä mistä mitkä mitä mukaan mutta ne niiden niihin niiksi niille niillä niiltä niin niin niinä niissä niistä niitä noiden noihin noiksi noilla noille noilta noin noina noissa noista noita nuo nyt näiden näihin näiksi näille näillä näiltä näinä näissä näistä näitä nämä ole olemme olen olet olette oli olimme olin olisi olisimme olisin olisit olisitte olisivat olit olitte olivat olla olleet ollut on ovat poikki se sekä sen siihen siinä siitä siksi sille sillä sillä siltä sinua sinulla sinulle sinulta sinun sinussa sinusta sinut sinuun sinä sinä sitä tai te teidän teidät teihin teille teillä teiltä teissä teistä teitä tuo tuohon tuoksi tuolla tuolle tuolta tuon tuona tuossa tuosta tuota tähän täksi tälle tällä tältä tämä tämän tänä tässä tästä tätä vaan vai vaikka yli".split(" "),e.Pipeline.registerFunction(e.fi.stopWordFilter,"stopWordFilter-fi")}}); diff --git a/static/js/lunr/lunr.fr.js b/static/js/lunr/lunr.fr.js new file mode 100644 index 0000000..13c2420 --- /dev/null +++ b/static/js/lunr/lunr.fr.js @@ -0,0 +1,698 @@ +/*! + * Lunr languages, `French` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.fr = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.fr.trimmer, + lunr.fr.stopWordFilter, + lunr.fr.stemmer + ); + }; + + /* lunr trimmer function */ + lunr.fr.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.fr.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.fr.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.fr.trimmer, 'trimmer-fr'); + + /* lunr stemmer function */ + lunr.fr.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function FrenchStemmer() { + var a_0 = [new Among("col", -1, -1), new Among("par", -1, -1), + new Among("tap", -1, -1) + ], + a_1 = [new Among("", -1, 4), + new Among("I", 0, 1), new Among("U", 0, 2), new Among("Y", 0, 3) + ], + a_2 = [ + new Among("iqU", -1, 3), new Among("abl", -1, 3), + new Among("I\u00E8r", -1, 4), new Among("i\u00E8r", -1, 4), + new Among("eus", -1, 2), new Among("iv", -1, 1) + ], + a_3 = [ + new Among("ic", -1, 2), new Among("abil", -1, 1), + new Among("iv", -1, 3) + ], + a_4 = [new Among("iqUe", -1, 1), + new Among("atrice", -1, 2), new Among("ance", -1, 1), + new Among("ence", -1, 5), new Among("logie", -1, 3), + new Among("able", -1, 1), new Among("isme", -1, 1), + new Among("euse", -1, 11), new Among("iste", -1, 1), + new Among("ive", -1, 8), new Among("if", -1, 8), + new Among("usion", -1, 4), new Among("ation", -1, 2), + new Among("ution", -1, 4), new Among("ateur", -1, 2), + new Among("iqUes", -1, 1), new Among("atrices", -1, 2), + new Among("ances", -1, 1), new Among("ences", -1, 5), + new Among("logies", -1, 3), new Among("ables", -1, 1), + new Among("ismes", -1, 1), new Among("euses", -1, 11), + new Among("istes", -1, 1), new Among("ives", -1, 8), + new Among("ifs", -1, 8), new Among("usions", -1, 4), + new Among("ations", -1, 2), new Among("utions", -1, 4), + new Among("ateurs", -1, 2), new Among("ments", -1, 15), + new Among("ements", 30, 6), new Among("issements", 31, 12), + new Among("it\u00E9s", -1, 7), new Among("ment", -1, 15), + new Among("ement", 34, 6), new Among("issement", 35, 12), + new Among("amment", 34, 13), new Among("emment", 34, 14), + new Among("aux", -1, 10), new Among("eaux", 39, 9), + new Among("eux", -1, 1), new Among("it\u00E9", -1, 7) + ], + a_5 = [ + new Among("ira", -1, 1), new Among("ie", -1, 1), + new Among("isse", -1, 1), new Among("issante", -1, 1), + new Among("i", -1, 1), new Among("irai", 4, 1), + new Among("ir", -1, 1), new Among("iras", -1, 1), + new Among("ies", -1, 1), new Among("\u00EEmes", -1, 1), + new Among("isses", -1, 1), new Among("issantes", -1, 1), + new Among("\u00EEtes", -1, 1), new Among("is", -1, 1), + new Among("irais", 13, 1), new Among("issais", 13, 1), + new Among("irions", -1, 1), new Among("issions", -1, 1), + new Among("irons", -1, 1), new Among("issons", -1, 1), + new Among("issants", -1, 1), new Among("it", -1, 1), + new Among("irait", 21, 1), new Among("issait", 21, 1), + new Among("issant", -1, 1), new Among("iraIent", -1, 1), + new Among("issaIent", -1, 1), new Among("irent", -1, 1), + new Among("issent", -1, 1), new Among("iront", -1, 1), + new Among("\u00EEt", -1, 1), new Among("iriez", -1, 1), + new Among("issiez", -1, 1), new Among("irez", -1, 1), + new Among("issez", -1, 1) + ], + a_6 = [new Among("a", -1, 3), + new Among("era", 0, 2), new Among("asse", -1, 3), + new Among("ante", -1, 3), new Among("\u00E9e", -1, 2), + new Among("ai", -1, 3), new Among("erai", 5, 2), + new Among("er", -1, 2), new Among("as", -1, 3), + new Among("eras", 8, 2), new Among("\u00E2mes", -1, 3), + new Among("asses", -1, 3), new Among("antes", -1, 3), + new Among("\u00E2tes", -1, 3), new Among("\u00E9es", -1, 2), + new Among("ais", -1, 3), new Among("erais", 15, 2), + new Among("ions", -1, 1), new Among("erions", 17, 2), + new Among("assions", 17, 3), new Among("erons", -1, 2), + new Among("ants", -1, 3), new Among("\u00E9s", -1, 2), + new Among("ait", -1, 3), new Among("erait", 23, 2), + new Among("ant", -1, 3), new Among("aIent", -1, 3), + new Among("eraIent", 26, 2), new Among("\u00E8rent", -1, 2), + new Among("assent", -1, 3), new Among("eront", -1, 2), + new Among("\u00E2t", -1, 3), new Among("ez", -1, 2), + new Among("iez", 32, 2), new Among("eriez", 33, 2), + new Among("assiez", 33, 3), new Among("erez", 32, 2), + new Among("\u00E9", -1, 2) + ], + a_7 = [new Among("e", -1, 3), + new Among("I\u00E8re", 0, 2), new Among("i\u00E8re", 0, 2), + new Among("ion", -1, 1), new Among("Ier", -1, 2), + new Among("ier", -1, 2), new Among("\u00EB", -1, 4) + ], + a_8 = [ + new Among("ell", -1, -1), new Among("eill", -1, -1), + new Among("enn", -1, -1), new Among("onn", -1, -1), + new Among("ett", -1, -1) + ], + g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 + ], + g_keep_with_s = [1, 65, 20, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 + ], + I_p2, I_p1, I_pV, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr1(c1, c2, v_1) { + if (sbp.eq_s(1, c1)) { + sbp.ket = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 251)) { + sbp.slice_from(c2); + sbp.cursor = v_1; + return true; + } + } + return false; + } + + function habr2(c1, c2, v_1) { + if (sbp.eq_s(1, c1)) { + sbp.ket = sbp.cursor; + sbp.slice_from(c2); + sbp.cursor = v_1; + return true; + } + return false; + } + + function r_prelude() { + var v_1, v_2; + while (true) { + v_1 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 251)) { + sbp.bra = sbp.cursor; + v_2 = sbp.cursor; + if (habr1("u", "U", v_1)) + continue; + sbp.cursor = v_2; + if (habr1("i", "I", v_1)) + continue; + sbp.cursor = v_2; + if (habr2("y", "Y", v_1)) + continue; + } + sbp.cursor = v_1; + sbp.bra = v_1; + if (!habr1("y", "Y", v_1)) { + sbp.cursor = v_1; + if (sbp.eq_s(1, "q")) { + sbp.bra = sbp.cursor; + if (habr2("u", "U", v_1)) + continue; + } + sbp.cursor = v_1; + if (v_1 >= sbp.limit) + return; + sbp.cursor++; + } + } + } + + function habr3() { + while (!sbp.in_grouping(g_v, 97, 251)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 251)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + + function r_mark_regions() { + var v_1 = sbp.cursor; + I_pV = sbp.limit; + I_p1 = I_pV; + I_p2 = I_pV; + if (sbp.in_grouping(g_v, 97, 251) && sbp.in_grouping(g_v, 97, 251) && sbp.cursor < sbp.limit) + sbp.cursor++; + else { + sbp.cursor = v_1; + if (!sbp.find_among(a_0, 3)) { + sbp.cursor = v_1; + do { + if (sbp.cursor >= sbp.limit) { + sbp.cursor = I_pV; + break; + } + sbp.cursor++; + } while (!sbp.in_grouping(g_v, 97, 251)); + } + } + I_pV = sbp.cursor; + sbp.cursor = v_1; + if (!habr3()) { + I_p1 = sbp.cursor; + if (!habr3()) + I_p2 = sbp.cursor; + } + } + + function r_postlude() { + var among_var, v_1; + while (true) { + v_1 = sbp.cursor; + sbp.bra = v_1; + among_var = sbp.find_among(a_1, 4); + if (!among_var) + break; + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("i"); + break; + case 2: + sbp.slice_from("u"); + break; + case 3: + sbp.slice_from("y"); + break; + case 4: + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + break; + } + } + } + + function r_RV() { + return I_pV <= sbp.cursor; + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_standard_suffix() { + var among_var, v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 43); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + return false; + sbp.slice_del(); + break; + case 2: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "ic")) { + sbp.bra = sbp.cursor; + if (!r_R2()) + sbp.slice_from("iqU"); + else + sbp.slice_del(); + } + break; + case 3: + if (!r_R2()) + return false; + sbp.slice_from("log"); + break; + case 4: + if (!r_R2()) + return false; + sbp.slice_from("u"); + break; + case 5: + if (!r_R2()) + return false; + sbp.slice_from("ent"); + break; + case 6: + if (!r_RV()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 6); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_R2()) { + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + } + break; + case 2: + if (r_R2()) + sbp.slice_del(); + else if (r_R1()) + sbp.slice_from("eux"); + break; + case 3: + if (r_R2()) + sbp.slice_del(); + break; + case 4: + if (r_RV()) + sbp.slice_from("i"); + break; + } + } + break; + case 7: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 3); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_R2()) + sbp.slice_del(); + else + sbp.slice_from("abl"); + break; + case 2: + if (r_R2()) + sbp.slice_del(); + else + sbp.slice_from("iqU"); + break; + case 3: + if (r_R2()) + sbp.slice_del(); + break; + } + } + break; + case 8: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) { + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "ic")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + else + sbp.slice_from("iqU"); + break; + } + } + } + break; + case 9: + sbp.slice_from("eau"); + break; + case 10: + if (!r_R1()) + return false; + sbp.slice_from("al"); + break; + case 11: + if (r_R2()) + sbp.slice_del(); + else if (!r_R1()) + return false; + else + sbp.slice_from("eux"); + break; + case 12: + if (!r_R1() || !sbp.out_grouping_b(g_v, 97, 251)) + return false; + sbp.slice_del(); + break; + case 13: + if (r_RV()) + sbp.slice_from("ant"); + return false; + case 14: + if (r_RV()) + sbp.slice_from("ent"); + return false; + case 15: + v_1 = sbp.limit - sbp.cursor; + if (sbp.in_grouping_b(g_v, 97, 251) && r_RV()) { + sbp.cursor = sbp.limit - v_1; + sbp.slice_del(); + } + return false; + } + return true; + } + return false; + } + + function r_i_verb_suffix() { + var among_var, v_1; + if (sbp.cursor < I_pV) + return false; + v_1 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_5, 35); + if (!among_var) { + sbp.limit_backward = v_1; + return false; + } + sbp.bra = sbp.cursor; + if (among_var == 1) { + if (!sbp.out_grouping_b(g_v, 97, 251)) { + sbp.limit_backward = v_1; + return false; + } + sbp.slice_del(); + } + sbp.limit_backward = v_1; + return true; + } + + function r_verb_suffix() { + var among_var, v_2, v_3; + if (sbp.cursor < I_pV) + return false; + v_2 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 38); + if (!among_var) { + sbp.limit_backward = v_2; + return false; + } + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (!r_R2()) { + sbp.limit_backward = v_2; + return false; + } + sbp.slice_del(); + break; + case 2: + sbp.slice_del(); + break; + case 3: + sbp.slice_del(); + v_3 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "e")) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + } else + sbp.cursor = sbp.limit - v_3; + break; + } + sbp.limit_backward = v_2; + return true; + } + + function r_residual_suffix() { + var among_var, v_1 = sbp.limit - sbp.cursor, + v_2, v_4, v_5; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "s")) { + sbp.bra = sbp.cursor; + v_2 = sbp.limit - sbp.cursor; + if (sbp.out_grouping_b(g_keep_with_s, 97, 232)) { + sbp.cursor = sbp.limit - v_2; + sbp.slice_del(); + } else + sbp.cursor = sbp.limit - v_1; + } else + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor >= I_pV) { + v_4 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 7); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_R2()) { + v_5 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "s")) { + sbp.cursor = sbp.limit - v_5; + if (!sbp.eq_s_b(1, "t")) + break; + } + sbp.slice_del(); + } + break; + case 2: + sbp.slice_from("i"); + break; + case 3: + sbp.slice_del(); + break; + case 4: + if (sbp.eq_s_b(2, "gu")) + sbp.slice_del(); + break; + } + } + sbp.limit_backward = v_4; + } + } + + function r_un_double() { + var v_1 = sbp.limit - sbp.cursor; + if (sbp.find_among_b(a_8, 5)) { + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } + } + + function r_un_accent() { + var v_1, v_2 = 1; + while (sbp.out_grouping_b(g_v, 97, 251)) + v_2--; + if (v_2 <= 0) { + sbp.ket = sbp.cursor; + v_1 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "\u00E9")) { + sbp.cursor = sbp.limit - v_1; + if (!sbp.eq_s_b(1, "\u00E8")) + return; + } + sbp.bra = sbp.cursor; + sbp.slice_from("e"); + } + } + + function habr5() { + if (!r_standard_suffix()) { + sbp.cursor = sbp.limit; + if (!r_i_verb_suffix()) { + sbp.cursor = sbp.limit; + if (!r_verb_suffix()) { + sbp.cursor = sbp.limit; + r_residual_suffix(); + return; + } + } + } + sbp.cursor = sbp.limit; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "Y")) { + sbp.bra = sbp.cursor; + sbp.slice_from("i"); + } else { + sbp.cursor = sbp.limit; + if (sbp.eq_s_b(1, "\u00E7")) { + sbp.bra = sbp.cursor; + sbp.slice_from("c"); + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_prelude(); + sbp.cursor = v_1; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + habr5(); + sbp.cursor = sbp.limit; + r_un_double(); + sbp.cursor = sbp.limit; + r_un_accent(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.fr.stemmer, 'stemmer-fr'); + + /* stop word filter function */ + lunr.fr.stopWordFilter = function(token) { + if (lunr.fr.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.fr.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.fr.stopWordFilter.stopWords.length = 164; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.fr.stopWordFilter.stopWords.elements = ' ai aie aient aies ait as au aura aurai auraient aurais aurait auras aurez auriez aurions aurons auront aux avaient avais avait avec avez aviez avions avons ayant ayez ayons c ce ceci celà ces cet cette d dans de des du elle en es est et eu eue eues eurent eus eusse eussent eusses eussiez eussions eut eux eûmes eût eûtes furent fus fusse fussent fusses fussiez fussions fut fûmes fût fûtes ici il ils j je l la le les leur leurs lui m ma mais me mes moi mon même n ne nos notre nous on ont ou par pas pour qu que quel quelle quelles quels qui s sa sans se sera serai seraient serais serait seras serez seriez serions serons seront ses soi soient sois soit sommes son sont soyez soyons suis sur t ta te tes toi ton tu un une vos votre vous y à étaient étais était étant étiez étions été étée étées étés êtes'.split(' '); + + lunr.Pipeline.registerFunction(lunr.fr.stopWordFilter, 'stopWordFilter-fr'); + }; +})) diff --git a/static/js/lunr/lunr.fr.min.js b/static/js/lunr/lunr.fr.min.js new file mode 100644 index 0000000..4382cb7 --- /dev/null +++ b/static/js/lunr/lunr.fr.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var e,s,i;r.fr=function(){this.pipeline.reset(),this.pipeline.add(r.fr.trimmer,r.fr.stopWordFilter,r.fr.stemmer)},r.fr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.fr.trimmer=r.trimmerSupport.generateTrimmer(r.fr.wordCharacters),r.Pipeline.registerFunction(r.fr.trimmer,"trimmer-fr"),r.fr.stemmer=(e=r.stemmerSupport.Among,s=r.stemmerSupport.SnowballProgram,i=new function(){var o,u,c,a=[new e("col",-1,-1),new e("par",-1,-1),new e("tap",-1,-1)],l=[new e("",-1,4),new e("I",0,1),new e("U",0,2),new e("Y",0,3)],w=[new e("iqU",-1,3),new e("abl",-1,3),new e("Ièr",-1,4),new e("ièr",-1,4),new e("eus",-1,2),new e("iv",-1,1)],f=[new e("ic",-1,2),new e("abil",-1,1),new e("iv",-1,3)],m=[new e("iqUe",-1,1),new e("atrice",-1,2),new e("ance",-1,1),new e("ence",-1,5),new e("logie",-1,3),new e("able",-1,1),new e("isme",-1,1),new e("euse",-1,11),new e("iste",-1,1),new e("ive",-1,8),new e("if",-1,8),new e("usion",-1,4),new e("ation",-1,2),new e("ution",-1,4),new e("ateur",-1,2),new e("iqUes",-1,1),new e("atrices",-1,2),new e("ances",-1,1),new e("ences",-1,5),new e("logies",-1,3),new e("ables",-1,1),new e("ismes",-1,1),new e("euses",-1,11),new e("istes",-1,1),new e("ives",-1,8),new e("ifs",-1,8),new e("usions",-1,4),new e("ations",-1,2),new e("utions",-1,4),new e("ateurs",-1,2),new e("ments",-1,15),new e("ements",30,6),new e("issements",31,12),new e("ités",-1,7),new e("ment",-1,15),new e("ement",34,6),new e("issement",35,12),new e("amment",34,13),new e("emment",34,14),new e("aux",-1,10),new e("eaux",39,9),new e("eux",-1,1),new e("ité",-1,7)],_=[new e("ira",-1,1),new e("ie",-1,1),new e("isse",-1,1),new e("issante",-1,1),new e("i",-1,1),new e("irai",4,1),new e("ir",-1,1),new e("iras",-1,1),new e("ies",-1,1),new e("îmes",-1,1),new e("isses",-1,1),new e("issantes",-1,1),new e("îtes",-1,1),new e("is",-1,1),new e("irais",13,1),new e("issais",13,1),new e("irions",-1,1),new e("issions",-1,1),new e("irons",-1,1),new e("issons",-1,1),new e("issants",-1,1),new e("it",-1,1),new e("irait",21,1),new e("issait",21,1),new e("issant",-1,1),new e("iraIent",-1,1),new e("issaIent",-1,1),new e("irent",-1,1),new e("issent",-1,1),new e("iront",-1,1),new e("ît",-1,1),new e("iriez",-1,1),new e("issiez",-1,1),new e("irez",-1,1),new e("issez",-1,1)],b=[new e("a",-1,3),new e("era",0,2),new e("asse",-1,3),new e("ante",-1,3),new e("ée",-1,2),new e("ai",-1,3),new e("erai",5,2),new e("er",-1,2),new e("as",-1,3),new e("eras",8,2),new e("âmes",-1,3),new e("asses",-1,3),new e("antes",-1,3),new e("âtes",-1,3),new e("ées",-1,2),new e("ais",-1,3),new e("erais",15,2),new e("ions",-1,1),new e("erions",17,2),new e("assions",17,3),new e("erons",-1,2),new e("ants",-1,3),new e("és",-1,2),new e("ait",-1,3),new e("erait",23,2),new e("ant",-1,3),new e("aIent",-1,3),new e("eraIent",26,2),new e("èrent",-1,2),new e("assent",-1,3),new e("eront",-1,2),new e("ât",-1,3),new e("ez",-1,2),new e("iez",32,2),new e("eriez",33,2),new e("assiez",33,3),new e("erez",32,2),new e("é",-1,2)],d=[new e("e",-1,3),new e("Ière",0,2),new e("ière",0,2),new e("ion",-1,1),new e("Ier",-1,2),new e("ier",-1,2),new e("ë",-1,4)],k=[new e("ell",-1,-1),new e("eill",-1,-1),new e("enn",-1,-1),new e("onn",-1,-1),new e("ett",-1,-1)],p=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,128,130,103,8,5],g=[1,65,20,0,0,0,0,0,0,0,0,0,0,0,0,0,128],q=new s;function v(e,r,s){return q.eq_s(1,e)&&(q.ket=q.cursor,q.in_grouping(p,97,251))&&(q.slice_from(r),q.cursor=s,1)}function z(e,r,s){return q.eq_s(1,e)&&(q.ket=q.cursor,q.slice_from(r),q.cursor=s,1)}function h(){for(;!q.in_grouping(p,97,251);){if(q.cursor>=q.limit)return 1;q.cursor++}for(;!q.out_grouping(p,97,251);){if(q.cursor>=q.limit)return 1;q.cursor++}}function W(){return c<=q.cursor}function y(){return u<=q.cursor}function F(){return o<=q.cursor}this.setCurrent=function(e){q.setCurrent(e)},this.getCurrent=function(){return q.getCurrent()},this.stem=function(){var e=q.cursor,r=(function(){for(var e,r;;){if(e=q.cursor,q.in_grouping(p,97,251)){if(q.bra=q.cursor,r=q.cursor,v("u","U",e))continue;if(q.cursor=r,v("i","I",e))continue;if(q.cursor=r,z("y","Y",e))continue}if(q.cursor=e,q.bra=e,!v("y","Y",e)&&(q.cursor=e,!q.eq_s(1,"q")||(q.bra=q.cursor,!z("u","U",e)))){if((q.cursor=e)>=q.limit)return;q.cursor++}}}(),q.cursor=e,q.cursor);if(c=q.limit,o=u=c,q.in_grouping(p,97,251)&&q.in_grouping(p,97,251)&&q.cursor=q.limit){q.cursor=c;break}}while(q.cursor++,!q.in_grouping(p,97,251))}if(c=q.cursor,q.cursor=r,h()||(u=q.cursor,h())||(o=q.cursor),q.limit_backward=e,q.cursor=q.limit,function(){var e,r;if(q.ket=q.cursor,e=q.find_among_b(m,43)){switch(q.bra=q.cursor,e){case 1:if(!F())return;q.slice_del();break;case 2:if(!F())return;q.slice_del(),q.ket=q.cursor,q.eq_s_b(2,"ic")&&(q.bra=q.cursor,F()?q.slice_del():q.slice_from("iqU"));break;case 3:if(!F())return;q.slice_from("log");break;case 4:if(!F())return;q.slice_from("u");break;case 5:if(!F())return;q.slice_from("ent");break;case 6:if(!W())return;if(q.slice_del(),q.ket=q.cursor,e=q.find_among_b(w,6))switch(q.bra=q.cursor,e){case 1:F()&&(q.slice_del(),q.ket=q.cursor,q.eq_s_b(2,"at"))&&(q.bra=q.cursor,F())&&q.slice_del();break;case 2:F()?q.slice_del():y()&&q.slice_from("eux");break;case 3:F()&&q.slice_del();break;case 4:W()&&q.slice_from("i")}break;case 7:if(!F())return;if(q.slice_del(),q.ket=q.cursor,e=q.find_among_b(f,3))switch(q.bra=q.cursor,e){case 1:F()?q.slice_del():q.slice_from("abl");break;case 2:F()?q.slice_del():q.slice_from("iqU");break;case 3:F()&&q.slice_del()}break;case 8:if(!F())return;q.slice_del(),q.ket=q.cursor,q.eq_s_b(2,"at")&&(q.bra=q.cursor,F())&&(q.slice_del(),q.ket=q.cursor,q.eq_s_b(2,"ic"))&&(q.bra=q.cursor,F()?q.slice_del():q.slice_from("iqU"));break;case 9:q.slice_from("eau");break;case 10:if(!y())return;q.slice_from("al");break;case 11:if(F())q.slice_del();else{if(!y())return;q.slice_from("eux")}break;case 12:if(!y()||!q.out_grouping_b(p,97,251))return;q.slice_del();break;case 13:return W()&&q.slice_from("ant"),0;case 14:return W()&&q.slice_from("ent"),0;case 15:return r=q.limit-q.cursor,q.in_grouping_b(p,97,251)&&W()&&(q.cursor=q.limit-r,q.slice_del()),0}return 1}}()||(q.cursor=q.limit,function(){var e,r;if(!(q.cursor=c){if(s=q.limit_backward,q.limit_backward=c,q.ket=q.cursor,n=q.find_among_b(d,7))switch(q.bra=q.cursor,n){case 1:if(F()){if(i=q.limit-q.cursor,!q.eq_s_b(1,"s")&&(q.cursor=q.limit-i,!q.eq_s_b(1,"t")))break;q.slice_del()}break;case 2:q.slice_from("i");break;case 3:q.slice_del();break;case 4:q.eq_s_b(2,"gu")&&q.slice_del()}q.limit_backward=s}}q.cursor=q.limit,r=q.limit-q.cursor,q.find_among_b(k,5)&&(q.cursor=q.limit-r,q.ket=q.cursor,q.cursor>q.limit_backward)&&(q.cursor--,q.bra=q.cursor,q.slice_del()),q.cursor=q.limit;for(var t=1;q.out_grouping_b(p,97,251);)t--;return t<=0&&(q.ket=q.cursor,e=q.limit-q.cursor,q.eq_s_b(1,"é")||(q.cursor=q.limit-e,q.eq_s_b(1,"è")))&&(q.bra=q.cursor,q.slice_from("e")),q.cursor=q.limit_backward,function(){for(var e;e=q.cursor,q.bra=e,e=q.find_among(l,4);)switch(q.ket=q.cursor,e){case 1:q.slice_from("i");break;case 2:q.slice_from("u");break;case 3:q.slice_from("y");break;case 4:if(q.cursor>=q.limit)return;q.cursor++}}(),!0}},function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}),r.Pipeline.registerFunction(r.fr.stemmer,"stemmer-fr"),r.fr.stopWordFilter=function(e){if(-1===r.fr.stopWordFilter.stopWords.indexOf(e))return e},r.fr.stopWordFilter.stopWords=new r.SortedSet,r.fr.stopWordFilter.stopWords.length=164,r.fr.stopWordFilter.stopWords.elements=" ai aie aient aies ait as au aura aurai auraient aurais aurait auras aurez auriez aurions aurons auront aux avaient avais avait avec avez aviez avions avons ayant ayez ayons c ce ceci celà ces cet cette d dans de des du elle en es est et eu eue eues eurent eus eusse eussent eusses eussiez eussions eut eux eûmes eût eûtes furent fus fusse fussent fusses fussiez fussions fut fûmes fût fûtes ici il ils j je l la le les leur leurs lui m ma mais me mes moi mon même n ne nos notre nous on ont ou par pas pour qu que quel quelle quelles quels qui s sa sans se sera serai seraient serais serait seras serez seriez serions serons seront ses soi soient sois soit sommes son sont soyez soyons suis sur t ta te tes toi ton tu un une vos votre vous y à étaient étais était étant étiez étions été étée étées étés êtes".split(" "),r.Pipeline.registerFunction(r.fr.stopWordFilter,"stopWordFilter-fr")}}); diff --git a/static/js/lunr/lunr.hu.js b/static/js/lunr/lunr.hu.js new file mode 100644 index 0000000..986ddb0 --- /dev/null +++ b/static/js/lunr/lunr.hu.js @@ -0,0 +1,561 @@ +/*! + * Lunr languages, `Hungarian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.hu = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.hu.trimmer, + lunr.hu.stopWordFilter, + lunr.hu.stemmer + ); + }; + + /* lunr trimmer function */ + lunr.hu.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.hu.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.hu.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.hu.trimmer, 'trimmer-hu'); + + /* lunr stemmer function */ + lunr.hu.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function HungarianStemmer() { + var a_0 = [new Among("cs", -1, -1), new Among("dzs", -1, -1), + new Among("gy", -1, -1), new Among("ly", -1, -1), + new Among("ny", -1, -1), new Among("sz", -1, -1), + new Among("ty", -1, -1), new Among("zs", -1, -1) + ], + a_1 = [ + new Among("\u00E1", -1, 1), new Among("\u00E9", -1, 2) + ], + a_2 = [ + new Among("bb", -1, -1), new Among("cc", -1, -1), + new Among("dd", -1, -1), new Among("ff", -1, -1), + new Among("gg", -1, -1), new Among("jj", -1, -1), + new Among("kk", -1, -1), new Among("ll", -1, -1), + new Among("mm", -1, -1), new Among("nn", -1, -1), + new Among("pp", -1, -1), new Among("rr", -1, -1), + new Among("ccs", -1, -1), new Among("ss", -1, -1), + new Among("zzs", -1, -1), new Among("tt", -1, -1), + new Among("vv", -1, -1), new Among("ggy", -1, -1), + new Among("lly", -1, -1), new Among("nny", -1, -1), + new Among("tty", -1, -1), new Among("ssz", -1, -1), + new Among("zz", -1, -1) + ], + a_3 = [new Among("al", -1, 1), + new Among("el", -1, 2) + ], + a_4 = [new Among("ba", -1, -1), + new Among("ra", -1, -1), new Among("be", -1, -1), + new Among("re", -1, -1), new Among("ig", -1, -1), + new Among("nak", -1, -1), new Among("nek", -1, -1), + new Among("val", -1, -1), new Among("vel", -1, -1), + new Among("ul", -1, -1), new Among("n\u00E1l", -1, -1), + new Among("n\u00E9l", -1, -1), new Among("b\u00F3l", -1, -1), + new Among("r\u00F3l", -1, -1), new Among("t\u00F3l", -1, -1), + new Among("b\u00F5l", -1, -1), new Among("r\u00F5l", -1, -1), + new Among("t\u00F5l", -1, -1), new Among("\u00FCl", -1, -1), + new Among("n", -1, -1), new Among("an", 19, -1), + new Among("ban", 20, -1), new Among("en", 19, -1), + new Among("ben", 22, -1), new Among("k\u00E9ppen", 22, -1), + new Among("on", 19, -1), new Among("\u00F6n", 19, -1), + new Among("k\u00E9pp", -1, -1), new Among("kor", -1, -1), + new Among("t", -1, -1), new Among("at", 29, -1), + new Among("et", 29, -1), new Among("k\u00E9nt", 29, -1), + new Among("ank\u00E9nt", 32, -1), new Among("enk\u00E9nt", 32, -1), + new Among("onk\u00E9nt", 32, -1), new Among("ot", 29, -1), + new Among("\u00E9rt", 29, -1), new Among("\u00F6t", 29, -1), + new Among("hez", -1, -1), new Among("hoz", -1, -1), + new Among("h\u00F6z", -1, -1), new Among("v\u00E1", -1, -1), + new Among("v\u00E9", -1, -1) + ], + a_5 = [new Among("\u00E1n", -1, 2), + new Among("\u00E9n", -1, 1), new Among("\u00E1nk\u00E9nt", -1, 3) + ], + a_6 = [ + new Among("stul", -1, 2), new Among("astul", 0, 1), + new Among("\u00E1stul", 0, 3), new Among("st\u00FCl", -1, 2), + new Among("est\u00FCl", 3, 1), new Among("\u00E9st\u00FCl", 3, 4) + ], + a_7 = [ + new Among("\u00E1", -1, 1), new Among("\u00E9", -1, 2) + ], + a_8 = [ + new Among("k", -1, 7), new Among("ak", 0, 4), + new Among("ek", 0, 6), new Among("ok", 0, 5), + new Among("\u00E1k", 0, 1), new Among("\u00E9k", 0, 2), + new Among("\u00F6k", 0, 3) + ], + a_9 = [new Among("\u00E9i", -1, 7), + new Among("\u00E1\u00E9i", 0, 6), new Among("\u00E9\u00E9i", 0, 5), + new Among("\u00E9", -1, 9), new Among("k\u00E9", 3, 4), + new Among("ak\u00E9", 4, 1), new Among("ek\u00E9", 4, 1), + new Among("ok\u00E9", 4, 1), new Among("\u00E1k\u00E9", 4, 3), + new Among("\u00E9k\u00E9", 4, 2), new Among("\u00F6k\u00E9", 4, 1), + new Among("\u00E9\u00E9", 3, 8) + ], + a_10 = [new Among("a", -1, 18), + new Among("ja", 0, 17), new Among("d", -1, 16), + new Among("ad", 2, 13), new Among("ed", 2, 13), + new Among("od", 2, 13), new Among("\u00E1d", 2, 14), + new Among("\u00E9d", 2, 15), new Among("\u00F6d", 2, 13), + new Among("e", -1, 18), new Among("je", 9, 17), + new Among("nk", -1, 4), new Among("unk", 11, 1), + new Among("\u00E1nk", 11, 2), new Among("\u00E9nk", 11, 3), + new Among("\u00FCnk", 11, 1), new Among("uk", -1, 8), + new Among("juk", 16, 7), new Among("\u00E1juk", 17, 5), + new Among("\u00FCk", -1, 8), new Among("j\u00FCk", 19, 7), + new Among("\u00E9j\u00FCk", 20, 6), new Among("m", -1, 12), + new Among("am", 22, 9), new Among("em", 22, 9), + new Among("om", 22, 9), new Among("\u00E1m", 22, 10), + new Among("\u00E9m", 22, 11), new Among("o", -1, 18), + new Among("\u00E1", -1, 19), new Among("\u00E9", -1, 20) + ], + a_11 = [ + new Among("id", -1, 10), new Among("aid", 0, 9), + new Among("jaid", 1, 6), new Among("eid", 0, 9), + new Among("jeid", 3, 6), new Among("\u00E1id", 0, 7), + new Among("\u00E9id", 0, 8), new Among("i", -1, 15), + new Among("ai", 7, 14), new Among("jai", 8, 11), + new Among("ei", 7, 14), new Among("jei", 10, 11), + new Among("\u00E1i", 7, 12), new Among("\u00E9i", 7, 13), + new Among("itek", -1, 24), new Among("eitek", 14, 21), + new Among("jeitek", 15, 20), new Among("\u00E9itek", 14, 23), + new Among("ik", -1, 29), new Among("aik", 18, 26), + new Among("jaik", 19, 25), new Among("eik", 18, 26), + new Among("jeik", 21, 25), new Among("\u00E1ik", 18, 27), + new Among("\u00E9ik", 18, 28), new Among("ink", -1, 20), + new Among("aink", 25, 17), new Among("jaink", 26, 16), + new Among("eink", 25, 17), new Among("jeink", 28, 16), + new Among("\u00E1ink", 25, 18), new Among("\u00E9ink", 25, 19), + new Among("aitok", -1, 21), new Among("jaitok", 32, 20), + new Among("\u00E1itok", -1, 22), new Among("im", -1, 5), + new Among("aim", 35, 4), new Among("jaim", 36, 1), + new Among("eim", 35, 4), new Among("jeim", 38, 1), + new Among("\u00E1im", 35, 2), new Among("\u00E9im", 35, 3) + ], + g_v = [ + 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 52, 14 + ], + I_p1, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_mark_regions() { + var v_1 = sbp.cursor, + v_2; + I_p1 = sbp.limit; + if (sbp.in_grouping(g_v, 97, 252)) { + while (true) { + v_2 = sbp.cursor; + if (sbp.out_grouping(g_v, 97, 252)) { + sbp.cursor = v_2; + if (!sbp.find_among(a_0, 8)) { + sbp.cursor = v_2; + if (v_2 < sbp.limit) + sbp.cursor++; + } + I_p1 = sbp.cursor; + return; + } + sbp.cursor = v_2; + if (v_2 >= sbp.limit) { + I_p1 = v_2; + return; + } + sbp.cursor++; + } + } + sbp.cursor = v_1; + if (sbp.out_grouping(g_v, 97, 252)) { + while (!sbp.in_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + I_p1 = sbp.cursor; + } + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_v_ending() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_1, 2); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_from("a"); + break; + case 2: + sbp.slice_from("e"); + break; + } + } + } + } + + function r_double() { + var v_1 = sbp.limit - sbp.cursor; + if (!sbp.find_among_b(a_2, 23)) + return false; + sbp.cursor = sbp.limit - v_1; + return true; + } + + function r_undouble() { + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.ket = sbp.cursor; + var c = sbp.cursor - 1; + if (sbp.limit_backward <= c && c <= sbp.limit) { + sbp.cursor = c; + sbp.bra = c; + sbp.slice_del(); + } + } + } + + function r_instrum() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 2); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + if (among_var == 1 || among_var == 2) + if (!r_double()) + return; + sbp.slice_del(); + r_undouble(); + } + } + } + + function r_case() { + sbp.ket = sbp.cursor; + if (sbp.find_among_b(a_4, 44)) { + sbp.bra = sbp.cursor; + if (r_R1()) { + sbp.slice_del(); + r_v_ending(); + } + } + } + + function r_case_special() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_5, 3); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_from("e"); + break; + case 2: + case 3: + sbp.slice_from("a"); + break; + } + } + } + } + + function r_case_other() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 6); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + case 2: + sbp.slice_del(); + break; + case 3: + sbp.slice_from("a"); + break; + case 4: + sbp.slice_from("e"); + break; + } + } + } + } + + function r_factive() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 2); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + if (among_var == 1 || among_var == 2) + if (!r_double()) + return; + sbp.slice_del(); + r_undouble() + } + } + } + + function r_plural() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_8, 7); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_from("a"); + break; + case 2: + sbp.slice_from("e"); + break; + case 3: + case 4: + case 5: + case 6: + case 7: + sbp.slice_del(); + break; + } + } + } + } + + function r_owned() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_9, 12); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + case 4: + case 7: + case 9: + sbp.slice_del(); + break; + case 2: + case 5: + case 8: + sbp.slice_from("e"); + break; + case 3: + case 6: + sbp.slice_from("a"); + break; + } + } + } + } + + function r_sing_owner() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_10, 31); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + case 4: + case 7: + case 8: + case 9: + case 12: + case 13: + case 16: + case 17: + case 18: + sbp.slice_del(); + break; + case 2: + case 5: + case 10: + case 14: + case 19: + sbp.slice_from("a"); + break; + case 3: + case 6: + case 11: + case 15: + case 20: + sbp.slice_from("e"); + break; + } + } + } + } + + function r_plur_owner() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_11, 42); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + case 4: + case 5: + case 6: + case 9: + case 10: + case 11: + case 14: + case 15: + case 16: + case 17: + case 20: + case 21: + case 24: + case 25: + case 26: + case 29: + sbp.slice_del(); + break; + case 2: + case 7: + case 12: + case 18: + case 22: + case 27: + sbp.slice_from("a"); + break; + case 3: + case 8: + case 13: + case 19: + case 23: + case 28: + sbp.slice_from("e"); + break; + } + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_instrum(); + sbp.cursor = sbp.limit; + r_case(); + sbp.cursor = sbp.limit; + r_case_special(); + sbp.cursor = sbp.limit; + r_case_other(); + sbp.cursor = sbp.limit; + r_factive(); + sbp.cursor = sbp.limit; + r_owned(); + sbp.cursor = sbp.limit; + r_sing_owner(); + sbp.cursor = sbp.limit; + r_plur_owner(); + sbp.cursor = sbp.limit; + r_plural(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.hu.stemmer, 'stemmer-hu'); + + /* stop word filter function */ + lunr.hu.stopWordFilter = function(token) { + if (lunr.hu.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.hu.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.hu.stopWordFilter.stopWords.length = 200; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.hu.stopWordFilter.stopWords.elements = ' a abban ahhoz ahogy ahol aki akik akkor alatt amely amelyek amelyekben amelyeket amelyet amelynek ami amikor amit amolyan amíg annak arra arról az azok azon azonban azt aztán azután azzal azért be belül benne bár cikk cikkek cikkeket csak de e ebben eddig egy egyes egyetlen egyik egyre egyéb egész ehhez ekkor el ellen elsõ elég elõ elõször elõtt emilyen ennek erre ez ezek ezen ezt ezzel ezért fel felé hanem hiszen hogy hogyan igen ill ill. illetve ilyen ilyenkor ismét ison itt jobban jó jól kell kellett keressünk keresztül ki kívül között közül legalább legyen lehet lehetett lenne lenni lesz lett maga magát majd majd meg mellett mely melyek mert mi mikor milyen minden mindenki mindent mindig mint mintha mit mivel miért most már más másik még míg nagy nagyobb nagyon ne nekem neki nem nincs néha néhány nélkül olyan ott pedig persze rá s saját sem semmi sok sokat sokkal szemben szerint szinte számára talán tehát teljes tovább továbbá több ugyanis utolsó után utána vagy vagyis vagyok valaki valami valamint való van vannak vele vissza viszont volna volt voltak voltam voltunk által általában át én éppen és így õ õk õket össze úgy új újabb újra'.split(' '); + + lunr.Pipeline.registerFunction(lunr.hu.stopWordFilter, 'stopWordFilter-hu'); + }; +})) diff --git a/static/js/lunr/lunr.hu.min.js b/static/js/lunr/lunr.hu.min.js new file mode 100644 index 0000000..1825c26 --- /dev/null +++ b/static/js/lunr/lunr.hu.min.js @@ -0,0 +1 @@ +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(n){if(void 0===n)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===n.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var e,p,r;n.hu=function(){this.pipeline.reset(),this.pipeline.add(n.hu.trimmer,n.hu.stopWordFilter,n.hu.stemmer)},n.hu.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",n.hu.trimmer=n.trimmerSupport.generateTrimmer(n.hu.wordCharacters),n.Pipeline.registerFunction(n.hu.trimmer,"trimmer-hu"),n.hu.stemmer=(e=n.stemmerSupport.Among,p=n.stemmerSupport.SnowballProgram,r=new function(){var r,i=[new e("cs",-1,-1),new e("dzs",-1,-1),new e("gy",-1,-1),new e("ly",-1,-1),new e("ny",-1,-1),new e("sz",-1,-1),new e("ty",-1,-1),new e("zs",-1,-1)],s=[new e("á",-1,1),new e("é",-1,2)],n=[new e("bb",-1,-1),new e("cc",-1,-1),new e("dd",-1,-1),new e("ff",-1,-1),new e("gg",-1,-1),new e("jj",-1,-1),new e("kk",-1,-1),new e("ll",-1,-1),new e("mm",-1,-1),new e("nn",-1,-1),new e("pp",-1,-1),new e("rr",-1,-1),new e("ccs",-1,-1),new e("ss",-1,-1),new e("zzs",-1,-1),new e("tt",-1,-1),new e("vv",-1,-1),new e("ggy",-1,-1),new e("lly",-1,-1),new e("nny",-1,-1),new e("tty",-1,-1),new e("ssz",-1,-1),new e("zz",-1,-1)],a=[new e("al",-1,1),new e("el",-1,2)],t=[new e("ba",-1,-1),new e("ra",-1,-1),new e("be",-1,-1),new e("re",-1,-1),new e("ig",-1,-1),new e("nak",-1,-1),new e("nek",-1,-1),new e("val",-1,-1),new e("vel",-1,-1),new e("ul",-1,-1),new e("nál",-1,-1),new e("nél",-1,-1),new e("ból",-1,-1),new e("ról",-1,-1),new e("tól",-1,-1),new e("bõl",-1,-1),new e("rõl",-1,-1),new e("tõl",-1,-1),new e("ül",-1,-1),new e("n",-1,-1),new e("an",19,-1),new e("ban",20,-1),new e("en",19,-1),new e("ben",22,-1),new e("képpen",22,-1),new e("on",19,-1),new e("ön",19,-1),new e("képp",-1,-1),new e("kor",-1,-1),new e("t",-1,-1),new e("at",29,-1),new e("et",29,-1),new e("ként",29,-1),new e("anként",32,-1),new e("enként",32,-1),new e("onként",32,-1),new e("ot",29,-1),new e("ért",29,-1),new e("öt",29,-1),new e("hez",-1,-1),new e("hoz",-1,-1),new e("höz",-1,-1),new e("vá",-1,-1),new e("vé",-1,-1)],w=[new e("án",-1,2),new e("én",-1,1),new e("ánként",-1,3)],o=[new e("stul",-1,2),new e("astul",0,1),new e("ástul",0,3),new e("stül",-1,2),new e("estül",3,1),new e("éstül",3,4)],c=[new e("á",-1,1),new e("é",-1,2)],l=[new e("k",-1,7),new e("ak",0,4),new e("ek",0,6),new e("ok",0,5),new e("ák",0,1),new e("ék",0,2),new e("ök",0,3)],m=[new e("éi",-1,7),new e("áéi",0,6),new e("ééi",0,5),new e("é",-1,9),new e("ké",3,4),new e("aké",4,1),new e("eké",4,1),new e("oké",4,1),new e("áké",4,3),new e("éké",4,2),new e("öké",4,1),new e("éé",3,8)],u=[new e("a",-1,18),new e("ja",0,17),new e("d",-1,16),new e("ad",2,13),new e("ed",2,13),new e("od",2,13),new e("ád",2,14),new e("éd",2,15),new e("öd",2,13),new e("e",-1,18),new e("je",9,17),new e("nk",-1,4),new e("unk",11,1),new e("ánk",11,2),new e("énk",11,3),new e("ünk",11,1),new e("uk",-1,8),new e("juk",16,7),new e("ájuk",17,5),new e("ük",-1,8),new e("jük",19,7),new e("éjük",20,6),new e("m",-1,12),new e("am",22,9),new e("em",22,9),new e("om",22,9),new e("ám",22,10),new e("ém",22,11),new e("o",-1,18),new e("á",-1,19),new e("é",-1,20)],k=[new e("id",-1,10),new e("aid",0,9),new e("jaid",1,6),new e("eid",0,9),new e("jeid",3,6),new e("áid",0,7),new e("éid",0,8),new e("i",-1,15),new e("ai",7,14),new e("jai",8,11),new e("ei",7,14),new e("jei",10,11),new e("ái",7,12),new e("éi",7,13),new e("itek",-1,24),new e("eitek",14,21),new e("jeitek",15,20),new e("éitek",14,23),new e("ik",-1,29),new e("aik",18,26),new e("jaik",19,25),new e("eik",18,26),new e("jeik",21,25),new e("áik",18,27),new e("éik",18,28),new e("ink",-1,20),new e("aink",25,17),new e("jaink",26,16),new e("eink",25,17),new e("jeink",28,16),new e("áink",25,18),new e("éink",25,19),new e("aitok",-1,21),new e("jaitok",32,20),new e("áitok",-1,22),new e("im",-1,5),new e("aim",35,4),new e("jaim",36,1),new e("eim",35,4),new e("jeim",38,1),new e("áim",35,2),new e("éim",35,3)],d=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,52,14],b=new p;function f(){return r<=b.cursor}function g(){var e=b.limit-b.cursor;return b.find_among_b(n,23)&&(b.cursor=b.limit-e,1)}function h(){var e;b.cursor>b.limit_backward&&(b.cursor--,b.ket=b.cursor,e=b.cursor-1,b.limit_backward<=e)&&e<=b.limit&&(b.cursor=e,b.bra=e,b.slice_del())}this.setCurrent=function(e){b.setCurrent(e)},this.getCurrent=function(){return b.getCurrent()},this.stem=function(){var e,n=b.cursor;if(function(){var e,n=b.cursor;if(r=b.limit,b.in_grouping(d,97,252))for(;;){if(e=b.cursor,b.out_grouping(d,97,252))return b.cursor=e,b.find_among(i,8)||(b.cursor=e)=b.limit)return r=e;b.cursor++}if(b.cursor=n,b.out_grouping(d,97,252)){for(;!b.in_grouping(d,97,252);){if(b.cursor>=b.limit)return;b.cursor++}r=b.cursor}}(),b.limit_backward=n,b.cursor=b.limit,b.ket=b.cursor,(n=b.find_among_b(a,2))&&(b.bra=b.cursor,f())&&(1!=n&&2!=n||g())&&(b.slice_del(),h()),b.cursor=b.limit,b.ket=b.cursor,b.find_among_b(t,44)&&(b.bra=b.cursor,f())&&(b.slice_del(),b.ket=b.cursor,e=b.find_among_b(s,2))&&(b.bra=b.cursor,f()))switch(e){case 1:b.slice_from("a");break;case 2:b.slice_from("e")}if(b.cursor=b.limit,b.ket=b.cursor,(n=b.find_among_b(w,3))&&(b.bra=b.cursor,f()))switch(n){case 1:b.slice_from("e");break;case 2:case 3:b.slice_from("a")}if(b.cursor=b.limit,b.ket=b.cursor,(n=b.find_among_b(o,6))&&(b.bra=b.cursor,f()))switch(n){case 1:case 2:b.slice_del();break;case 3:b.slice_from("a");break;case 4:b.slice_from("e")}if(b.cursor=b.limit,b.ket=b.cursor,(n=b.find_among_b(c,2))&&(b.bra=b.cursor,f())&&(1!=n&&2!=n||g())&&(b.slice_del(),h()),b.cursor=b.limit,b.ket=b.cursor,(n=b.find_among_b(m,12))&&(b.bra=b.cursor,f()))switch(n){case 1:case 4:case 7:case 9:b.slice_del();break;case 2:case 5:case 8:b.slice_from("e");break;case 3:case 6:b.slice_from("a")}if(b.cursor=b.limit,b.ket=b.cursor,(n=b.find_among_b(u,31))&&(b.bra=b.cursor,f()))switch(n){case 1:case 4:case 7:case 8:case 9:case 12:case 13:case 16:case 17:case 18:b.slice_del();break;case 2:case 5:case 10:case 14:case 19:b.slice_from("a");break;case 3:case 6:case 11:case 15:case 20:b.slice_from("e")}if(b.cursor=b.limit,b.ket=b.cursor,(n=b.find_among_b(k,42))&&(b.bra=b.cursor,f()))switch(n){case 1:case 4:case 5:case 6:case 9:case 10:case 11:case 14:case 15:case 16:case 17:case 20:case 21:case 24:case 25:case 26:case 29:b.slice_del();break;case 2:case 7:case 12:case 18:case 22:case 27:b.slice_from("a");break;case 3:case 8:case 13:case 19:case 23:case 28:b.slice_from("e")}if(b.cursor=b.limit,b.ket=b.cursor,(n=b.find_among_b(l,7))&&(b.bra=b.cursor,f()))switch(n){case 1:b.slice_from("a");break;case 2:b.slice_from("e");break;case 3:case 4:case 5:case 6:case 7:b.slice_del()}return!0}},function(e){return r.setCurrent(e),r.stem(),r.getCurrent()}),n.Pipeline.registerFunction(n.hu.stemmer,"stemmer-hu"),n.hu.stopWordFilter=function(e){if(-1===n.hu.stopWordFilter.stopWords.indexOf(e))return e},n.hu.stopWordFilter.stopWords=new n.SortedSet,n.hu.stopWordFilter.stopWords.length=200,n.hu.stopWordFilter.stopWords.elements=" a abban ahhoz ahogy ahol aki akik akkor alatt amely amelyek amelyekben amelyeket amelyet amelynek ami amikor amit amolyan amíg annak arra arról az azok azon azonban azt aztán azután azzal azért be belül benne bár cikk cikkek cikkeket csak de e ebben eddig egy egyes egyetlen egyik egyre egyéb egész ehhez ekkor el ellen elsõ elég elõ elõször elõtt emilyen ennek erre ez ezek ezen ezt ezzel ezért fel felé hanem hiszen hogy hogyan igen ill ill. illetve ilyen ilyenkor ismét ison itt jobban jó jól kell kellett keressünk keresztül ki kívül között közül legalább legyen lehet lehetett lenne lenni lesz lett maga magát majd majd meg mellett mely melyek mert mi mikor milyen minden mindenki mindent mindig mint mintha mit mivel miért most már más másik még míg nagy nagyobb nagyon ne nekem neki nem nincs néha néhány nélkül olyan ott pedig persze rá s saját sem semmi sok sokat sokkal szemben szerint szinte számára talán tehát teljes tovább továbbá több ugyanis utolsó után utána vagy vagyis vagyok valaki valami valamint való van vannak vele vissza viszont volna volt voltak voltam voltunk által általában át én éppen és így õ õk õket össze úgy új újabb újra".split(" "),n.Pipeline.registerFunction(n.hu.stopWordFilter,"stopWordFilter-hu")}}); diff --git a/static/js/lunr/lunr.it.js b/static/js/lunr/lunr.it.js new file mode 100644 index 0000000..90014d7 --- /dev/null +++ b/static/js/lunr/lunr.it.js @@ -0,0 +1,612 @@ +/*! + * Lunr languages, `Italian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.it = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.it.trimmer, + lunr.it.stopWordFilter, + lunr.it.stemmer + ); + }; + + /* lunr trimmer function */ + lunr.it.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.it.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.it.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.it.trimmer, 'trimmer-it'); + + /* lunr stemmer function */ + lunr.it.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function ItalianStemmer() { + var a_0 = [new Among("", -1, 7), new Among("qu", 0, 6), + new Among("\u00E1", 0, 1), new Among("\u00E9", 0, 2), + new Among("\u00ED", 0, 3), new Among("\u00F3", 0, 4), + new Among("\u00FA", 0, 5) + ], + a_1 = [new Among("", -1, 3), + new Among("I", 0, 1), new Among("U", 0, 2) + ], + a_2 = [ + new Among("la", -1, -1), new Among("cela", 0, -1), + new Among("gliela", 0, -1), new Among("mela", 0, -1), + new Among("tela", 0, -1), new Among("vela", 0, -1), + new Among("le", -1, -1), new Among("cele", 6, -1), + new Among("gliele", 6, -1), new Among("mele", 6, -1), + new Among("tele", 6, -1), new Among("vele", 6, -1), + new Among("ne", -1, -1), new Among("cene", 12, -1), + new Among("gliene", 12, -1), new Among("mene", 12, -1), + new Among("sene", 12, -1), new Among("tene", 12, -1), + new Among("vene", 12, -1), new Among("ci", -1, -1), + new Among("li", -1, -1), new Among("celi", 20, -1), + new Among("glieli", 20, -1), new Among("meli", 20, -1), + new Among("teli", 20, -1), new Among("veli", 20, -1), + new Among("gli", 20, -1), new Among("mi", -1, -1), + new Among("si", -1, -1), new Among("ti", -1, -1), + new Among("vi", -1, -1), new Among("lo", -1, -1), + new Among("celo", 31, -1), new Among("glielo", 31, -1), + new Among("melo", 31, -1), new Among("telo", 31, -1), + new Among("velo", 31, -1) + ], + a_3 = [new Among("ando", -1, 1), + new Among("endo", -1, 1), new Among("ar", -1, 2), + new Among("er", -1, 2), new Among("ir", -1, 2) + ], + a_4 = [ + new Among("ic", -1, -1), new Among("abil", -1, -1), + new Among("os", -1, -1), new Among("iv", -1, 1) + ], + a_5 = [ + new Among("ic", -1, 1), new Among("abil", -1, 1), + new Among("iv", -1, 1) + ], + a_6 = [new Among("ica", -1, 1), + new Among("logia", -1, 3), new Among("osa", -1, 1), + new Among("ista", -1, 1), new Among("iva", -1, 9), + new Among("anza", -1, 1), new Among("enza", -1, 5), + new Among("ice", -1, 1), new Among("atrice", 7, 1), + new Among("iche", -1, 1), new Among("logie", -1, 3), + new Among("abile", -1, 1), new Among("ibile", -1, 1), + new Among("usione", -1, 4), new Among("azione", -1, 2), + new Among("uzione", -1, 4), new Among("atore", -1, 2), + new Among("ose", -1, 1), new Among("ante", -1, 1), + new Among("mente", -1, 1), new Among("amente", 19, 7), + new Among("iste", -1, 1), new Among("ive", -1, 9), + new Among("anze", -1, 1), new Among("enze", -1, 5), + new Among("ici", -1, 1), new Among("atrici", 25, 1), + new Among("ichi", -1, 1), new Among("abili", -1, 1), + new Among("ibili", -1, 1), new Among("ismi", -1, 1), + new Among("usioni", -1, 4), new Among("azioni", -1, 2), + new Among("uzioni", -1, 4), new Among("atori", -1, 2), + new Among("osi", -1, 1), new Among("anti", -1, 1), + new Among("amenti", -1, 6), new Among("imenti", -1, 6), + new Among("isti", -1, 1), new Among("ivi", -1, 9), + new Among("ico", -1, 1), new Among("ismo", -1, 1), + new Among("oso", -1, 1), new Among("amento", -1, 6), + new Among("imento", -1, 6), new Among("ivo", -1, 9), + new Among("it\u00E0", -1, 8), new Among("ist\u00E0", -1, 1), + new Among("ist\u00E8", -1, 1), new Among("ist\u00EC", -1, 1) + ], + a_7 = [ + new Among("isca", -1, 1), new Among("enda", -1, 1), + new Among("ata", -1, 1), new Among("ita", -1, 1), + new Among("uta", -1, 1), new Among("ava", -1, 1), + new Among("eva", -1, 1), new Among("iva", -1, 1), + new Among("erebbe", -1, 1), new Among("irebbe", -1, 1), + new Among("isce", -1, 1), new Among("ende", -1, 1), + new Among("are", -1, 1), new Among("ere", -1, 1), + new Among("ire", -1, 1), new Among("asse", -1, 1), + new Among("ate", -1, 1), new Among("avate", 16, 1), + new Among("evate", 16, 1), new Among("ivate", 16, 1), + new Among("ete", -1, 1), new Among("erete", 20, 1), + new Among("irete", 20, 1), new Among("ite", -1, 1), + new Among("ereste", -1, 1), new Among("ireste", -1, 1), + new Among("ute", -1, 1), new Among("erai", -1, 1), + new Among("irai", -1, 1), new Among("isci", -1, 1), + new Among("endi", -1, 1), new Among("erei", -1, 1), + new Among("irei", -1, 1), new Among("assi", -1, 1), + new Among("ati", -1, 1), new Among("iti", -1, 1), + new Among("eresti", -1, 1), new Among("iresti", -1, 1), + new Among("uti", -1, 1), new Among("avi", -1, 1), + new Among("evi", -1, 1), new Among("ivi", -1, 1), + new Among("isco", -1, 1), new Among("ando", -1, 1), + new Among("endo", -1, 1), new Among("Yamo", -1, 1), + new Among("iamo", -1, 1), new Among("avamo", -1, 1), + new Among("evamo", -1, 1), new Among("ivamo", -1, 1), + new Among("eremo", -1, 1), new Among("iremo", -1, 1), + new Among("assimo", -1, 1), new Among("ammo", -1, 1), + new Among("emmo", -1, 1), new Among("eremmo", 54, 1), + new Among("iremmo", 54, 1), new Among("immo", -1, 1), + new Among("ano", -1, 1), new Among("iscano", 58, 1), + new Among("avano", 58, 1), new Among("evano", 58, 1), + new Among("ivano", 58, 1), new Among("eranno", -1, 1), + new Among("iranno", -1, 1), new Among("ono", -1, 1), + new Among("iscono", 65, 1), new Among("arono", 65, 1), + new Among("erono", 65, 1), new Among("irono", 65, 1), + new Among("erebbero", -1, 1), new Among("irebbero", -1, 1), + new Among("assero", -1, 1), new Among("essero", -1, 1), + new Among("issero", -1, 1), new Among("ato", -1, 1), + new Among("ito", -1, 1), new Among("uto", -1, 1), + new Among("avo", -1, 1), new Among("evo", -1, 1), + new Among("ivo", -1, 1), new Among("ar", -1, 1), + new Among("ir", -1, 1), new Among("er\u00E0", -1, 1), + new Among("ir\u00E0", -1, 1), new Among("er\u00F2", -1, 1), + new Among("ir\u00F2", -1, 1) + ], + g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1 + ], + g_AEIO = [17, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2 + ], + g_CG = [17], + I_p2, I_p1, I_pV, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr1(c1, c2, v_1) { + if (sbp.eq_s(1, c1)) { + sbp.ket = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 249)) { + sbp.slice_from(c2); + sbp.cursor = v_1; + return true; + } + } + return false; + } + + function r_prelude() { + var among_var, v_1 = sbp.cursor, + v_2, v_3, v_4; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_0, 7); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("\u00E0"); + continue; + case 2: + sbp.slice_from("\u00E8"); + continue; + case 3: + sbp.slice_from("\u00EC"); + continue; + case 4: + sbp.slice_from("\u00F2"); + continue; + case 5: + sbp.slice_from("\u00F9"); + continue; + case 6: + sbp.slice_from("qU"); + continue; + case 7: + if (sbp.cursor >= sbp.limit) + break; + sbp.cursor++; + continue; + } + } + break; + } + sbp.cursor = v_1; + while (true) { + v_2 = sbp.cursor; + while (true) { + v_3 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 249)) { + sbp.bra = sbp.cursor; + v_4 = sbp.cursor; + if (habr1("u", "U", v_3)) + break; + sbp.cursor = v_4; + if (habr1("i", "I", v_3)) + break; + } + sbp.cursor = v_3; + if (sbp.cursor >= sbp.limit) { + sbp.cursor = v_2; + return; + } + sbp.cursor++; + } + } + } + + function habr2(v_1) { + sbp.cursor = v_1; + if (!sbp.in_grouping(g_v, 97, 249)) + return false; + while (!sbp.out_grouping(g_v, 97, 249)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function habr3() { + if (sbp.in_grouping(g_v, 97, 249)) { + var v_1 = sbp.cursor; + if (sbp.out_grouping(g_v, 97, 249)) { + while (!sbp.in_grouping(g_v, 97, 249)) { + if (sbp.cursor >= sbp.limit) + return habr2(v_1); + sbp.cursor++; + } + return true; + } + return habr2(v_1); + } + return false; + } + + function habr4() { + var v_1 = sbp.cursor, + v_2; + if (!habr3()) { + sbp.cursor = v_1; + if (!sbp.out_grouping(g_v, 97, 249)) + return; + v_2 = sbp.cursor; + if (sbp.out_grouping(g_v, 97, 249)) { + while (!sbp.in_grouping(g_v, 97, 249)) { + if (sbp.cursor >= sbp.limit) { + sbp.cursor = v_2; + if (sbp.in_grouping(g_v, 97, 249) && sbp.cursor < sbp.limit) + sbp.cursor++; + return; + } + sbp.cursor++; + } + I_pV = sbp.cursor; + return; + } + sbp.cursor = v_2; + if (!sbp.in_grouping(g_v, 97, 249) || sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + I_pV = sbp.cursor; + } + + function habr5() { + while (!sbp.in_grouping(g_v, 97, 249)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 249)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function r_mark_regions() { + var v_1 = sbp.cursor; + I_pV = sbp.limit; + I_p1 = I_pV; + I_p2 = I_pV; + habr4(); + sbp.cursor = v_1; + if (habr5()) { + I_p1 = sbp.cursor; + if (habr5()) + I_p2 = sbp.cursor; + } + } + + function r_postlude() { + var among_var; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_1, 3); + if (!among_var) + break; + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("i"); + break; + case 2: + sbp.slice_from("u"); + break; + case 3: + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + break; + } + } + } + + function r_RV() { + return I_pV <= sbp.cursor; + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_attached_pronoun() { + var among_var; + sbp.ket = sbp.cursor; + if (sbp.find_among_b(a_2, 37)) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among_b(a_3, 5); + if (among_var && r_RV()) { + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + sbp.slice_from("e"); + break; + } + } + } + } + + function r_standard_suffix() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 51); + if (!among_var) + return false; + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + return false; + sbp.slice_del(); + break; + case 2: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "ic")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + break; + case 3: + if (!r_R2()) + return false; + sbp.slice_from("log"); + break; + case 4: + if (!r_R2()) + return false; + sbp.slice_from("u"); + break; + case 5: + if (!r_R2()) + return false; + sbp.slice_from("ente"); + break; + case 6: + if (!r_RV()) + return false; + sbp.slice_del(); + break; + case 7: + if (!r_R1()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 4); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2()) { + sbp.slice_del(); + if (among_var == 1) { + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + } + } + } + break; + case 8: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_5, 3); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + if (r_R2()) + sbp.slice_del(); + } + break; + case 9: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) { + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "ic")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + } + } + break; + } + return true; + } + + function r_verb_suffix() { + var among_var, v_1; + if (sbp.cursor >= I_pV) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 87); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + sbp.slice_del(); + } + sbp.limit_backward = v_1; + } + } + + function habr6() { + var v_1 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (sbp.in_grouping_b(g_AEIO, 97, 242)) { + sbp.bra = sbp.cursor; + if (r_RV()) { + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "i")) { + sbp.bra = sbp.cursor; + if (r_RV()) { + sbp.slice_del(); + return; + } + } + } + } + sbp.cursor = sbp.limit - v_1; + } + + function r_vowel_suffix() { + habr6(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "h")) { + sbp.bra = sbp.cursor; + if (sbp.in_grouping_b(g_CG, 99, 103)) + if (r_RV()) + sbp.slice_del(); + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_prelude(); + sbp.cursor = v_1; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_attached_pronoun(); + sbp.cursor = sbp.limit; + if (!r_standard_suffix()) { + sbp.cursor = sbp.limit; + r_verb_suffix(); + } + sbp.cursor = sbp.limit; + r_vowel_suffix(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.it.stemmer, 'stemmer-it'); + + /* stop word filter function */ + lunr.it.stopWordFilter = function(token) { + if (lunr.it.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.it.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.it.stopWordFilter.stopWords.length = 280; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.it.stopWordFilter.stopWords.elements = ' a abbia abbiamo abbiano abbiate ad agl agli ai al all alla alle allo anche avemmo avendo avesse avessero avessi avessimo aveste avesti avete aveva avevamo avevano avevate avevi avevo avrai avranno avrebbe avrebbero avrei avremmo avremo avreste avresti avrete avrà avrò avuta avute avuti avuto c che chi ci coi col come con contro cui da dagl dagli dai dal dall dalla dalle dallo degl degli dei del dell della delle dello di dov dove e ebbe ebbero ebbi ed era erano eravamo eravate eri ero essendo faccia facciamo facciano facciate faccio facemmo facendo facesse facessero facessi facessimo faceste facesti faceva facevamo facevano facevate facevi facevo fai fanno farai faranno farebbe farebbero farei faremmo faremo fareste faresti farete farà farò fece fecero feci fosse fossero fossi fossimo foste fosti fu fui fummo furono gli ha hai hanno ho i il in io l la le lei li lo loro lui ma mi mia mie miei mio ne negl negli nei nel nell nella nelle nello noi non nostra nostre nostri nostro o per perché più quale quanta quante quanti quanto quella quelle quelli quello questa queste questi questo sarai saranno sarebbe sarebbero sarei saremmo saremo sareste saresti sarete sarà sarò se sei si sia siamo siano siate siete sono sta stai stando stanno starai staranno starebbe starebbero starei staremmo staremo stareste staresti starete starà starò stava stavamo stavano stavate stavi stavo stemmo stesse stessero stessi stessimo steste stesti stette stettero stetti stia stiamo stiano stiate sto su sua sue sugl sugli sui sul sull sulla sulle sullo suo suoi ti tra tu tua tue tuo tuoi tutti tutto un una uno vi voi vostra vostre vostri vostro è'.split(' '); + + lunr.Pipeline.registerFunction(lunr.it.stopWordFilter, 'stopWordFilter-it'); + }; +})) diff --git a/static/js/lunr/lunr.it.min.js b/static/js/lunr/lunr.it.min.js new file mode 100644 index 0000000..36b30b5 --- /dev/null +++ b/static/js/lunr/lunr.it.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var e,i,n;r.it=function(){this.pipeline.reset(),this.pipeline.add(r.it.trimmer,r.it.stopWordFilter,r.it.stemmer)},r.it.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.it.trimmer=r.trimmerSupport.generateTrimmer(r.it.wordCharacters),r.Pipeline.registerFunction(r.it.trimmer,"trimmer-it"),r.it.stemmer=(e=r.stemmerSupport.Among,i=r.stemmerSupport.SnowballProgram,n=new function(){var n,o,s,t=[new e("",-1,7),new e("qu",0,6),new e("á",0,1),new e("é",0,2),new e("í",0,3),new e("ó",0,4),new e("ú",0,5)],a=[new e("",-1,3),new e("I",0,1),new e("U",0,2)],u=[new e("la",-1,-1),new e("cela",0,-1),new e("gliela",0,-1),new e("mela",0,-1),new e("tela",0,-1),new e("vela",0,-1),new e("le",-1,-1),new e("cele",6,-1),new e("gliele",6,-1),new e("mele",6,-1),new e("tele",6,-1),new e("vele",6,-1),new e("ne",-1,-1),new e("cene",12,-1),new e("gliene",12,-1),new e("mene",12,-1),new e("sene",12,-1),new e("tene",12,-1),new e("vene",12,-1),new e("ci",-1,-1),new e("li",-1,-1),new e("celi",20,-1),new e("glieli",20,-1),new e("meli",20,-1),new e("teli",20,-1),new e("veli",20,-1),new e("gli",20,-1),new e("mi",-1,-1),new e("si",-1,-1),new e("ti",-1,-1),new e("vi",-1,-1),new e("lo",-1,-1),new e("celo",31,-1),new e("glielo",31,-1),new e("melo",31,-1),new e("telo",31,-1),new e("velo",31,-1)],c=[new e("ando",-1,1),new e("endo",-1,1),new e("ar",-1,2),new e("er",-1,2),new e("ir",-1,2)],w=[new e("ic",-1,-1),new e("abil",-1,-1),new e("os",-1,-1),new e("iv",-1,1)],l=[new e("ic",-1,1),new e("abil",-1,1),new e("iv",-1,1)],m=[new e("ica",-1,1),new e("logia",-1,3),new e("osa",-1,1),new e("ista",-1,1),new e("iva",-1,9),new e("anza",-1,1),new e("enza",-1,5),new e("ice",-1,1),new e("atrice",7,1),new e("iche",-1,1),new e("logie",-1,3),new e("abile",-1,1),new e("ibile",-1,1),new e("usione",-1,4),new e("azione",-1,2),new e("uzione",-1,4),new e("atore",-1,2),new e("ose",-1,1),new e("ante",-1,1),new e("mente",-1,1),new e("amente",19,7),new e("iste",-1,1),new e("ive",-1,9),new e("anze",-1,1),new e("enze",-1,5),new e("ici",-1,1),new e("atrici",25,1),new e("ichi",-1,1),new e("abili",-1,1),new e("ibili",-1,1),new e("ismi",-1,1),new e("usioni",-1,4),new e("azioni",-1,2),new e("uzioni",-1,4),new e("atori",-1,2),new e("osi",-1,1),new e("anti",-1,1),new e("amenti",-1,6),new e("imenti",-1,6),new e("isti",-1,1),new e("ivi",-1,9),new e("ico",-1,1),new e("ismo",-1,1),new e("oso",-1,1),new e("amento",-1,6),new e("imento",-1,6),new e("ivo",-1,9),new e("ità",-1,8),new e("istà",-1,1),new e("istè",-1,1),new e("istì",-1,1)],f=[new e("isca",-1,1),new e("enda",-1,1),new e("ata",-1,1),new e("ita",-1,1),new e("uta",-1,1),new e("ava",-1,1),new e("eva",-1,1),new e("iva",-1,1),new e("erebbe",-1,1),new e("irebbe",-1,1),new e("isce",-1,1),new e("ende",-1,1),new e("are",-1,1),new e("ere",-1,1),new e("ire",-1,1),new e("asse",-1,1),new e("ate",-1,1),new e("avate",16,1),new e("evate",16,1),new e("ivate",16,1),new e("ete",-1,1),new e("erete",20,1),new e("irete",20,1),new e("ite",-1,1),new e("ereste",-1,1),new e("ireste",-1,1),new e("ute",-1,1),new e("erai",-1,1),new e("irai",-1,1),new e("isci",-1,1),new e("endi",-1,1),new e("erei",-1,1),new e("irei",-1,1),new e("assi",-1,1),new e("ati",-1,1),new e("iti",-1,1),new e("eresti",-1,1),new e("iresti",-1,1),new e("uti",-1,1),new e("avi",-1,1),new e("evi",-1,1),new e("ivi",-1,1),new e("isco",-1,1),new e("ando",-1,1),new e("endo",-1,1),new e("Yamo",-1,1),new e("iamo",-1,1),new e("avamo",-1,1),new e("evamo",-1,1),new e("ivamo",-1,1),new e("eremo",-1,1),new e("iremo",-1,1),new e("assimo",-1,1),new e("ammo",-1,1),new e("emmo",-1,1),new e("eremmo",54,1),new e("iremmo",54,1),new e("immo",-1,1),new e("ano",-1,1),new e("iscano",58,1),new e("avano",58,1),new e("evano",58,1),new e("ivano",58,1),new e("eranno",-1,1),new e("iranno",-1,1),new e("ono",-1,1),new e("iscono",65,1),new e("arono",65,1),new e("erono",65,1),new e("irono",65,1),new e("erebbero",-1,1),new e("irebbero",-1,1),new e("assero",-1,1),new e("essero",-1,1),new e("issero",-1,1),new e("ato",-1,1),new e("ito",-1,1),new e("uto",-1,1),new e("avo",-1,1),new e("evo",-1,1),new e("ivo",-1,1),new e("ar",-1,1),new e("ir",-1,1),new e("erà",-1,1),new e("irà",-1,1),new e("erò",-1,1),new e("irò",-1,1)],v=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2,1],b=[17,65,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2],d=[17],_=new i;function g(e,r,i){return _.eq_s(1,e)&&(_.ket=_.cursor,_.in_grouping(v,97,249))&&(_.slice_from(r),_.cursor=i,1)}function p(e){if(_.cursor=e,!_.in_grouping(v,97,249))return!1;for(;!_.out_grouping(v,97,249);){if(_.cursor>=_.limit)return!1;_.cursor++}return!0}function k(){for(;!_.in_grouping(v,97,249);){if(_.cursor>=_.limit)return;_.cursor++}for(;!_.out_grouping(v,97,249);){if(_.cursor>=_.limit)return;_.cursor++}return 1}function h(){return s<=_.cursor}function q(){return n<=_.cursor}this.setCurrent=function(e){_.setCurrent(e)},this.getCurrent=function(){return _.getCurrent()},this.stem=function(){var e,r,i=_.cursor;if(function(){for(var e,r,i,n,o=_.cursor;;){if(_.bra=_.cursor,e=_.find_among(t,7))switch(_.ket=_.cursor,e){case 1:_.slice_from("à");continue;case 2:_.slice_from("è");continue;case 3:_.slice_from("ì");continue;case 4:_.slice_from("ò");continue;case 5:_.slice_from("ù");continue;case 6:_.slice_from("qU");continue;case 7:if(!(_.cursor>=_.limit)){_.cursor++;continue}}break}for(_.cursor=o;;)for(r=_.cursor;;){if(i=_.cursor,_.in_grouping(v,97,249)){if(_.bra=_.cursor,n=_.cursor,g("u","U",i))break;if(_.cursor=n,g("i","I",i))break}if(_.cursor=i,_.cursor>=_.limit)return _.cursor=r;_.cursor++}}(),_.cursor=i,e=_.cursor,s=_.limit,n=o=s,function(){var e,r=_.cursor;if(!function(){if(_.in_grouping(v,97,249)){var e=_.cursor;if(_.out_grouping(v,97,249)){for(;!_.in_grouping(v,97,249);){if(_.cursor>=_.limit)return p(e);_.cursor++}return 1}return p(e)}}()){if(_.cursor=r,!_.out_grouping(v,97,249))return;if(e=_.cursor,_.out_grouping(v,97,249)){for(;!_.in_grouping(v,97,249);){if(_.cursor>=_.limit)return _.cursor=e,_.in_grouping(v,97,249)&&_.cursor<_.limit&&_.cursor++;_.cursor++}return s=_.cursor}if(_.cursor=e,!_.in_grouping(v,97,249)||_.cursor>=_.limit)return;_.cursor++}s=_.cursor}(),_.cursor=e,k()&&(o=_.cursor,k())&&(n=_.cursor),_.limit_backward=i,_.cursor=_.limit,_.ket=_.cursor,_.find_among_b(u,37)&&(_.bra=_.cursor,r=_.find_among_b(c,5))&&h())switch(r){case 1:_.slice_del();break;case 2:_.slice_from("e")}return _.cursor=_.limit,function(){var e;if(_.ket=_.cursor,e=_.find_among_b(m,51)){switch(_.bra=_.cursor,e){case 1:if(!q())return;_.slice_del();break;case 2:if(!q())return;_.slice_del(),_.ket=_.cursor,_.eq_s_b(2,"ic")&&(_.bra=_.cursor,q())&&_.slice_del();break;case 3:if(!q())return;_.slice_from("log");break;case 4:if(!q())return;_.slice_from("u");break;case 5:if(!q())return;_.slice_from("ente");break;case 6:if(!h())return;_.slice_del();break;case 7:if(!(o<=_.cursor))return;_.slice_del(),_.ket=_.cursor,(e=_.find_among_b(w,4))&&(_.bra=_.cursor,q())&&(_.slice_del(),1==e)&&(_.ket=_.cursor,_.eq_s_b(2,"at"))&&(_.bra=_.cursor,q())&&_.slice_del();break;case 8:if(!q())return;_.slice_del(),_.ket=_.cursor,(e=_.find_among_b(l,3))&&(_.bra=_.cursor,1==e)&&q()&&_.slice_del();break;case 9:if(!q())return;_.slice_del(),_.ket=_.cursor,_.eq_s_b(2,"at")&&(_.bra=_.cursor,q())&&(_.slice_del(),_.ket=_.cursor,_.eq_s_b(2,"ic"))&&(_.bra=_.cursor,q())&&_.slice_del()}return 1}}()||(_.cursor=_.limit,_.cursor>=s&&(e=_.limit_backward,_.limit_backward=s,_.ket=_.cursor,(i=_.find_among_b(f,87))&&(_.bra=_.cursor,1==i)&&_.slice_del(),_.limit_backward=e)),_.cursor=_.limit,r=_.limit-_.cursor,_.ket=_.cursor,_.in_grouping_b(b,97,242)&&(_.bra=_.cursor,h())&&(_.slice_del(),_.ket=_.cursor,_.eq_s_b(1,"i"))&&(_.bra=_.cursor,h())?_.slice_del():_.cursor=_.limit-r,_.ket=_.cursor,_.eq_s_b(1,"h")&&(_.bra=_.cursor,_.in_grouping_b(d,99,103))&&h()&&_.slice_del(),_.cursor=_.limit_backward,function(){for(var e;_.bra=_.cursor,e=_.find_among(a,3);)switch(_.ket=_.cursor,e){case 1:_.slice_from("i");break;case 2:_.slice_from("u");break;case 3:if(_.cursor>=_.limit)return;_.cursor++}}(),!0}},function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}),r.Pipeline.registerFunction(r.it.stemmer,"stemmer-it"),r.it.stopWordFilter=function(e){if(-1===r.it.stopWordFilter.stopWords.indexOf(e))return e},r.it.stopWordFilter.stopWords=new r.SortedSet,r.it.stopWordFilter.stopWords.length=280,r.it.stopWordFilter.stopWords.elements=" a abbia abbiamo abbiano abbiate ad agl agli ai al all alla alle allo anche avemmo avendo avesse avessero avessi avessimo aveste avesti avete aveva avevamo avevano avevate avevi avevo avrai avranno avrebbe avrebbero avrei avremmo avremo avreste avresti avrete avrà avrò avuta avute avuti avuto c che chi ci coi col come con contro cui da dagl dagli dai dal dall dalla dalle dallo degl degli dei del dell della delle dello di dov dove e ebbe ebbero ebbi ed era erano eravamo eravate eri ero essendo faccia facciamo facciano facciate faccio facemmo facendo facesse facessero facessi facessimo faceste facesti faceva facevamo facevano facevate facevi facevo fai fanno farai faranno farebbe farebbero farei faremmo faremo fareste faresti farete farà farò fece fecero feci fosse fossero fossi fossimo foste fosti fu fui fummo furono gli ha hai hanno ho i il in io l la le lei li lo loro lui ma mi mia mie miei mio ne negl negli nei nel nell nella nelle nello noi non nostra nostre nostri nostro o per perché più quale quanta quante quanti quanto quella quelle quelli quello questa queste questi questo sarai saranno sarebbe sarebbero sarei saremmo saremo sareste saresti sarete sarà sarò se sei si sia siamo siano siate siete sono sta stai stando stanno starai staranno starebbe starebbero starei staremmo staremo stareste staresti starete starà starò stava stavamo stavano stavate stavi stavo stemmo stesse stessero stessi stessimo steste stesti stette stettero stetti stia stiamo stiano stiate sto su sua sue sugl sugli sui sul sull sulla sulle sullo suo suoi ti tra tu tua tue tuo tuoi tutti tutto un una uno vi voi vostra vostre vostri vostro è".split(" "),r.Pipeline.registerFunction(r.it.stopWordFilter,"stopWordFilter-it")}}); diff --git a/static/js/lunr/lunr.jp.js b/static/js/lunr/lunr.jp.js new file mode 100644 index 0000000..90a7629 --- /dev/null +++ b/static/js/lunr/lunr.jp.js @@ -0,0 +1,120 @@ +/*! + * Lunr languages, `Japanese` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Chad Liu + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.jp = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.jp.stopWordFilter, + lunr.jp.stemmer + ); + // change the tokenizer for japanese one + lunr.tokenizer = lunr.jp.tokenizer; + }; + var segmenter = new TinySegmenter(); // インスタンス生成 + + lunr.jp.tokenizer = function (obj) { + if (!arguments.length || obj == null || obj == undefined) return []; + if (Array.isArray(obj)) + return obj.map(function (t) { + return t.toLowerCase(); + }); + + var str = obj.toString().replace(/^\s+/, ''); + + for (var i = str.length - 1; i >= 0; i--) { + if (/\S/.test(str.charAt(i))) { + str = str.substring(0, i + 1); + break; + } + } + + var segs = segmenter.segment(str); // 単語の配列が返る + return segs + .filter(function (token) { + return !!token; + }) + .map(function (token) { + return token; + }); + }; + + /* lunr stemmer function */ + lunr.jp.stemmer = (function () { + /* TODO japanese stemmer */ + return function (word) { + return word; + }; + })(); + + lunr.Pipeline.registerFunction(lunr.jp.stemmer, 'stemmer-jp'); + + /* stop word filter function */ + lunr.jp.stopWordFilter = function(token) { + if (lunr.jp.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.jp.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.jp.stopWordFilter.stopWords.length = 45; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + // stopword for japanese is from http://www.ranks.nl/stopwords/japanese + lunr.jp.stopWordFilter.stopWords.elements = ' これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし'.split(' '); + lunr.Pipeline.registerFunction(lunr.jp.stopWordFilter, 'stopWordFilter-jp'); + }; +})) diff --git a/static/js/lunr/lunr.jp.min.js b/static/js/lunr/lunr.jp.min.js new file mode 100644 index 0000000..a978f34 --- /dev/null +++ b/static/js/lunr/lunr.jp.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");r.jp=function(){this.pipeline.reset(),this.pipeline.add(r.jp.stopWordFilter,r.jp.stemmer),r.tokenizer=r.jp.tokenizer};var n=new TinySegmenter;r.jp.tokenizer=function(e){if(!arguments.length||null==e)return[];if(Array.isArray(e))return e.map(function(e){return e.toLowerCase()});for(var r=e.toString().replace(/^\s+/,""),t=r.length-1;0<=t;t--)if(/\S/.test(r.charAt(t))){r=r.substring(0,t+1);break}return n.segment(r).filter(function(e){return!!e}).map(function(e){return e})},r.jp.stemmer=function(e){return e},r.Pipeline.registerFunction(r.jp.stemmer,"stemmer-jp"),r.jp.stopWordFilter=function(e){if(-1===r.jp.stopWordFilter.stopWords.indexOf(e))return e},r.jp.stopWordFilter.stopWords=new r.SortedSet,r.jp.stopWordFilter.stopWords.length=45,r.jp.stopWordFilter.stopWords.elements=" これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし".split(" "),r.Pipeline.registerFunction(r.jp.stopWordFilter,"stopWordFilter-jp")}}); diff --git a/static/js/lunr/lunr.no.js b/static/js/lunr/lunr.no.js new file mode 100644 index 0000000..5917006 --- /dev/null +++ b/static/js/lunr/lunr.no.js @@ -0,0 +1,253 @@ +/*! + * Lunr languages, `Norwegian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.no = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.no.trimmer, + lunr.no.stopWordFilter, + lunr.no.stemmer + ); + }; + + /* lunr trimmer function */ + lunr.no.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.no.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.no.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.no.trimmer, 'trimmer-no'); + + /* lunr stemmer function */ + lunr.no.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function NorwegianStemmer() { + var a_0 = [new Among("a", -1, 1), new Among("e", -1, 1), + new Among("ede", 1, 1), new Among("ande", 1, 1), + new Among("ende", 1, 1), new Among("ane", 1, 1), + new Among("ene", 1, 1), new Among("hetene", 6, 1), + new Among("erte", 1, 3), new Among("en", -1, 1), + new Among("heten", 9, 1), new Among("ar", -1, 1), + new Among("er", -1, 1), new Among("heter", 12, 1), + new Among("s", -1, 2), new Among("as", 14, 1), + new Among("es", 14, 1), new Among("edes", 16, 1), + new Among("endes", 16, 1), new Among("enes", 16, 1), + new Among("hetenes", 19, 1), new Among("ens", 14, 1), + new Among("hetens", 21, 1), new Among("ers", 14, 1), + new Among("ets", 14, 1), new Among("et", -1, 1), + new Among("het", 25, 1), new Among("ert", -1, 3), + new Among("ast", -1, 1) + ], + a_1 = [new Among("dt", -1, -1), + new Among("vt", -1, -1) + ], + a_2 = [new Among("leg", -1, 1), + new Among("eleg", 0, 1), new Among("ig", -1, 1), + new Among("eig", 2, 1), new Among("lig", 2, 1), + new Among("elig", 4, 1), new Among("els", -1, 1), + new Among("lov", -1, 1), new Among("elov", 7, 1), + new Among("slov", 7, 1), new Among("hetslov", 9, 1) + ], + g_v = [17, + 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 + ], + g_s_ending = [ + 119, 125, 149, 1 + ], + I_x, I_p1, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_mark_regions() { + var v_1, c = sbp.cursor + 3; + I_p1 = sbp.limit; + if (0 <= c || c <= sbp.limit) { + I_x = c; + while (true) { + v_1 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 248)) { + sbp.cursor = v_1; + break; + } + if (v_1 >= sbp.limit) + return; + sbp.cursor = v_1 + 1; + } + while (!sbp.out_grouping(g_v, 97, 248)) { + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + I_p1 = sbp.cursor; + if (I_p1 < I_x) + I_p1 = I_x; + } + } + + function r_main_suffix() { + var among_var, v_1, v_2; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_0, 29); + sbp.limit_backward = v_1; + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + v_2 = sbp.limit - sbp.cursor; + if (sbp.in_grouping_b(g_s_ending, 98, 122)) + sbp.slice_del(); + else { + sbp.cursor = sbp.limit - v_2; + if (sbp.eq_s_b(1, "k") && sbp.out_grouping_b(g_v, 97, 248)) + sbp.slice_del(); + } + break; + case 3: + sbp.slice_from("er"); + break; + } + } + } + } + + function r_consonant_pair() { + var v_1 = sbp.limit - sbp.cursor, + v_2; + if (sbp.cursor >= I_p1) { + v_2 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + if (sbp.find_among_b(a_1, 2)) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_2; + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } else + sbp.limit_backward = v_2; + } + } + + function r_other_suffix() { + var among_var, v_1; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 11); + if (among_var) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_1; + if (among_var == 1) + sbp.slice_del(); + } else + sbp.limit_backward = v_1; + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_main_suffix(); + sbp.cursor = sbp.limit; + r_consonant_pair(); + sbp.cursor = sbp.limit; + r_other_suffix(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.no.stemmer, 'stemmer-no'); + + /* stop word filter function */ + lunr.no.stopWordFilter = function(token) { + if (lunr.no.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.no.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.no.stopWordFilter.stopWords.length = 177; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.no.stopWordFilter.stopWords.elements = ' alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å'.split(' '); + + lunr.Pipeline.registerFunction(lunr.no.stopWordFilter, 'stopWordFilter-no'); + }; +})) diff --git a/static/js/lunr/lunr.no.min.js b/static/js/lunr/lunr.no.min.js new file mode 100644 index 0000000..f809a60 --- /dev/null +++ b/static/js/lunr/lunr.no.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var e,n,i;r.no=function(){this.pipeline.reset(),this.pipeline.add(r.no.trimmer,r.no.stopWordFilter,r.no.stemmer)},r.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.no.trimmer=r.trimmerSupport.generateTrimmer(r.no.wordCharacters),r.Pipeline.registerFunction(r.no.trimmer,"trimmer-no"),r.no.stemmer=(e=r.stemmerSupport.Among,n=r.stemmerSupport.SnowballProgram,i=new function(){var i,t,o=[new e("a",-1,1),new e("e",-1,1),new e("ede",1,1),new e("ande",1,1),new e("ende",1,1),new e("ane",1,1),new e("ene",1,1),new e("hetene",6,1),new e("erte",1,3),new e("en",-1,1),new e("heten",9,1),new e("ar",-1,1),new e("er",-1,1),new e("heter",12,1),new e("s",-1,2),new e("as",14,1),new e("es",14,1),new e("edes",16,1),new e("endes",16,1),new e("enes",16,1),new e("hetenes",19,1),new e("ens",14,1),new e("hetens",21,1),new e("ers",14,1),new e("ets",14,1),new e("et",-1,1),new e("het",25,1),new e("ert",-1,3),new e("ast",-1,1)],s=[new e("dt",-1,-1),new e("vt",-1,-1)],m=[new e("leg",-1,1),new e("eleg",0,1),new e("ig",-1,1),new e("eig",2,1),new e("lig",2,1),new e("elig",4,1),new e("els",-1,1),new e("lov",-1,1),new e("elov",7,1),new e("slov",7,1),new e("hetslov",9,1)],a=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],l=[119,125,149,1],d=new n;this.setCurrent=function(e){d.setCurrent(e)},this.getCurrent=function(){return d.getCurrent()},this.stem=function(){var e,r,n=d.cursor;if(function(){var e,r=d.cursor+3;if(t=d.limit,0<=r||r<=d.limit){for(i=r;;){if(e=d.cursor,d.in_grouping(a,97,248)){d.cursor=e;break}if(e>=d.limit)return;d.cursor=e+1}for(;!d.out_grouping(a,97,248);){if(d.cursor>=d.limit)return;d.cursor++}(t=d.cursor)=t&&(n=d.limit_backward,d.limit_backward=t,d.ket=d.cursor,r=d.find_among_b(o,29),d.limit_backward=n,r))switch(d.bra=d.cursor,r){case 1:d.slice_del();break;case 2:e=d.limit-d.cursor,(d.in_grouping_b(l,98,122)||(d.cursor=d.limit-e,d.eq_s_b(1,"k")&&d.out_grouping_b(a,97,248)))&&d.slice_del();break;case 3:d.slice_from("er")}return d.cursor=d.limit,n=d.limit-d.cursor,d.cursor>=t&&(r=d.limit_backward,d.limit_backward=t,d.ket=d.cursor,d.find_among_b(s,2)?(d.bra=d.cursor,d.limit_backward=r,d.cursor=d.limit-n,d.cursor>d.limit_backward&&(d.cursor--,d.bra=d.cursor,d.slice_del())):d.limit_backward=r),d.cursor=d.limit,d.cursor>=t&&(n=d.limit_backward,d.limit_backward=t,d.ket=d.cursor,(r=d.find_among_b(m,11))?(d.bra=d.cursor,d.limit_backward=n,1==r&&d.slice_del()):d.limit_backward=n),!0}},function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}),r.Pipeline.registerFunction(r.no.stemmer,"stemmer-no"),r.no.stopWordFilter=function(e){if(-1===r.no.stopWordFilter.stopWords.indexOf(e))return e},r.no.stopWordFilter.stopWords=new r.SortedSet,r.no.stopWordFilter.stopWords.length=177,r.no.stopWordFilter.stopWords.elements=" alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" "),r.Pipeline.registerFunction(r.no.stopWordFilter,"stopWordFilter-no")}}); diff --git a/static/js/lunr/lunr.pt.js b/static/js/lunr/lunr.pt.js new file mode 100644 index 0000000..d960d97 --- /dev/null +++ b/static/js/lunr/lunr.pt.js @@ -0,0 +1,566 @@ +/*! + * Lunr languages, `Portuguese` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.pt = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.pt.trimmer, + lunr.pt.stopWordFilter, + lunr.pt.stemmer + ); + }; + + /* lunr trimmer function */ + lunr.pt.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.pt.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.pt.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.pt.trimmer, 'trimmer-pt'); + + /* lunr stemmer function */ + lunr.pt.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function PortugueseStemmer() { + var a_0 = [new Among("", -1, 3), new Among("\u00E3", 0, 1), + new Among("\u00F5", 0, 2) + ], + a_1 = [new Among("", -1, 3), + new Among("a~", 0, 1), new Among("o~", 0, 2) + ], + a_2 = [ + new Among("ic", -1, -1), new Among("ad", -1, -1), + new Among("os", -1, -1), new Among("iv", -1, 1) + ], + a_3 = [ + new Among("ante", -1, 1), new Among("avel", -1, 1), + new Among("\u00EDvel", -1, 1) + ], + a_4 = [new Among("ic", -1, 1), + new Among("abil", -1, 1), new Among("iv", -1, 1) + ], + a_5 = [ + new Among("ica", -1, 1), new Among("\u00E2ncia", -1, 1), + new Among("\u00EAncia", -1, 4), new Among("ira", -1, 9), + new Among("adora", -1, 1), new Among("osa", -1, 1), + new Among("ista", -1, 1), new Among("iva", -1, 8), + new Among("eza", -1, 1), new Among("log\u00EDa", -1, 2), + new Among("idade", -1, 7), new Among("ante", -1, 1), + new Among("mente", -1, 6), new Among("amente", 12, 5), + new Among("\u00E1vel", -1, 1), new Among("\u00EDvel", -1, 1), + new Among("uci\u00F3n", -1, 3), new Among("ico", -1, 1), + new Among("ismo", -1, 1), new Among("oso", -1, 1), + new Among("amento", -1, 1), new Among("imento", -1, 1), + new Among("ivo", -1, 8), new Among("a\u00E7a~o", -1, 1), + new Among("ador", -1, 1), new Among("icas", -1, 1), + new Among("\u00EAncias", -1, 4), new Among("iras", -1, 9), + new Among("adoras", -1, 1), new Among("osas", -1, 1), + new Among("istas", -1, 1), new Among("ivas", -1, 8), + new Among("ezas", -1, 1), new Among("log\u00EDas", -1, 2), + new Among("idades", -1, 7), new Among("uciones", -1, 3), + new Among("adores", -1, 1), new Among("antes", -1, 1), + new Among("a\u00E7o~es", -1, 1), new Among("icos", -1, 1), + new Among("ismos", -1, 1), new Among("osos", -1, 1), + new Among("amentos", -1, 1), new Among("imentos", -1, 1), + new Among("ivos", -1, 8) + ], + a_6 = [new Among("ada", -1, 1), + new Among("ida", -1, 1), new Among("ia", -1, 1), + new Among("aria", 2, 1), new Among("eria", 2, 1), + new Among("iria", 2, 1), new Among("ara", -1, 1), + new Among("era", -1, 1), new Among("ira", -1, 1), + new Among("ava", -1, 1), new Among("asse", -1, 1), + new Among("esse", -1, 1), new Among("isse", -1, 1), + new Among("aste", -1, 1), new Among("este", -1, 1), + new Among("iste", -1, 1), new Among("ei", -1, 1), + new Among("arei", 16, 1), new Among("erei", 16, 1), + new Among("irei", 16, 1), new Among("am", -1, 1), + new Among("iam", 20, 1), new Among("ariam", 21, 1), + new Among("eriam", 21, 1), new Among("iriam", 21, 1), + new Among("aram", 20, 1), new Among("eram", 20, 1), + new Among("iram", 20, 1), new Among("avam", 20, 1), + new Among("em", -1, 1), new Among("arem", 29, 1), + new Among("erem", 29, 1), new Among("irem", 29, 1), + new Among("assem", 29, 1), new Among("essem", 29, 1), + new Among("issem", 29, 1), new Among("ado", -1, 1), + new Among("ido", -1, 1), new Among("ando", -1, 1), + new Among("endo", -1, 1), new Among("indo", -1, 1), + new Among("ara~o", -1, 1), new Among("era~o", -1, 1), + new Among("ira~o", -1, 1), new Among("ar", -1, 1), + new Among("er", -1, 1), new Among("ir", -1, 1), + new Among("as", -1, 1), new Among("adas", 47, 1), + new Among("idas", 47, 1), new Among("ias", 47, 1), + new Among("arias", 50, 1), new Among("erias", 50, 1), + new Among("irias", 50, 1), new Among("aras", 47, 1), + new Among("eras", 47, 1), new Among("iras", 47, 1), + new Among("avas", 47, 1), new Among("es", -1, 1), + new Among("ardes", 58, 1), new Among("erdes", 58, 1), + new Among("irdes", 58, 1), new Among("ares", 58, 1), + new Among("eres", 58, 1), new Among("ires", 58, 1), + new Among("asses", 58, 1), new Among("esses", 58, 1), + new Among("isses", 58, 1), new Among("astes", 58, 1), + new Among("estes", 58, 1), new Among("istes", 58, 1), + new Among("is", -1, 1), new Among("ais", 71, 1), + new Among("eis", 71, 1), new Among("areis", 73, 1), + new Among("ereis", 73, 1), new Among("ireis", 73, 1), + new Among("\u00E1reis", 73, 1), new Among("\u00E9reis", 73, 1), + new Among("\u00EDreis", 73, 1), new Among("\u00E1sseis", 73, 1), + new Among("\u00E9sseis", 73, 1), new Among("\u00EDsseis", 73, 1), + new Among("\u00E1veis", 73, 1), new Among("\u00EDeis", 73, 1), + new Among("ar\u00EDeis", 84, 1), new Among("er\u00EDeis", 84, 1), + new Among("ir\u00EDeis", 84, 1), new Among("ados", -1, 1), + new Among("idos", -1, 1), new Among("amos", -1, 1), + new Among("\u00E1ramos", 90, 1), new Among("\u00E9ramos", 90, 1), + new Among("\u00EDramos", 90, 1), new Among("\u00E1vamos", 90, 1), + new Among("\u00EDamos", 90, 1), new Among("ar\u00EDamos", 95, 1), + new Among("er\u00EDamos", 95, 1), new Among("ir\u00EDamos", 95, 1), + new Among("emos", -1, 1), new Among("aremos", 99, 1), + new Among("eremos", 99, 1), new Among("iremos", 99, 1), + new Among("\u00E1ssemos", 99, 1), new Among("\u00EAssemos", 99, 1), + new Among("\u00EDssemos", 99, 1), new Among("imos", -1, 1), + new Among("armos", -1, 1), new Among("ermos", -1, 1), + new Among("irmos", -1, 1), new Among("\u00E1mos", -1, 1), + new Among("ar\u00E1s", -1, 1), new Among("er\u00E1s", -1, 1), + new Among("ir\u00E1s", -1, 1), new Among("eu", -1, 1), + new Among("iu", -1, 1), new Among("ou", -1, 1), + new Among("ar\u00E1", -1, 1), new Among("er\u00E1", -1, 1), + new Among("ir\u00E1", -1, 1) + ], + a_7 = [new Among("a", -1, 1), + new Among("i", -1, 1), new Among("o", -1, 1), + new Among("os", -1, 1), new Among("\u00E1", -1, 1), + new Among("\u00ED", -1, 1), new Among("\u00F3", -1, 1) + ], + a_8 = [ + new Among("e", -1, 1), new Among("\u00E7", -1, 2), + new Among("\u00E9", -1, 1), new Among("\u00EA", -1, 1) + ], + g_v = [17, + 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2 + ], + I_p2, I_p1, I_pV, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_prelude() { + var among_var; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_0, 3); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("a~"); + continue; + case 2: + sbp.slice_from("o~"); + continue; + case 3: + if (sbp.cursor >= sbp.limit) + break; + sbp.cursor++; + continue; + } + } + break; + } + } + + function habr2() { + if (sbp.out_grouping(g_v, 97, 250)) { + while (!sbp.in_grouping(g_v, 97, 250)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + return true; + } + + function habr3() { + if (sbp.in_grouping(g_v, 97, 250)) { + while (!sbp.out_grouping(g_v, 97, 250)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + } + I_pV = sbp.cursor; + return true; + } + + function habr4() { + var v_1 = sbp.cursor, + v_2, v_3; + if (sbp.in_grouping(g_v, 97, 250)) { + v_2 = sbp.cursor; + if (habr2()) { + sbp.cursor = v_2; + if (habr3()) + return; + } else + I_pV = sbp.cursor; + } + sbp.cursor = v_1; + if (sbp.out_grouping(g_v, 97, 250)) { + v_3 = sbp.cursor; + if (habr2()) { + sbp.cursor = v_3; + if (!sbp.in_grouping(g_v, 97, 250) || sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + I_pV = sbp.cursor; + } + } + + function habr5() { + while (!sbp.in_grouping(g_v, 97, 250)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 250)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function r_mark_regions() { + var v_1 = sbp.cursor; + I_pV = sbp.limit; + I_p1 = I_pV; + I_p2 = I_pV; + habr4(); + sbp.cursor = v_1; + if (habr5()) { + I_p1 = sbp.cursor; + if (habr5()) + I_p2 = sbp.cursor; + } + } + + function r_postlude() { + var among_var; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_1, 3); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("\u00E3"); + continue; + case 2: + sbp.slice_from("\u00F5"); + continue; + case 3: + if (sbp.cursor >= sbp.limit) + break; + sbp.cursor++; + continue; + } + } + break; + } + } + + function r_RV() { + return I_pV <= sbp.cursor; + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_standard_suffix() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_5, 45); + if (!among_var) + return false; + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + return false; + sbp.slice_del(); + break; + case 2: + if (!r_R2()) + return false; + sbp.slice_from("log"); + break; + case 3: + if (!r_R2()) + return false; + sbp.slice_from("u"); + break; + case 4: + if (!r_R2()) + return false; + sbp.slice_from("ente"); + break; + case 5: + if (!r_R1()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 4); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2()) { + sbp.slice_del(); + if (among_var == 1) { + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + } + } + } + break; + case 6: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 3); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + if (r_R2()) + sbp.slice_del(); + } + break; + case 7: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 3); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + if (r_R2()) + sbp.slice_del(); + } + break; + case 8: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + break; + case 9: + if (!r_RV() || !sbp.eq_s_b(1, "e")) + return false; + sbp.slice_from("ir"); + break; + } + return true; + } + + function r_verb_suffix() { + var among_var, v_1; + if (sbp.cursor >= I_pV) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 120); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + sbp.slice_del(); + sbp.limit_backward = v_1; + return true; + } + sbp.limit_backward = v_1; + } + return false; + } + + function r_residual_suffix() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 7); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + if (r_RV()) + sbp.slice_del(); + } + } + + function habr6(c1, c2) { + if (sbp.eq_s_b(1, c1)) { + sbp.bra = sbp.cursor; + var v_1 = sbp.limit - sbp.cursor; + if (sbp.eq_s_b(1, c2)) { + sbp.cursor = sbp.limit - v_1; + if (r_RV()) + sbp.slice_del(); + return false; + } + } + return true; + } + + function r_residual_form() { + var among_var, v_1, v_2, v_3; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_8, 4); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_RV()) { + sbp.slice_del(); + sbp.ket = sbp.cursor; + v_1 = sbp.limit - sbp.cursor; + if (habr6("u", "g")) + habr6("i", "c") + } + break; + case 2: + sbp.slice_from("c"); + break; + } + } + } + + function habr1() { + if (!r_standard_suffix()) { + sbp.cursor = sbp.limit; + if (!r_verb_suffix()) { + sbp.cursor = sbp.limit; + r_residual_suffix(); + return; + } + } + sbp.cursor = sbp.limit; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "i")) { + sbp.bra = sbp.cursor; + if (sbp.eq_s_b(1, "c")) { + sbp.cursor = sbp.limit; + if (r_RV()) + sbp.slice_del(); + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_prelude(); + sbp.cursor = v_1; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + habr1(); + sbp.cursor = sbp.limit; + r_residual_form(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.pt.stemmer, 'stemmer-pt'); + + /* stop word filter function */ + lunr.pt.stopWordFilter = function(token) { + if (lunr.pt.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.pt.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.pt.stopWordFilter.stopWords.length = 204; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.pt.stopWordFilter.stopWords.elements = ' a ao aos aquela aquelas aquele aqueles aquilo as até com como da das de dela delas dele deles depois do dos e ela elas ele eles em entre era eram essa essas esse esses esta estamos estas estava estavam este esteja estejam estejamos estes esteve estive estivemos estiver estivera estiveram estiverem estivermos estivesse estivessem estivéramos estivéssemos estou está estávamos estão eu foi fomos for fora foram forem formos fosse fossem fui fôramos fôssemos haja hajam hajamos havemos hei houve houvemos houver houvera houveram houverei houverem houveremos houveria houveriam houvermos houverá houverão houveríamos houvesse houvessem houvéramos houvéssemos há hão isso isto já lhe lhes mais mas me mesmo meu meus minha minhas muito na nas nem no nos nossa nossas nosso nossos num numa não nós o os ou para pela pelas pelo pelos por qual quando que quem se seja sejam sejamos sem serei seremos seria seriam será serão seríamos seu seus somos sou sua suas são só também te tem temos tenha tenham tenhamos tenho terei teremos teria teriam terá terão teríamos teu teus teve tinha tinham tive tivemos tiver tivera tiveram tiverem tivermos tivesse tivessem tivéramos tivéssemos tu tua tuas tém tínhamos um uma você vocês vos à às éramos'.split(' '); + + lunr.Pipeline.registerFunction(lunr.pt.stopWordFilter, 'stopWordFilter-pt'); + }; +})) diff --git a/static/js/lunr/lunr.pt.min.js b/static/js/lunr/lunr.pt.min.js new file mode 100644 index 0000000..9776adc --- /dev/null +++ b/static/js/lunr/lunr.pt.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var e,s,n;r.pt=function(){this.pipeline.reset(),this.pipeline.add(r.pt.trimmer,r.pt.stopWordFilter,r.pt.stemmer)},r.pt.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.pt.trimmer=r.trimmerSupport.generateTrimmer(r.pt.wordCharacters),r.Pipeline.registerFunction(r.pt.trimmer,"trimmer-pt"),r.pt.stemmer=(e=r.stemmerSupport.Among,s=r.stemmerSupport.SnowballProgram,n=new function(){var o,i,t,a=[new e("",-1,3),new e("ã",0,1),new e("õ",0,2)],u=[new e("",-1,3),new e("a~",0,1),new e("o~",0,2)],w=[new e("ic",-1,-1),new e("ad",-1,-1),new e("os",-1,-1),new e("iv",-1,1)],m=[new e("ante",-1,1),new e("avel",-1,1),new e("ível",-1,1)],c=[new e("ic",-1,1),new e("abil",-1,1),new e("iv",-1,1)],l=[new e("ica",-1,1),new e("ância",-1,1),new e("ência",-1,4),new e("ira",-1,9),new e("adora",-1,1),new e("osa",-1,1),new e("ista",-1,1),new e("iva",-1,8),new e("eza",-1,1),new e("logía",-1,2),new e("idade",-1,7),new e("ante",-1,1),new e("mente",-1,6),new e("amente",12,5),new e("ável",-1,1),new e("ível",-1,1),new e("ución",-1,3),new e("ico",-1,1),new e("ismo",-1,1),new e("oso",-1,1),new e("amento",-1,1),new e("imento",-1,1),new e("ivo",-1,8),new e("aça~o",-1,1),new e("ador",-1,1),new e("icas",-1,1),new e("ências",-1,4),new e("iras",-1,9),new e("adoras",-1,1),new e("osas",-1,1),new e("istas",-1,1),new e("ivas",-1,8),new e("ezas",-1,1),new e("logías",-1,2),new e("idades",-1,7),new e("uciones",-1,3),new e("adores",-1,1),new e("antes",-1,1),new e("aço~es",-1,1),new e("icos",-1,1),new e("ismos",-1,1),new e("osos",-1,1),new e("amentos",-1,1),new e("imentos",-1,1),new e("ivos",-1,8)],f=[new e("ada",-1,1),new e("ida",-1,1),new e("ia",-1,1),new e("aria",2,1),new e("eria",2,1),new e("iria",2,1),new e("ara",-1,1),new e("era",-1,1),new e("ira",-1,1),new e("ava",-1,1),new e("asse",-1,1),new e("esse",-1,1),new e("isse",-1,1),new e("aste",-1,1),new e("este",-1,1),new e("iste",-1,1),new e("ei",-1,1),new e("arei",16,1),new e("erei",16,1),new e("irei",16,1),new e("am",-1,1),new e("iam",20,1),new e("ariam",21,1),new e("eriam",21,1),new e("iriam",21,1),new e("aram",20,1),new e("eram",20,1),new e("iram",20,1),new e("avam",20,1),new e("em",-1,1),new e("arem",29,1),new e("erem",29,1),new e("irem",29,1),new e("assem",29,1),new e("essem",29,1),new e("issem",29,1),new e("ado",-1,1),new e("ido",-1,1),new e("ando",-1,1),new e("endo",-1,1),new e("indo",-1,1),new e("ara~o",-1,1),new e("era~o",-1,1),new e("ira~o",-1,1),new e("ar",-1,1),new e("er",-1,1),new e("ir",-1,1),new e("as",-1,1),new e("adas",47,1),new e("idas",47,1),new e("ias",47,1),new e("arias",50,1),new e("erias",50,1),new e("irias",50,1),new e("aras",47,1),new e("eras",47,1),new e("iras",47,1),new e("avas",47,1),new e("es",-1,1),new e("ardes",58,1),new e("erdes",58,1),new e("irdes",58,1),new e("ares",58,1),new e("eres",58,1),new e("ires",58,1),new e("asses",58,1),new e("esses",58,1),new e("isses",58,1),new e("astes",58,1),new e("estes",58,1),new e("istes",58,1),new e("is",-1,1),new e("ais",71,1),new e("eis",71,1),new e("areis",73,1),new e("ereis",73,1),new e("ireis",73,1),new e("áreis",73,1),new e("éreis",73,1),new e("íreis",73,1),new e("ásseis",73,1),new e("ésseis",73,1),new e("ísseis",73,1),new e("áveis",73,1),new e("íeis",73,1),new e("aríeis",84,1),new e("eríeis",84,1),new e("iríeis",84,1),new e("ados",-1,1),new e("idos",-1,1),new e("amos",-1,1),new e("áramos",90,1),new e("éramos",90,1),new e("íramos",90,1),new e("ávamos",90,1),new e("íamos",90,1),new e("aríamos",95,1),new e("eríamos",95,1),new e("iríamos",95,1),new e("emos",-1,1),new e("aremos",99,1),new e("eremos",99,1),new e("iremos",99,1),new e("ássemos",99,1),new e("êssemos",99,1),new e("íssemos",99,1),new e("imos",-1,1),new e("armos",-1,1),new e("ermos",-1,1),new e("irmos",-1,1),new e("ámos",-1,1),new e("arás",-1,1),new e("erás",-1,1),new e("irás",-1,1),new e("eu",-1,1),new e("iu",-1,1),new e("ou",-1,1),new e("ará",-1,1),new e("erá",-1,1),new e("irá",-1,1)],d=[new e("a",-1,1),new e("i",-1,1),new e("o",-1,1),new e("os",-1,1),new e("á",-1,1),new e("í",-1,1),new e("ó",-1,1)],p=[new e("e",-1,1),new e("ç",-1,2),new e("é",-1,1),new e("ê",-1,1)],v=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,12,2],_=new s;function h(){if(!_.out_grouping(v,97,250))return 1;for(;!_.in_grouping(v,97,250);){if(_.cursor>=_.limit)return 1;_.cursor++}}function b(){for(;!_.in_grouping(v,97,250);){if(_.cursor>=_.limit)return;_.cursor++}for(;!_.out_grouping(v,97,250);){if(_.cursor>=_.limit)return;_.cursor++}return 1}function g(){return t<=_.cursor}function k(){return o<=_.cursor}function q(e,r){return!_.eq_s_b(1,e)||(_.bra=_.cursor,e=_.limit-_.cursor,!_.eq_s_b(1,r))||(_.cursor=_.limit-e,g()&&_.slice_del(),0)}this.setCurrent=function(e){_.setCurrent(e)},this.getCurrent=function(){return _.getCurrent()},this.stem=function(){for(var e,r,s,n=_.cursor;;){if(_.bra=_.cursor,e=_.find_among(a,3))switch(_.ket=_.cursor,e){case 1:_.slice_from("a~");continue;case 2:_.slice_from("o~");continue;case 3:if(!(_.cursor>=_.limit)){_.cursor++;continue}}break}if(_.cursor=n,r=_.cursor,t=_.limit,o=i=t,function(){var e,r=_.cursor;if(_.in_grouping(v,97,250))if(e=_.cursor,h()){if(_.cursor=e,function(){if(_.in_grouping(v,97,250))for(;!_.out_grouping(v,97,250);){if(_.cursor>=_.limit)return;_.cursor++}return t=_.cursor,1}())return}else t=_.cursor;if(_.cursor=r,_.out_grouping(v,97,250)){if(e=_.cursor,h()){if(_.cursor=e,!_.in_grouping(v,97,250)||_.cursor>=_.limit)return;_.cursor++}t=_.cursor}}(),_.cursor=r,b()&&(i=_.cursor,b())&&(o=_.cursor),_.limit_backward=n,_.cursor=_.limit,function(){var e;if(_.ket=_.cursor,e=_.find_among_b(l,45)){switch(_.bra=_.cursor,e){case 1:if(!k())return;_.slice_del();break;case 2:if(!k())return;_.slice_from("log");break;case 3:if(!k())return;_.slice_from("u");break;case 4:if(!k())return;_.slice_from("ente");break;case 5:if(!(i<=_.cursor))return;_.slice_del(),_.ket=_.cursor,(e=_.find_among_b(w,4))&&(_.bra=_.cursor,k())&&(_.slice_del(),1==e)&&(_.ket=_.cursor,_.eq_s_b(2,"at"))&&(_.bra=_.cursor,k())&&_.slice_del();break;case 6:if(!k())return;_.slice_del(),_.ket=_.cursor,(e=_.find_among_b(m,3))&&(_.bra=_.cursor,1==e)&&k()&&_.slice_del();break;case 7:if(!k())return;_.slice_del(),_.ket=_.cursor,(e=_.find_among_b(c,3))&&(_.bra=_.cursor,1==e)&&k()&&_.slice_del();break;case 8:if(!k())return;_.slice_del(),_.ket=_.cursor,_.eq_s_b(2,"at")&&(_.bra=_.cursor,k())&&_.slice_del();break;case 9:if(!g()||!_.eq_s_b(1,"e"))return;_.slice_from("ir")}return 1}}()||(_.cursor=_.limit,function(){var e,r;if(_.cursor>=t){if(r=_.limit_backward,_.limit_backward=t,_.ket=_.cursor,e=_.find_among_b(f,120))return _.bra=_.cursor,1==e&&_.slice_del(),_.limit_backward=r,1;_.limit_backward=r}}())?(_.cursor=_.limit,_.ket=_.cursor,_.eq_s_b(1,"i")&&(_.bra=_.cursor,_.eq_s_b(1,"c"))&&(_.cursor=_.limit,g())&&_.slice_del()):(_.cursor=_.limit,_.ket=_.cursor,(n=_.find_among_b(d,7))&&(_.bra=_.cursor,1==n)&&g()&&_.slice_del()),_.cursor=_.limit,_.ket=_.cursor,r=_.find_among_b(p,4))switch(_.bra=_.cursor,r){case 1:g()&&(_.slice_del(),_.ket=_.cursor,_.limit,_.cursor,q("u","g"))&&q("i","c");break;case 2:_.slice_from("c")}for(_.cursor=_.limit_backward;;){if(_.bra=_.cursor,s=_.find_among(u,3))switch(_.ket=_.cursor,s){case 1:_.slice_from("ã");continue;case 2:_.slice_from("õ");continue;case 3:if(!(_.cursor>=_.limit)){_.cursor++;continue}}break}return!0}},function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}),r.Pipeline.registerFunction(r.pt.stemmer,"stemmer-pt"),r.pt.stopWordFilter=function(e){if(-1===r.pt.stopWordFilter.stopWords.indexOf(e))return e},r.pt.stopWordFilter.stopWords=new r.SortedSet,r.pt.stopWordFilter.stopWords.length=204,r.pt.stopWordFilter.stopWords.elements=" a ao aos aquela aquelas aquele aqueles aquilo as até com como da das de dela delas dele deles depois do dos e ela elas ele eles em entre era eram essa essas esse esses esta estamos estas estava estavam este esteja estejam estejamos estes esteve estive estivemos estiver estivera estiveram estiverem estivermos estivesse estivessem estivéramos estivéssemos estou está estávamos estão eu foi fomos for fora foram forem formos fosse fossem fui fôramos fôssemos haja hajam hajamos havemos hei houve houvemos houver houvera houveram houverei houverem houveremos houveria houveriam houvermos houverá houverão houveríamos houvesse houvessem houvéramos houvéssemos há hão isso isto já lhe lhes mais mas me mesmo meu meus minha minhas muito na nas nem no nos nossa nossas nosso nossos num numa não nós o os ou para pela pelas pelo pelos por qual quando que quem se seja sejam sejamos sem serei seremos seria seriam será serão seríamos seu seus somos sou sua suas são só também te tem temos tenha tenham tenhamos tenho terei teremos teria teriam terá terão teríamos teu teus teve tinha tinham tive tivemos tiver tivera tiveram tiverem tivermos tivesse tivessem tivéramos tivéssemos tu tua tuas tém tínhamos um uma você vocês vos à às éramos".split(" "),r.Pipeline.registerFunction(r.pt.stopWordFilter,"stopWordFilter-pt")}}); diff --git a/static/js/lunr/lunr.ro.js b/static/js/lunr/lunr.ro.js new file mode 100644 index 0000000..9638278 --- /dev/null +++ b/static/js/lunr/lunr.ro.js @@ -0,0 +1,554 @@ +/*! + * Lunr languages, `Romanian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.ro = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.ro.trimmer, + lunr.ro.stopWordFilter, + lunr.ro.stemmer + ); + }; + + /* lunr trimmer function */ + lunr.ro.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.ro.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.ro.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.ro.trimmer, 'trimmer-ro'); + + /* lunr stemmer function */ + lunr.ro.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function RomanianStemmer() { + var a_0 = [new Among("", -1, 3), new Among("I", 0, 1), new Among("U", 0, 2)], + a_1 = [ + new Among("ea", -1, 3), new Among("a\u0163ia", -1, 7), + new Among("aua", -1, 2), new Among("iua", -1, 4), + new Among("a\u0163ie", -1, 7), new Among("ele", -1, 3), + new Among("ile", -1, 5), new Among("iile", 6, 4), + new Among("iei", -1, 4), new Among("atei", -1, 6), + new Among("ii", -1, 4), new Among("ului", -1, 1), + new Among("ul", -1, 1), new Among("elor", -1, 3), + new Among("ilor", -1, 4), new Among("iilor", 14, 4) + ], + a_2 = [ + new Among("icala", -1, 4), new Among("iciva", -1, 4), + new Among("ativa", -1, 5), new Among("itiva", -1, 6), + new Among("icale", -1, 4), new Among("a\u0163iune", -1, 5), + new Among("i\u0163iune", -1, 6), new Among("atoare", -1, 5), + new Among("itoare", -1, 6), new Among("\u0103toare", -1, 5), + new Among("icitate", -1, 4), new Among("abilitate", -1, 1), + new Among("ibilitate", -1, 2), new Among("ivitate", -1, 3), + new Among("icive", -1, 4), new Among("ative", -1, 5), + new Among("itive", -1, 6), new Among("icali", -1, 4), + new Among("atori", -1, 5), new Among("icatori", 18, 4), + new Among("itori", -1, 6), new Among("\u0103tori", -1, 5), + new Among("icitati", -1, 4), new Among("abilitati", -1, 1), + new Among("ivitati", -1, 3), new Among("icivi", -1, 4), + new Among("ativi", -1, 5), new Among("itivi", -1, 6), + new Among("icit\u0103i", -1, 4), new Among("abilit\u0103i", -1, 1), + new Among("ivit\u0103i", -1, 3), + new Among("icit\u0103\u0163i", -1, 4), + new Among("abilit\u0103\u0163i", -1, 1), + new Among("ivit\u0103\u0163i", -1, 3), new Among("ical", -1, 4), + new Among("ator", -1, 5), new Among("icator", 35, 4), + new Among("itor", -1, 6), new Among("\u0103tor", -1, 5), + new Among("iciv", -1, 4), new Among("ativ", -1, 5), + new Among("itiv", -1, 6), new Among("ical\u0103", -1, 4), + new Among("iciv\u0103", -1, 4), new Among("ativ\u0103", -1, 5), + new Among("itiv\u0103", -1, 6) + ], + a_3 = [new Among("ica", -1, 1), + new Among("abila", -1, 1), new Among("ibila", -1, 1), + new Among("oasa", -1, 1), new Among("ata", -1, 1), + new Among("ita", -1, 1), new Among("anta", -1, 1), + new Among("ista", -1, 3), new Among("uta", -1, 1), + new Among("iva", -1, 1), new Among("ic", -1, 1), + new Among("ice", -1, 1), new Among("abile", -1, 1), + new Among("ibile", -1, 1), new Among("isme", -1, 3), + new Among("iune", -1, 2), new Among("oase", -1, 1), + new Among("ate", -1, 1), new Among("itate", 17, 1), + new Among("ite", -1, 1), new Among("ante", -1, 1), + new Among("iste", -1, 3), new Among("ute", -1, 1), + new Among("ive", -1, 1), new Among("ici", -1, 1), + new Among("abili", -1, 1), new Among("ibili", -1, 1), + new Among("iuni", -1, 2), new Among("atori", -1, 1), + new Among("osi", -1, 1), new Among("ati", -1, 1), + new Among("itati", 30, 1), new Among("iti", -1, 1), + new Among("anti", -1, 1), new Among("isti", -1, 3), + new Among("uti", -1, 1), new Among("i\u015Fti", -1, 3), + new Among("ivi", -1, 1), new Among("it\u0103i", -1, 1), + new Among("o\u015Fi", -1, 1), new Among("it\u0103\u0163i", -1, 1), + new Among("abil", -1, 1), new Among("ibil", -1, 1), + new Among("ism", -1, 3), new Among("ator", -1, 1), + new Among("os", -1, 1), new Among("at", -1, 1), + new Among("it", -1, 1), new Among("ant", -1, 1), + new Among("ist", -1, 3), new Among("ut", -1, 1), + new Among("iv", -1, 1), new Among("ic\u0103", -1, 1), + new Among("abil\u0103", -1, 1), new Among("ibil\u0103", -1, 1), + new Among("oas\u0103", -1, 1), new Among("at\u0103", -1, 1), + new Among("it\u0103", -1, 1), new Among("ant\u0103", -1, 1), + new Among("ist\u0103", -1, 3), new Among("ut\u0103", -1, 1), + new Among("iv\u0103", -1, 1) + ], + a_4 = [new Among("ea", -1, 1), + new Among("ia", -1, 1), new Among("esc", -1, 1), + new Among("\u0103sc", -1, 1), new Among("ind", -1, 1), + new Among("\u00E2nd", -1, 1), new Among("are", -1, 1), + new Among("ere", -1, 1), new Among("ire", -1, 1), + new Among("\u00E2re", -1, 1), new Among("se", -1, 2), + new Among("ase", 10, 1), new Among("sese", 10, 2), + new Among("ise", 10, 1), new Among("use", 10, 1), + new Among("\u00E2se", 10, 1), new Among("e\u015Fte", -1, 1), + new Among("\u0103\u015Fte", -1, 1), new Among("eze", -1, 1), + new Among("ai", -1, 1), new Among("eai", 19, 1), + new Among("iai", 19, 1), new Among("sei", -1, 2), + new Among("e\u015Fti", -1, 1), new Among("\u0103\u015Fti", -1, 1), + new Among("ui", -1, 1), new Among("ezi", -1, 1), + new Among("\u00E2i", -1, 1), new Among("a\u015Fi", -1, 1), + new Among("se\u015Fi", -1, 2), new Among("ase\u015Fi", 29, 1), + new Among("sese\u015Fi", 29, 2), new Among("ise\u015Fi", 29, 1), + new Among("use\u015Fi", 29, 1), + new Among("\u00E2se\u015Fi", 29, 1), new Among("i\u015Fi", -1, 1), + new Among("u\u015Fi", -1, 1), new Among("\u00E2\u015Fi", -1, 1), + new Among("a\u0163i", -1, 2), new Among("ea\u0163i", 38, 1), + new Among("ia\u0163i", 38, 1), new Among("e\u0163i", -1, 2), + new Among("i\u0163i", -1, 2), new Among("\u00E2\u0163i", -1, 2), + new Among("ar\u0103\u0163i", -1, 1), + new Among("ser\u0103\u0163i", -1, 2), + new Among("aser\u0103\u0163i", 45, 1), + new Among("seser\u0103\u0163i", 45, 2), + new Among("iser\u0103\u0163i", 45, 1), + new Among("user\u0103\u0163i", 45, 1), + new Among("\u00E2ser\u0103\u0163i", 45, 1), + new Among("ir\u0103\u0163i", -1, 1), + new Among("ur\u0103\u0163i", -1, 1), + new Among("\u00E2r\u0103\u0163i", -1, 1), new Among("am", -1, 1), + new Among("eam", 54, 1), new Among("iam", 54, 1), + new Among("em", -1, 2), new Among("asem", 57, 1), + new Among("sesem", 57, 2), new Among("isem", 57, 1), + new Among("usem", 57, 1), new Among("\u00E2sem", 57, 1), + new Among("im", -1, 2), new Among("\u00E2m", -1, 2), + new Among("\u0103m", -1, 2), new Among("ar\u0103m", 65, 1), + new Among("ser\u0103m", 65, 2), new Among("aser\u0103m", 67, 1), + new Among("seser\u0103m", 67, 2), new Among("iser\u0103m", 67, 1), + new Among("user\u0103m", 67, 1), + new Among("\u00E2ser\u0103m", 67, 1), + new Among("ir\u0103m", 65, 1), new Among("ur\u0103m", 65, 1), + new Among("\u00E2r\u0103m", 65, 1), new Among("au", -1, 1), + new Among("eau", 76, 1), new Among("iau", 76, 1), + new Among("indu", -1, 1), new Among("\u00E2ndu", -1, 1), + new Among("ez", -1, 1), new Among("easc\u0103", -1, 1), + new Among("ar\u0103", -1, 1), new Among("ser\u0103", -1, 2), + new Among("aser\u0103", 84, 1), new Among("seser\u0103", 84, 2), + new Among("iser\u0103", 84, 1), new Among("user\u0103", 84, 1), + new Among("\u00E2ser\u0103", 84, 1), new Among("ir\u0103", -1, 1), + new Among("ur\u0103", -1, 1), new Among("\u00E2r\u0103", -1, 1), + new Among("eaz\u0103", -1, 1) + ], + a_5 = [new Among("a", -1, 1), + new Among("e", -1, 1), new Among("ie", 1, 1), + new Among("i", -1, 1), new Among("\u0103", -1, 1) + ], + g_v = [17, 65, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 4 + ], + B_standard_suffix_removed, I_p2, I_p1, I_pV, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr1(c1, c2) { + if (sbp.eq_s(1, c1)) { + sbp.ket = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 259)) + sbp.slice_from(c2); + } + } + + function r_prelude() { + var v_1, v_2; + while (true) { + v_1 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 259)) { + v_2 = sbp.cursor; + sbp.bra = v_2; + habr1("u", "U"); + sbp.cursor = v_2; + habr1("i", "I"); + } + sbp.cursor = v_1; + if (sbp.cursor >= sbp.limit) { + break; + } + sbp.cursor++; + } + } + + function habr2() { + if (sbp.out_grouping(g_v, 97, 259)) { + while (!sbp.in_grouping(g_v, 97, 259)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + return true; + } + + function habr3() { + if (sbp.in_grouping(g_v, 97, 259)) { + while (!sbp.out_grouping(g_v, 97, 259)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + } + return false; + } + + function habr4() { + var v_1 = sbp.cursor, + v_2, v_3; + if (sbp.in_grouping(g_v, 97, 259)) { + v_2 = sbp.cursor; + if (habr2()) { + sbp.cursor = v_2; + if (!habr3()) { + I_pV = sbp.cursor; + return; + } + } else { + I_pV = sbp.cursor; + return; + } + } + sbp.cursor = v_1; + if (sbp.out_grouping(g_v, 97, 259)) { + v_3 = sbp.cursor; + if (habr2()) { + sbp.cursor = v_3; + if (sbp.in_grouping(g_v, 97, 259) && sbp.cursor < sbp.limit) + sbp.cursor++; + } + I_pV = sbp.cursor; + } + } + + function habr5() { + while (!sbp.in_grouping(g_v, 97, 259)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 259)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function r_mark_regions() { + var v_1 = sbp.cursor; + I_pV = sbp.limit; + I_p1 = I_pV; + I_p2 = I_pV; + habr4(); + sbp.cursor = v_1; + if (habr5()) { + I_p1 = sbp.cursor; + if (habr5()) + I_p2 = sbp.cursor; + } + } + + function r_postlude() { + var among_var; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_0, 3); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("i"); + continue; + case 2: + sbp.slice_from("u"); + continue; + case 3: + if (sbp.cursor >= sbp.limit) + break; + sbp.cursor++; + continue; + } + } + break; + } + } + + function r_RV() { + return I_pV <= sbp.cursor; + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_step_0() { + var among_var, v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_1, 16); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + sbp.slice_from("a"); + break; + case 3: + sbp.slice_from("e"); + break; + case 4: + sbp.slice_from("i"); + break; + case 5: + v_1 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(2, "ab")) { + sbp.cursor = sbp.limit - v_1; + sbp.slice_from("i"); + } + break; + case 6: + sbp.slice_from("at"); + break; + case 7: + sbp.slice_from("a\u0163i"); + break; + } + } + } + } + + function r_combo_suffix() { + var among_var, v_1 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 46); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_from("abil"); + break; + case 2: + sbp.slice_from("ibil"); + break; + case 3: + sbp.slice_from("iv"); + break; + case 4: + sbp.slice_from("ic"); + break; + case 5: + sbp.slice_from("at"); + break; + case 6: + sbp.slice_from("it"); + break; + } + B_standard_suffix_removed = true; + sbp.cursor = sbp.limit - v_1; + return true; + } + } + return false; + } + + function r_standard_suffix() { + var among_var, v_1; + B_standard_suffix_removed = false; + while (true) { + v_1 = sbp.limit - sbp.cursor; + if (!r_combo_suffix()) { + sbp.cursor = sbp.limit - v_1; + break; + } + } + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 62); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2()) { + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + if (sbp.eq_s_b(1, "\u0163")) { + sbp.bra = sbp.cursor; + sbp.slice_from("t"); + } + break; + case 3: + sbp.slice_from("ist"); + break; + } + B_standard_suffix_removed = true; + } + } + } + + function r_verb_suffix() { + var among_var, v_1, v_2; + if (sbp.cursor >= I_pV) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 94); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + v_2 = sbp.limit - sbp.cursor; + if (!sbp.out_grouping_b(g_v, 97, 259)) { + sbp.cursor = sbp.limit - v_2; + if (!sbp.eq_s_b(1, "u")) + break; + } + case 2: + sbp.slice_del(); + break; + } + } + sbp.limit_backward = v_1; + } + } + + function r_vowel_suffix() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_5, 5); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_RV() && among_var == 1) + sbp.slice_del(); + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_prelude(); + sbp.cursor = v_1; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_step_0(); + sbp.cursor = sbp.limit; + r_standard_suffix(); + sbp.cursor = sbp.limit; + if (!B_standard_suffix_removed) { + sbp.cursor = sbp.limit; + r_verb_suffix(); + sbp.cursor = sbp.limit; + } + r_vowel_suffix(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.ro.stemmer, 'stemmer-ro'); + + /* stop word filter function */ + lunr.ro.stopWordFilter = function(token) { + if (lunr.ro.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.ro.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.ro.stopWordFilter.stopWords.length = 282; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.ro.stopWordFilter.stopWords.elements = ' acea aceasta această aceea acei aceia acel acela acele acelea acest acesta aceste acestea aceşti aceştia acolo acord acum ai aia aibă aici al ale alea altceva altcineva am ar are asemenea asta astea astăzi asupra au avea avem aveţi azi aş aşadar aţi bine bucur bună ca care caut ce cel ceva chiar cinci cine cineva contra cu cum cumva curând curînd când cât câte câtva câţi cînd cît cîte cîtva cîţi că căci cărei căror cărui către da dacă dar datorită dată dau de deci deja deoarece departe deşi din dinaintea dintr- dintre doi doilea două drept după dă ea ei el ele eram este eu eşti face fata fi fie fiecare fii fim fiu fiţi frumos fără graţie halbă iar ieri la le li lor lui lângă lîngă mai mea mei mele mereu meu mi mie mine mult multă mulţi mulţumesc mâine mîine mă ne nevoie nici nicăieri nimeni nimeri nimic nişte noastre noastră noi noroc nostru nouă noştri nu opt ori oricare orice oricine oricum oricând oricât oricînd oricît oriunde patra patru patrulea pe pentru peste pic poate pot prea prima primul prin puţin puţina puţină până pînă rog sa sale sau se spate spre sub sunt suntem sunteţi sută sînt sîntem sînteţi să săi său ta tale te timp tine toate toată tot totuşi toţi trei treia treilea tu tăi tău un una unde undeva unei uneia unele uneori unii unor unora unu unui unuia unul vi voastre voastră voi vostru vouă voştri vreme vreo vreun vă zece zero zi zice îi îl îmi împotriva în înainte înaintea încotro încât încît între întrucât întrucît îţi ăla ălea ăsta ăstea ăştia şapte şase şi ştiu ţi ţie'.split(' '); + + lunr.Pipeline.registerFunction(lunr.ro.stopWordFilter, 'stopWordFilter-ro'); + }; +})) diff --git a/static/js/lunr/lunr.ro.min.js b/static/js/lunr/lunr.ro.min.js new file mode 100644 index 0000000..4fe0c44 --- /dev/null +++ b/static/js/lunr/lunr.ro.min.js @@ -0,0 +1 @@ +!function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(i){if(void 0===i)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===i.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var e,r,n;i.ro=function(){this.pipeline.reset(),this.pipeline.add(i.ro.trimmer,i.ro.stopWordFilter,i.ro.stemmer)},i.ro.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",i.ro.trimmer=i.trimmerSupport.generateTrimmer(i.ro.wordCharacters),i.Pipeline.registerFunction(i.ro.trimmer,"trimmer-ro"),i.ro.stemmer=(e=i.stemmerSupport.Among,r=i.stemmerSupport.SnowballProgram,n=new function(){var u,w,m,l,f=[new e("",-1,3),new e("I",0,1),new e("U",0,2)],p=[new e("ea",-1,3),new e("aţia",-1,7),new e("aua",-1,2),new e("iua",-1,4),new e("aţie",-1,7),new e("ele",-1,3),new e("ile",-1,5),new e("iile",6,4),new e("iei",-1,4),new e("atei",-1,6),new e("ii",-1,4),new e("ului",-1,1),new e("ul",-1,1),new e("elor",-1,3),new e("ilor",-1,4),new e("iilor",14,4)],d=[new e("icala",-1,4),new e("iciva",-1,4),new e("ativa",-1,5),new e("itiva",-1,6),new e("icale",-1,4),new e("aţiune",-1,5),new e("iţiune",-1,6),new e("atoare",-1,5),new e("itoare",-1,6),new e("ătoare",-1,5),new e("icitate",-1,4),new e("abilitate",-1,1),new e("ibilitate",-1,2),new e("ivitate",-1,3),new e("icive",-1,4),new e("ative",-1,5),new e("itive",-1,6),new e("icali",-1,4),new e("atori",-1,5),new e("icatori",18,4),new e("itori",-1,6),new e("ători",-1,5),new e("icitati",-1,4),new e("abilitati",-1,1),new e("ivitati",-1,3),new e("icivi",-1,4),new e("ativi",-1,5),new e("itivi",-1,6),new e("icităi",-1,4),new e("abilităi",-1,1),new e("ivităi",-1,3),new e("icităţi",-1,4),new e("abilităţi",-1,1),new e("ivităţi",-1,3),new e("ical",-1,4),new e("ator",-1,5),new e("icator",35,4),new e("itor",-1,6),new e("ător",-1,5),new e("iciv",-1,4),new e("ativ",-1,5),new e("itiv",-1,6),new e("icală",-1,4),new e("icivă",-1,4),new e("ativă",-1,5),new e("itivă",-1,6)],b=[new e("ica",-1,1),new e("abila",-1,1),new e("ibila",-1,1),new e("oasa",-1,1),new e("ata",-1,1),new e("ita",-1,1),new e("anta",-1,1),new e("ista",-1,3),new e("uta",-1,1),new e("iva",-1,1),new e("ic",-1,1),new e("ice",-1,1),new e("abile",-1,1),new e("ibile",-1,1),new e("isme",-1,3),new e("iune",-1,2),new e("oase",-1,1),new e("ate",-1,1),new e("itate",17,1),new e("ite",-1,1),new e("ante",-1,1),new e("iste",-1,3),new e("ute",-1,1),new e("ive",-1,1),new e("ici",-1,1),new e("abili",-1,1),new e("ibili",-1,1),new e("iuni",-1,2),new e("atori",-1,1),new e("osi",-1,1),new e("ati",-1,1),new e("itati",30,1),new e("iti",-1,1),new e("anti",-1,1),new e("isti",-1,3),new e("uti",-1,1),new e("işti",-1,3),new e("ivi",-1,1),new e("ităi",-1,1),new e("oşi",-1,1),new e("ităţi",-1,1),new e("abil",-1,1),new e("ibil",-1,1),new e("ism",-1,3),new e("ator",-1,1),new e("os",-1,1),new e("at",-1,1),new e("it",-1,1),new e("ant",-1,1),new e("ist",-1,3),new e("ut",-1,1),new e("iv",-1,1),new e("ică",-1,1),new e("abilă",-1,1),new e("ibilă",-1,1),new e("oasă",-1,1),new e("ată",-1,1),new e("ită",-1,1),new e("antă",-1,1),new e("istă",-1,3),new e("ută",-1,1),new e("ivă",-1,1)],_=[new e("ea",-1,1),new e("ia",-1,1),new e("esc",-1,1),new e("ăsc",-1,1),new e("ind",-1,1),new e("ând",-1,1),new e("are",-1,1),new e("ere",-1,1),new e("ire",-1,1),new e("âre",-1,1),new e("se",-1,2),new e("ase",10,1),new e("sese",10,2),new e("ise",10,1),new e("use",10,1),new e("âse",10,1),new e("eşte",-1,1),new e("ăşte",-1,1),new e("eze",-1,1),new e("ai",-1,1),new e("eai",19,1),new e("iai",19,1),new e("sei",-1,2),new e("eşti",-1,1),new e("ăşti",-1,1),new e("ui",-1,1),new e("ezi",-1,1),new e("âi",-1,1),new e("aşi",-1,1),new e("seşi",-1,2),new e("aseşi",29,1),new e("seseşi",29,2),new e("iseşi",29,1),new e("useşi",29,1),new e("âseşi",29,1),new e("işi",-1,1),new e("uşi",-1,1),new e("âşi",-1,1),new e("aţi",-1,2),new e("eaţi",38,1),new e("iaţi",38,1),new e("eţi",-1,2),new e("iţi",-1,2),new e("âţi",-1,2),new e("arăţi",-1,1),new e("serăţi",-1,2),new e("aserăţi",45,1),new e("seserăţi",45,2),new e("iserăţi",45,1),new e("userăţi",45,1),new e("âserăţi",45,1),new e("irăţi",-1,1),new e("urăţi",-1,1),new e("ârăţi",-1,1),new e("am",-1,1),new e("eam",54,1),new e("iam",54,1),new e("em",-1,2),new e("asem",57,1),new e("sesem",57,2),new e("isem",57,1),new e("usem",57,1),new e("âsem",57,1),new e("im",-1,2),new e("âm",-1,2),new e("ăm",-1,2),new e("arăm",65,1),new e("serăm",65,2),new e("aserăm",67,1),new e("seserăm",67,2),new e("iserăm",67,1),new e("userăm",67,1),new e("âserăm",67,1),new e("irăm",65,1),new e("urăm",65,1),new e("ârăm",65,1),new e("au",-1,1),new e("eau",76,1),new e("iau",76,1),new e("indu",-1,1),new e("ându",-1,1),new e("ez",-1,1),new e("ească",-1,1),new e("ară",-1,1),new e("seră",-1,2),new e("aseră",84,1),new e("seseră",84,2),new e("iseră",84,1),new e("useră",84,1),new e("âseră",84,1),new e("iră",-1,1),new e("ură",-1,1),new e("âră",-1,1),new e("ează",-1,1)],v=[new e("a",-1,1),new e("e",-1,1),new e("ie",1,1),new e("i",-1,1),new e("ă",-1,1)],g=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,0,0,4],k=new r;function h(e,i){k.eq_s(1,e)&&(k.ket=k.cursor,k.in_grouping(g,97,259))&&k.slice_from(i)}function W(){if(!k.out_grouping(g,97,259))return 1;for(;!k.in_grouping(g,97,259);){if(k.cursor>=k.limit)return 1;k.cursor++}}function z(){for(;!k.in_grouping(g,97,259);){if(k.cursor>=k.limit)return;k.cursor++}for(;!k.out_grouping(g,97,259);){if(k.cursor>=k.limit)return;k.cursor++}return 1}function F(){return m<=k.cursor}this.setCurrent=function(e){k.setCurrent(e)},this.getCurrent=function(){return k.getCurrent()},this.stem=function(){for(var e,i,r,n,t,a,o,s,c=k.cursor;e=k.cursor,k.in_grouping(g,97,259)&&(i=k.cursor,k.bra=i,h("u","U"),k.cursor=i,h("i","I")),k.cursor=e,!(k.cursor>=k.limit);)k.cursor++;if(k.cursor=c,n=k.cursor,l=k.limit,w=m=l,function(){var e,i=k.cursor;if(k.in_grouping(g,97,259)){if(e=k.cursor,!W())return l=k.cursor;if(k.cursor=e,!function(){if(k.in_grouping(g,97,259))for(;!k.out_grouping(g,97,259);){if(k.cursor>=k.limit)return 1;k.cursor++}}())return l=k.cursor}k.cursor=i,k.out_grouping(g,97,259)&&(e=k.cursor,W()&&(k.cursor=e,k.in_grouping(g,97,259))&&k.cursor=l){if(c=k.limit_backward,k.limit_backward=l,k.ket=k.cursor,n=k.find_among_b(_,94))switch(k.bra=k.cursor,n){case 1:if(t=k.limit-k.cursor,!k.out_grouping_b(g,97,259)&&(k.cursor=k.limit-t,!k.eq_s_b(1,"u")))break;case 2:k.slice_del()}k.limit_backward=c}k.cursor=k.limit}for(k.ket=k.cursor,(s=k.find_among_b(v,5))&&(k.bra=k.cursor,l<=k.cursor)&&1==s&&k.slice_del(),k.cursor=k.limit_backward;;){if(k.bra=k.cursor,a=k.find_among(f,3))switch(k.ket=k.cursor,a){case 1:k.slice_from("i");continue;case 2:k.slice_from("u");continue;case 3:if(!(k.cursor>=k.limit)){k.cursor++;continue}}break}return!0}},function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}),i.Pipeline.registerFunction(i.ro.stemmer,"stemmer-ro"),i.ro.stopWordFilter=function(e){if(-1===i.ro.stopWordFilter.stopWords.indexOf(e))return e},i.ro.stopWordFilter.stopWords=new i.SortedSet,i.ro.stopWordFilter.stopWords.length=282,i.ro.stopWordFilter.stopWords.elements=" acea aceasta această aceea acei aceia acel acela acele acelea acest acesta aceste acestea aceşti aceştia acolo acord acum ai aia aibă aici al ale alea altceva altcineva am ar are asemenea asta astea astăzi asupra au avea avem aveţi azi aş aşadar aţi bine bucur bună ca care caut ce cel ceva chiar cinci cine cineva contra cu cum cumva curând curînd când cât câte câtva câţi cînd cît cîte cîtva cîţi că căci cărei căror cărui către da dacă dar datorită dată dau de deci deja deoarece departe deşi din dinaintea dintr- dintre doi doilea două drept după dă ea ei el ele eram este eu eşti face fata fi fie fiecare fii fim fiu fiţi frumos fără graţie halbă iar ieri la le li lor lui lângă lîngă mai mea mei mele mereu meu mi mie mine mult multă mulţi mulţumesc mâine mîine mă ne nevoie nici nicăieri nimeni nimeri nimic nişte noastre noastră noi noroc nostru nouă noştri nu opt ori oricare orice oricine oricum oricând oricât oricînd oricît oriunde patra patru patrulea pe pentru peste pic poate pot prea prima primul prin puţin puţina puţină până pînă rog sa sale sau se spate spre sub sunt suntem sunteţi sută sînt sîntem sînteţi să săi său ta tale te timp tine toate toată tot totuşi toţi trei treia treilea tu tăi tău un una unde undeva unei uneia unele uneori unii unor unora unu unui unuia unul vi voastre voastră voi vostru vouă voştri vreme vreo vreun vă zece zero zi zice îi îl îmi împotriva în înainte înaintea încotro încât încît între întrucât întrucît îţi ăla ălea ăsta ăstea ăştia şapte şase şi ştiu ţi ţie".split(" "),i.Pipeline.registerFunction(i.ro.stopWordFilter,"stopWordFilter-ro")}}); diff --git a/static/js/lunr/lunr.ru.js b/static/js/lunr/lunr.ru.js new file mode 100644 index 0000000..4a0c415 --- /dev/null +++ b/static/js/lunr/lunr.ru.js @@ -0,0 +1,387 @@ +/*! + * Lunr languages, `Russian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.ru = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.ru.trimmer, + lunr.ru.stopWordFilter, + lunr.ru.stemmer + ); + }; + + /* lunr trimmer function */ + lunr.ru.wordCharacters = "\u0400-\u0484\u0487-\u052F\u1D2B\u1D78\u2DE0-\u2DFF\uA640-\uA69F\uFE2E\uFE2F"; + lunr.ru.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.ru.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.ru.trimmer, 'trimmer-ru'); + + /* lunr stemmer function */ + lunr.ru.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function RussianStemmer() { + var a_0 = [new Among("\u0432", -1, 1), new Among("\u0438\u0432", 0, 2), + new Among("\u044B\u0432", 0, 2), + new Among("\u0432\u0448\u0438", -1, 1), + new Among("\u0438\u0432\u0448\u0438", 3, 2), + new Among("\u044B\u0432\u0448\u0438", 3, 2), + new Among("\u0432\u0448\u0438\u0441\u044C", -1, 1), + new Among("\u0438\u0432\u0448\u0438\u0441\u044C", 6, 2), + new Among("\u044B\u0432\u0448\u0438\u0441\u044C", 6, 2) + ], + a_1 = [ + new Among("\u0435\u0435", -1, 1), new Among("\u0438\u0435", -1, 1), + new Among("\u043E\u0435", -1, 1), new Among("\u044B\u0435", -1, 1), + new Among("\u0438\u043C\u0438", -1, 1), + new Among("\u044B\u043C\u0438", -1, 1), + new Among("\u0435\u0439", -1, 1), new Among("\u0438\u0439", -1, 1), + new Among("\u043E\u0439", -1, 1), new Among("\u044B\u0439", -1, 1), + new Among("\u0435\u043C", -1, 1), new Among("\u0438\u043C", -1, 1), + new Among("\u043E\u043C", -1, 1), new Among("\u044B\u043C", -1, 1), + new Among("\u0435\u0433\u043E", -1, 1), + new Among("\u043E\u0433\u043E", -1, 1), + new Among("\u0435\u043C\u0443", -1, 1), + new Among("\u043E\u043C\u0443", -1, 1), + new Among("\u0438\u0445", -1, 1), new Among("\u044B\u0445", -1, 1), + new Among("\u0435\u044E", -1, 1), new Among("\u043E\u044E", -1, 1), + new Among("\u0443\u044E", -1, 1), new Among("\u044E\u044E", -1, 1), + new Among("\u0430\u044F", -1, 1), new Among("\u044F\u044F", -1, 1) + ], + a_2 = [ + new Among("\u0435\u043C", -1, 1), new Among("\u043D\u043D", -1, 1), + new Among("\u0432\u0448", -1, 1), + new Among("\u0438\u0432\u0448", 2, 2), + new Among("\u044B\u0432\u0448", 2, 2), new Among("\u0449", -1, 1), + new Among("\u044E\u0449", 5, 1), + new Among("\u0443\u044E\u0449", 6, 2) + ], + a_3 = [ + new Among("\u0441\u044C", -1, 1), new Among("\u0441\u044F", -1, 1) + ], + a_4 = [ + new Among("\u043B\u0430", -1, 1), + new Among("\u0438\u043B\u0430", 0, 2), + new Among("\u044B\u043B\u0430", 0, 2), + new Among("\u043D\u0430", -1, 1), + new Among("\u0435\u043D\u0430", 3, 2), + new Among("\u0435\u0442\u0435", -1, 1), + new Among("\u0438\u0442\u0435", -1, 2), + new Among("\u0439\u0442\u0435", -1, 1), + new Among("\u0435\u0439\u0442\u0435", 7, 2), + new Among("\u0443\u0439\u0442\u0435", 7, 2), + new Among("\u043B\u0438", -1, 1), + new Among("\u0438\u043B\u0438", 10, 2), + new Among("\u044B\u043B\u0438", 10, 2), new Among("\u0439", -1, 1), + new Among("\u0435\u0439", 13, 2), new Among("\u0443\u0439", 13, 2), + new Among("\u043B", -1, 1), new Among("\u0438\u043B", 16, 2), + new Among("\u044B\u043B", 16, 2), new Among("\u0435\u043C", -1, 1), + new Among("\u0438\u043C", -1, 2), new Among("\u044B\u043C", -1, 2), + new Among("\u043D", -1, 1), new Among("\u0435\u043D", 22, 2), + new Among("\u043B\u043E", -1, 1), + new Among("\u0438\u043B\u043E", 24, 2), + new Among("\u044B\u043B\u043E", 24, 2), + new Among("\u043D\u043E", -1, 1), + new Among("\u0435\u043D\u043E", 27, 2), + new Among("\u043D\u043D\u043E", 27, 1), + new Among("\u0435\u0442", -1, 1), + new Among("\u0443\u0435\u0442", 30, 2), + new Among("\u0438\u0442", -1, 2), new Among("\u044B\u0442", -1, 2), + new Among("\u044E\u0442", -1, 1), + new Among("\u0443\u044E\u0442", 34, 2), + new Among("\u044F\u0442", -1, 2), new Among("\u043D\u044B", -1, 1), + new Among("\u0435\u043D\u044B", 37, 2), + new Among("\u0442\u044C", -1, 1), + new Among("\u0438\u0442\u044C", 39, 2), + new Among("\u044B\u0442\u044C", 39, 2), + new Among("\u0435\u0448\u044C", -1, 1), + new Among("\u0438\u0448\u044C", -1, 2), new Among("\u044E", -1, 2), + new Among("\u0443\u044E", 44, 2) + ], + a_5 = [ + new Among("\u0430", -1, 1), new Among("\u0435\u0432", -1, 1), + new Among("\u043E\u0432", -1, 1), new Among("\u0435", -1, 1), + new Among("\u0438\u0435", 3, 1), new Among("\u044C\u0435", 3, 1), + new Among("\u0438", -1, 1), new Among("\u0435\u0438", 6, 1), + new Among("\u0438\u0438", 6, 1), + new Among("\u0430\u043C\u0438", 6, 1), + new Among("\u044F\u043C\u0438", 6, 1), + new Among("\u0438\u044F\u043C\u0438", 10, 1), + new Among("\u0439", -1, 1), new Among("\u0435\u0439", 12, 1), + new Among("\u0438\u0435\u0439", 13, 1), + new Among("\u0438\u0439", 12, 1), new Among("\u043E\u0439", 12, 1), + new Among("\u0430\u043C", -1, 1), new Among("\u0435\u043C", -1, 1), + new Among("\u0438\u0435\u043C", 18, 1), + new Among("\u043E\u043C", -1, 1), new Among("\u044F\u043C", -1, 1), + new Among("\u0438\u044F\u043C", 21, 1), new Among("\u043E", -1, 1), + new Among("\u0443", -1, 1), new Among("\u0430\u0445", -1, 1), + new Among("\u044F\u0445", -1, 1), + new Among("\u0438\u044F\u0445", 26, 1), new Among("\u044B", -1, 1), + new Among("\u044C", -1, 1), new Among("\u044E", -1, 1), + new Among("\u0438\u044E", 30, 1), new Among("\u044C\u044E", 30, 1), + new Among("\u044F", -1, 1), new Among("\u0438\u044F", 33, 1), + new Among("\u044C\u044F", 33, 1) + ], + a_6 = [ + new Among("\u043E\u0441\u0442", -1, 1), + new Among("\u043E\u0441\u0442\u044C", -1, 1) + ], + a_7 = [ + new Among("\u0435\u0439\u0448\u0435", -1, 1), + new Among("\u043D", -1, 2), new Among("\u0435\u0439\u0448", -1, 1), + new Among("\u044C", -1, 3) + ], + g_v = [33, 65, 8, 232], + I_p2, I_pV, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr3() { + while (!sbp.in_grouping(g_v, 1072, 1103)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function habr4() { + while (!sbp.out_grouping(g_v, 1072, 1103)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function r_mark_regions() { + I_pV = sbp.limit; + I_p2 = I_pV; + if (habr3()) { + I_pV = sbp.cursor; + if (habr4()) + if (habr3()) + if (habr4()) + I_p2 = sbp.cursor; + } + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function habr2(a, n) { + var among_var, v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a, n); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + v_1 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "\u0430")) { + sbp.cursor = sbp.limit - v_1; + if (!sbp.eq_s_b(1, "\u044F")) + return false; + } + case 2: + sbp.slice_del(); + break; + } + return true; + } + return false; + } + + function r_perfective_gerund() { + return habr2(a_0, 9); + } + + function habr1(a, n) { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a, n); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + sbp.slice_del(); + return true; + } + return false; + } + + function r_adjective() { + return habr1(a_1, 26); + } + + function r_adjectival() { + var among_var; + if (r_adjective()) { + habr2(a_2, 8); + return true; + } + return false; + } + + function r_reflexive() { + return habr1(a_3, 2); + } + + function r_verb() { + return habr2(a_4, 46); + } + + function r_noun() { + habr1(a_5, 36); + } + + function r_derivational() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 2); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2() && among_var == 1) + sbp.slice_del(); + } + } + + function r_tidy_up() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 4); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (!sbp.eq_s_b(1, "\u043D")) + break; + sbp.bra = sbp.cursor; + case 2: + if (!sbp.eq_s_b(1, "\u043D")) + break; + case 3: + sbp.slice_del(); + break; + } + } + } + this.stem = function() { + r_mark_regions(); + sbp.cursor = sbp.limit; + if (sbp.cursor < I_pV) + return false; + sbp.limit_backward = I_pV; + if (!r_perfective_gerund()) { + sbp.cursor = sbp.limit; + if (!r_reflexive()) + sbp.cursor = sbp.limit; + if (!r_adjectival()) { + sbp.cursor = sbp.limit; + if (!r_verb()) { + sbp.cursor = sbp.limit; + r_noun(); + } + } + } + sbp.cursor = sbp.limit; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "\u0438")) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + } else + sbp.cursor = sbp.limit; + r_derivational(); + sbp.cursor = sbp.limit; + r_tidy_up(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.ru.stemmer, 'stemmer-ru'); + + /* stop word filter function */ + lunr.ru.stopWordFilter = function(token) { + if (lunr.ru.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.ru.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.ru.stopWordFilter.stopWords.length = 422; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.ru.stopWordFilter.stopWords.elements = ' алло без близко более больше будем будет будете будешь будто буду будут будь бы бывает бывь был была были было быть в важная важное важные важный вам вами вас ваш ваша ваше ваши вверх вдали вдруг ведь везде весь вниз внизу во вокруг вон восемнадцатый восемнадцать восемь восьмой вот впрочем времени время все всегда всего всем всеми всему всех всею всю всюду вся всё второй вы г где говорил говорит год года году да давно даже далеко дальше даром два двадцатый двадцать две двенадцатый двенадцать двух девятнадцатый девятнадцать девятый девять действительно дел день десятый десять для до довольно долго должно другая другие других друго другое другой е его ее ей ему если есть еще ещё ею её ж же жизнь за занят занята занято заняты затем зато зачем здесь значит и из или им именно иметь ими имя иногда их к каждая каждое каждые каждый кажется как какая какой кем когда кого ком кому конечно которая которого которой которые который которых кроме кругом кто куда лет ли лишь лучше люди м мало между меля менее меньше меня миллионов мимо мира мне много многочисленная многочисленное многочисленные многочисленный мной мною мог могут мож может можно можхо мои мой мор мочь моя моё мы на наверху над надо назад наиболее наконец нам нами нас начала наш наша наше наши не него недавно недалеко нее ней нельзя нем немного нему непрерывно нередко несколько нет нею неё ни нибудь ниже низко никогда никуда ними них ничего но ну нужно нх о об оба обычно один одиннадцатый одиннадцать однажды однако одного одной около он она они оно опять особенно от отовсюду отсюда очень первый перед по под пожалуйста позже пока пор пора после посреди потом потому почему почти прекрасно при про просто против процентов пятнадцатый пятнадцать пятый пять раз разве рано раньше рядом с сам сама сами самим самими самих само самого самой самом самому саму свое своего своей свои своих свою сеаой себе себя сегодня седьмой сейчас семнадцатый семнадцать семь сих сказал сказала сказать сколько слишком сначала снова со собой собою совсем спасибо стал суть т та так такая также такие такое такой там твой твоя твоё те тебе тебя тем теми теперь тех то тобой тобою тогда того тоже только том тому тот тою третий три тринадцатый тринадцать ту туда тут ты тысяч у уж уже уметь хорошо хотеть хоть хотя хочешь часто чаще чего человек чем чему через четвертый четыре четырнадцатый четырнадцать что чтоб чтобы чуть шестнадцатый шестнадцать шестой шесть эта эти этим этими этих это этого этой этом этому этот эту я а'.split(' '); + + lunr.Pipeline.registerFunction(lunr.ru.stopWordFilter, 'stopWordFilter-ru'); + }; +})) diff --git a/static/js/lunr/lunr.ru.min.js b/static/js/lunr/lunr.ru.min.js new file mode 100644 index 0000000..f254753 --- /dev/null +++ b/static/js/lunr/lunr.ru.min.js @@ -0,0 +1 @@ +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(n){if(void 0===n)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===n.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var _,b,r;n.ru=function(){this.pipeline.reset(),this.pipeline.add(n.ru.trimmer,n.ru.stopWordFilter,n.ru.stemmer)},n.ru.wordCharacters="Ѐ-҄҇-ԯᴫᵸⷠ-ⷿꙀ-ꚟ︮︯",n.ru.trimmer=n.trimmerSupport.generateTrimmer(n.ru.wordCharacters),n.Pipeline.registerFunction(n.ru.trimmer,"trimmer-ru"),n.ru.stemmer=(_=n.stemmerSupport.Among,b=n.stemmerSupport.SnowballProgram,r=new function(){var n,r,w=[new _("в",-1,1),new _("ив",0,2),new _("ыв",0,2),new _("вши",-1,1),new _("ивши",3,2),new _("ывши",3,2),new _("вшись",-1,1),new _("ившись",6,2),new _("ывшись",6,2)],t=[new _("ее",-1,1),new _("ие",-1,1),new _("ое",-1,1),new _("ые",-1,1),new _("ими",-1,1),new _("ыми",-1,1),new _("ей",-1,1),new _("ий",-1,1),new _("ой",-1,1),new _("ый",-1,1),new _("ем",-1,1),new _("им",-1,1),new _("ом",-1,1),new _("ым",-1,1),new _("его",-1,1),new _("ого",-1,1),new _("ему",-1,1),new _("ому",-1,1),new _("их",-1,1),new _("ых",-1,1),new _("ею",-1,1),new _("ою",-1,1),new _("ую",-1,1),new _("юю",-1,1),new _("ая",-1,1),new _("яя",-1,1)],i=[new _("ем",-1,1),new _("нн",-1,1),new _("вш",-1,1),new _("ивш",2,2),new _("ывш",2,2),new _("щ",-1,1),new _("ющ",5,1),new _("ующ",6,2)],o=[new _("сь",-1,1),new _("ся",-1,1)],s=[new _("ла",-1,1),new _("ила",0,2),new _("ыла",0,2),new _("на",-1,1),new _("ена",3,2),new _("ете",-1,1),new _("ите",-1,2),new _("йте",-1,1),new _("ейте",7,2),new _("уйте",7,2),new _("ли",-1,1),new _("или",10,2),new _("ыли",10,2),new _("й",-1,1),new _("ей",13,2),new _("уй",13,2),new _("л",-1,1),new _("ил",16,2),new _("ыл",16,2),new _("ем",-1,1),new _("им",-1,2),new _("ым",-1,2),new _("н",-1,1),new _("ен",22,2),new _("ло",-1,1),new _("ило",24,2),new _("ыло",24,2),new _("но",-1,1),new _("ено",27,2),new _("нно",27,1),new _("ет",-1,1),new _("ует",30,2),new _("ит",-1,2),new _("ыт",-1,2),new _("ют",-1,1),new _("уют",34,2),new _("ят",-1,2),new _("ны",-1,1),new _("ены",37,2),new _("ть",-1,1),new _("ить",39,2),new _("ыть",39,2),new _("ешь",-1,1),new _("ишь",-1,2),new _("ю",-1,2),new _("ую",44,2)],u=[new _("а",-1,1),new _("ев",-1,1),new _("ов",-1,1),new _("е",-1,1),new _("ие",3,1),new _("ье",3,1),new _("и",-1,1),new _("еи",6,1),new _("ии",6,1),new _("ами",6,1),new _("ями",6,1),new _("иями",10,1),new _("й",-1,1),new _("ей",12,1),new _("ией",13,1),new _("ий",12,1),new _("ой",12,1),new _("ам",-1,1),new _("ем",-1,1),new _("ием",18,1),new _("ом",-1,1),new _("ям",-1,1),new _("иям",21,1),new _("о",-1,1),new _("у",-1,1),new _("ах",-1,1),new _("ях",-1,1),new _("иях",26,1),new _("ы",-1,1),new _("ь",-1,1),new _("ю",-1,1),new _("ию",30,1),new _("ью",30,1),new _("я",-1,1),new _("ия",33,1),new _("ья",33,1)],c=[new _("ост",-1,1),new _("ость",-1,1)],m=[new _("ейше",-1,1),new _("н",-1,2),new _("ейш",-1,1),new _("ь",-1,3)],e=[33,65,8,232],l=new b;function f(){for(;!l.in_grouping(e,1072,1103);){if(l.cursor>=l.limit)return;l.cursor++}return 1}function p(){for(;!l.out_grouping(e,1072,1103);){if(l.cursor>=l.limit)return;l.cursor++}return 1}function d(e,n){var r;if(l.ket=l.cursor,e=l.find_among_b(e,n)){switch(l.bra=l.cursor,e){case 1:if(r=l.limit-l.cursor,!l.eq_s_b(1,"а")&&(l.cursor=l.limit-r,!l.eq_s_b(1,"я")))return;case 2:l.slice_del()}return 1}}function a(e,n){return l.ket=l.cursor,(e=l.find_among_b(e,n))&&(l.bra=l.cursor,1==e&&l.slice_del(),1)}this.setCurrent=function(e){l.setCurrent(e)},this.getCurrent=function(){return l.getCurrent()},this.stem=function(){if(r=l.limit,n=r,f()&&(r=l.cursor,p())&&f()&&p()&&(n=l.cursor),l.cursor=l.limit,l.cursor= sbp.limit) + return; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 246)) { + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + I_p1 = sbp.cursor; + if (I_p1 < I_x) + I_p1 = I_x; + } + } + + function r_main_suffix() { + var among_var, v_2 = sbp.limit_backward; + if (sbp.cursor >= I_p1) { + sbp.limit_backward = I_p1; + sbp.cursor = sbp.limit; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_0, 37); + sbp.limit_backward = v_2; + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + if (sbp.in_grouping_b(g_s_ending, 98, 121)) + sbp.slice_del(); + break; + } + } + } + } + + function r_consonant_pair() { + var v_1 = sbp.limit_backward; + if (sbp.cursor >= I_p1) { + sbp.limit_backward = I_p1; + sbp.cursor = sbp.limit; + if (sbp.find_among_b(a_1, 7)) { + sbp.cursor = sbp.limit; + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.bra = --sbp.cursor; + sbp.slice_del(); + } + } + sbp.limit_backward = v_1; + } + } + + function r_other_suffix() { + var among_var, v_2; + if (sbp.cursor >= I_p1) { + v_2 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.cursor = sbp.limit; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 5); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + sbp.slice_from("l\u00F6s"); + break; + case 3: + sbp.slice_from("full"); + break; + } + } + sbp.limit_backward = v_2; + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_main_suffix(); + sbp.cursor = sbp.limit; + r_consonant_pair(); + sbp.cursor = sbp.limit; + r_other_suffix(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.sv.stemmer, 'stemmer-sv'); + + /* stop word filter function */ + lunr.sv.stopWordFilter = function(token) { + if (lunr.sv.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.sv.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.sv.stopWordFilter.stopWords.length = 115; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.sv.stopWordFilter.stopWords.elements = ' alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över'.split(' '); + + lunr.Pipeline.registerFunction(lunr.sv.stopWordFilter, 'stopWordFilter-sv'); + }; +})) diff --git a/static/js/lunr/lunr.sv.min.js b/static/js/lunr/lunr.sv.min.js new file mode 100644 index 0000000..1e5c7a3 --- /dev/null +++ b/static/js/lunr/lunr.sv.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var e,d,n;r.sv=function(){this.pipeline.reset(),this.pipeline.add(r.sv.trimmer,r.sv.stopWordFilter,r.sv.stemmer)},r.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.sv.trimmer=r.trimmerSupport.generateTrimmer(r.sv.wordCharacters),r.Pipeline.registerFunction(r.sv.trimmer,"trimmer-sv"),r.sv.stemmer=(e=r.stemmerSupport.Among,d=r.stemmerSupport.SnowballProgram,n=new function(){var n,t,i=[new e("a",-1,1),new e("arna",0,1),new e("erna",0,1),new e("heterna",2,1),new e("orna",0,1),new e("ad",-1,1),new e("e",-1,1),new e("ade",6,1),new e("ande",6,1),new e("arne",6,1),new e("are",6,1),new e("aste",6,1),new e("en",-1,1),new e("anden",12,1),new e("aren",12,1),new e("heten",12,1),new e("ern",-1,1),new e("ar",-1,1),new e("er",-1,1),new e("heter",18,1),new e("or",-1,1),new e("s",-1,2),new e("as",21,1),new e("arnas",22,1),new e("ernas",22,1),new e("ornas",22,1),new e("es",21,1),new e("ades",26,1),new e("andes",26,1),new e("ens",21,1),new e("arens",29,1),new e("hetens",29,1),new e("erns",21,1),new e("at",-1,1),new e("andet",-1,1),new e("het",-1,1),new e("ast",-1,1)],s=[new e("dd",-1,-1),new e("gd",-1,-1),new e("nn",-1,-1),new e("dt",-1,-1),new e("gt",-1,-1),new e("kt",-1,-1),new e("tt",-1,-1)],a=[new e("ig",-1,1),new e("lig",0,1),new e("els",-1,1),new e("fullt",-1,3),new e("löst",-1,2)],o=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],u=[119,127,149],l=new d;this.setCurrent=function(e){l.setCurrent(e)},this.getCurrent=function(){return l.getCurrent()},this.stem=function(){var e=l.cursor;!function(){var e,r=l.cursor+3;if(t=l.limit,0<=r||r<=l.limit){for(n=r;;){if(e=l.cursor,l.in_grouping(o,97,246)){l.cursor=e;break}if(l.cursor=e,l.cursor>=l.limit)return;l.cursor++}for(;!l.out_grouping(o,97,246);){if(l.cursor>=l.limit)return;l.cursor++}(t=l.cursor)=t&&(l.limit_backward=t,l.cursor=l.limit,l.ket=l.cursor,r=l.find_among_b(i,37),l.limit_backward=e,r))switch(l.bra=l.cursor,r){case 1:l.slice_del();break;case 2:l.in_grouping_b(u,98,121)&&l.slice_del()}if(l.cursor=l.limit,e=l.limit_backward,l.cursor>=t&&(l.limit_backward=t,l.cursor=l.limit,l.find_among_b(s,7)&&(l.cursor=l.limit,l.ket=l.cursor,l.cursor>l.limit_backward)&&(l.bra=--l.cursor,l.slice_del()),l.limit_backward=e),l.cursor=l.limit,l.cursor>=t){if(r=l.limit_backward,l.limit_backward=t,l.cursor=l.limit,l.ket=l.cursor,e=l.find_among_b(a,5))switch(l.bra=l.cursor,e){case 1:l.slice_del();break;case 2:l.slice_from("lös");break;case 3:l.slice_from("full")}l.limit_backward=r}return!0}},function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}),r.Pipeline.registerFunction(r.sv.stemmer,"stemmer-sv"),r.sv.stopWordFilter=function(e){if(-1===r.sv.stopWordFilter.stopWords.indexOf(e))return e},r.sv.stopWordFilter.stopWords=new r.SortedSet,r.sv.stopWordFilter.stopWords.length=115,r.sv.stopWordFilter.stopWords.elements=" alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" "),r.Pipeline.registerFunction(r.sv.stopWordFilter,"stopWordFilter-sv")}}); diff --git a/static/js/lunr/lunr.tr.js b/static/js/lunr/lunr.tr.js new file mode 100644 index 0000000..ccecfad --- /dev/null +++ b/static/js/lunr/lunr.tr.js @@ -0,0 +1,1070 @@ +/*! + * Lunr languages, `Turkish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.tr = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.tr.trimmer, + lunr.tr.stopWordFilter, + lunr.tr.stemmer + ); + }; + + /* lunr trimmer function */ + lunr.tr.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.tr.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.tr.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.tr.trimmer, 'trimmer-tr'); + + /* lunr stemmer function */ + lunr.tr.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function TurkishStemmer() { + var a_0 = [new Among("m", -1, -1), new Among("n", -1, -1), + new Among("miz", -1, -1), new Among("niz", -1, -1), + new Among("muz", -1, -1), new Among("nuz", -1, -1), + new Among("m\u00FCz", -1, -1), new Among("n\u00FCz", -1, -1), + new Among("m\u0131z", -1, -1), new Among("n\u0131z", -1, -1) + ], + a_1 = [ + new Among("leri", -1, -1), new Among("lar\u0131", -1, -1) + ], + a_2 = [ + new Among("ni", -1, -1), new Among("nu", -1, -1), + new Among("n\u00FC", -1, -1), new Among("n\u0131", -1, -1) + ], + a_3 = [ + new Among("in", -1, -1), new Among("un", -1, -1), + new Among("\u00FCn", -1, -1), new Among("\u0131n", -1, -1) + ], + a_4 = [ + new Among("a", -1, -1), new Among("e", -1, -1) + ], + a_5 = [ + new Among("na", -1, -1), new Among("ne", -1, -1) + ], + a_6 = [ + new Among("da", -1, -1), new Among("ta", -1, -1), + new Among("de", -1, -1), new Among("te", -1, -1) + ], + a_7 = [ + new Among("nda", -1, -1), new Among("nde", -1, -1) + ], + a_8 = [ + new Among("dan", -1, -1), new Among("tan", -1, -1), + new Among("den", -1, -1), new Among("ten", -1, -1) + ], + a_9 = [ + new Among("ndan", -1, -1), new Among("nden", -1, -1) + ], + a_10 = [ + new Among("la", -1, -1), new Among("le", -1, -1) + ], + a_11 = [ + new Among("ca", -1, -1), new Among("ce", -1, -1) + ], + a_12 = [ + new Among("im", -1, -1), new Among("um", -1, -1), + new Among("\u00FCm", -1, -1), new Among("\u0131m", -1, -1) + ], + a_13 = [ + new Among("sin", -1, -1), new Among("sun", -1, -1), + new Among("s\u00FCn", -1, -1), new Among("s\u0131n", -1, -1) + ], + a_14 = [ + new Among("iz", -1, -1), new Among("uz", -1, -1), + new Among("\u00FCz", -1, -1), new Among("\u0131z", -1, -1) + ], + a_15 = [ + new Among("siniz", -1, -1), new Among("sunuz", -1, -1), + new Among("s\u00FCn\u00FCz", -1, -1), + new Among("s\u0131n\u0131z", -1, -1) + ], + a_16 = [ + new Among("lar", -1, -1), new Among("ler", -1, -1) + ], + a_17 = [ + new Among("niz", -1, -1), new Among("nuz", -1, -1), + new Among("n\u00FCz", -1, -1), new Among("n\u0131z", -1, -1) + ], + a_18 = [ + new Among("dir", -1, -1), new Among("tir", -1, -1), + new Among("dur", -1, -1), new Among("tur", -1, -1), + new Among("d\u00FCr", -1, -1), new Among("t\u00FCr", -1, -1), + new Among("d\u0131r", -1, -1), new Among("t\u0131r", -1, -1) + ], + a_19 = [ + new Among("cas\u0131na", -1, -1), new Among("cesine", -1, -1) + ], + a_20 = [ + new Among("di", -1, -1), new Among("ti", -1, -1), + new Among("dik", -1, -1), new Among("tik", -1, -1), + new Among("duk", -1, -1), new Among("tuk", -1, -1), + new Among("d\u00FCk", -1, -1), new Among("t\u00FCk", -1, -1), + new Among("d\u0131k", -1, -1), new Among("t\u0131k", -1, -1), + new Among("dim", -1, -1), new Among("tim", -1, -1), + new Among("dum", -1, -1), new Among("tum", -1, -1), + new Among("d\u00FCm", -1, -1), new Among("t\u00FCm", -1, -1), + new Among("d\u0131m", -1, -1), new Among("t\u0131m", -1, -1), + new Among("din", -1, -1), new Among("tin", -1, -1), + new Among("dun", -1, -1), new Among("tun", -1, -1), + new Among("d\u00FCn", -1, -1), new Among("t\u00FCn", -1, -1), + new Among("d\u0131n", -1, -1), new Among("t\u0131n", -1, -1), + new Among("du", -1, -1), new Among("tu", -1, -1), + new Among("d\u00FC", -1, -1), new Among("t\u00FC", -1, -1), + new Among("d\u0131", -1, -1), new Among("t\u0131", -1, -1) + ], + a_21 = [ + new Among("sa", -1, -1), new Among("se", -1, -1), + new Among("sak", -1, -1), new Among("sek", -1, -1), + new Among("sam", -1, -1), new Among("sem", -1, -1), + new Among("san", -1, -1), new Among("sen", -1, -1) + ], + a_22 = [ + new Among("mi\u015F", -1, -1), new Among("mu\u015F", -1, -1), + new Among("m\u00FC\u015F", -1, -1), + new Among("m\u0131\u015F", -1, -1) + ], + a_23 = [new Among("b", -1, 1), + new Among("c", -1, 2), new Among("d", -1, 3), + new Among("\u011F", -1, 4) + ], + g_vowel = [17, 65, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1 + ], + g_U = [ + 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 1 + ], + g_vowel1 = [1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 + ], + g_vowel2 = [17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 + ], + g_vowel3 = [1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1 + ], + g_vowel4 = [17], + g_vowel5 = [65], + g_vowel6 = [65], + B_c_s_n_s, I_strlen, g_habr = [ + ["a", g_vowel1, 97, 305], + ["e", g_vowel2, 101, 252], + ["\u0131", g_vowel3, 97, 305], + ["i", g_vowel4, 101, 105], + ["o", g_vowel5, 111, 117], + ["\u00F6", g_vowel6, 246, 252], + ["u", g_vowel5, 111, 117] + ], + sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr1(g_v, n1, n2) { + while (true) { + var v_1 = sbp.limit - sbp.cursor; + if (sbp.in_grouping_b(g_v, n1, n2)) { + sbp.cursor = sbp.limit - v_1; + break; + } + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor <= sbp.limit_backward) + return false; + sbp.cursor--; + } + return true; + } + + function r_check_vowel_harmony() { + var v_1, v_2; + v_1 = sbp.limit - sbp.cursor; + habr1(g_vowel, 97, 305); + for (var i = 0; i < g_habr.length; i++) { + v_2 = sbp.limit - sbp.cursor; + var habr = g_habr[i]; + if (sbp.eq_s_b(1, habr[0]) && habr1(habr[1], habr[2], habr[3])) { + sbp.cursor = sbp.limit - v_1; + return true; + } + sbp.cursor = sbp.limit - v_2; + } + sbp.cursor = sbp.limit - v_2; + if (!sbp.eq_s_b(1, "\u00FC") || !habr1(g_vowel6, 246, 252)) + return false; + sbp.cursor = sbp.limit - v_1; + return true; + } + + function habr2(f1, f2) { + var v_1 = sbp.limit - sbp.cursor, + v_2; + if (f1()) { + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + v_2 = sbp.limit - sbp.cursor; + if (f2()) { + sbp.cursor = sbp.limit - v_2; + return true; + } + } + } + sbp.cursor = sbp.limit - v_1; + if (f1()) { + sbp.cursor = sbp.limit - v_1; + return false; + } + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor <= sbp.limit_backward) + return false; + sbp.cursor--; + if (!f2()) + return false; + sbp.cursor = sbp.limit - v_1; + return true; + } + + function habr3(f1) { + return habr2(f1, function() { + return sbp.in_grouping_b(g_vowel, 97, 305); + }); + } + + function r_mark_suffix_with_optional_n_consonant() { + return habr3(function() { + return sbp.eq_s_b(1, "n"); + }); + } + + function r_mark_suffix_with_optional_s_consonant() { + return habr3(function() { + return sbp.eq_s_b(1, "s"); + }); + } + + function r_mark_suffix_with_optional_y_consonant() { + return habr3(function() { + return sbp.eq_s_b(1, "y"); + }); + } + + function r_mark_suffix_with_optional_U_vowel() { + return habr2(function() { + return sbp.in_grouping_b(g_U, 105, 305); + }, function() { + return sbp.out_grouping_b(g_vowel, 97, 305); + }); + } + + function r_mark_possessives() { + return sbp.find_among_b(a_0, 10) && r_mark_suffix_with_optional_U_vowel(); + } + + function r_mark_sU() { + return r_check_vowel_harmony() && sbp.in_grouping_b(g_U, 105, 305) && r_mark_suffix_with_optional_s_consonant(); + } + + function r_mark_lArI() { + return sbp.find_among_b(a_1, 2); + } + + function r_mark_yU() { + return r_check_vowel_harmony() && sbp.in_grouping_b(g_U, 105, 305) && r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_nU() { + return r_check_vowel_harmony() && sbp.find_among_b(a_2, 4); + } + + function r_mark_nUn() { + return r_check_vowel_harmony() && sbp.find_among_b(a_3, 4) && r_mark_suffix_with_optional_n_consonant(); + } + + function r_mark_yA() { + return r_check_vowel_harmony() && sbp.find_among_b(a_4, 2) && r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_nA() { + return r_check_vowel_harmony() && sbp.find_among_b(a_5, 2); + } + + function r_mark_DA() { + return r_check_vowel_harmony() && sbp.find_among_b(a_6, 4); + } + + function r_mark_ndA() { + return r_check_vowel_harmony() && sbp.find_among_b(a_7, 2); + } + + function r_mark_DAn() { + return r_check_vowel_harmony() && sbp.find_among_b(a_8, 4); + } + + function r_mark_ndAn() { + return r_check_vowel_harmony() && sbp.find_among_b(a_9, 2); + } + + function r_mark_ylA() { + return r_check_vowel_harmony() && sbp.find_among_b(a_10, 2) && r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_ki() { + return sbp.eq_s_b(2, "ki"); + } + + function r_mark_ncA() { + return r_check_vowel_harmony() && sbp.find_among_b(a_11, 2) && r_mark_suffix_with_optional_n_consonant(); + } + + function r_mark_yUm() { + return r_check_vowel_harmony() && sbp.find_among_b(a_12, 4) && r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_sUn() { + return r_check_vowel_harmony() && sbp.find_among_b(a_13, 4); + } + + function r_mark_yUz() { + return r_check_vowel_harmony() && sbp.find_among_b(a_14, 4) && r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_sUnUz() { + return sbp.find_among_b(a_15, 4); + } + + function r_mark_lAr() { + return r_check_vowel_harmony() && sbp.find_among_b(a_16, 2); + } + + function r_mark_nUz() { + return r_check_vowel_harmony() && sbp.find_among_b(a_17, 4); + } + + function r_mark_DUr() { + return r_check_vowel_harmony() && sbp.find_among_b(a_18, 8); + } + + function r_mark_cAsInA() { + return sbp.find_among_b(a_19, 2); + } + + function r_mark_yDU() { + return r_check_vowel_harmony() && sbp.find_among_b(a_20, 32) && r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_ysA() { + return sbp.find_among_b(a_21, 8) && r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_ymUs_() { + return r_check_vowel_harmony() && sbp.find_among_b(a_22, 4) && r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_yken() { + return sbp.eq_s_b(3, "ken") && r_mark_suffix_with_optional_y_consonant(); + } + + function habr4() { + var v_1 = sbp.limit - sbp.cursor; + if (!r_mark_ymUs_()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yDU()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_ysA()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yken()) + return true; + } + } + } + return false; + } + + function habr5() { + if (r_mark_cAsInA()) { + var v_1 = sbp.limit - sbp.cursor; + if (!r_mark_sUnUz()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_lAr()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yUm()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_sUn()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yUz()) + sbp.cursor = sbp.limit - v_1; + } + } + } + } + if (r_mark_ymUs_()) + return false; + } + return true; + } + + function habr6() { + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + var v_1 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (!r_mark_DUr()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yDU()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_ysA()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_ymUs_()) + sbp.cursor = sbp.limit - v_1; + } + } + } + B_c_s_n_s = false; + return false; + } + return true; + } + + function habr7() { + if (!r_mark_nUz()) + return true; + var v_1 = sbp.limit - sbp.cursor; + if (!r_mark_yDU()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_ysA()) + return true; + } + return false; + } + + function habr8() { + var v_1 = sbp.limit - sbp.cursor, + v_2; + if (!r_mark_sUnUz()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yUz()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_sUn()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yUm()) + return true; + } + } + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + v_2 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (!r_mark_ymUs_()) + sbp.cursor = sbp.limit - v_2; + return false; + } + + function r_stem_nominal_verb_suffixes() { + var v_1 = sbp.limit - sbp.cursor, + v_2; + sbp.ket = sbp.cursor; + B_c_s_n_s = true; + if (habr4()) { + sbp.cursor = sbp.limit - v_1; + if (habr5()) { + sbp.cursor = sbp.limit - v_1; + if (habr6()) { + sbp.cursor = sbp.limit - v_1; + if (habr7()) { + sbp.cursor = sbp.limit - v_1; + if (habr8()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_DUr()) + return; + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + v_2 = sbp.limit - sbp.cursor; + if (!r_mark_sUnUz()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_lAr()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_yUm()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_sUn()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_yUz()) + sbp.cursor = sbp.limit - v_2; + } + } + } + } + if (!r_mark_ymUs_()) + sbp.cursor = sbp.limit - v_2; + } + } + } + } + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + + function r_stem_suffix_chain_before_ki() { + var v_1, v_2, v_3, v_4; + sbp.ket = sbp.cursor; + if (r_mark_ki()) { + v_1 = sbp.limit - sbp.cursor; + if (r_mark_DA()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + v_2 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } else { + sbp.cursor = sbp.limit - v_2; + if (r_mark_possessives()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + } + } + return true; + } + sbp.cursor = sbp.limit - v_1; + if (r_mark_nUn()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + v_3 = sbp.limit - sbp.cursor; + if (r_mark_lArI()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + } else { + sbp.cursor = sbp.limit - v_3; + sbp.ket = sbp.cursor; + if (!r_mark_possessives()) { + sbp.cursor = sbp.limit - v_3; + if (!r_mark_sU()) { + sbp.cursor = sbp.limit - v_3; + if (!r_stem_suffix_chain_before_ki()) + return true; + } + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki() + } + } + return true; + } + sbp.cursor = sbp.limit - v_1; + if (r_mark_ndA()) { + v_4 = sbp.limit - sbp.cursor; + if (r_mark_lArI()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + } else { + sbp.cursor = sbp.limit - v_4; + if (r_mark_sU()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + } else { + sbp.cursor = sbp.limit - v_4; + if (!r_stem_suffix_chain_before_ki()) + return false; + } + } + return true; + } + } + return false; + } + + function habr9(v_1) { + sbp.ket = sbp.cursor; + if (!r_mark_ndA()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_nA()) + return false; + } + var v_2 = sbp.limit - sbp.cursor; + if (r_mark_lArI()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + } else { + sbp.cursor = sbp.limit - v_2; + if (r_mark_sU()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + } else { + sbp.cursor = sbp.limit - v_2; + if (!r_stem_suffix_chain_before_ki()) + return false; + } + } + return true; + } + + function habr10(v_1) { + sbp.ket = sbp.cursor; + if (!r_mark_ndAn()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_nU()) + return false; + } + var v_2 = sbp.limit - sbp.cursor; + if (!r_mark_sU()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_lArI()) + return false; + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + return true; + } + + function habr11() { + var v_1 = sbp.limit - sbp.cursor, + v_2; + sbp.ket = sbp.cursor; + if (!r_mark_nUn()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_ylA()) + return false; + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + v_2 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + if (r_stem_suffix_chain_before_ki()) + return true; + } + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (!r_mark_possessives()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_sU()) { + sbp.cursor = sbp.limit - v_2; + if (!r_stem_suffix_chain_before_ki()) + return true; + } + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + return true; + } + + function habr12() { + var v_1 = sbp.limit - sbp.cursor, + v_2, v_3; + sbp.ket = sbp.cursor; + if (!r_mark_DA()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yU()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yA()) + return false; + } + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + v_2 = sbp.limit - sbp.cursor; + if (r_mark_possessives()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + v_3 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (!r_mark_lAr()) + sbp.cursor = sbp.limit - v_3; + } else { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_lAr()) + return true; + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + r_stem_suffix_chain_before_ki(); + return true; + } + + function r_stem_noun_suffixes() { + var v_1 = sbp.limit - sbp.cursor, + v_2, v_3; + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + return; + } + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (r_mark_ncA()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + v_2 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (r_mark_lArI()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + } else { + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (!r_mark_possessives()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_sU()) { + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (!r_mark_lAr()) + return; + sbp.bra = sbp.cursor; + sbp.slice_del(); + if (!r_stem_suffix_chain_before_ki()) + return; + } + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + } + return; + } + sbp.cursor = sbp.limit - v_1; + if (habr9(v_1)) + return; + sbp.cursor = sbp.limit - v_1; + if (habr10(v_1)) + return; + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (r_mark_DAn()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + v_3 = sbp.limit - sbp.cursor; + if (r_mark_possessives()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + } else { + sbp.cursor = sbp.limit - v_3; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } else { + sbp.cursor = sbp.limit - v_3; + r_stem_suffix_chain_before_ki(); + } + } + return; + } + sbp.cursor = sbp.limit - v_1; + if (habr11()) + return; + sbp.cursor = sbp.limit - v_1; + if (r_mark_lArI()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + return; + } + sbp.cursor = sbp.limit - v_1; + if (r_stem_suffix_chain_before_ki()) + return; + sbp.cursor = sbp.limit - v_1; + if (habr12()) + return; + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (!r_mark_possessives()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_sU()) + return; + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + } + + function r_post_process_last_consonants() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_23, 4); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("p"); + break; + case 2: + sbp.slice_from("\u00E7"); + break; + case 3: + sbp.slice_from("t"); + break; + case 4: + sbp.slice_from("k"); + break; + } + } + } + + function habr13() { + while (true) { + var v_1 = sbp.limit - sbp.cursor; + if (sbp.in_grouping_b(g_vowel, 97, 305)) { + sbp.cursor = sbp.limit - v_1; + break; + } + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor <= sbp.limit_backward) + return false; + sbp.cursor--; + } + return true; + } + + function habr14(v_1, c1, c2) { + sbp.cursor = sbp.limit - v_1; + if (habr13()) { + var v_2 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, c1)) { + sbp.cursor = sbp.limit - v_2; + if (!sbp.eq_s_b(1, c2)) + return true; + } + sbp.cursor = sbp.limit - v_1; + var c = sbp.cursor; + sbp.insert(sbp.cursor, sbp.cursor, c2); + sbp.cursor = c; + return false; + } + return true; + } + + function r_append_U_to_stems_ending_with_d_or_g() { + var v_1 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "d")) { + sbp.cursor = sbp.limit - v_1; + if (!sbp.eq_s_b(1, "g")) + return; + } + if (habr14(v_1, "a", "\u0131")) + if (habr14(v_1, "e", "i")) + if (habr14(v_1, "o", "u")) + habr14(v_1, "\u00F6", "\u00FC") + } + + function r_more_than_one_syllable_word() { + var v_1 = sbp.cursor, + v_2 = 2, + v_3; + while (true) { + v_3 = sbp.cursor; + while (!sbp.in_grouping(g_vowel, 97, 305)) { + if (sbp.cursor >= sbp.limit) { + sbp.cursor = v_3; + if (v_2 > 0) + return false; + sbp.cursor = v_1; + return true; + } + sbp.cursor++; + } + v_2--; + } + } + + function habr15(v_1, n1, c1) { + while (!sbp.eq_s(n1, c1)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + I_strlen = n1; + if (I_strlen != sbp.limit) + return true; + sbp.cursor = v_1; + return false; + } + + function r_is_reserved_word() { + var v_1 = sbp.cursor; + if (habr15(v_1, 2, "ad")) { + sbp.cursor = v_1; + if (habr15(v_1, 5, "soyad")) + return false; + } + return true; + } + + function r_postlude() { + var v_1 = sbp.cursor; + if (r_is_reserved_word()) + return false; + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_append_U_to_stems_ending_with_d_or_g(); + sbp.cursor = sbp.limit; + r_post_process_last_consonants(); + return true; + } + this.stem = function() { + if (r_more_than_one_syllable_word()) { + sbp.limit_backward = sbp.cursor; + sbp.cursor = sbp.limit; + r_stem_nominal_verb_suffixes(); + sbp.cursor = sbp.limit; + if (B_c_s_n_s) { + r_stem_noun_suffixes(); + sbp.cursor = sbp.limit_backward; + if (r_postlude()) + return true; + } + } + return false; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + } + })(); + + lunr.Pipeline.registerFunction(lunr.tr.stemmer, 'stemmer-tr'); + + /* stop word filter function */ + lunr.tr.stopWordFilter = function(token) { + if (lunr.tr.stopWordFilter.stopWords.indexOf(token) === -1) { + return token; + } + }; + + lunr.tr.stopWordFilter.stopWords = new lunr.SortedSet(); + lunr.tr.stopWordFilter.stopWords.length = 210; + + // The space at the beginning is crucial: It marks the empty string + // as a stop word. lunr.js crashes during search when documents + // processed by the pipeline still contain the empty string. + lunr.tr.stopWordFilter.stopWords.elements = ' acaba altmış altı ama ancak arada aslında ayrıca bana bazı belki ben benden beni benim beri beş bile bin bir biri birkaç birkez birçok birşey birşeyi biz bizden bize bizi bizim bu buna bunda bundan bunlar bunları bunların bunu bunun burada böyle böylece da daha dahi de defa değil diye diğer doksan dokuz dolayı dolayısıyla dört edecek eden ederek edilecek ediliyor edilmesi ediyor elli en etmesi etti ettiği ettiğini eğer gibi göre halen hangi hatta hem henüz hep hepsi her herhangi herkesin hiç hiçbir iki ile ilgili ise itibaren itibariyle için işte kadar karşın katrilyon kendi kendilerine kendini kendisi kendisine kendisini kez ki kim kimden kime kimi kimse kırk milyar milyon mu mü mı nasıl ne neden nedenle nerde nerede nereye niye niçin o olan olarak oldu olduklarını olduğu olduğunu olmadı olmadığı olmak olması olmayan olmaz olsa olsun olup olur olursa oluyor on ona ondan onlar onlardan onları onların onu onun otuz oysa pek rağmen sadece sanki sekiz seksen sen senden seni senin siz sizden sizi sizin tarafından trilyon tüm var vardı ve veya ya yani yapacak yapmak yaptı yaptıkları yaptığı yaptığını yapılan yapılması yapıyor yedi yerine yetmiş yine yirmi yoksa yüz zaten çok çünkü öyle üzere üç şey şeyden şeyi şeyler şu şuna şunda şundan şunları şunu şöyle'.split(' '); + + lunr.Pipeline.registerFunction(lunr.tr.stopWordFilter, 'stopWordFilter-tr'); + }; +})) diff --git a/static/js/lunr/lunr.tr.min.js b/static/js/lunr/lunr.tr.min.js new file mode 100644 index 0000000..c2d8fb6 --- /dev/null +++ b/static/js/lunr/lunr.tr.min.js @@ -0,0 +1 @@ +!function(r,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(r.lunr)}(this,(function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i,e,n;r.tr=function(){this.pipeline.reset(),this.pipeline.add(r.tr.trimmer,r.tr.stopWordFilter,r.tr.stemmer)},r.tr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.tr.trimmer=r.trimmerSupport.generateTrimmer(r.tr.wordCharacters),r.Pipeline.registerFunction(r.tr.trimmer,"trimmer-tr"),r.tr.stemmer=(i=r.stemmerSupport.Among,e=r.stemmerSupport.SnowballProgram,n=new function(){var r,n=[new i("m",-1,-1),new i("n",-1,-1),new i("miz",-1,-1),new i("niz",-1,-1),new i("muz",-1,-1),new i("nuz",-1,-1),new i("müz",-1,-1),new i("nüz",-1,-1),new i("mız",-1,-1),new i("nız",-1,-1)],t=[new i("leri",-1,-1),new i("ları",-1,-1)],u=[new i("ni",-1,-1),new i("nu",-1,-1),new i("nü",-1,-1),new i("nı",-1,-1)],o=[new i("in",-1,-1),new i("un",-1,-1),new i("ün",-1,-1),new i("ın",-1,-1)],s=[new i("a",-1,-1),new i("e",-1,-1)],c=[new i("na",-1,-1),new i("ne",-1,-1)],l=[new i("da",-1,-1),new i("ta",-1,-1),new i("de",-1,-1),new i("te",-1,-1)],m=[new i("nda",-1,-1),new i("nde",-1,-1)],a=[new i("dan",-1,-1),new i("tan",-1,-1),new i("den",-1,-1),new i("ten",-1,-1)],d=[new i("ndan",-1,-1),new i("nden",-1,-1)],b=[new i("la",-1,-1),new i("le",-1,-1)],w=[new i("ca",-1,-1),new i("ce",-1,-1)],f=[new i("im",-1,-1),new i("um",-1,-1),new i("üm",-1,-1),new i("ım",-1,-1)],_=[new i("sin",-1,-1),new i("sun",-1,-1),new i("sün",-1,-1),new i("sın",-1,-1)],k=[new i("iz",-1,-1),new i("uz",-1,-1),new i("üz",-1,-1),new i("ız",-1,-1)],p=[new i("siniz",-1,-1),new i("sunuz",-1,-1),new i("sünüz",-1,-1),new i("sınız",-1,-1)],g=[new i("lar",-1,-1),new i("ler",-1,-1)],y=[new i("niz",-1,-1),new i("nuz",-1,-1),new i("nüz",-1,-1),new i("nız",-1,-1)],z=[new i("dir",-1,-1),new i("tir",-1,-1),new i("dur",-1,-1),new i("tur",-1,-1),new i("dür",-1,-1),new i("tür",-1,-1),new i("dır",-1,-1),new i("tır",-1,-1)],h=[new i("casına",-1,-1),new i("cesine",-1,-1)],v=[new i("di",-1,-1),new i("ti",-1,-1),new i("dik",-1,-1),new i("tik",-1,-1),new i("duk",-1,-1),new i("tuk",-1,-1),new i("dük",-1,-1),new i("tük",-1,-1),new i("dık",-1,-1),new i("tık",-1,-1),new i("dim",-1,-1),new i("tim",-1,-1),new i("dum",-1,-1),new i("tum",-1,-1),new i("düm",-1,-1),new i("tüm",-1,-1),new i("dım",-1,-1),new i("tım",-1,-1),new i("din",-1,-1),new i("tin",-1,-1),new i("dun",-1,-1),new i("tun",-1,-1),new i("dün",-1,-1),new i("tün",-1,-1),new i("dın",-1,-1),new i("tın",-1,-1),new i("du",-1,-1),new i("tu",-1,-1),new i("dü",-1,-1),new i("tü",-1,-1),new i("dı",-1,-1),new i("tı",-1,-1)],q=[new i("sa",-1,-1),new i("se",-1,-1),new i("sak",-1,-1),new i("sek",-1,-1),new i("sam",-1,-1),new i("sem",-1,-1),new i("san",-1,-1),new i("sen",-1,-1)],W=[new i("miş",-1,-1),new i("muş",-1,-1),new i("müş",-1,-1),new i("mış",-1,-1)],F=[new i("b",-1,1),new i("c",-1,2),new i("d",-1,3),new i("ğ",-1,4)],C=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,8,0,0,0,0,0,0,1],S=[1,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,1],P=[65],L=[65],x=[["a",[1,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],97,305],["e",[17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130],101,252],["ı",[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],97,305],["i",[17],101,105],["o",P,111,117],["ö",L,246,252],["u",P,111,117]],A=new e;function E(r,i,e){for(;;){var n=A.limit-A.cursor;if(A.in_grouping_b(r,i,e)){A.cursor=A.limit-n;break}if(A.cursor=A.limit-n,A.cursor<=A.limit_backward)return;A.cursor--}return 1}function j(){var r=A.limit-A.cursor;E(C,97,305);for(var i=0;iA.limit_backward)&&(A.cursor--,e=A.limit-A.cursor,i()))A.cursor=A.limit-e;else{if(A.cursor=A.limit-n,r())return A.cursor=A.limit-n,!1;if(A.cursor=A.limit-n,A.cursor<=A.limit_backward)return!1;if(A.cursor--,!i())return!1;A.cursor=A.limit-n}return!0}function T(r){return O(r,(function(){return A.in_grouping_b(C,97,305)}))}function Z(){return T((function(){return A.eq_s_b(1,"n")}))}function B(){return T((function(){return A.eq_s_b(1,"y")}))}function D(){return A.find_among_b(n,10)&&O((function(){return A.in_grouping_b(S,105,305)}),(function(){return A.out_grouping_b(C,97,305)}))}function G(){return j()&&A.in_grouping_b(S,105,305)&&T((function(){return A.eq_s_b(1,"s")}))}function H(){return A.find_among_b(t,2)}function I(){return j()&&A.find_among_b(o,4)&&Z()}function J(){return j()&&A.find_among_b(l,4)}function K(){return j()&&A.find_among_b(m,2)}function M(){return j()&&A.find_among_b(f,4)&&B()}function N(){return j()&&A.find_among_b(_,4)}function Q(){return j()&&A.find_among_b(k,4)&&B()}function R(){return A.find_among_b(p,4)}function U(){return j()&&A.find_among_b(g,2)}function V(){return j()&&A.find_among_b(z,8)}function X(){return j()&&A.find_among_b(v,32)&&B()}function Y(){return A.find_among_b(q,8)&&B()}function $(){return j()&&A.find_among_b(W,4)&&B()}function rr(){var r,i;if(A.ket=A.cursor,A.eq_s_b(2,"ki")){if(r=A.limit-A.cursor,J())return A.bra=A.cursor,A.slice_del(),i=A.limit-A.cursor,A.ket=A.cursor,(U()||(A.cursor=A.limit-i,D()&&(A.bra=A.cursor,A.slice_del(),A.ket=A.cursor,U())))&&(A.bra=A.cursor,A.slice_del(),rr()),1;if(A.cursor=A.limit-r,I()){if(A.bra=A.cursor,A.slice_del(),A.ket=A.cursor,i=A.limit-A.cursor,H())A.bra=A.cursor,A.slice_del();else{if(A.cursor=A.limit-i,A.ket=A.cursor,!D()&&(A.cursor=A.limit-i,!G())&&(A.cursor=A.limit-i,!rr()))return 1;A.bra=A.cursor,A.slice_del(),A.ket=A.cursor,U()&&(A.bra=A.cursor,A.slice_del(),rr())}return 1}if(A.cursor=A.limit-r,K()){if(i=A.limit-A.cursor,H())A.bra=A.cursor,A.slice_del();else if(A.cursor=A.limit-i,G())A.bra=A.cursor,A.slice_del(),A.ket=A.cursor,U()&&(A.bra=A.cursor,A.slice_del(),rr());else if(A.cursor=A.limit-i,!rr())return;return 1}}}function ir(r,i,e){var n;return A.cursor=A.limit-r,!function(){for(;;){var r=A.limit-A.cursor;if(A.in_grouping_b(C,97,305)){A.cursor=A.limit-r;break}if(A.cursor=A.limit-r,A.cursor<=A.limit_backward)return;A.cursor--}return 1}()||(n=A.limit-A.cursor,!A.eq_s_b(1,i)&&(A.cursor=A.limit-n,!A.eq_s_b(1,e)))||(A.cursor=A.limit-r,i=A.cursor,A.insert(A.cursor,A.cursor,e),void(A.cursor=i))}function er(r,i,e){for(;!A.eq_s(i,e);){if(A.cursor>=A.limit)return 1;A.cursor++}if(i!=A.limit)return 1;A.cursor=r}this.setCurrent=function(r){A.setCurrent(r)},this.getCurrent=function(){return A.getCurrent()},this.stem=function(){return!!(function(){for(var r,i=A.cursor,e=2;;){for(r=A.cursor;!A.in_grouping(C,97,305);){if(A.cursor>=A.limit)return A.cursor=r,!(0 1.0.0 + this.tokenizerFn = lunr.zh.tokenizer; + } + } + }; + + lunr.zh.tokenizer = function(obj) { + if (!arguments.length || obj == null || obj == undefined) return [] + if (Array.isArray(obj)) return obj.map(function(t) { + return isLunr2 ? new lunr.Token(t.toLowerCase()) : t.toLowerCase() + }) + + nodejiebaDictJson && nodejieba.load(nodejiebaDictJson) + + var str = obj.toString().trim().toLowerCase(); + var tokens = []; + + nodejieba.cut(str, true).forEach(function(seg) { + tokens = tokens.concat(seg.split(' ')) + }) + + tokens = tokens.filter(function(token) { + return !!token; + }); + + var fromIndex = 0 + + return tokens.map(function(token, index) { + if (isLunr2) { + var start = str.indexOf(token, fromIndex) + + var tokenMetadata = {} + tokenMetadata["position"] = [start, token.length] + tokenMetadata["index"] = index + + fromIndex = start + + return new lunr.Token(token, tokenMetadata); + } else { + return token + } + }); + } + + /* lunr trimmer function */ + lunr.zh.wordCharacters = "\\w\u4e00-\u9fa5"; + lunr.zh.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.zh.wordCharacters); + lunr.Pipeline.registerFunction(lunr.zh.trimmer, 'trimmer-zh'); + + /* lunr stemmer function */ + lunr.zh.stemmer = (function() { + + /* TODO Chinese stemmer */ + return function(word) { + return word; + } + })(); + lunr.Pipeline.registerFunction(lunr.zh.stemmer, 'stemmer-zh'); + + /* lunr stop word filter. see https://www.ranks.nl/stopwords/chinese-stopwords */ + lunr.generateStopWordFilter = function (stopWords) { + var words = stopWords.reduce(function (memo, stopWord) { + memo[stopWord] = stopWord; + return memo; + }, {}); + + return function (token) { + if (token && words[token.toString()] !== token.toString()) return token; + }; + } + + lunr.zh.stopWordFilter = lunr.generateStopWordFilter( + '的 一 不 在 人 有 是 为 以 于 上 他 而 后 之 来 及 了 因 下 可 到 由 这 与 也 此 但 并 个 其 已 无 小 我 们 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 从 到 得 打 凡 儿 尔 该 各 给 跟 和 何 还 即 几 既 看 据 距 靠 啦 了 另 么 每 们 嘛 拿 哪 那 您 凭 且 却 让 仍 啥 如 若 使 谁 虽 随 同 所 她 哇 嗡 往 哪 些 向 沿 哟 用 于 咱 则 怎 曾 至 致 着 诸 自'.split(' ')); + lunr.Pipeline.registerFunction(lunr.zh.stopWordFilter, 'stopWordFilter-zh'); + }; +})) diff --git a/static/js/lunr/lunr.zh.min.js b/static/js/lunr/lunr.zh.min.js new file mode 100644 index 0000000..387e69a --- /dev/null +++ b/static/js/lunr/lunr.zh.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r(require("nodejieba")):r()(e.lunr)}(this,function(n){return function(u,t){if(void 0===u)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===u.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var s="2"==u.version[0];u.zh=function(){this.pipeline.reset(),this.pipeline.add(u.zh.trimmer,u.zh.stopWordFilter,u.zh.stemmer),s?this.tokenizer=u.zh.tokenizer:(u.tokenizer&&(u.tokenizer=u.zh.tokenizer),this.tokenizerFn&&(this.tokenizerFn=u.zh.tokenizer))},u.zh.tokenizer=function(e){if(!arguments.length||null==e)return[];if(Array.isArray(e))return e.map(function(e){return s?new u.Token(e.toLowerCase()):e.toLowerCase()});t&&n.load(t);var i=e.toString().trim().toLowerCase(),r=[],o=(n.cut(i,!0).forEach(function(e){r=r.concat(e.split(" "))}),r=r.filter(function(e){return!!e}),0);return r.map(function(e,r){var t,n;return s?(t=i.indexOf(e,o),(n={}).position=[t,e.length],n.index=r,o=t,new u.Token(e,n)):e})},u.zh.wordCharacters="\\w一-龥",u.zh.trimmer=u.trimmerSupport.generateTrimmer(u.zh.wordCharacters),u.Pipeline.registerFunction(u.zh.trimmer,"trimmer-zh"),u.zh.stemmer=function(e){return e},u.Pipeline.registerFunction(u.zh.stemmer,"stemmer-zh"),u.generateStopWordFilter=function(e){var r=e.reduce(function(e,r){return e[r]=r,e},{});return function(e){if(e&&r[e.toString()]!==e.toString())return e}},u.zh.stopWordFilter=u.generateStopWordFilter("的 一 不 在 人 有 是 为 以 于 上 他 而 后 之 来 及 了 因 下 可 到 由 这 与 也 此 但 并 个 其 已 无 小 我 们 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 从 到 得 打 凡 儿 尔 该 各 给 跟 和 何 还 即 几 既 看 据 距 靠 啦 了 另 么 每 们 嘛 拿 哪 那 您 凭 且 却 让 仍 啥 如 若 使 谁 虽 随 同 所 她 哇 嗡 往 哪 些 向 沿 哟 用 于 咱 则 怎 曾 至 致 着 诸 自".split(" ")),u.Pipeline.registerFunction(u.zh.stopWordFilter,"stopWordFilter-zh")}}); diff --git a/static/js/lunr/lunrStemmerSupport.js b/static/js/lunr/lunrStemmerSupport.js new file mode 100755 index 0000000..32959fb --- /dev/null +++ b/static/js/lunr/lunrStemmerSupport.js @@ -0,0 +1,304 @@ +/*! + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; (function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function (lunr) { + /* provides utilities for the included stemmers */ + lunr.stemmerSupport = { + Among: function (s, substring_i, result, method) { + this.toCharArray = function (s) { + var sLength = s.length, charArr = new Array(sLength); + for (var i = 0; i < sLength; i++) + charArr[i] = s.charCodeAt(i); + return charArr; + }; + + if ((!s && s != "") || (!substring_i && (substring_i != 0)) || !result) + throw ("Bad Among initialisation: s:" + s + ", substring_i: " + + substring_i + ", result: " + result); + this.s_size = s.length; + this.s = this.toCharArray(s); + this.substring_i = substring_i; + this.result = result; + this.method = method; + }, + SnowballProgram: function () { + var current; + return { + bra: 0, + ket: 0, + limit: 0, + cursor: 0, + limit_backward: 0, + setCurrent: function (word) { + current = word; + this.cursor = 0; + this.limit = word.length; + this.limit_backward = 0; + this.bra = this.cursor; + this.ket = this.limit; + }, + getCurrent: function () { + var result = current; + current = null; + return result; + }, + in_grouping: function (s, min, max) { + if (this.cursor < this.limit) { + var ch = current.charCodeAt(this.cursor); + if (ch <= max && ch >= min) { + ch -= min; + if (s[ch >> 3] & (0X1 << (ch & 0X7))) { + this.cursor++; + return true; + } + } + } + return false; + }, + in_grouping_b: function (s, min, max) { + if (this.cursor > this.limit_backward) { + var ch = current.charCodeAt(this.cursor - 1); + if (ch <= max && ch >= min) { + ch -= min; + if (s[ch >> 3] & (0X1 << (ch & 0X7))) { + this.cursor--; + return true; + } + } + } + return false; + }, + out_grouping: function (s, min, max) { + if (this.cursor < this.limit) { + var ch = current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + this.cursor++; + return true; + } + ch -= min; + if (!(s[ch >> 3] & (0X1 << (ch & 0X7)))) { + this.cursor++; + return true; + } + } + return false; + }, + out_grouping_b: function (s, min, max) { + if (this.cursor > this.limit_backward) { + var ch = current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + this.cursor--; + return true; + } + ch -= min; + if (!(s[ch >> 3] & (0X1 << (ch & 0X7)))) { + this.cursor--; + return true; + } + } + return false; + }, + eq_s: function (s_size, s) { + if (this.limit - this.cursor < s_size) + return false; + for (var i = 0; i < s_size; i++) + if (current.charCodeAt(this.cursor + i) != s.charCodeAt(i)) + return false; + this.cursor += s_size; + return true; + }, + eq_s_b: function (s_size, s) { + if (this.cursor - this.limit_backward < s_size) + return false; + for (var i = 0; i < s_size; i++) + if (current.charCodeAt(this.cursor - s_size + i) != s + .charCodeAt(i)) + return false; + this.cursor -= s_size; + return true; + }, + find_among: function (v, v_size) { + var i = 0, j = v_size, c = this.cursor, l = this.limit, common_i = 0, common_j = 0, first_key_inspected = false; + while (true) { + var k = i + ((j - i) >> 1), diff = 0, common = common_i < common_j + ? common_i + : common_j, w = v[k]; + for (var i2 = common; i2 < w.s_size; i2++) { + if (c + common == l) { + diff = -1; + break; + } + diff = current.charCodeAt(c + common) - w.s[i2]; + if (diff) + break; + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0 || j == i || first_key_inspected) + break; + first_key_inspected = true; + } + } + while (true) { + var w = v[i]; + if (common_i >= w.s_size) { + this.cursor = c + w.s_size; + if (!w.method) + return w.result; + var res = w.method(); + this.cursor = c + w.s_size; + if (res) + return w.result; + } + i = w.substring_i; + if (i < 0) + return 0; + } + }, + find_among_b: function (v, v_size) { + var i = 0, j = v_size, c = this.cursor, lb = this.limit_backward, common_i = 0, common_j = 0, first_key_inspected = false; + while (true) { + var k = i + ((j - i) >> 1), diff = 0, common = common_i < common_j + ? common_i + : common_j, w = v[k]; + for (var i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common == lb) { + diff = -1; + break; + } + diff = current.charCodeAt(c - 1 - common) - w.s[i2]; + if (diff) + break; + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0 || j == i || first_key_inspected) + break; + first_key_inspected = true; + } + } + while (true) { + var w = v[i]; + if (common_i >= w.s_size) { + this.cursor = c - w.s_size; + if (!w.method) + return w.result; + var res = w.method(); + this.cursor = c - w.s_size; + if (res) + return w.result; + } + i = w.substring_i; + if (i < 0) + return 0; + } + }, + replace_s: function (c_bra, c_ket, s) { + var adjustment = s.length - (c_ket - c_bra), left = current + .substring(0, c_bra), right = current.substring(c_ket); + current = left + s + right; + this.limit += adjustment; + if (this.cursor >= c_ket) + this.cursor += adjustment; + else if (this.cursor > c_bra) + this.cursor = c_bra; + return adjustment; + }, + slice_check: function () { + if (this.bra < 0 || this.bra > this.ket || this.ket > this.limit + || this.limit > current.length) + throw ("faulty slice operation"); + }, + slice_from: function (s) { + this.slice_check(); + this.replace_s(this.bra, this.ket, s); + }, + slice_del: function () { + this.slice_from(""); + }, + insert: function (c_bra, c_ket, s) { + var adjustment = this.replace_s(c_bra, c_ket, s); + if (c_bra <= this.bra) + this.bra += adjustment; + if (c_bra <= this.ket) + this.ket += adjustment; + }, + slice_to: function () { + this.slice_check(); + return current.substring(this.bra, this.ket); + }, + eq_v_b: function (s) { + return this.eq_s_b(s.length, s); + } + }; + } + }; + + lunr.trimmerSupport = { + generateTrimmer: function (wordCharacters) { + var startRegex = new RegExp("^[^" + wordCharacters + "]+") + var endRegex = new RegExp("[^" + wordCharacters + "]+$") + + return function (token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function (s) { + return s + .replace(startRegex, '') + .replace(endRegex, ''); + }) + } else { // for lunr version 1 + return token + .replace(startRegex, '') + .replace(endRegex, ''); + } + }; + } + } + } +})); diff --git a/static/js/lunr/lunrStemmerSupport.min.js b/static/js/lunr/lunrStemmerSupport.min.js new file mode 100755 index 0000000..3567a8c --- /dev/null +++ b/static/js/lunr/lunrStemmerSupport.min.js @@ -0,0 +1 @@ +!function(r,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(r.lunr)}(this,function(){return function(r){r.stemmerSupport={Among:function(r,t,i,s){if(this.toCharArray=function(r){for(var t=r.length,i=new Array(t),s=0;s>3]&1<<(7&s))return this.cursor++,!0}return!1},in_grouping_b:function(r,t,i){if(this.cursor>this.limit_backward){var s=b.charCodeAt(this.cursor-1);if(s<=i&&t<=s&&r[(s-=t)>>3]&1<<(7&s))return this.cursor--,!0}return!1},out_grouping:function(r,t,i){if(this.cursor>3]&1<<(7&s)))return this.cursor++,!0}return!1},out_grouping_b:function(r,t,i){if(this.cursor>this.limit_backward){var s=b.charCodeAt(this.cursor-1);if(i>3]&1<<(7&s)))return this.cursor--,!0}return!1},eq_s:function(r,t){if(this.limit-this.cursor>1),f=0,a=u=(l=r[i]).s_size){if(this.cursor=e+l.s_size,!l.method)return l.result;var m=l.method();if(this.cursor=e+l.s_size,m)return l.result}if((i=l.substring_i)<0)return 0}},find_among_b:function(r,t){for(var i=0,s=t,e=this.cursor,n=this.limit_backward,u=0,o=0,h=!1;;){for(var c,f=i+(s-i>>1),a=0,l=u=(c=r[i]).s_size){if(this.cursor=e-c.s_size,!c.method)return c.result;var m=c.method();if(this.cursor=e-c.s_size,m)return c.result}if((i=c.substring_i)<0)return 0}},replace_s:function(r,t,i){var s=i.length-(t-r);return b=b.substring(0,r)+i+b.substring(t),this.limit+=s,this.cursor>=t?this.cursor+=s:this.cursor>r&&(this.cursor=r),s},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>b.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){t=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=t),r<=this.ket&&(this.ket+=t)},slice_to:function(){return this.slice_check(),b.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}}); diff --git a/static/js/mermaid.min.js b/static/js/mermaid.min.js new file mode 100644 index 0000000..51902c2 --- /dev/null +++ b/static/js/mermaid.min.js @@ -0,0 +1,2651 @@ +var __esbuild_esm_mermaid_nm;(__esbuild_esm_mermaid_nm||={}).mermaid=(()=>{var w,k,T,C,S,_,A,N,I=Object.create,R=Object.defineProperty,M=Object.getOwnPropertyDescriptor,$=Object.getOwnPropertyNames,F=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty,me=(t,e)=>R(t,"name",{value:e,configurable:!0}),G=(e,r,n,i)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let t of $(r))z.call(e,t)||t===n||R(e,t,{get:()=>r[t],enumerable:!(i=M(r,t))||i.enumerable});return e},U=(t,e,r)=>(G(t,e,"default"),r&&G(r,e,"default")),q=(t,e,r)=>(r=null!=t?I(F(t)):{},G(!e&&t&&t.__esModule?r:R(r,"default",{value:t,enumerable:!0}),t)),j=(b=(t,e)=>()=>e=t?t(t=0):e)(()=>{w=Object.freeze({left:0,top:0,width:16,height:16}),k=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),T=Object.freeze({...w,...k}),C=Object.freeze({...T,body:"",hidden:!1})}),W=b(()=>{j(),S=Object.freeze({width:null,height:null}),_=Object.freeze({...S,...k})}),Y=b(()=>{A=me((t,e,r,n="")=>{var i,a=t.split(":");if("@"===t.slice(0,1)){if(a.length<2||3!!t&&!(!(e&&""===t.prefix||t.prefix)||!t.name),"validateIconName")});function tt(t,e){var r={};return!t.hFlip!=!e.hFlip&&(r.hFlip=!0),!t.vFlip!=!e.vFlip&&(r.vFlip=!0),(t=((t.rotate||0)+(e.rotate||0))%4)&&(r.rotate=t),r}var et=b(()=>{me(tt,"mergeIconTransformations")});function rt(t,e){var r,n=tt(t,e);for(r in C)r in k?r in t&&!(r in n)&&(n[r]=k[r]):r in e?n[r]=e[r]:r in t&&(n[r]=t[r]);return n}var nt=b(()=>{j(),et(),me(rt,"mergeIconData")});function it(t,e){let n=t.icons,i=t.aliases||Object.create(null),a=Object.create(null);function s(t){var e,r;return n[t]?a[t]=[]:(t in a||(a[t]=null,(r=(e=i[t]&&i[t].parent)&&s(e))&&(a[t]=[e].concat(r))),a[t])}return me(s,"resolve"),(e||Object.keys(n).concat(Object.keys(i))).forEach(s),a}var st=b(()=>{me(it,"getIconsTree")});function ot(t,e,r){let n=t.icons,i=t.aliases||Object.create(null),a={};function s(t){a=rt(n[t]||i[t],a)}return me(s,"parse"),s(e),r.forEach(s),rt(t,a)}function lt(t,e){var r;return t.icons[e]?ot(t,e,[]):(r=it(t,[e])[e])?ot(t,e,r):null}var ct=b(()=>{nt(),st(),me(ot,"internalGetIconData"),me(lt,"getIconData")});function ht(t,e,r){if(1===e)return t;if(r=r||100,"number"==typeof t)return Math.ceil(t*e*r)/r;if("string"!=typeof t)return t;var n,i=t.split(ut);if(null===i||!i.length)return t;let a=[],s=i.shift(),o=dt.test(s);for(;;){if(!o||(n=parseFloat(s),isNaN(n))?a.push(s):a.push(Math.ceil(n*e*r)/r),void 0===(s=i.shift()))return a.join("");o=!o}}var ut,dt,pt=b(()=>{ut=/(-?[0-9.]*[0-9]+[0-9.]*)/g,dt=/^-?[0-9.]*[0-9]+[0-9.]*$/g,me(ht,"calculateSize")});function gt(t,e="defs"){let r="",n=t.indexOf("<"+e);for(;0<=n;){var i=t.indexOf(">",n),a=t.indexOf("",a);if(-1===s)break;r+=t.slice(i+1,a).trim(),t=t.slice(0,n).trim()+t.slice(s+1)}return{defs:r,content:t}}function ft(t,e){return t?""+t+""+e:e}function mt(t,e,r){return ft((t=gt(t)).defs,e+t.content+r)}var yt=b(()=>{me(gt,"splitSVGDefs"),me(ft,"mergeDefsAndContent"),me(mt,"wrapSVGContent")});function vt(t,e){let r={...T,...t},n={..._,...e},s={left:r.left,top:r.top,width:r.width,height:r.height},o=r.body,i=([r,n].forEach(t=>{let e=[],r=t.hFlip,n=t.vFlip,i=t.rotate;r?n?i+=2:(e.push("translate("+(s.width+s.left).toString()+" "+(0-s.top).toString()+")"),e.push("scale(-1 1)"),s.top=s.left=0):n&&(e.push("translate("+(0-s.left).toString()+" "+(s.height+s.top).toString()+")"),e.push("scale(1 -1)"),s.top=s.left=0);let a;switch(i<0&&(i-=4*Math.floor(i/4)),i%=4){case 1:a=s.height/2+s.top,e.unshift("rotate(90 "+a.toString()+" "+a.toString()+")");break;case 2:e.unshift("rotate(180 "+(s.width/2+s.left).toString()+" "+(s.height/2+s.top).toString()+")");break;case 3:a=s.width/2+s.left,e.unshift("rotate(-90 "+a.toString()+" "+a.toString()+")")}i%2==1&&(s.left!==s.top&&(a=s.left,s.left=s.top,s.top=a),s.width!==s.height)&&(a=s.width,s.width=s.height,s.height=a),e.length&&(o=mt(o,'',""))}),n.width),a=n.height,l=s.width,c=s.height,h,u,d=(null===i?(u=null===a?"1em":"auto"===a?c:a,h=ht(u,l/c)):(h="auto"===i?l:i,u=null===a?ht(h,c/l):"auto"===a?c:a),{}),p=me((t,e)=>{xt(e)||(d[t]=e.toString())},"setAttr");return p("width",h),p("height",u),t=[s.left,s.top,l,c],d.viewBox=t.join(" "),{attributes:d,viewBox:t,body:o}}var xt,bt=b(()=>{j(),W(),pt(),yt(),xt=me(t=>"unset"===t||"undefined"===t||"none"===t,"isUnsetKeyword"),me(vt,"iconToSVG")});function wt(n,i=Tt){for(var t,e=[];t=kt.exec(n);)e.push(t[1]);if(e.length){let r="suffix"+(16777216*Math.random()|Date.now()).toString(16);e.forEach(t=>{var e="function"==typeof i?i(t):i+(Et++).toString(),t=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");n=n.replace(new RegExp('([#;"])('+t+')([")]|\\.[a-z])',"g"),"$1"+e+r+"$3")}),n=n.replace(new RegExp(r,"g"),"")}return n}var kt,Tt,Et,Ct=b(()=>{kt=/\sid="(\S+)"/g,Tt="IconifyId"+Date.now().toString(16)+(16777216*Math.random()|0).toString(16),Et=0,me(wt,"replaceIDs")});function St(t,e){let r=-1===t.indexOf("xlink:")?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(var n in e)r+=" "+n+'="'+e[n]+'"';return'"+t+""}var _t,At,Lt,Nt,D,It,Rt,Mt,Dt,Ot,Pt,Bt,$t,Ft,zt,Gt,Ut,qt,jt,Wt,Yt,Ht,Vt,Xt,Kt,Zt,Qt,Jt,te,ee,re,ne,ie,ae,se,oe,le,ce,he,ue,de,pe,ge,fe,ve,xe,be,a,we,ke,Te,r,Ee,Ce,Se,n,_e,Ae,Le,Ne,Ie,Re,Me,De,Oe,Pe,Be,$e,Fe,ze,Ge,Ue,qe,je,We,Ye,He,Ve,Xe,Ke,Ze,Qe,Je,tr,er,rr,nr,ir,ar,sr,or,lr,cr,hr,ur,dr,pr,gr=b(()=>{me(St,"iconToHTML")}),fr=b(()=>{Y(),ct(),bt(),Ct(),gr()}),mr=b(()=>{_t=me((e,r,{depth:n=2,clobber:i=!1}={})=>{let a={depth:n,clobber:i};return Array.isArray(r)&&!Array.isArray(e)?(r.forEach(t=>_t(e,t,a)),e):Array.isArray(r)&&Array.isArray(e)?(r.forEach(t=>{e.includes(t)||e.push(t)}),e):void 0===e||n<=0?null!=e&&"object"==typeof e&&"object"==typeof r?Object.assign(e,r):r:(void 0!==r&&"object"==typeof e&&"object"==typeof r&&Object.keys(r).forEach(t=>{"object"!=typeof r[t]||void 0!==e[t]&&"object"!=typeof e[t]?(i||"object"!=typeof e[t]&&"object"!=typeof r[t])&&(e[t]=r[t]):(void 0===e[t]&&(e[t]=Array.isArray(r[t])?[]:{}),e[t]=_t(e[t],r[t],{depth:n-1,clobber:i}))}),e)},"assignWithDepth"),At=_t}),yr=(WBt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports))((t,e)=>{function r(){var i="millisecond",u="second",d="minute",p="hour",g="day",f="week",m="month",y="year",v="date",e="Invalid Date",s=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,x=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,t={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:me(function(t){var e=["th","st","nd","rd"],r=t%100;return"["+t+(e[(r-20)%10]||e[r]||e[0])+"]"},"ordinal")},n=me(function(t,e,r){var n=String(t);return!n||n.length>=e?t:""+Array(e+1-n.length).join(r)+t},"m"),r={s:n,z:me(function(t){var t=-t.utcOffset(),e=Math.abs(t),r=Math.floor(e/60),e=e%60;return(t<=0?"+":"-")+n(r,2,"0")+":"+n(e,2,"0")},"z"),m:me(function t(e,r){var n,i,a;return e.date(){var t=a.date,e=a.utc;if(null===t)return new Date(NaN);if(w.u(t))return new Date;if(!(t instanceof Date||"string"!=typeof t||/Z$/i.test(t))){var r,n,i=t.match(s);if(i)return r=i[2]-1||0,n=(i[7]||"0").substring(0,3),e?new Date(Date.UTC(i[1],r,i[3]||1,i[4]||0,i[5]||0,i[6]||0,n)):new Date(i[1],r,i[3]||1,i[4]||0,i[5]||0,i[6]||0,n)}return new Date(t)})(),this.init()},t.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},t.$utils=function(){return w},t.isValid=function(){return this.$d.toString()!==e},t.isSame=function(t,e){return t=b(t),this.startOf(e)<=t&&t<=this.endOf(e)},t.isAfter=function(t,e){return b(t){switch(t){case"YY":return String(d.$y).slice(-2);case"YYYY":return w.s(d.$y,4,"0");case"M":return s+1;case"MM":return w.s(s+1,2,"0");case"MMM":return c(p.monthsShort,s,l,3);case"MMMM":return c(l,s);case"D":return d.$D;case"DD":return w.s(d.$D,2,"0");case"d":return String(d.$W);case"dd":return c(p.weekdaysMin,d.$W,o,2);case"ddd":return c(p.weekdaysShort,d.$W,o,3);case"dddd":return o[d.$W];case"H":return String(n);case"HH":return w.s(n,2,"0");case"h":return h(1);case"hh":return h(2);case"a":return u(n,a,!0);case"A":return u(n,a,!1);case"m":return String(a);case"mm":return w.s(a,2,"0");case"s":return String(d.$s);case"ss":return w.s(d.$s,2,"0");case"SSS":return w.s(d.$ms,3,"0");case"Z":return r}return null})()||r.replace(":","")})):p.invalidDate||e},t.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},t.diff=function(t,e,r){var n,i=this,e=w.p(e),a=b(t),s=6e4*(a.utcOffset()-this.utcOffset()),o=this-a,l=me(function(){return w.m(i,a)},"D");switch(e){case y:n=l()/12;break;case m:n=l();break;case"quarter":n=l()/3;break;case f:n=(o-s)/6048e5;break;case g:n=(o-s)/864e5;break;case p:n=o/36e5;break;case d:n=o/6e4;break;case u:n=o/1e3;break;default:n=o}return r?n:w.a(n)},t.daysInMonth=function(){return this.endOf(m).$D},t.$locale=function(){return l[this.$L]},t.locale=function(t,e){var r;return t?(r=this.clone(),(t=h(t,e,!0))&&(r.$L=t),r):this.$L},t.clone=function(){return w.w(this.$d,this)},t.toDate=function(){return new Date(this.valueOf())},t.toJSON=function(){return this.isValid()?this.toISOString():null},t.toISOString=function(){return this.$d.toISOString()},t.toString=function(){return this.$d.toUTCString()},E),T=k.prototype;function E(t){this.$L=h(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[a]=!0}return b.prototype=T,[["$ms",i],["$s",u],["$m",d],["$H",p],["$W",g],["$M",m],["$y",y],["$D",v]].forEach(function(e){T[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),b.extend=function(t,e){return t.$i||(t(e,k,b),t.$i=!0),b},b.locale=h,b.isDayjs=c,b.unix=function(t){return b(1e3*t)},b.en=l[o],b.Ls=l,b.p={},b}"object"==typeof t&&typeof e<"u"?e.exports=r():"function"==typeof define&&define.amd?define(r):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=r()}),t=b(()=>{Lt=q(yr(),1),Nt={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},D={trace:me(()=>{},"trace"),debug:me(()=>{},"debug"),info:me(()=>{},"info"),warn:me(()=>{},"warn"),error:me(()=>{},"error"),fatal:me(()=>{},"fatal")},It=me(function(t="fatal"){let e=Nt.fatal;"string"==typeof t?t.toLowerCase()in Nt&&(e=Nt[t]):"number"==typeof t&&(e=t),D.trace=()=>{},D.debug=()=>{},D.info=()=>{},D.warn=()=>{},D.error=()=>{},D.fatal=()=>{},e<=Nt.fatal&&(D.fatal=console.error?console.error.bind(console,Rt("FATAL"),"color: orange"):console.log.bind(console,"",Rt("FATAL"))),e<=Nt.error&&(D.error=console.error?console.error.bind(console,Rt("ERROR"),"color: orange"):console.log.bind(console,"",Rt("ERROR"))),e<=Nt.warn&&(D.warn=console.warn?console.warn.bind(console,Rt("WARN"),"color: orange"):console.log.bind(console,"",Rt("WARN"))),e<=Nt.info&&(D.info=console.info?console.info.bind(console,Rt("INFO"),"color: lightblue"):console.log.bind(console,"",Rt("INFO"))),e<=Nt.debug&&(D.debug=console.debug?console.debug.bind(console,Rt("DEBUG"),"color: lightgreen"):console.log.bind(console,"",Rt("DEBUG"))),e<=Nt.trace&&(D.trace=console.debug?console.debug.bind(console,Rt("TRACE"),"color: lightgreen"):console.log.bind(console,"",Rt("TRACE")))},"setLogLevel"),Rt=me(t=>`%c${(0,Lt.default)().format("ss.SSS")} : ${t} : `,"format")}),vr=b(()=>{Mt={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:me(t=>255<=t?255:t<0?0:t,"r"),g:me(t=>255<=t?255:t<0?0:t,"g"),b:me(t=>255<=t?255:t<0?0:t,"b"),h:me(t=>t%360,"h"),s:me(t=>100<=t?100:t<0?0:t,"s"),l:me(t=>100<=t?100:t<0?0:t,"l"),a:me(t=>1<=t?1:t<0?0:t,"a")},toLinear:me(t=>{var e=t/255;return.03928(r<0&&(r+=1),1{if(!e)return 2.55*r;t/=360,e/=100;var i=(r/=100)<.5?r*(1+e):r+e-r*e,a=2*r-i;switch(n){case"r":return 255*Mt.hue2rgb(a,i,t+.3333333333333333);case"g":return 255*Mt.hue2rgb(a,i,t);case"b":return 255*Mt.hue2rgb(a,i,t-.3333333333333333)}},"hsl2rgb"),rgb2hsl:me(({r:t,g:e,b:r},n)=>{t/=255,e/=255,r/=255;var i=Math.max(t,e,r),a=Math.min(t,e,r),s=(i+a)/2;if("l"===n)return 100*s;if(i===a)return 0;var o=i-a;if("s"===n)return 100*(.5{Ot={clamp:me((t,e,r)=>rMath.round(1e10*t)/1e10,"round")},Pt=Ot}),br=b(()=>{Bt={dec2hex:me(t=>1<(t=Math.round(t).toString(16)).length?t:"0"+t,"dec2hex")},$t=Bt}),wr=b(()=>{vr(),xr(),br(),Ft={channel:Dt,lang:Pt,unit:$t}}),kr=b(()=>{wr(),zt={};for(let t=0;t<=255;t++)zt[t]=Ft.unit.dec2hex(t);Gt={ALL:0,RGB:1,HSL:2}}),Tr=b(()=>{kr(),Ut=class{static{me(this,"Type")}constructor(){this.type=Gt.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=Gt.ALL}is(t){return this.type===t}},qt=Ut}),Er=b(()=>{wr(),Tr(),kr(),jt=class{static{me(this,"Channels")}constructor(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new qt}set(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=Gt.ALL,this}_ensureHSL(){var t=this.data,{h:e,s:r,l:n}=t;void 0===e&&(t.h=Ft.channel.rgb2hsl(t,"h")),void 0===r&&(t.s=Ft.channel.rgb2hsl(t,"s")),void 0===n&&(t.l=Ft.channel.rgb2hsl(t,"l"))}_ensureRGB(){var t=this.data,{r:e,g:r,b:n}=t;void 0===e&&(t.r=Ft.channel.hsl2rgb(t,"r")),void 0===r&&(t.g=Ft.channel.hsl2rgb(t,"g")),void 0===n&&(t.b=Ft.channel.hsl2rgb(t,"b"))}get r(){var t=this.data,e=t.r;return this.type.is(Gt.HSL)||void 0===e?(this._ensureHSL(),Ft.channel.hsl2rgb(t,"r")):e}get g(){var t=this.data,e=t.g;return this.type.is(Gt.HSL)||void 0===e?(this._ensureHSL(),Ft.channel.hsl2rgb(t,"g")):e}get b(){var t=this.data,e=t.b;return this.type.is(Gt.HSL)||void 0===e?(this._ensureHSL(),Ft.channel.hsl2rgb(t,"b")):e}get h(){var t=this.data,e=t.h;return this.type.is(Gt.RGB)||void 0===e?(this._ensureRGB(),Ft.channel.rgb2hsl(t,"h")):e}get s(){var t=this.data,e=t.s;return this.type.is(Gt.RGB)||void 0===e?(this._ensureRGB(),Ft.channel.rgb2hsl(t,"s")):e}get l(){var t=this.data,e=t.l;return this.type.is(Gt.RGB)||void 0===e?(this._ensureRGB(),Ft.channel.rgb2hsl(t,"l")):e}get a(){return this.data.a}set r(t){this.type.set(Gt.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(Gt.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(Gt.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(Gt.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(Gt.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(Gt.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}},Wt=jt}),Cr=b(()=>{Er(),Yt=new Wt({r:0,g:0,b:0,a:0},"transparent"),Ht=Yt}),Sr=b(()=>{Cr(),kr(),Vt={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:me(t=>{if(35===t.charCodeAt(0)){var e,r,n,i,a,s=t.match(Vt.re);if(s)return s=s[1],e=parseInt(s,16),s=s.length,Ht.set({r:(e>>(n=(r=4>n*(2+i)&a)*r,b:(e>>n*(1+i)&a)*r,a:s?(e&a)*r/255:1},t)}},"parse"),stringify:me(t=>{var{r:t,g:e,b:r,a:n}=t;return n<1?"#"+zt[Math.round(t)]+zt[Math.round(e)]+zt[Math.round(r)]+zt[Math.round(255*n)]:"#"+zt[Math.round(t)]+zt[Math.round(e)]+zt[Math.round(r)]},"stringify")},Xt=Vt}),_r=b(()=>{wr(),Cr(),Kt={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:me(t=>{if(r=t.match(Kt.hueRe)){var[,e,r]=r;switch(r){case"grad":return Ft.channel.clamp.h(.9*parseFloat(e));case"rad":return Ft.channel.clamp.h(180*parseFloat(e)/Math.PI);case"turn":return Ft.channel.clamp.h(360*parseFloat(e))}}return Ft.channel.clamp.h(parseFloat(t))},"_hue2deg"),parse:me(t=>{var e,r,n,i,a=t.charCodeAt(0);if((104===a||72===a)&&(a=t.match(Kt.re)))return[,a,e,r,n,i]=a,Ht.set({h:Kt._hue2deg(a),s:Ft.channel.clamp.s(parseFloat(e)),l:Ft.channel.clamp.l(parseFloat(r)),a:n?Ft.channel.clamp.a(i?parseFloat(n)/100:parseFloat(n)):1},t)},"parse"),stringify:me(t=>{var{h:t,s:e,l:r,a:n}=t;return n<1?`hsla(${Ft.lang.round(t)}, ${Ft.lang.round(e)}%, ${Ft.lang.round(r)}%, ${n})`:`hsl(${Ft.lang.round(t)}, ${Ft.lang.round(e)}%, ${Ft.lang.round(r)}%)`},"stringify")},Zt=Kt}),Ar=b(()=>{Sr(),Qt={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:me(t=>{if(t=t.toLowerCase(),t=Qt.colors[t])return Xt.parse(t)},"parse"),stringify:me(t=>{var e,r=Xt.stringify(t);for(e in Qt.colors)if(Qt.colors[e]===r)return e},"stringify")},Jt=Qt}),Lr=b(()=>{wr(),Cr(),te={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:me(t=>{var e,r,n,i,a,s,o,l=t.charCodeAt(0);if((114===l||82===l)&&(l=t.match(te.re)))return[,l,e,r,n,i,a,s,o]=l,Ht.set({r:Ft.channel.clamp.r(e?2.55*parseFloat(l):parseFloat(l)),g:Ft.channel.clamp.g(n?2.55*parseFloat(r):parseFloat(r)),b:Ft.channel.clamp.b(a?2.55*parseFloat(i):parseFloat(i)),a:s?Ft.channel.clamp.a(o?parseFloat(s)/100:parseFloat(s)):1},t)},"parse"),stringify:me(t=>{var{r:t,g:e,b:r,a:n}=t;return n<1?`rgba(${Ft.lang.round(t)}, ${Ft.lang.round(e)}, ${Ft.lang.round(r)}, ${Ft.lang.round(n)})`:`rgb(${Ft.lang.round(t)}, ${Ft.lang.round(e)}, ${Ft.lang.round(r)})`},"stringify")},ee=te}),Nr=b(()=>{Sr(),_r(),Ar(),Lr(),kr(),re={format:{keyword:Jt,hex:Xt,rgb:ee,rgba:ee,hsl:Zt,hsla:Zt},parse:me(t=>{if("string"!=typeof t)return t;var e=Xt.parse(t)||ee.parse(t)||Zt.parse(t)||Jt.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},"parse"),stringify:me(t=>!t.changed&&t.color?t.color:(t.type.is(Gt.HSL)||void 0===t.data.r?Zt:t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?ee:Xt).stringify(t),"stringify")},ne=re}),Ir=b(()=>{wr(),Nr(),ie=me((t,e)=>{var r,n=ne.parse(t);for(r in e)n[r]=Ft.channel.clamp[r](e[r]);return ne.stringify(n)},"change"),ae=ie}),Rr=b(()=>{wr(),Cr(),Nr(),Ir(),se=me((t,e,r=0,n=1)=>"number"!=typeof t?ae(t,{a:e}):(t=Ht.set({r:Ft.channel.clamp.r(t),g:Ft.channel.clamp.g(e),b:Ft.channel.clamp.b(r),a:Ft.channel.clamp.a(n)}),ne.stringify(t)),"rgba"),oe=se}),Mr=b(()=>{wr(),Nr(),le=me((t,e)=>Ft.lang.round(ne.parse(t)[e]),"channel"),ce=le}),Dr=b(()=>{wr(),Nr(),he=me(t=>{var{r:t,g:e,b:r}=ne.parse(t),t=.2126*Ft.channel.toLinear(t)+.7152*Ft.channel.toLinear(e)+.0722*Ft.channel.toLinear(r);return Ft.lang.round(t)},"luminance"),ue=he}),Or=b(()=>{Dr(),de=me(t=>.5<=ue(t),"isLight"),pe=de}),Pr=b(()=>{Or(),ge=me(t=>!pe(t),"isDark"),fe=ge}),Br=b(()=>{wr(),Nr(),ve=me((t,e,r)=>{var n=(t=ne.parse(t))[e];return n!==(r=Ft.channel.clamp[e](n+r))&&(t[e]=r),ne.stringify(t)},"adjustChannel"),xe=ve}),$r=b(()=>{Br(),be=me((t,e)=>xe(t,"l",e),"lighten"),a=be}),Fr=b(()=>{Br(),we=me((t,e)=>xe(t,"l",-e),"darken"),ke=we}),zr=b(()=>{Nr(),Ir(),Te=me((t,e)=>{var r,n=ne.parse(t),i={};for(r in e)e[r]&&(i[r]=n[r]+e[r]);return ae(t,i)},"adjust"),r=Te}),Gr=b(()=>{Nr(),Rr(),Ee=me((t,e,r=50)=>{var{r:t,g:n,b:i,a}=ne.parse(t),{r:e,g:s,b:o,a:l}=ne.parse(e),c=2*(r/=100)-1,h=a-l;return oe(t*(c=(1+(c*h==-1?c:(c+h)/(1+c*h)))/2)+e*(h=1-c),n*c+s*h,i*c+o*h,a*r+l*(1-r))},"mix"),Ce=Ee}),Ur=b(()=>{Nr(),Gr(),Se=me((t,e=100)=>{var r=ne.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,Ce(r,t,e)},"invert"),n=Se}),qr=b(()=>{Rr(),Mr(),Pr(),$r(),Fr(),zr(),Ur()}),jr=b(()=>{qr()}),Wr=b(()=>{_e="#ffffff",Ae="#f2f2f2"}),Yr=b(()=>{jr(),Le=me((t,e)=>r(t,e?{s:-40,l:10}:{s:-40,l:-10}),"mkBorder")}),Hr=b(()=>{jr(),Wr(),Yr(),Ne=class{static{me(this,"Theme")}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||r(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||r(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Le(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Le(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Le(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Le(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||n(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||n(this.tertiaryColor),this.lineColor=this.lineColor||n(this.background),this.arrowheadColor=this.arrowheadColor||n(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?ke(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||this.actorBorder,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||ke(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||n(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||a(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.vertLineColor=this.vertLineColor||"navy",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.darkMode?(this.rowOdd=this.rowOdd||ke(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||ke(this.mainBkg,10)):(this.rowOdd=this.rowOdd||a(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||a(this.mainBkg,5)),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||r(this.primaryColor,{h:30}),this.cScale4=this.cScale4||r(this.primaryColor,{h:60}),this.cScale5=this.cScale5||r(this.primaryColor,{h:90}),this.cScale6=this.cScale6||r(this.primaryColor,{h:120}),this.cScale7=this.cScale7||r(this.primaryColor,{h:150}),this.cScale8=this.cScale8||r(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||r(this.primaryColor,{h:270}),this.cScale10=this.cScale10||r(this.primaryColor,{h:300}),this.cScale11=this.cScale11||r(this.primaryColor,{h:330}),this.darkMode)for(let t=0;t{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]}))}},Ie=me(t=>{var e=new Ne;return e.calculate(t),e},"getThemeVariables")}),Vr=b(()=>{jr(),Yr(),Re=class{static{me(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=a(this.primaryColor,16),this.tertiaryColor=r(this.primaryColor,{h:-160}),this.primaryBorderColor=n(this.background),this.secondaryBorderColor=Le(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Le(this.tertiaryColor,this.darkMode),this.primaryTextColor=n(this.primaryColor),this.secondaryTextColor=n(this.secondaryColor),this.tertiaryTextColor=n(this.tertiaryColor),this.lineColor=n(this.background),this.textColor=n(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=a(n("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=oe(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=ke("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=ke(this.sectionBkgColor,10),this.taskBorderColor=oe(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=oe(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.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||a(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||ke(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=a(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=a(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,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=a(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.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,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=r(this.primaryColor,{h:64}),this.fillType3=r(this.secondaryColor,{h:64}),this.fillType4=r(this.primaryColor,{h:-64}),this.fillType5=r(this.secondaryColor,{h:-64}),this.fillType6=r(this.primaryColor,{h:128}),this.fillType7=r(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||r(this.primaryColor,{h:30}),this.cScale4=this.cScale4||r(this.primaryColor,{h:60}),this.cScale5=this.cScale5||r(this.primaryColor,{h:90}),this.cScale6=this.cScale6||r(this.primaryColor,{h:120}),this.cScale7=this.cScale7||r(this.primaryColor,{h:150}),this.cScale8=this.cScale8||r(this.primaryColor,{h:210}),this.cScale9=this.cScale9||r(this.primaryColor,{h:270}),this.cScale10=this.cScale10||r(this.primaryColor,{h:300}),this.cScale11=this.cScale11||r(this.primaryColor,{h:330});for(let t=0;t{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]}))}},Me=me(t=>{var e=new Re;return e.calculate(t),e},"getThemeVariables")}),Xr=b(()=>{jr(),Yr(),Wr(),De=class{static{me(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=r(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=r(this.primaryColor,{h:-160}),this.primaryBorderColor=Le(this.primaryColor,this.darkMode),this.secondaryBorderColor=Le(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Le(this.tertiaryColor,this.darkMode),this.primaryTextColor=n(this.primaryColor),this.secondaryTextColor=n(this.secondaryColor),this.tertiaryTextColor=n(this.tertiaryColor),this.lineColor=n(this.background),this.textColor=n(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="rgba(232,232,232, 0.8)",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="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="#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.vertLineColor="calculated",this.sectionBkgColor=oe(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.vertLineColor="navy",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",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||r(this.primaryColor,{h:30}),this.cScale4=this.cScale4||r(this.primaryColor,{h:60}),this.cScale5=this.cScale5||r(this.primaryColor,{h:90}),this.cScale6=this.cScale6||r(this.primaryColor,{h:120}),this.cScale7=this.cScale7||r(this.primaryColor,{h:150}),this.cScale8=this.cScale8||r(this.primaryColor,{h:210}),this.cScale9=this.cScale9||r(this.primaryColor,{h:270}),this.cScale10=this.cScale10||r(this.primaryColor,{h:300}),this.cScale11=this.cScale11||r(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||ke(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||ke(this.tertiaryColor,40);for(let t=0;t{"calculated"===this[t]&&(this[t]=void 0)}),"object"!=typeof e?this.updateColors():((t=Object.keys(e)).forEach(t=>{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]}))}},Oe=me(t=>{var e=new De;return e.calculate(t),e},"getThemeVariables")}),Kr=b(()=>{jr(),Wr(),Yr(),Pe=class{static{me(this,"Theme")}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=a("#cde498",10),this.primaryBorderColor=Le(this.primaryColor,this.darkMode),this.secondaryBorderColor=Le(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Le(this.tertiaryColor,this.darkMode),this.primaryTextColor=n(this.primaryColor),this.secondaryTextColor=n(this.secondaryColor),this.tertiaryTextColor=n(this.primaryColor),this.lineColor=n(this.background),this.textColor=n(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="calculated",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.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=ke(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.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||r(this.primaryColor,{h:30}),this.cScale4=this.cScale4||r(this.primaryColor,{h:60}),this.cScale5=this.cScale5||r(this.primaryColor,{h:90}),this.cScale6=this.cScale6||r(this.primaryColor,{h:120}),this.cScale7=this.cScale7||r(this.primaryColor,{h:150}),this.cScale8=this.cScale8||r(this.primaryColor,{h:210}),this.cScale9=this.cScale9||r(this.primaryColor,{h:270}),this.cScale10=this.cScale10||r(this.primaryColor,{h:300}),this.cScale11=this.cScale11||r(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||ke(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||ke(this.tertiaryColor,40);for(let t=0;t{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]}))}},Be=me(t=>{var e=new Pe;return e.calculate(t),e},"getThemeVariables")}),Zr=b(()=>{jr(),Yr(),Wr(),$e=class{static{me(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=a(this.contrast,55),this.background="#ffffff",this.tertiaryColor=r(this.primaryColor,{h:-160}),this.primaryBorderColor=Le(this.primaryColor,this.darkMode),this.secondaryBorderColor=Le(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Le(this.tertiaryColor,this.darkMode),this.primaryTextColor=n(this.primaryColor),this.secondaryTextColor=n(this.secondaryColor),this.tertiaryTextColor=n(this.tertiaryColor),this.lineColor=n(this.background),this.textColor=n(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=this.actorBorder,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.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||a(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=a(this.contrast,55),this.border2=this.contrast,this.actorBorder=a(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,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 t=0;t{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]}))}},Fe=me(t=>{var e=new $e;return e.calculate(t),e},"getThemeVariables")}),Qr=b(()=>{Hr(),Vr(),Xr(),Kr(),Zr(),ze={base:{getThemeVariables:Ie},dark:{getThemeVariables:Me},default:{getThemeVariables:Oe},forest:{getThemeVariables:Be},neutral:{getThemeVariables:Fe}}}),Jr=b(()=>{Ge={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},sequence:{useMaxWidth:!0,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,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},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,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"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1},state:{useMaxWidth:!0,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,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{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},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:"cose-bilkent"},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,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},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,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,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"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1}}),tn=b(()=>{Qr(),Jr(),Ue={...Ge,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:ze.default.getThemeVariables(),sequence:{...Ge.sequence,messageFont:me(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:me(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:me(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...Ge.gantt,tickInterval:void 0,useWidth:void 0},c4:{...Ge.c4,useWidth:void 0,personFont:me(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...Ge.flowchart,inheritDir:!1},external_personFont:me(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:me(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:me(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:me(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:me(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:me(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:me(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:me(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:me(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:me(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:me(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:me(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:me(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:me(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:me(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:me(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:me(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:me(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:me(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:me(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:me(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...Ge.pie,useWidth:984},xyChart:{...Ge.xyChart,useWidth:void 0},requirement:{...Ge.requirement,useWidth:void 0},packet:{...Ge.packet},radar:{...Ge.radar},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","}},qe=me((r,n="")=>Object.keys(r).reduce((t,e)=>Array.isArray(r[e])?t:"object"==typeof r[e]&&null!==r[e]?[...t,n+e,...qe(r[e],"")]:[...t,n+e],[]),"keyify"),je=new Set(qe(Ue,"")),We=Ue}),en=b(()=>{tn(),t(),Ye=me(t=>{if(D.debug("sanitizeDirective called with",t),"object"==typeof t&&null!=t)if(Array.isArray(t))t.forEach(t=>Ye(t));else{for(var e of Object.keys(t)){var r;if(D.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!je.has(e)||null==t[e])D.debug("sanitize deleting key: ",e),delete t[e];else if("object"==typeof t[e])D.debug("sanitizing object",e),Ye(t[e]);else for(r of["themeCSS","fontFamily","altFontFamily"])e.includes(r)&&(D.debug("sanitizing css option",e),t[e]=He(t[e]))}if(t.themeVariables)for(var n of Object.keys(t.themeVariables)){var i=t.themeVariables[n];i?.match&&!i.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[n]="")}D.debug("After sanitization",t)}},"sanitizeDirective"),He=me(t=>{let e=0,r=0;for(var n of t){if(e{mr(),t(),Qr(),tn(),en(),Ve=Object.freeze(We),Xe=At({},Ve),Ze=[],Qe=At({},Ve),Je=me((t,e)=>{let r=At({},t),n={};for(var i of e)sr(i),n=At(n,i);return r=At(r,n),n.theme&&n.theme in ze&&(t=At({},Ke),e=At(t.themeVariables||{},n.themeVariables),r.theme)&&r.theme in ze&&(r.themeVariables=ze[r.theme].getThemeVariables(e)),dr(Qe=r),Qe},"updateCurrentConfig"),tr=me(t=>(Xe=At({},Ve),Xe=At(Xe,t),t.theme&&ze[t.theme]&&(Xe.themeVariables=ze[t.theme].getThemeVariables(t.themeVariables)),Je(Xe,Ze),Xe),"setSiteConfig"),er=me(t=>{Ke=At({},t)},"saveConfigFromInitialize"),rr=me(t=>(Xe=At(Xe,t),Je(Xe,Ze),Xe),"updateSiteConfig"),nr=me(()=>At({},Xe),"getSiteConfig"),ir=me(t=>(dr(t),At(Qe,t),ar()),"setConfig"),ar=me(()=>At({},Qe),"getConfig"),sr=me(e=>{e&&(["secure",...Xe.secure??[]].forEach(t=>{Object.hasOwn(e,t)&&(D.debug("Denied attempt to modify a secure key "+t,e[t]),delete e[t])}),Object.keys(e).forEach(t=>{t.startsWith("__")&&delete e[t]}),Object.keys(e).forEach(t=>{"string"==typeof e[t]&&(e[t].includes("<")||e[t].includes(">")||e[t].includes("url(data:"))&&delete e[t],"object"==typeof e[t]&&sr(e[t])}))},"sanitize"),or=me(t=>{Ye(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),Ze.push(t),Je(Xe,Ze)},"addDirective"),lr=me((t=Xe)=>{Je(t,Ze=[])},"reset"),cr={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},hr={},ur=me(t=>{hr[t]||(D.warn(cr[t]),hr[t]=!0)},"issueWarning"),dr=me(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&ur("LAZY_LOAD_DEPRECATED")},"checkConfig"),pr=me(()=>{let t={};Ke&&(t=At(t,Ke));for(var e of Ze)t=At(t,e);return t},"getUserDefinedConfig")});function nn(i){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var e=arguments.length,r=new Array(1hn(t),"DOMPurify");if(u.version="3.2.5",u.removed=[],!t||!t.document||t.document.nodeType!==ri.document||!t.Element)return u.isSupported=!1,u;let i=t.document,c=i,O=c.currentScript,{DocumentFragment:P,HTMLTemplateElement:B,Node:$,Element:F,NodeFilter:e,NamedNodeMap:z=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:G,DOMParser:U,trustedTypes:d}=t,r=F.prototype,q=cn(r,"cloneNode"),j=cn(r,"remove"),W=cn(r,"nextSibling"),Y=cn(r,"childNodes"),s=cn(r,"parentNode");var H;"function"==typeof B&&(H=i.createElement("template")).content&&H.content.ownerDocument&&(i=H.content.ownerDocument);let p,h="",{implementation:V,createNodeIterator:X,createDocumentFragment:K,getElementsByTagName:Z}=i,Q=c.importNode,g=ai(),{MUSTACHE_EXPR:J,ERB_EXPR:tt,TMPLIT_EXPR:et,DATA_ATTR:rt,ARIA_ATTR:nt,IS_SCRIPT_OR_DATA:it,ATTR_WHITESPACE:at,CUSTOM_ELEMENT:st}=(u.isSupported="function"==typeof un&&"function"==typeof s&&V&&void 0!==V.createHTMLDocument,ei),ot=ei.IS_ALLOWED_URI,f=null,lt=sn({},[...Dn,...On,...Pn,...$n,...zn]),m=null,ct=sn({},[...Gn,...Un,...qn,...jn]),o=Object.seal(yn(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}})),y=null,ht=null,ut=!0,dt=!0,pt=!1,gt=!0,v=!1,ft=!0,x=!1,mt=!1,yt=!1,b=!1,w=!1,k=!1,vt=!0,xt=!1,bt=!0,T=!1,n,l=null,wt=sn({},["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"]),kt=null,Tt=sn({},["audio","video","img","source","image","track"]),Et=null,Ct=sn({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),a="http://www.w3.org/1998/Math/MathML",E="http://www.w3.org/2000/svg",C="http://www.w3.org/1999/xhtml",S=C,St=!1,_t=null,At=sn({},[a,E,C],Sn),_=sn({},["mi","mo","mn","ms","mtext"]),A=sn({},["annotation-xml"]),Lt=sn({},["title","style","font","a","script"]),L=null,Nt=["application/xhtml+xml","text/html"],N=null,I=null,It=i.createElement("form"),Rt=me(function(t){return t instanceof RegExp||t instanceof Function},"isRegexOrFunction"),Mt=me(function(){var t=0"+t:(n=_n(t,/^[\r\n\t ]+/),r=n&&n[0]),"application/xhtml+xml"===L&&S===C&&(t=''+t+"");var n=p?p.createHTML(t):t;if(S===C)try{e=(new U).parseFromString(n,L)}catch{}if(!e||!e.documentElement){e=V.createDocument(S,"template",null);try{e.documentElement.innerHTML=St?h:n}catch{}}return n=e.body||e.documentElement,t&&r&&n.insertBefore(i.createTextNode(r),n.childNodes[0]||null),S===C?Z.call(e,x?"html":"body")[0]:x?e.documentElement:n},"_initDocument"),$t=me(function(t){return X.call(t.ownerDocument||t,t,e.SHOW_ELEMENT|e.SHOW_COMMENT|e.SHOW_TEXT|e.SHOW_PROCESSING_INSTRUCTION|e.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),Ft=me(function(t){return t instanceof G&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof z)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes)},"_isClobbered"),zt=me(function(t){return"function"==typeof $&&t instanceof $},"_isNode");function D(t,e,r){bn(t,t=>{t.call(u,e,r,I)})}me(D,"_executeHooks");let Gt=me(function(e){let r=null;if(D(g.beforeSanitizeElements,e,null),!Ft(e)){var t=N(e.nodeName);if(D(g.uponSanitizeElement,e,{tagName:t,allowedTags:f}),!(e.hasChildNodes()&&!zt(e.firstElementChild)&&Rn(/<[/\w!]/g,e.innerHTML)&&Rn(/<[/\w!]/g,e.textContent)||e.nodeType===ri.progressingInstruction||ft&&e.nodeType===ri.comment&&Rn(/<[/\w]/g,e.data))){if(f[t]&&!y[t])return e instanceof F&&!Pt(e)||("noscript"===t||"noembed"===t||"noframes"===t)&&Rn(/<\/no(script|embed|frames)/i,e.innerHTML)?(R(e),!0):(v&&e.nodeType===ri.text&&(r=e.textContent,bn([J,tt,et],t=>{r=An(r,t," ")}),e.textContent!==r)&&(Tn(u.removed,{element:e.cloneNode()}),e.textContent=r),D(g.afterSanitizeElements,e,null),!1);if(!y[t]&&qt(t)&&(o.tagNameCheck instanceof RegExp&&Rn(o.tagNameCheck,t)||o.tagNameCheck instanceof Function&&o.tagNameCheck(t)))return!1;if(bt&&!l[t]){var n=s(e)||e.parentNode,i=Y(e)||e.childNodes;if(i&&n)for(let t=i.length-1;0<=t;--t){var a=q(i[t],!0);a.__removalCount=(e.__removalCount||0)+1,n.insertBefore(a,W(e))}}}}return R(e),!0},"_sanitizeElements"),Ut=me(function(t,e,r){if(vt&&("id"===e||"name"===e)&&(r in i||r in It))return!1;if((!dt||ht[e]||!Rn(rt,e))&&(!ut||!Rn(nt,e)))if(!m[e]||ht[e]){if(!(qt(t)&&(o.tagNameCheck instanceof RegExp&&Rn(o.tagNameCheck,t)||o.tagNameCheck instanceof Function&&o.tagNameCheck(t))&&(o.attributeNameCheck instanceof RegExp&&Rn(o.attributeNameCheck,e)||o.attributeNameCheck instanceof Function&&o.attributeNameCheck(e))||"is"===e&&o.allowCustomizedBuiltInElements&&(o.tagNameCheck instanceof RegExp&&Rn(o.tagNameCheck,r)||o.tagNameCheck instanceof Function&&o.tagNameCheck(r))))return!1}else if(!Et[e]&&!Rn(ot,An(r,at,""))&&("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==Ln(r,"data:")||!kt[t])&&(!pt||Rn(it,An(r,at,"")))&&r)return!1;return!0},"_isValidAttribute"),qt=me(function(t){return"annotation-xml"!==t&&_n(t,st)},"_isBasicCustomElement"),jt=me(function(l){D(g.beforeSanitizeAttributes,l,null);var c=l.attributes;if(c&&!Ft(l)){let s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:m,forceKeepAttr:void 0},o=c.length;for(;o--;){let t=c[o],{name:e,namespaceURI:r,value:n}=t,i=N(e),a="value"===e?n:Nn(n);if(s.attrName=i,s.attrValue=a,s.keepAttr=!0,s.forceKeepAttr=void 0,D(g.uponSanitizeAttribute,l,s),a=s.attrValue,!xt||"id"!==i&&"name"!==i||(M(e,l),a="user-content-"+a),ft&&Rn(/((--!?|])>)|<\/(style|title)/i,a))M(e,l);else if(!s.forceKeepAttr&&(M(e,l),s.keepAttr))if(!gt&&Rn(/\/>/i,a))M(e,l);else{v&&bn([J,tt,et],t=>{a=An(a,t," ")});var h=N(l.nodeName);if(Ut(h,i,a)){if(p&&"object"==typeof d&&"function"==typeof d.getAttributeType&&!r)switch(d.getAttributeType(h,i)){case"TrustedHTML":a=p.createHTML(a);break;case"TrustedScriptURL":a=p.createScriptURL(a)}try{r?l.setAttributeNS(r,e,a):l.setAttribute(e,a),Ft(l)?R(l):kn(u.removed)}catch{}}}}D(g.afterSanitizeAttributes,l,null)}},"_sanitizeAttributes"),Wt=me(function t(e){var r,n=$t(e);for(D(g.beforeSanitizeShadowDOM,e,null);r=n.nextNode();)D(g.uponSanitizeShadowNode,r,null),Gt(r),jt(r),r.content instanceof P&&t(r.content);D(g.afterSanitizeShadowDOM,e,null)},"_sanitizeShadowDOM");return u.sanitize=function(t){let e=1 +`+l),v&&bn([J,tt,et],t=>{l=An(l,t," ")}),p&&k?p.createHTML(l):l},u.setConfig=function(){var t=0{({entries:un,setPrototypeOf:dn,isFrozen:pn,getPrototypeOf:gn,getOwnPropertyDescriptor:fn}=Object),{freeze:mn,seal:ti,create:yn}=Object,{apply:vn,construct:xn}=typeof Reflect<"u"&&Reflect,mn=mn||me(function(t){return t},"freeze"),ti=ti||me(function(t){return t},"seal"),vn=vn||me(function(t,e,r){return t.apply(e,r)},"apply"),xn=xn||me(function(t,e){return new t(...e)},"construct"),bn=nn(Array.prototype.forEach),wn=nn(Array.prototype.lastIndexOf),kn=nn(Array.prototype.pop),Tn=nn(Array.prototype.push),En=nn(Array.prototype.splice),Cn=nn(String.prototype.toLowerCase),Sn=nn(String.prototype.toString),_n=nn(String.prototype.match),An=nn(String.prototype.replace),Ln=nn(String.prototype.indexOf),Nn=nn(String.prototype.trim),In=nn(Object.prototype.hasOwnProperty),Rn=nn(RegExp.prototype.test),Mn=an(TypeError),me(nn,"unapply"),me(an,"unconstruct"),me(sn,"addToSet"),me(on,"cleanArray"),me(ln,"clone"),me(cn,"lookupGetter"),Dn=mn(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),On=mn(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Pn=mn(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Bn=mn(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),$n=mn(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Fn=mn(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),zn=mn(["#text"]),Gn=mn(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),Un=mn(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),qn=mn(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),jn=mn(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Wn=ti(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Yn=ti(/<%[\w\W]*|[\w\W]*%>/gm),Hn=ti(/\$\{[\w\W]*/gm),Vn=ti(/^data-[\-\w.\u00B7-\uFFFF]+$/),Xn=ti(/^aria-[\-\w]+$/),Kn=ti(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Zn=ti(/^(?:\w+script|data):/i),Qn=ti(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Jn=ti(/^html$/i),ti=ti(/^[a-z][.\w]*(-[.\w]+)+$/i),ei=Object.freeze({__proto__:null,ARIA_ATTR:Xn,ATTR_WHITESPACE:Qn,CUSTOM_ELEMENT:ti,DATA_ATTR:Vn,DOCTYPE_NAME:Jn,ERB_EXPR:Yn,IS_ALLOWED_URI:Kn,IS_SCRIPT_OR_DATA:Zn,MUSTACHE_EXPR:Wn,TMPLIT_EXPR:Hn}),ri={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},ni=me(function(){return"u"Ui[t])}function hi(t){if(t.default)return t.default;if(t=t.type,"string"!=typeof(t=Array.isArray(t)?t[0]:t))return t.enum[0];switch(t){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}function ui(t){for(var e=0;e=i[0]&&t<=i[1])return r.name}return null}function di(t){for(var e=0;e but got "+String(t)+".")}function e(t,e,r,n,i,a){ja[t][i]={font:e,group:r,replace:n},a&&n&&(ja[t][n]=ja[t][i])}function o(t){for(var{type:t,names:e,props:r,handler:n,htmlBuilder:i,mathmlBuilder:a}=t,s={type:t,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:void 0===r.allowedInMath||r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:n},o=0;oAV".indexOf(c)))throw new X('Expected one of "<>AV=|." after @',s[l]);for(var u=0;u<2;u++){for(var d=!0,p=l+1;p{for(var r in e)R(t,r,{get:e[r],enumerable:!0})})(li,{ParseError:()=>X,SETTINGS_SCHEMA:()=>Hi,__defineFunction:()=>o,__defineMacro:()=>l,__defineSymbol:()=>e,__domTree:()=>Jl,__parse:()=>Vl,__renderToDomTree:()=>Kl,__renderToHTMLTree:()=>Zl,__setFontMetrics:()=>pi,default:()=>tc,render:()=>Yl,renderToString:()=>Hl,version:()=>Ql});var Fi,zi,X,Gi,Ui,qi,ji,Wi,Yi,Hi,Vi,Xi,Ki,Zi,Qi,Ji,ta,ea,ra,na,ia,aa,sa,oa,la,ca,ha,ua,da,pa,ga,fa,ma,ya,va,xa,ba,wa,ka,Ta,Ea,Ca,Sa,_a,Aa,K,La,Na,Ia,Ra,Ma,Da,Oa,Pa,Ba,$a,Fa,za,Ga,Ua,qa,ja,h,u,d,Wa,p,Ya,Ha,Va,Xa,Ka,Za,Qa,Ja,ts,es,rs,ns,is,as,ss,os,ls,cs,hs,us,ds,ps,gs,fs,ms,ys,vs,xs,bs,ws,ks,Ts,Es,Z,Cs,Ss,_s,As,Ls,Ns,Is,Rs,Ms,Ds,Os,Ps,Bs,$s,Fs,zs,Gs,Us,qs,js,Ws,E,Ys,Hs,Vs,Xs,Ks,Zs,Qs,Js,to,eo,ro,no,io,ao,so,oo,lo,co,ho,uo,po,go,fo,mo,yo,vo,xo,bo,wo,ko,To,Eo,Co,So,_o,Ao,Lo,No,Io,Ro,Mo,Do,Oo,Po,Bo,$o,Fo,zo,Go,Uo,qo,jo,Wo,Yo,Ho,Vo,Xo,Ko,g,Zo,Qo,Jo,tl,el,rl,nl,f,il,al,sl,ol,ll,cl,hl,ul,dl,pl,gl,fl,ml,yl,vl,xl,bl,wl,kl,Tl,El,Cl,Sl,_l,m,Al,Ll,Nl,Il,Rl,Ml,Dl,Ol,Pl,Bl,$l,Fl,zl,Gl,Ul,ql,jl,Wl,Yl,Hl,Vl,Xl,Kl,Zl,Ql,Jl,tc,ec=b(()=>{for(Fi=class r{static{me(this,"SourceLocation")}constructor(t,e,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=t,this.start=e,this.end=r}static range(t,e){return e?t&&t.loc&&e.loc&&t.loc.lexer===e.loc.lexer?new r(t.loc.lexer,t.loc.start,e.loc.end):null:t&&t.loc}},zi=class n{static{me(this,"Token")}constructor(t,e){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=t,this.loc=e}range(t,e){return new n(e,Fi.range(this,t))}},(X=class s{static{me(this,"ParseError")}constructor(t,e){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var r,n,i,a="KaTeX parse error: "+t;return(e=e&&e.loc)&&e.start<=e.end&&(r=e.lexer.input,n=e.start,i=e.end,n===r.length?a+=" at end of input: ":a+=" at position "+(n+1)+": ",e=r.slice(n,i).replace(/[^]/g,"$&̲"),a+=(15":">","<":"<",'"':""","'":"'"},qi=/[&><"']/g,me(ci,"escape"),ji=me(function t(e){return"ordgroup"===e.type||"color"===e.type?1===e.body.length?t(e.body[0]):e:"font"===e.type?t(e.body):e},"getBaseElem"),g=me(function(t){return"mathord"===(t=ji(t)).type||"textord"===t.type||"atom"===t.type},"isCharacterBox"),Wi=me(function(t){if(t)return t;throw new Error("Expected non-null, but got "+String(t))},"assert"),cl=me(function(t){return(t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(t))?":"===t[2]&&/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"},"protocolFromUrl"),Yi={contains:fl,deflt:f,escape:ci,hyphenate:Bl,getBaseElem:ji,isCharacterBox:g,protocolFromUrl:cl},Hi={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:me(t=>"#"+t,"cliProcessor")},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:me((t,e)=>(e.push(t),e),"cliProcessor")},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:me(t=>Math.max(0,t),"processor"),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:me(t=>Math.max(0,t),"processor"),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:me(t=>Math.max(0,t),"processor"),cli:"-e, --max-expand ",cliProcessor:me(t=>"Infinity"===t?1/0:parseInt(t),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}},me(hi,"getDefaultValue"),Vi=class{static{me(this,"Settings")}constructor(t){for(var e in this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,t=t||{},Hi){var r;Hi.hasOwnProperty(e)&&(r=Hi[e],this[e]=void 0!==t[e]?r.processor?r.processor(t[e]):t[e]:hi(r))}}reportNonstrict(t,e,r){var n=this.strict;if((n="function"==typeof n?n(t,e,r):n)&&"ignore"!==n){if(!0===n||"error"===n)throw new X("LaTeX-incompatible input and strict mode is set to 'error': "+e+" ["+t+"]",r);"warn"===n?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+e+" ["+t+"]")}}useStrictBehavior(t,e,r){var n=this.strict;if("function"==typeof n)try{n=n(t,e,r)}catch{n="error"}return!(!n||"ignore"===n||!0!==n&&"error"!==n&&("warn"===n?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+e+" ["+t+"]"),1))}isTrusted(t){if(t.url&&!t.protocol){var e=Yi.protocolFromUrl(t.url);if(null==e)return!1;t.protocol=e}return!!("function"==typeof this.trust?this.trust(t):this.trust)}},fl=class{static{me(this,"Style")}constructor(t,e,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=e,this.cramped=r}sup(){return Xi[Ki[this.id]]}sub(){return Xi[Zi[this.id]]}fracNum(){return Xi[Qi[this.id]]}fracDen(){return Xi[Ji[this.id]]}cramp(){return Xi[ta[this.id]]}text(){return Xi[ea[this.id]]}isTight(){return 2<=this.size}},Xi=[new fl(0,0,!1),new fl(1,0,!0),new fl(2,1,!1),new fl(3,1,!0),new fl(4,2,!1),new fl(5,2,!0),new fl(6,3,!1),new fl(7,3,!0)],Ki=[4,5,4,5,6,7,6,7],Zi=[5,5,5,5,7,7,7,7],Qi=[2,3,4,5,6,7,6,7],Ji=[3,3,5,5,7,7,7,7],ta=[1,1,3,3,5,5,7,7],ea=[0,1,2,3,2,3,2,3],ra={DISPLAY:Xi[0],TEXT:Xi[2],SCRIPT:Xi[4],SCRIPTSCRIPT:Xi[6]},na=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}],me(ui,"scriptFromCodepoint"),ia=[],na.forEach(t=>t.blocks.forEach(t=>ia.push(...t))),me(di,"supportedCodepoint"),aa=me(function(t,e){return"M95,"+(622+t+e)+` +c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 +c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 +c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 +s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 +c69,-144,104.5,-217.7,106.5,-221 +l`+t/2.075+" -"+t+` +c5.3,-9.3,12,-14,20,-14 +H400000v`+(40+t)+`H845.2724 +s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 +c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z +M`+(834+t)+" "+e+"h400000v"+(40+t)+"h-400000z"},"sqrtMain"),sa=me(function(t,e){return"M263,"+(601+t+e)+`c0.7,0,18,39.7,52,119 +c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 +c340,-704.7,510.7,-1060.3,512,-1067 +l`+t/2.084+" -"+t+` +c4.7,-7.3,11,-11,19,-11 +H40000v`+(40+t)+`H1012.3 +s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 +c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 +s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 +c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z +M`+(1001+t)+" "+e+"h400000v"+(40+t)+"h-400000z"},"sqrtSize1"),oa=me(function(t,e){return"M983 "+(10+t+e)+` +l`+t/3.13+" -"+t+` +c4,-6.7,10,-10,18,-10 H400000v`+(40+t)+` +H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 +s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 +c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 +c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 +c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 +c53.7,-170.3,84.5,-266.8,92.5,-289.5z +M`+(1001+t)+" "+e+"h400000v"+(40+t)+"h-400000z"},"sqrtSize2"),la=me(function(t,e){return"M424,"+(2398+t+e)+` +c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 +c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 +s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 +s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 +l`+t/4.223+" -"+t+`c4,-6.7,10,-10,18,-10 H400000 +v`+(40+t)+`H1014.6 +s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 +c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2z M`+(1001+t)+" "+e+` +h400000v`+(40+t)+"h-400000z"},"sqrtSize3"),ca=me(function(t,e){return"M473,"+(2713+t+e)+` +c339.3,-1799.3,509.3,-2700,510,-2702 l`+t/5.298+" -"+t+` +c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+t)+`H1017.7 +s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 +c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 +s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, +606zM`+(1001+t)+" "+e+"h400000v"+(40+t)+"H1017.7z"},"sqrtSize4"),ha=me(function(t){return"M400000 "+t+" H0 L"+t/2+" 0 l65 45 L145 "+(t-80)+" H400000z"},"phasePath"),ua=me(function(t,e,r){return"M702 "+(t+e)+"H400000"+(40+t)+` +H742v`+(r-54-e-t)+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 +h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 +c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 +219 661 l218 661zM702 `+e+"H400000v"+(40+t)+"H742z"},"sqrtTall"),da=me(function(t,e,r){e*=1e3;var n="";switch(t){case"sqrtMain":n=aa(e,80);break;case"sqrtSize1":n=sa(e,80);break;case"sqrtSize2":n=oa(e,80);break;case"sqrtSize3":n=la(e,80);break;case"sqrtSize4":n=ca(e,80);break;case"sqrtTall":n=ua(e,80,r)}return n},"sqrtPath"),pa=me(function(t,e){switch(t){case"⎜":return"M291 0 H417 V"+e+" H291z M291 0 H417 V"+e+" H291z";case"∣":return"M145 0 H188 V"+e+" H145z M145 0 H188 V"+e+" H145z";case"∥":return"M145 0 H188 V"+e+" H145z M145 0 H188 V"+e+" H145zM367 0 H410 V"+e+" H367z M367 0 H410 V"+e+" H367z";case"⎟":return"M457 0 H583 V"+e+" H457z M457 0 H583 V"+e+" H457z";case"⎢":return"M319 0 H403 V"+e+" H319z M319 0 H403 V"+e+" H319z";case"⎥":return"M263 0 H347 V"+e+" H263z M263 0 H347 V"+e+" H263z";case"⎪":return"M384 0 H504 V"+e+" H384z M384 0 H504 V"+e+" H384z";case"⏐":return"M312 0 H355 V"+e+" H312z M312 0 H355 V"+e+" H312z";case"‖":return"M257 0 H300 V"+e+" H257z M257 0 H300 V"+e+" H257zM478 0 H521 V"+e+" H478z M478 0 H521 V"+e+" H478z";default:return""}},"innerPath"),ga={doubleleftarrow:`M262 157 +l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 + 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 + 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 +c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 + 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 +-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 +-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z +m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l +-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 + 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 +-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 +-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 +-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 +c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 +-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 + 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 +-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 +c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 + 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 + 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 + l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 +-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 + 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 + 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 + 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 +-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 +H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 + 435 0h399565z`,leftgroupunder:`M400000 262 +H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 + 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 +-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 +-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 +-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 + 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 +-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 +-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z +m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 + 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 + 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 +-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 + 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 +-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 +v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 +-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 +-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 + 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:`M40 281 V428 H0 V94 H40 V241 H400000 v40z +M40 281 V428 H0 V94 H40 V241 H400000 v40z`,leftmapsto:`M40 281 V448H0V74H40V241H400000v40z +M40 281 V448H0V74H40V241H400000v40z`,leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 +-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 +c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:`M0 50 h400000 v40H0z m0 194h40000v40H0z +M0 50 h400000 v40H0z m0 194h40000v40H0z`,midbrace:`M200428 334 +c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 +-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 + 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 + 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 +c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 + 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 + 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 +-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 +-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z +m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 +60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 +-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z +m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 +c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 +-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z +m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 +85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 +-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z +m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 +c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 +-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 + 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 + 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 +-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 + 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l +-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 +s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 +c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 + 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 +-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 + 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 + 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 +-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 +-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 + 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 +-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 + 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z +m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 + 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 +-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 +-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 + 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 + 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 +-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z +m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 + 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 +-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 + 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:`M399960 241 V94 h40 V428 h-40 V281 H0 v-40z +M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 + 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 +-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 +-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 + 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 +-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 +-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 +-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 + 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 +c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 + 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 + 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 +-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 + 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 +-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 + 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 + 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 +-68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 +-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 + 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 +c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 + 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 +-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 + 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 + 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 + -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 +-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 + 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 + 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 + -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 +3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 +10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 +-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 +-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 +H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 +c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 +c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, +-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 +c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 +c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 +s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 +121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 +s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 +c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z +M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 +-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 +13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 +-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 +-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 +151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 +c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 +c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 +c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z +M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, +1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, +-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z +M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},fa=me(function(t,e){switch(t){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+e+` v1759 h347 v-84 +H403z M403 1759 V0 H319 V1759 v`+e+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+e+` v1759 H0 v84 H347z +M347 1759 V0 H263 V1759 v`+e+" v1759 h84z";case"vert":return"M145 15 v585 v"+e+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-e+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+e+" v585 h43z";case"doublevert":return"M145 15 v585 v"+e+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-e+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+e+` v585 h43z +M367 15 v585 v`+e+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-e+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+e+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+e+` v1715 h263 v84 H319z +MM319 602 V0 H403 V602 v`+e+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+e+` v1799 H0 v-84 H319z +MM319 602 V0 H403 V602 v`+e+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+e+` v602 h84z +M403 1759 V0 H319 V1759 v`+e+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+e+` v602 h84z +M347 1759 V0 h-84 V1759 v`+e+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 +c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, +-36,557 l0,`+(e+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, +949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 +c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, +-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 +l0,-`+(e+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, +-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, +63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 +c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(e+9)+` +c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 +c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 +c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 +c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 +l0,-`+(e+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, +-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}},"tallDelim"),ma=class{static{me(this,"DocumentFragment")}constructor(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(t){return Yi.contains(this.classes,t)}toNode(){for(var t=document.createDocumentFragment(),e=0;et.toText(),"toText");return this.children.map(t).join("")}},ya={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},va={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},xa={"Å":"A","Ð":"D","Þ":"o","å":"a","ð":"d","þ":"o","А":"A","Б":"B","В":"B","Г":"F","Д":"A","Е":"E","Ж":"K","З":"3","И":"N","Й":"N","К":"K","Л":"N","М":"M","Н":"H","О":"O","П":"N","Р":"P","С":"C","Т":"T","У":"y","Ф":"O","Х":"X","Ц":"U","Ч":"h","Ш":"W","Щ":"W","Ъ":"B","Ы":"X","Ь":"B","Э":"3","Ю":"X","Я":"R","а":"a","б":"b","в":"a","г":"r","д":"y","е":"e","ж":"m","з":"e","и":"n","й":"n","к":"n","л":"n","м":"m","н":"n","о":"o","п":"n","р":"p","с":"c","т":"o","у":"y","ф":"b","х":"x","ц":"n","ч":"n","ш":"w","щ":"w","ъ":"a","ы":"m","ь":"a","э":"e","ю":"m","я":"r"},me(pi,"setFontMetrics"),me(gi,"getCharacterMetrics"),ba={},me(fi,"getGlobalMetrics"),wa=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],ka=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Ta=me(function(t,e){return e.size<2?t:wa[t-1][e.size-1]},"sizeAtStyle"),(Ea=class i{static{me(this,"Options")}constructor(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||i.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=ka[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}extend(t){var e,r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(e in t)t.hasOwnProperty(e)&&(r[e]=t[e]);return new i(r)}havingStyle(t){return this.style===t?this:this.extend({style:t,size:Ta(this.textSize,t)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:ka[t-1]})}havingBaseStyle(t){t=t||this.style.text();var e=Ta(i.BASESIZE,t);return this.size===e&&this.textSize===i.BASESIZE&&this.style===t?this:this.extend({style:t,size:e})}havingBaseSizing(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})}withColor(t){return this.extend({color:t})}withPhantom(){return this.extend({phantom:!0})}withFont(t){return this.extend({font:t})}withTextFontFamily(t){return this.extend({fontFamily:t,font:""})}withTextFontWeight(t){return this.extend({fontWeight:t,font:""})}withTextFontShape(t){return this.extend({fontShape:t,font:""})}sizingClasses(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==i.BASESIZE?["sizing","reset-size"+this.size,"size"+i.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=fi(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}).BASESIZE=6,Ca={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},Sa={ex:!0,em:!0,mu:!0},_a=me(function(t){return(t="string"!=typeof t?t.unit:t)in Ca||t in Sa||"ex"===t},"validUnit"),Aa=me(function(t,e){var r;if(t.unit in Ca)r=Ca[t.unit]/e.fontMetrics().ptPerEm/e.sizeMultiplier;else if("mu"===t.unit)r=e.fontMetrics().cssEmPerMu;else{var n=e.style.isTight()?e.havingStyle(e.style.text()):e;if("ex"===t.unit)r=n.fontMetrics().xHeight;else{if("em"!==t.unit)throw new X("Invalid unit: '"+t.unit+"'");r=n.fontMetrics().quad}n!==e&&(r*=n.sizeMultiplier/e.sizeMultiplier)}return Math.min(t.number*r,e.maxSize)},"calculateSize"),K=me(function(t){return+t.toFixed(4)+"em"},"makeEm"),La=me(function(t){return t.filter(t=>t).join(" ")},"createClass"),Na=me(function(t,e,r){this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},e&&(e.style.isTight()&&this.classes.push("mtight"),t=e.getColor())&&(this.style.color=t)},"initNode"),Ia=me(function(t){var e,r,n=document.createElement(t);for(e in n.className=La(this.classes),this.style)this.style.hasOwnProperty(e)&&(n.style[e]=this.style[e]);for(r in this.attributes)this.attributes.hasOwnProperty(r)&&n.setAttribute(r,this.attributes[r]);for(var i=0;i/=\x00-\x1f]/,Ma=me(function(t){var e,r,n="<"+t,i=(this.classes.length&&(n+=' class="'+Yi.escape(La(this.classes))+'"'),"");for(e in this.style)this.style.hasOwnProperty(e)&&(i+=Yi.hyphenate(e)+":"+this.style[e]+";");for(r in i&&(n+=' style="'+Yi.escape(i)+'"'),this.attributes)if(this.attributes.hasOwnProperty(r)){if(Ra.test(r))throw new X("Invalid attribute name '"+r+"'");n+=" "+r+'="'+Yi.escape(this.attributes[r])+'"'}n+=">";for(var a=0;a"},"toMarkup"),Da=class{static{me(this,"Span")}constructor(t,e,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,Na.call(this,t,r,n),this.children=e||[]}setAttribute(t,e){this.attributes[t]=e}hasClass(t){return Yi.contains(this.classes,t)}toNode(){return Ia.call(this,"span")}toMarkup(){return Ma.call(this,"span")}},Oa=class{static{me(this,"Anchor")}constructor(t,e,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Na.call(this,e,n),this.children=r||[],this.setAttribute("href",t)}setAttribute(t,e){this.attributes[t]=e}hasClass(t){return Yi.contains(this.classes,t)}toNode(){return Ia.call(this,"a")}toMarkup(){return Ma.call(this,"a")}},Pa=class{static{me(this,"Img")}constructor(t,e,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=e,this.src=t,this.classes=["mord"],this.style=r}hasClass(t){return Yi.contains(this.classes,t)}toNode(){var t,e=document.createElement("img");for(t in e.src=this.src,e.alt=this.alt,e.className="mord",this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e}toMarkup(){var t,e=''+Yi.escape(this.alt)+'"}},Ba={"î":"ı̂","ï":"ı̈","í":"ı́","ì":"ı̀"},$a=class{static{me(this,"SymbolNode")}constructor(t,e,r,n,i,a,s,o){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=t,this.height=e||0,this.depth=r||0,this.italic=n||0,this.skew=i||0,this.width=a||0,this.classes=s||[],this.style=o||{},this.maxFontSize=0,(t=ui(this.text.charCodeAt(0)))&&this.classes.push(t+"_fallback"),/[îïíì]/.test(this.text)&&(this.text=Ba[this.text])}hasClass(t){return Yi.contains(this.classes,t)}toNode(){var t,e=document.createTextNode(this.text),r=null;for(t in 0":i}},Fa=class{static{me(this,"SvgNode")}constructor(t,e){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=e||{}}toNode(){var t,e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r"}},za=class{static{me(this,"PathNode")}constructor(t,e){this.pathName=void 0,this.alternate=void 0,this.pathName=t,this.alternate=e}toNode(){var t=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?t.setAttribute("d",this.alternate):t.setAttribute("d",ga[this.pathName]),t}toMarkup(){return this.alternate?'':''}},Ga=class{static{me(this,"LineNode")}constructor(t){this.attributes=void 0,this.attributes=t||{}}toNode(){var t,e=document.createElementNS("http://www.w3.org/2000/svg","line");for(t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e}toMarkup(){var t,e=""}},me(mi,"assertSymbolDomNode"),me(yi,"assertSpan"),Ua={bin:1,close:1,inner:1,open:1,punct:1,rel:1},qa={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},ja={math:{},text:{}},me(e,"defineSymbol"),u="text",f="ams",Bl="accent-token",g="bin",cl="close",fl="inner",Wa="mathord",Pl="op-token",tl="open",pl="punct",Jo="spacing",p="textord",e(h="math",d="main",m="rel","≡","\\equiv",!0),e(h,d,m,"≺","\\prec",!0),e(h,d,m,"≻","\\succ",!0),e(h,d,m,"∼","\\sim",!0),e(h,d,m,"⊥","\\perp"),e(h,d,m,"⪯","\\preceq",!0),e(h,d,m,"⪰","\\succeq",!0),e(h,d,m,"≃","\\simeq",!0),e(h,d,m,"∣","\\mid",!0),e(h,d,m,"≪","\\ll",!0),e(h,d,m,"≫","\\gg",!0),e(h,d,m,"≍","\\asymp",!0),e(h,d,m,"∥","\\parallel"),e(h,d,m,"⋈","\\bowtie",!0),e(h,d,m,"⌣","\\smile",!0),e(h,d,m,"⊑","\\sqsubseteq",!0),e(h,d,m,"⊒","\\sqsupseteq",!0),e(h,d,m,"≐","\\doteq",!0),e(h,d,m,"⌢","\\frown",!0),e(h,d,m,"∋","\\ni",!0),e(h,d,m,"∝","\\propto",!0),e(h,d,m,"⊢","\\vdash",!0),e(h,d,m,"⊣","\\dashv",!0),e(h,d,m,"∋","\\owns"),e(h,d,pl,".","\\ldotp"),e(h,d,pl,"⋅","\\cdotp"),e(h,d,p,"#","\\#"),e(u,d,p,"#","\\#"),e(h,d,p,"&","\\&"),e(u,d,p,"&","\\&"),e(h,d,p,"ℵ","\\aleph",!0),e(h,d,p,"∀","\\forall",!0),e(h,d,p,"ℏ","\\hbar",!0),e(h,d,p,"∃","\\exists",!0),e(h,d,p,"∇","\\nabla",!0),e(h,d,p,"♭","\\flat",!0),e(h,d,p,"ℓ","\\ell",!0),e(h,d,p,"♮","\\natural",!0),e(h,d,p,"♣","\\clubsuit",!0),e(h,d,p,"℘","\\wp",!0),e(h,d,p,"♯","\\sharp",!0),e(h,d,p,"♢","\\diamondsuit",!0),e(h,d,p,"ℜ","\\Re",!0),e(h,d,p,"♡","\\heartsuit",!0),e(h,d,p,"ℑ","\\Im",!0),e(h,d,p,"♠","\\spadesuit",!0),e(h,d,p,"§","\\S",!0),e(u,d,p,"§","\\S"),e(h,d,p,"¶","\\P",!0),e(u,d,p,"¶","\\P"),e(h,d,p,"†","\\dag"),e(u,d,p,"†","\\dag"),e(u,d,p,"†","\\textdagger"),e(h,d,p,"‡","\\ddag"),e(u,d,p,"‡","\\ddag"),e(u,d,p,"‡","\\textdaggerdbl"),e(h,d,cl,"⎱","\\rmoustache",!0),e(h,d,tl,"⎰","\\lmoustache",!0),e(h,d,cl,"⟯","\\rgroup",!0),e(h,d,tl,"⟮","\\lgroup",!0),e(h,d,g,"∓","\\mp",!0),e(h,d,g,"⊖","\\ominus",!0),e(h,d,g,"⊎","\\uplus",!0),e(h,d,g,"⊓","\\sqcap",!0),e(h,d,g,"∗","\\ast"),e(h,d,g,"⊔","\\sqcup",!0),e(h,d,g,"◯","\\bigcirc",!0),e(h,d,g,"∙","\\bullet",!0),e(h,d,g,"‡","\\ddagger"),e(h,d,g,"≀","\\wr",!0),e(h,d,g,"⨿","\\amalg"),e(h,d,g,"&","\\And"),e(h,d,m,"⟵","\\longleftarrow",!0),e(h,d,m,"⇐","\\Leftarrow",!0),e(h,d,m,"⟸","\\Longleftarrow",!0),e(h,d,m,"⟶","\\longrightarrow",!0),e(h,d,m,"⇒","\\Rightarrow",!0),e(h,d,m,"⟹","\\Longrightarrow",!0),e(h,d,m,"↔","\\leftrightarrow",!0),e(h,d,m,"⟷","\\longleftrightarrow",!0),e(h,d,m,"⇔","\\Leftrightarrow",!0),e(h,d,m,"⟺","\\Longleftrightarrow",!0),e(h,d,m,"↦","\\mapsto",!0),e(h,d,m,"⟼","\\longmapsto",!0),e(h,d,m,"↗","\\nearrow",!0),e(h,d,m,"↩","\\hookleftarrow",!0),e(h,d,m,"↪","\\hookrightarrow",!0),e(h,d,m,"↘","\\searrow",!0),e(h,d,m,"↼","\\leftharpoonup",!0),e(h,d,m,"⇀","\\rightharpoonup",!0),e(h,d,m,"↙","\\swarrow",!0),e(h,d,m,"↽","\\leftharpoondown",!0),e(h,d,m,"⇁","\\rightharpoondown",!0),e(h,d,m,"↖","\\nwarrow",!0),e(h,d,m,"⇌","\\rightleftharpoons",!0),e(h,f,m,"≮","\\nless",!0),e(h,f,m,"","\\@nleqslant"),e(h,f,m,"","\\@nleqq"),e(h,f,m,"⪇","\\lneq",!0),e(h,f,m,"≨","\\lneqq",!0),e(h,f,m,"","\\@lvertneqq"),e(h,f,m,"⋦","\\lnsim",!0),e(h,f,m,"⪉","\\lnapprox",!0),e(h,f,m,"⊀","\\nprec",!0),e(h,f,m,"⋠","\\npreceq",!0),e(h,f,m,"⋨","\\precnsim",!0),e(h,f,m,"⪹","\\precnapprox",!0),e(h,f,m,"≁","\\nsim",!0),e(h,f,m,"","\\@nshortmid"),e(h,f,m,"∤","\\nmid",!0),e(h,f,m,"⊬","\\nvdash",!0),e(h,f,m,"⊭","\\nvDash",!0),e(h,f,m,"⋪","\\ntriangleleft"),e(h,f,m,"⋬","\\ntrianglelefteq",!0),e(h,f,m,"⊊","\\subsetneq",!0),e(h,f,m,"","\\@varsubsetneq"),e(h,f,m,"⫋","\\subsetneqq",!0),e(h,f,m,"","\\@varsubsetneqq"),e(h,f,m,"≯","\\ngtr",!0),e(h,f,m,"","\\@ngeqslant"),e(h,f,m,"","\\@ngeqq"),e(h,f,m,"⪈","\\gneq",!0),e(h,f,m,"≩","\\gneqq",!0),e(h,f,m,"","\\@gvertneqq"),e(h,f,m,"⋧","\\gnsim",!0),e(h,f,m,"⪊","\\gnapprox",!0),e(h,f,m,"⊁","\\nsucc",!0),e(h,f,m,"⋡","\\nsucceq",!0),e(h,f,m,"⋩","\\succnsim",!0),e(h,f,m,"⪺","\\succnapprox",!0),e(h,f,m,"≆","\\ncong",!0),e(h,f,m,"","\\@nshortparallel"),e(h,f,m,"∦","\\nparallel",!0),e(h,f,m,"⊯","\\nVDash",!0),e(h,f,m,"⋫","\\ntriangleright"),e(h,f,m,"⋭","\\ntrianglerighteq",!0),e(h,f,m,"","\\@nsupseteqq"),e(h,f,m,"⊋","\\supsetneq",!0),e(h,f,m,"","\\@varsupsetneq"),e(h,f,m,"⫌","\\supsetneqq",!0),e(h,f,m,"","\\@varsupsetneqq"),e(h,f,m,"⊮","\\nVdash",!0),e(h,f,m,"⪵","\\precneqq",!0),e(h,f,m,"⪶","\\succneqq",!0),e(h,f,m,"","\\@nsubseteqq"),e(h,f,g,"⊴","\\unlhd"),e(h,f,g,"⊵","\\unrhd"),e(h,f,m,"↚","\\nleftarrow",!0),e(h,f,m,"↛","\\nrightarrow",!0),e(h,f,m,"⇍","\\nLeftarrow",!0),e(h,f,m,"⇏","\\nRightarrow",!0),e(h,f,m,"↮","\\nleftrightarrow",!0),e(h,f,m,"⇎","\\nLeftrightarrow",!0),e(h,f,m,"△","\\vartriangle"),e(h,f,p,"ℏ","\\hslash"),e(h,f,p,"▽","\\triangledown"),e(h,f,p,"◊","\\lozenge"),e(h,f,p,"Ⓢ","\\circledS"),e(h,f,p,"®","\\circledR"),e(u,f,p,"®","\\circledR"),e(h,f,p,"∡","\\measuredangle",!0),e(h,f,p,"∄","\\nexists"),e(h,f,p,"℧","\\mho"),e(h,f,p,"Ⅎ","\\Finv",!0),e(h,f,p,"⅁","\\Game",!0),e(h,f,p,"‵","\\backprime"),e(h,f,p,"▲","\\blacktriangle"),e(h,f,p,"▼","\\blacktriangledown"),e(h,f,p,"■","\\blacksquare"),e(h,f,p,"⧫","\\blacklozenge"),e(h,f,p,"★","\\bigstar"),e(h,f,p,"∢","\\sphericalangle",!0),e(h,f,p,"∁","\\complement",!0),e(h,f,p,"ð","\\eth",!0),e(u,d,p,"ð","ð"),e(h,f,p,"╱","\\diagup"),e(h,f,p,"╲","\\diagdown"),e(h,f,p,"□","\\square"),e(h,f,p,"□","\\Box"),e(h,f,p,"◊","\\Diamond"),e(h,f,p,"¥","\\yen",!0),e(u,f,p,"¥","\\yen",!0),e(h,f,p,"✓","\\checkmark",!0),e(u,f,p,"✓","\\checkmark"),e(h,f,p,"ℶ","\\beth",!0),e(h,f,p,"ℸ","\\daleth",!0),e(h,f,p,"ℷ","\\gimel",!0),e(h,f,p,"ϝ","\\digamma",!0),e(h,f,p,"ϰ","\\varkappa"),e(h,f,tl,"┌","\\@ulcorner",!0),e(h,f,cl,"┐","\\@urcorner",!0),e(h,f,tl,"└","\\@llcorner",!0),e(h,f,cl,"┘","\\@lrcorner",!0),e(h,f,m,"≦","\\leqq",!0),e(h,f,m,"⩽","\\leqslant",!0),e(h,f,m,"⪕","\\eqslantless",!0),e(h,f,m,"≲","\\lesssim",!0),e(h,f,m,"⪅","\\lessapprox",!0),e(h,f,m,"≊","\\approxeq",!0),e(h,f,g,"⋖","\\lessdot"),e(h,f,m,"⋘","\\lll",!0),e(h,f,m,"≶","\\lessgtr",!0),e(h,f,m,"⋚","\\lesseqgtr",!0),e(h,f,m,"⪋","\\lesseqqgtr",!0),e(h,f,m,"≑","\\doteqdot"),e(h,f,m,"≓","\\risingdotseq",!0),e(h,f,m,"≒","\\fallingdotseq",!0),e(h,f,m,"∽","\\backsim",!0),e(h,f,m,"⋍","\\backsimeq",!0),e(h,f,m,"⫅","\\subseteqq",!0),e(h,f,m,"⋐","\\Subset",!0),e(h,f,m,"⊏","\\sqsubset",!0),e(h,f,m,"≼","\\preccurlyeq",!0),e(h,f,m,"⋞","\\curlyeqprec",!0),e(h,f,m,"≾","\\precsim",!0),e(h,f,m,"⪷","\\precapprox",!0),e(h,f,m,"⊲","\\vartriangleleft"),e(h,f,m,"⊴","\\trianglelefteq"),e(h,f,m,"⊨","\\vDash",!0),e(h,f,m,"⊪","\\Vvdash",!0),e(h,f,m,"⌣","\\smallsmile"),e(h,f,m,"⌢","\\smallfrown"),e(h,f,m,"≏","\\bumpeq",!0),e(h,f,m,"≎","\\Bumpeq",!0),e(h,f,m,"≧","\\geqq",!0),e(h,f,m,"⩾","\\geqslant",!0),e(h,f,m,"⪖","\\eqslantgtr",!0),e(h,f,m,"≳","\\gtrsim",!0),e(h,f,m,"⪆","\\gtrapprox",!0),e(h,f,g,"⋗","\\gtrdot"),e(h,f,m,"⋙","\\ggg",!0),e(h,f,m,"≷","\\gtrless",!0),e(h,f,m,"⋛","\\gtreqless",!0),e(h,f,m,"⪌","\\gtreqqless",!0),e(h,f,m,"≖","\\eqcirc",!0),e(h,f,m,"≗","\\circeq",!0),e(h,f,m,"≜","\\triangleq",!0),e(h,f,m,"∼","\\thicksim"),e(h,f,m,"≈","\\thickapprox"),e(h,f,m,"⫆","\\supseteqq",!0),e(h,f,m,"⋑","\\Supset",!0),e(h,f,m,"⊐","\\sqsupset",!0),e(h,f,m,"≽","\\succcurlyeq",!0),e(h,f,m,"⋟","\\curlyeqsucc",!0),e(h,f,m,"≿","\\succsim",!0),e(h,f,m,"⪸","\\succapprox",!0),e(h,f,m,"⊳","\\vartriangleright"),e(h,f,m,"⊵","\\trianglerighteq"),e(h,f,m,"⊩","\\Vdash",!0),e(h,f,m,"∣","\\shortmid"),e(h,f,m,"∥","\\shortparallel"),e(h,f,m,"≬","\\between",!0),e(h,f,m,"⋔","\\pitchfork",!0),e(h,f,m,"∝","\\varpropto"),e(h,f,m,"◀","\\blacktriangleleft"),e(h,f,m,"∴","\\therefore",!0),e(h,f,m,"∍","\\backepsilon"),e(h,f,m,"▶","\\blacktriangleright"),e(h,f,m,"∵","\\because",!0),e(h,f,m,"⋘","\\llless"),e(h,f,m,"⋙","\\gggtr"),e(h,f,g,"⊲","\\lhd"),e(h,f,g,"⊳","\\rhd"),e(h,f,m,"≂","\\eqsim",!0),e(h,d,m,"⋈","\\Join"),e(h,f,m,"≑","\\Doteq",!0),e(h,f,g,"∔","\\dotplus",!0),e(h,f,g,"∖","\\smallsetminus"),e(h,f,g,"⋒","\\Cap",!0),e(h,f,g,"⋓","\\Cup",!0),e(h,f,g,"⩞","\\doublebarwedge",!0),e(h,f,g,"⊟","\\boxminus",!0),e(h,f,g,"⊞","\\boxplus",!0),e(h,f,g,"⋇","\\divideontimes",!0),e(h,f,g,"⋉","\\ltimes",!0),e(h,f,g,"⋊","\\rtimes",!0),e(h,f,g,"⋋","\\leftthreetimes",!0),e(h,f,g,"⋌","\\rightthreetimes",!0),e(h,f,g,"⋏","\\curlywedge",!0),e(h,f,g,"⋎","\\curlyvee",!0),e(h,f,g,"⊝","\\circleddash",!0),e(h,f,g,"⊛","\\circledast",!0),e(h,f,g,"⋅","\\centerdot"),e(h,f,g,"⊺","\\intercal",!0),e(h,f,g,"⋒","\\doublecap"),e(h,f,g,"⋓","\\doublecup"),e(h,f,g,"⊠","\\boxtimes",!0),e(h,f,m,"⇢","\\dashrightarrow",!0),e(h,f,m,"⇠","\\dashleftarrow",!0),e(h,f,m,"⇇","\\leftleftarrows",!0),e(h,f,m,"⇆","\\leftrightarrows",!0),e(h,f,m,"⇚","\\Lleftarrow",!0),e(h,f,m,"↞","\\twoheadleftarrow",!0),e(h,f,m,"↢","\\leftarrowtail",!0),e(h,f,m,"↫","\\looparrowleft",!0),e(h,f,m,"⇋","\\leftrightharpoons",!0),e(h,f,m,"↶","\\curvearrowleft",!0),e(h,f,m,"↺","\\circlearrowleft",!0),e(h,f,m,"↰","\\Lsh",!0),e(h,f,m,"⇈","\\upuparrows",!0),e(h,f,m,"↿","\\upharpoonleft",!0),e(h,f,m,"⇃","\\downharpoonleft",!0),e(h,d,m,"⊶","\\origof",!0),e(h,d,m,"⊷","\\imageof",!0),e(h,f,m,"⊸","\\multimap",!0),e(h,f,m,"↭","\\leftrightsquigarrow",!0),e(h,f,m,"⇉","\\rightrightarrows",!0),e(h,f,m,"⇄","\\rightleftarrows",!0),e(h,f,m,"↠","\\twoheadrightarrow",!0),e(h,f,m,"↣","\\rightarrowtail",!0),e(h,f,m,"↬","\\looparrowright",!0),e(h,f,m,"↷","\\curvearrowright",!0),e(h,f,m,"↻","\\circlearrowright",!0),e(h,f,m,"↱","\\Rsh",!0),e(h,f,m,"⇊","\\downdownarrows",!0),e(h,f,m,"↾","\\upharpoonright",!0),e(h,f,m,"⇂","\\downharpoonright",!0),e(h,f,m,"⇝","\\rightsquigarrow",!0),e(h,f,m,"⇝","\\leadsto"),e(h,f,m,"⇛","\\Rrightarrow",!0),e(h,f,m,"↾","\\restriction"),e(h,d,p,"‘","`"),e(h,d,p,"$","\\$"),e(u,d,p,"$","\\$"),e(u,d,p,"$","\\textdollar"),e(h,d,p,"%","\\%"),e(u,d,p,"%","\\%"),e(h,d,p,"_","\\_"),e(u,d,p,"_","\\_"),e(u,d,p,"_","\\textunderscore"),e(h,d,p,"∠","\\angle",!0),e(h,d,p,"∞","\\infty",!0),e(h,d,p,"′","\\prime"),e(h,d,p,"△","\\triangle"),e(h,d,p,"Γ","\\Gamma",!0),e(h,d,p,"Δ","\\Delta",!0),e(h,d,p,"Θ","\\Theta",!0),e(h,d,p,"Λ","\\Lambda",!0),e(h,d,p,"Ξ","\\Xi",!0),e(h,d,p,"Π","\\Pi",!0),e(h,d,p,"Σ","\\Sigma",!0),e(h,d,p,"Υ","\\Upsilon",!0),e(h,d,p,"Φ","\\Phi",!0),e(h,d,p,"Ψ","\\Psi",!0),e(h,d,p,"Ω","\\Omega",!0),e(h,d,p,"A","Α"),e(h,d,p,"B","Β"),e(h,d,p,"E","Ε"),e(h,d,p,"Z","Ζ"),e(h,d,p,"H","Η"),e(h,d,p,"I","Ι"),e(h,d,p,"K","Κ"),e(h,d,p,"M","Μ"),e(h,d,p,"N","Ν"),e(h,d,p,"O","Ο"),e(h,d,p,"P","Ρ"),e(h,d,p,"T","Τ"),e(h,d,p,"X","Χ"),e(h,d,p,"¬","\\neg",!0),e(h,d,p,"¬","\\lnot"),e(h,d,p,"⊤","\\top"),e(h,d,p,"⊥","\\bot"),e(h,d,p,"∅","\\emptyset"),e(h,f,p,"∅","\\varnothing"),e(h,d,Wa,"α","\\alpha",!0),e(h,d,Wa,"β","\\beta",!0),e(h,d,Wa,"γ","\\gamma",!0),e(h,d,Wa,"δ","\\delta",!0),e(h,d,Wa,"ϵ","\\epsilon",!0),e(h,d,Wa,"ζ","\\zeta",!0),e(h,d,Wa,"η","\\eta",!0),e(h,d,Wa,"θ","\\theta",!0),e(h,d,Wa,"ι","\\iota",!0),e(h,d,Wa,"κ","\\kappa",!0),e(h,d,Wa,"λ","\\lambda",!0),e(h,d,Wa,"μ","\\mu",!0),e(h,d,Wa,"ν","\\nu",!0),e(h,d,Wa,"ξ","\\xi",!0),e(h,d,Wa,"ο","\\omicron",!0),e(h,d,Wa,"π","\\pi",!0),e(h,d,Wa,"ρ","\\rho",!0),e(h,d,Wa,"σ","\\sigma",!0),e(h,d,Wa,"τ","\\tau",!0),e(h,d,Wa,"υ","\\upsilon",!0),e(h,d,Wa,"ϕ","\\phi",!0),e(h,d,Wa,"χ","\\chi",!0),e(h,d,Wa,"ψ","\\psi",!0),e(h,d,Wa,"ω","\\omega",!0),e(h,d,Wa,"ε","\\varepsilon",!0),e(h,d,Wa,"ϑ","\\vartheta",!0),e(h,d,Wa,"ϖ","\\varpi",!0),e(h,d,Wa,"ϱ","\\varrho",!0),e(h,d,Wa,"ς","\\varsigma",!0),e(h,d,Wa,"φ","\\varphi",!0),e(h,d,g,"∗","*",!0),e(h,d,g,"+","+"),e(h,d,g,"−","-",!0),e(h,d,g,"⋅","\\cdot",!0),e(h,d,g,"∘","\\circ",!0),e(h,d,g,"÷","\\div",!0),e(h,d,g,"±","\\pm",!0),e(h,d,g,"×","\\times",!0),e(h,d,g,"∩","\\cap",!0),e(h,d,g,"∪","\\cup",!0),e(h,d,g,"∖","\\setminus",!0),e(h,d,g,"∧","\\land"),e(h,d,g,"∨","\\lor"),e(h,d,g,"∧","\\wedge",!0),e(h,d,g,"∨","\\vee",!0),e(h,d,p,"√","\\surd"),e(h,d,tl,"⟨","\\langle",!0),e(h,d,tl,"∣","\\lvert"),e(h,d,tl,"∥","\\lVert"),e(h,d,cl,"?","?"),e(h,d,cl,"!","!"),e(h,d,cl,"⟩","\\rangle",!0),e(h,d,cl,"∣","\\rvert"),e(h,d,cl,"∥","\\rVert"),e(h,d,m,"=","="),e(h,d,m,":",":"),e(h,d,m,"≈","\\approx",!0),e(h,d,m,"≅","\\cong",!0),e(h,d,m,"≥","\\ge"),e(h,d,m,"≥","\\geq",!0),e(h,d,m,"←","\\gets"),e(h,d,m,">","\\gt",!0),e(h,d,m,"∈","\\in",!0),e(h,d,m,"","\\@not"),e(h,d,m,"⊂","\\subset",!0),e(h,d,m,"⊃","\\supset",!0),e(h,d,m,"⊆","\\subseteq",!0),e(h,d,m,"⊇","\\supseteq",!0),e(h,f,m,"⊈","\\nsubseteq",!0),e(h,f,m,"⊉","\\nsupseteq",!0),e(h,d,m,"⊨","\\models"),e(h,d,m,"←","\\leftarrow",!0),e(h,d,m,"≤","\\le"),e(h,d,m,"≤","\\leq",!0),e(h,d,m,"<","\\lt",!0),e(h,d,m,"→","\\rightarrow",!0),e(h,d,m,"→","\\to"),e(h,f,m,"≱","\\ngeq",!0),e(h,f,m,"≰","\\nleq",!0),e(h,d,Jo," ","\\ "),e(h,d,Jo," ","\\space"),e(h,d,Jo," ","\\nobreakspace"),e(u,d,Jo," ","\\ "),e(u,d,Jo," "," "),e(u,d,Jo," ","\\space"),e(u,d,Jo," ","\\nobreakspace"),e(h,d,Jo,null,"\\nobreak"),e(h,d,Jo,null,"\\allowbreak"),e(h,d,pl,",",","),e(h,d,pl,";",";"),e(h,f,g,"⊼","\\barwedge",!0),e(h,f,g,"⊻","\\veebar",!0),e(h,d,g,"⊙","\\odot",!0),e(h,d,g,"⊕","\\oplus",!0),e(h,d,g,"⊗","\\otimes",!0),e(h,d,p,"∂","\\partial",!0),e(h,d,g,"⊘","\\oslash",!0),e(h,f,g,"⊚","\\circledcirc",!0),e(h,f,g,"⊡","\\boxdot",!0),e(h,d,g,"△","\\bigtriangleup"),e(h,d,g,"▽","\\bigtriangledown"),e(h,d,g,"†","\\dagger"),e(h,d,g,"⋄","\\diamond"),e(h,d,g,"⋆","\\star"),e(h,d,g,"◃","\\triangleleft"),e(h,d,g,"▹","\\triangleright"),e(h,d,tl,"{","\\{"),e(u,d,p,"{","\\{"),e(u,d,p,"{","\\textbraceleft"),e(h,d,cl,"}","\\}"),e(u,d,p,"}","\\}"),e(u,d,p,"}","\\textbraceright"),e(h,d,tl,"{","\\lbrace"),e(h,d,cl,"}","\\rbrace"),e(h,d,tl,"[","\\lbrack",!0),e(u,d,p,"[","\\lbrack",!0),e(h,d,cl,"]","\\rbrack",!0),e(u,d,p,"]","\\rbrack",!0),e(h,d,tl,"(","\\lparen",!0),e(h,d,cl,")","\\rparen",!0),e(u,d,p,"<","\\textless",!0),e(u,d,p,">","\\textgreater",!0),e(h,d,tl,"⌊","\\lfloor",!0),e(h,d,cl,"⌋","\\rfloor",!0),e(h,d,tl,"⌈","\\lceil",!0),e(h,d,cl,"⌉","\\rceil",!0),e(h,d,p,"\\","\\backslash"),e(h,d,p,"∣","|"),e(h,d,p,"∣","\\vert"),e(u,d,p,"|","\\textbar",!0),e(h,d,p,"∥","\\|"),e(h,d,p,"∥","\\Vert"),e(u,d,p,"∥","\\textbardbl"),e(u,d,p,"~","\\textasciitilde"),e(u,d,p,"\\","\\textbackslash"),e(u,d,p,"^","\\textasciicircum"),e(h,d,m,"↑","\\uparrow",!0),e(h,d,m,"⇑","\\Uparrow",!0),e(h,d,m,"↓","\\downarrow",!0),e(h,d,m,"⇓","\\Downarrow",!0),e(h,d,m,"↕","\\updownarrow",!0),e(h,d,m,"⇕","\\Updownarrow",!0),e(h,d,Pl,"∐","\\coprod"),e(h,d,Pl,"⋁","\\bigvee"),e(h,d,Pl,"⋀","\\bigwedge"),e(h,d,Pl,"⨄","\\biguplus"),e(h,d,Pl,"⋂","\\bigcap"),e(h,d,Pl,"⋃","\\bigcup"),e(h,d,Pl,"∫","\\int"),e(h,d,Pl,"∫","\\intop"),e(h,d,Pl,"∬","\\iint"),e(h,d,Pl,"∭","\\iiint"),e(h,d,Pl,"∏","\\prod"),e(h,d,Pl,"∑","\\sum"),e(h,d,Pl,"⨂","\\bigotimes"),e(h,d,Pl,"⨁","\\bigoplus"),e(h,d,Pl,"⨀","\\bigodot"),e(h,d,Pl,"∮","\\oint"),e(h,d,Pl,"∯","\\oiint"),e(h,d,Pl,"∰","\\oiiint"),e(h,d,Pl,"⨆","\\bigsqcup"),e(h,d,Pl,"∫","\\smallint"),e(u,d,fl,"…","\\textellipsis"),e(h,d,fl,"…","\\mathellipsis"),e(u,d,fl,"…","\\ldots",!0),e(h,d,fl,"…","\\ldots",!0),e(h,d,fl,"⋯","\\@cdots",!0),e(h,d,fl,"⋱","\\ddots",!0),e(h,d,p,"⋮","\\varvdots"),e(u,d,p,"⋮","\\varvdots"),e(h,d,Bl,"ˊ","\\acute"),e(h,d,Bl,"ˋ","\\grave"),e(h,d,Bl,"¨","\\ddot"),e(h,d,Bl,"~","\\tilde"),e(h,d,Bl,"ˉ","\\bar"),e(h,d,Bl,"˘","\\breve"),e(h,d,Bl,"ˇ","\\check"),e(h,d,Bl,"^","\\hat"),e(h,d,Bl,"⃗","\\vec"),e(h,d,Bl,"˙","\\dot"),e(h,d,Bl,"˚","\\mathring"),e(h,d,Wa,"","\\@imath"),e(h,d,Wa,"","\\@jmath"),e(h,d,p,"ı","ı"),e(h,d,p,"ȷ","ȷ"),e(u,d,p,"ı","\\i",!0),e(u,d,p,"ȷ","\\j",!0),e(u,d,p,"ß","\\ss",!0),e(u,d,p,"æ","\\ae",!0),e(u,d,p,"œ","\\oe",!0),e(u,d,p,"ø","\\o",!0),e(u,d,p,"Æ","\\AE",!0),e(u,d,p,"Œ","\\OE",!0),e(u,d,p,"Ø","\\O",!0),e(u,d,Bl,"ˊ","\\'"),e(u,d,Bl,"ˋ","\\`"),e(u,d,Bl,"ˆ","\\^"),e(u,d,Bl,"˜","\\~"),e(u,d,Bl,"ˉ","\\="),e(u,d,Bl,"˘","\\u"),e(u,d,Bl,"˙","\\."),e(u,d,Bl,"¸","\\c"),e(u,d,Bl,"˚","\\r"),e(u,d,Bl,"ˇ","\\v"),e(u,d,Bl,"¨",'\\"'),e(u,d,Bl,"˝","\\H"),e(u,d,Bl,"◯","\\textcircled"),Ya={"--":!0,"---":!0,"``":!0,"''":!0},e(u,d,p,"–","--",!0),e(u,d,p,"–","\\textendash"),e(u,d,p,"—","---",!0),e(u,d,p,"—","\\textemdash"),e(u,d,p,"‘","`",!0),e(u,d,p,"‘","\\textquoteleft"),e(u,d,p,"’","'",!0),e(u,d,p,"’","\\textquoteright"),e(u,d,p,"“","``",!0),e(u,d,p,"“","\\textquotedblleft"),e(u,d,p,"”","''",!0),e(u,d,p,"”","\\textquotedblright"),e(h,d,p,"°","\\degree",!0),e(u,d,p,"°","\\degree"),e(u,d,p,"°","\\textdegree",!0),e(h,d,p,"£","\\pounds"),e(h,d,p,"£","\\mathsterling",!0),e(u,d,p,"£","\\pounds"),e(u,d,p,"£","\\textsterling",!0),e(h,f,p,"✠","\\maltese"),e(u,f,p,"✠","\\maltese"),Ha='0123456789/@."',Xa=0;Xa{if(La(t.classes)!==La(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(1===t.classes.length){var r=t.classes[0];if("mbin"===r||"mord"===r)return!1}for(var n in t.style)if(t.style.hasOwnProperty(n)&&t.style[n]!==e.style[n])return!1;for(var i in e.style)if(e.style.hasOwnProperty(i)&&t.style[i]!==e.style[i])return!1;return!0},"canCombine"),g=me(t=>{for(var e=0;ee&&(e=a.height),rnew Da(t,e,r,n),"makeSvgSpan"),tl=me(function(t,e,r){return(t=vs([t],[],e)).height=Math.max(r||e.fontMetrics().defaultRuleThickness,e.minRuleThickness),t.style.borderBottomWidth=K(t.height),t.maxFontSize=1,t},"makeLineSpan"),cl=me(function(t,e,r,n){return t=new Oa(t,e,r,n),ys(t),t},"makeAnchor"),bs=me(function(t){return t=new ma(t),ys(t),t},"makeFragment"),m=me(function(t,e){return t instanceof ma?vs([],[t],e):t},"wrapFragment"),ws=me(function(t){if("individualShift"===t.positionType){for(var e=t.children,r=[e[0]],n=-e[0].shift-e[0].elem.depth,i=n,a=1;a{var r=vs(["mspace"],[],e),t=Aa(t,e);return r.style.marginRight=K(t),r},"makeGlue"),ks=me(function(t,e,r){var n="";switch(t){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=t}return n+"-"+("textbf"===e&&"textit"===r?"BoldItalic":"textbf"===e?"Bold":"textit"===e?"Italic":"Regular")},"retrieveTextFontName"),Ts={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Es={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Bl=me(function(t,e){var[t,r,n]=Es[t],t=new za(t),t=new Fa([t],{width:K(r),height:K(n),style:"width:"+K(r),viewBox:"0 0 "+1e3*r+" "+1e3*n,preserveAspectRatio:"xMinYMin"});return(t=xs(["overlay"],[t],e)).height=n,t.style.height=K(n),t.style.width=K(r),t},"staticSvg"),Z={fontMap:Ts,makeSymbol:gs,mathsym:Jo,makeSpan:vs,makeSvgSpan:xs,makeLineSpan:tl,makeAnchor:cl,makeFragment:bs,wrapFragment:m,makeVList:Pl,makeOrd:pl,makeGlue:fl,staticSvg:Bl,svgData:Es,tryCombineChars:g},Cs={mord:{mop:f={number:3,unit:"mu"},mbin:Jo={number:4,unit:"mu"},mrel:tl={number:5,unit:"mu"},minner:f},mop:{mord:f,mop:f,mrel:tl,minner:f},mbin:{mord:Jo,mop:Jo,mopen:Jo,minner:Jo},mrel:{mord:tl,mop:tl,mopen:tl,minner:tl},mopen:{},mclose:{mop:f,mbin:Jo,mrel:tl,minner:f},mpunct:{mord:f,mop:f,mrel:tl,mopen:f,mclose:f,mpunct:f,minner:f},minner:{mord:f,mop:f,mbin:Jo,mrel:tl,mopen:f,mpunct:f,minner:f}},Ss={mord:{mop:f},mop:{mord:f,mop:f},mbin:{},mrel:{},mopen:{},mclose:{mop:f},mpunct:{},minner:{mop:f}},_s={},As={},Ls={},me(o,"defineFunction"),me(vi,"defineFunctionBuilders"),Ns=me(function(t){return"ordgroup"===t.type&&1===t.body.length?t.body[0]:t},"normalizeArgument"),Is=me(function(t){return"ordgroup"===t.type?t.body:[t]},"ordargument"),Rs=Z.makeSpan,Ms=["leftmost","mbin","mopen","mrel","mop","mpunct"],Ds=["rightmost","mrel","mclose","mpunct"],Os={display:ra.DISPLAY,text:ra.TEXT,script:ra.SCRIPT,scriptscript:ra.SCRIPTSCRIPT},Ps={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},Bs=me(function(t,e,r,n){void 0===n&&(n=[null,null]);for(var i,a,s=[],o=0;o{var r=e.classes[0],n=t.classes[0];"mbin"===r&&Yi.contains(Ds,n)?e.classes[0]="mord":"mbin"===n&&Yi.contains(Ms,r)&&(t.classes[0]="mord")},{node:a},n,r="root"===r),$s(s,(t,e)=>{var e=Gs(e),r=Gs(t);if(t=e&&r?(t.hasClass("mtight")?Ss:Cs)[e][r]:null)return Z.makeGlue(t,i)},{node:a},n,r)),s},"buildExpression"),$s=me(function t(r,e,n,i,a){i&&r.push(i);for(var s=0;st=>{r.splice(e+1,0,t),s++})(s))}i&&r.pop()},"traverseNonSpaceNodes"),Fs=me(function(t){return t instanceof ma||t instanceof Oa||t instanceof Da&&t.hasClass("enclosing")?t:null},"checkPartialGroup"),zs=me(function t(e,r){var n=Fs(e);if(n&&(n=n.children).length){if("right"===r)return t(n[n.length-1],"right");if("left"===r)return t(n[0],"left")}return e},"getOutermostNode"),Gs=me(function(t,e){return t&&(e&&(t=zs(t,e)),Ps[t.classes[0]])||null},"getTypeOfDomTree"),Us=me(function(t,e){return t=["nulldelimiter"].concat(t.baseSizingClasses()),Rs(e.concat(t))},"makeNullDelimiter"),qs=me(function(t,e,r){if(!t)return Rs();var n;if(As[t.type])return n=As[t.type](t,e),r&&e.size!==r.size&&(n=Rs(e.sizingClasses(r),[n],e),e=e.sizeMultiplier/r.sizeMultiplier,n.height*=e,n.depth*=e),n;throw new X("Got group of unknown type: '"+t.type+"'")},"buildGroup"),me(xi,"buildHTMLUnbreakable"),me(bi,"buildHTML"),me(wi,"newDocumentFragment"),js=class{static{me(this,"MathNode")}constructor(t,e,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=t,this.attributes={},this.children=e||[],this.classes=r||[]}setAttribute(t,e){this.attributes[t]=e}getAttribute(t){return this.attributes[t]}toNode(){var t,e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);0"}toText(){return this.children.map(t=>t.toText()).join("")}},Ws=class{static{me(this,"TextNode")}constructor(t){this.text=void 0,this.text=t}toNode(){return document.createTextNode(this.text)}toMarkup(){return Yi.escape(this.toText())}toText(){return this.text}},cl=class{static{me(this,"SpaceNode")}constructor(t){this.width=void 0,this.character=void 0,this.width=t,this.character=.05555<=t&&t<=.05556?" ":.1666<=t&&t<=.1667?" ":.2222<=t&&t<=.2223?" ":.2777<=t&&t<=.2778?"  ":-.05556<=t&&t<=-.05555?" ⁣":-.1667<=t&&t<=-.1666?" ⁣":-.2223<=t&&t<=-.2222?" ⁣":-.2778<=t&&t<=-.2777?" ⁣":null}toNode(){var t;return this.character?document.createTextNode(this.character):((t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace")).setAttribute("width",K(this.width)),t)}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character||" "}},E={MathNode:js,TextNode:Ws,SpaceNode:cl,newDocumentFragment:wi},Ys=me(function(t,e,r){return!ja[e][t]||!ja[e][t].replace||55349===t.charCodeAt(0)||Ya.hasOwnProperty(t)&&r&&(r.fontFamily&&"tt"===r.fontFamily.slice(4,6)||r.font&&"tt"===r.font.slice(4,6))||(t=ja[e][t].replace),new E.TextNode(t)},"makeText"),Hs=me(function(t){return 1===t.length?t[0]:new E.MathNode("mrow",t)},"makeRow"),Vs=me(function(t,e){var r;return"texttt"===e.fontFamily?"monospace":"textsf"===e.fontFamily?"textit"===e.fontShape&&"textbf"===e.fontWeight?"sans-serif-bold-italic":"textit"===e.fontShape?"sans-serif-italic":"textbf"===e.fontWeight?"bold-sans-serif":"sans-serif":"textit"===e.fontShape&&"textbf"===e.fontWeight?"bold-italic":"textit"===e.fontShape?"italic":"textbf"===e.fontWeight?"bold":(e=e.font)&&"mathnormal"!==e?(r=t.mode,"mathit"===e?"italic":"boldsymbol"===e?"textord"===t.type?"bold":"bold-italic":"mathbf"===e?"bold":"mathbb"===e?"double-struck":"mathsfit"===e?"sans-serif-italic":"mathfrak"===e?"fraktur":"mathscr"===e||"mathcal"===e?"script":"mathsf"===e?"sans-serif":"mathtt"===e?"monospace":!Yi.contains(["\\imath","\\jmath"],t=t.text)&&gi(t=ja[r][t]&&ja[r][t].replace?ja[r][t].replace:t,Z.fontMap[e].fontName,r)?Z.fontMap[e].variant:null):null},"getVariant"),me(ki,"isNumberPunctuation"),Xs=me(function(t,e,r){var n;if(1===t.length)return n=Zs(t[0],e),r&&n instanceof js&&"mo"===n.type&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n];for(var i,a=[],s=0;s{t&&"supsub"===t.type?(o=(r=Ei(t.base,"accent")).base,t.base=o,n=yi(qs(t,e)),t.base=r):o=(r=Ei(t,"accent")).base;var r,n,i,a,t=qs(o,e.havingCrampedStyle()),s=0,o=(r.isShifty&&Yi.isCharacterBox(o)&&(o=Yi.getBaseElem(o),s=mi(qs(o,e.havingCrampedStyle())).skew),"\\c"===r.label),l=o?t.height+t.depth:Math.min(t.height,e.fontMetrics().xHeight),c=r.isStretchy?(c=ao.svgSpan(r,e),Z.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:t},{type:"elem",elem:c,wrapperClasses:["svg-align"],wrapperStyle:0{var r=t.isStretchy?ao.mathMLnode(t.label):new E.MathNode("mo",[Ys(t.label,t.mode)]);return(t=new E.MathNode("mover",[Zs(t.base,e),r])).setAttribute("accent","true"),t},"mathmlBuilder$9"),oo=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|")),o({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:me((t,e)=>{var e=Ns(e[0]),r=!oo.test(t.funcName),n=!r||"\\widehat"===t.funcName||"\\widetilde"===t.funcName||"\\widecheck"===t.funcName;return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:r,isShifty:n,base:e}},"handler"),htmlBuilder:so,mathmlBuilder:fl}),o({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:me((t,e)=>{var e=e[0],r=t.parser.mode;return"math"===r&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),r="text"),{type:"accent",mode:r,label:t.funcName,isStretchy:!1,isShifty:!0,base:e}},"handler"),htmlBuilder:so,mathmlBuilder:fl}),o({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:me((t,e)=>{var{parser:t,funcName:r}=t,e=e[0];return{type:"accentUnder",mode:t.mode,label:r,base:e}},"handler"),htmlBuilder:me((t,e)=>{var r=qs(t.base,e),n=ao.svgSpan(t,e),t="\\utilde"===t.label?.12:0,n=Z.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:t},{type:"elem",elem:r}]},e);return Z.makeSpan(["mord","accentunder"],[n],e)},"htmlBuilder"),mathmlBuilder:me((t,e)=>{var r=ao.mathMLnode(t.label);return(t=new E.MathNode("munder",[Zs(t.base,e),r])).setAttribute("accentunder","true"),t},"mathmlBuilder")}),lo=me(t=>((t=new E.MathNode("mpadded",t?[t]:[])).setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t),"paddedNode"),o({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:t,funcName:n}=t;return{type:"xArrow",mode:t.mode,label:n,body:e[0],below:r[0]}},htmlBuilder(t,e){var r,n=e.style,i=e.havingStyle(n.sup()),a=Z.wrapFragment(qs(t.body,i,e),e),s="\\x"===t.label.slice(0,2)?"x":"cd",n=(a.classes.push(s+"-arrow-pad"),t.below&&(i=e.havingStyle(n.sub()),(r=Z.wrapFragment(qs(t.below,i,e),e)).classes.push(s+"-arrow-pad")),ao.svgSpan(t,e)),i=-e.fontMetrics().axisHeight+.5*n.height,s=-e.fontMetrics().axisHeight-.5*n.height-.111;return(.25"atom"!==(t="ordgroup"===t.type&&t.body.length?t.body[0]:t).type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family,"binrelClass"),o({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){return{type:"mclass",mode:(t=t.parser).mode,mclass:ho(e[0]),body:Is(e[1]),isCharacterBox:Yi.isCharacterBox(e[1])}}}),o({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:t,funcName:r}=t,n=e[1],e=e[0],i="\\stackrel"!==r?ho(n):"mrel",n={type:"op",mode:n.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==r,body:Is(n)},n={type:"supsub",mode:e.mode,base:n,sup:"\\underset"===r?null:e,sub:"\\underset"===r?e:null};return{type:"mclass",mode:t.mode,mclass:i,body:[n],isCharacterBox:Yi.isCharacterBox(n)}},htmlBuilder:_i,mathmlBuilder:Ai}),o({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){return{type:"pmb",mode:(t=t.parser).mode,mclass:ho(e[0]),body:Is(e[0])}},htmlBuilder(t,e){var r=Bs(t.body,e,!0);return(t=Z.makeSpan([t.mclass],r,e)).style.textShadow="0.02em 0.01em 0.04px",t},mathmlBuilder(t,e){return t=Xs(t.body,e),(e=new E.MathNode("mstyle",t)).setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),e}}),uo={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},po=me(()=>({type:"styling",body:[],mode:"math",style:"display"}),"newCell"),go=me(t=>"textord"===t.type&&"@"===t.text,"isStartOfArrow"),fo=me((t,e)=>("mathord"===t.type||"atom"===t.type)&&t.text===e,"isLabelEnd"),me(Li,"cdArrow"),me(Ni,"parseCD"),o({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:t,funcName:r}=t;return{type:"cdlabel",mode:t.mode,side:r.slice(4),label:e[0]}},htmlBuilder(t,e){var r=e.havingStyle(e.style.sup());return(r=Z.wrapFragment(qs(t.label,r,e),e)).classes.push("cd-label-"+t.side),r.style.bottom=K(.8-r.depth),r.height=0,r.depth=0,r},mathmlBuilder(t,e){return e=new E.MathNode("mrow",[Zs(t.label,e)]),(e=new E.MathNode("mpadded",[e])).setAttribute("width","0"),"left"===t.side&&e.setAttribute("lspace","-1width"),e.setAttribute("voffset","0.7em"),(e=new E.MathNode("mstyle",[e])).setAttribute("displaystyle","false"),e.setAttribute("scriptlevel","1"),e}}),o({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){return{type:"cdlabelparent",mode:(t=t.parser).mode,fragment:e[0]}},htmlBuilder(t,e){return(t=Z.wrapFragment(qs(t.fragment,e),e)).classes.push("cd-vert-arrow"),t},mathmlBuilder(t,e){return new E.MathNode("mrow",[Zs(t.fragment,e)])}}),o({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var t=t.parser,r=Ei(e[0],"ordgroup").body,n="",i=0;i>10),56320+(1023&e))),{type:"textord",mode:t.mode,text:e}}}),Bl=me((t,e)=>(e=Bs(t.body,e.withColor(t.color),!1),Z.makeFragment(e)),"htmlBuilder$8"),g=me((t,e)=>(e=Xs(t.body,e.withColor(t.color)),(e=new E.MathNode("mstyle",e)).setAttribute("mathcolor",t.color),e),"mathmlBuilder$7"),o({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var t=t.parser,r=Ei(e[0],"color-token").color;return{type:"color",mode:t.mode,color:r,body:Is(e[1])}},htmlBuilder:Bl,mathmlBuilder:g}),o({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:t,breakOnTokenText:r}=t,e=Ei(e[0],"color-token").color,r=(t.gullet.macros.set("\\current@color",e),t.parseExpression(!0,r));return{type:"color",mode:t.mode,color:e,body:r}},htmlBuilder:Bl,mathmlBuilder:g}),o({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,r){var n="["===(t=t.parser).gullet.future().text?t.parseSizeGroup(!0):null,i=!t.settings.displayMode||!t.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:t.mode,newLine:i,size:n&&Ei(n,"size").value}},htmlBuilder(t,e){var r=Z.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size)&&(r.style.marginTop=K(Aa(t.size,e))),r},mathmlBuilder(t,e){var r=new E.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size)&&r.setAttribute("height",K(Aa(t.size,e))),r}}),mo={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},yo=me(t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new X("Expected a control sequence",t);return e},"checkControlSequence"),vo=me(t=>{var e=t.gullet.popToken();return"="===e.text&&" "===(e=t.gullet.popToken()).text?t.gullet.popToken():e},"getRHS"),xo=me((t,e,r,n)=>{var i=t.gullet.macros.get(r.text);null==i&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!t.gullet.isExpandable(r.text)}),t.gullet.macros.set(e,i,n)},"letCommand"),o({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:t,funcName:e}=t,r=(t.consumeSpaces(),t.fetch());if(mo[r.text])return"\\global"!==e&&"\\\\globallong"!==e||(r.text=mo[r.text]),Ei(t.parseFunction(),"internal");throw new X("Invalid token after macro prefix",r)}}),o({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:t}=t,r=e.gullet.popToken(),n=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(n))throw new X("Expected a control sequence",r);for(var i,a=0,s=[[]];"{"!==e.gullet.future().text;)if("#"===(r=e.gullet.popToken()).text){if("{"===e.gullet.future().text){i=e.gullet.future(),s[a].push("{");break}if(r=e.gullet.popToken(),!/^[1-9]$/.test(r.text))throw new X('Invalid argument number "'+r.text+'"');if(parseInt(r.text)!==a+1)throw new X('Argument number "'+r.text+'" out of order');a++,s.push([])}else{if("EOF"===r.text)throw new X("Expected a macro definition");s[a].push(r.text)}var o=e.gullet.consumeArg().tokens;return i&&o.unshift(i),"\\edef"!==t&&"\\xdef"!==t||(o=e.gullet.expandTokens(o)).reverse(),e.gullet.macros.set(n,{tokens:o,numArgs:a,delimiters:s},t===mo[t]),{type:"internal",mode:e.mode}}}),o({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:t,funcName:e}=t,r=yo(t.gullet.popToken()),n=(t.gullet.consumeSpaces(),vo(t));return xo(t,r,n,"\\\\globallet"===e),{type:"internal",mode:t.mode}}}),o({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:t,funcName:e}=t,r=yo(t.gullet.popToken()),n=t.gullet.popToken(),i=t.gullet.popToken();return xo(t,r,i,"\\\\globalfuture"===e),t.gullet.pushToken(i),t.gullet.pushToken(n),{type:"internal",mode:t.mode}}}),bo=me(function(t,e,r){if(r=gi(ja.math[t]&&ja.math[t].replace||t,e,r))return r;throw new Error("Unsupported symbol "+t+" and font size "+e+".")},"getMetrics"),wo=me(function(t,e,r,n){return e=r.havingBaseStyle(e),n=Z.makeSpan(n.concat(e.sizingClasses(r)),[t],r),t=e.sizeMultiplier/r.sizeMultiplier,n.height*=t,n.depth*=t,n.maxFontSize=e.sizeMultiplier,n},"styleWrap"),ko=me(function(t,e,r){r=e.havingBaseStyle(r),r=(1-e.sizeMultiplier/r.sizeMultiplier)*e.fontMetrics().axisHeight,t.classes.push("delimcenter"),t.style.top=K(r),t.height-=r,t.depth+=r},"centerSpan"),To=me(function(t,e,r,n,i,a){return t=Z.makeSymbol(t,"Main-Regular",i,n),i=wo(t,e,n,a),r&&ko(i,n,e),i},"makeSmallDelim"),Eo=me(function(t,e,r,n){return Z.makeSymbol(t,"Size"+e+"-Regular",r,n)},"mathrmSize"),Co=me(function(t,e,r,n,i,a){return t=Eo(t,e,i,n),i=wo(Z.makeSpan(["delimsizing","size"+e],[t],n),ra.TEXT,n,a),r&&ko(i,n,ra.TEXT),i},"makeLargeDelim"),So=me(function(t,e,r){return{type:"elem",elem:Z.makeSpan(["delimsizinginner","Size1-Regular"===e?"delim-size1":"delim-size4"],[Z.makeSpan([],[Z.makeSymbol(t,e,r)])])}},"makeGlyphSpan"),_o=me(function(t,e,r){var n=(ya["Size4-Regular"][t.charCodeAt(0)]?ya["Size4-Regular"]:ya["Size1-Regular"])[t.charCodeAt(0)][4],t=new za("inner",pa(t,Math.round(1e3*e))),t=new Fa([t],{width:K(n),height:K(e),style:"width:"+K(n),viewBox:"0 0 "+1e3*n+" "+Math.round(1e3*e),preserveAspectRatio:"xMinYMin"});return(t=Z.makeSvgSpan([],[t],r)).height=e,t.style.height=K(e),t.style.width=K(n),{type:"elem",elem:t}},"makeInner"),Ao={type:"kern",size:-.008},Lo=["|","\\lvert","\\rvert","\\vert"],No=["\\|","\\lVert","\\rVert","\\Vert"],Io=me(function(t,e,r,n,i,a){var s,o,l,c="",h=0,u=s=o=t,d=null,p="Size1-Regular",t=("\\uparrow"===t?s=o="⏐":"\\Uparrow"===t?s=o="‖":"\\downarrow"===t?u=s="⏐":"\\Downarrow"===t?u=s="‖":"\\updownarrow"===t?(u="\\uparrow",s="⏐",o="\\downarrow"):"\\Updownarrow"===t?(u="\\Uparrow",s="‖",o="\\Downarrow"):Yi.contains(Lo,t)?(s="∣",c="vert",h=333):Yi.contains(No,t)?(s="∥",c="doublevert",h=556):"["===t||"\\lbrack"===t?(u="⎡",s="⎢",o="⎣",p="Size4-Regular",c="lbrack",h=667):"]"===t||"\\rbrack"===t?(u="⎤",s="⎥",o="⎦",p="Size4-Regular",c="rbrack",h=667):"\\lfloor"===t||"⌊"===t?(s=u="⎢",o="⎣",p="Size4-Regular",c="lfloor",h=667):"\\lceil"===t||"⌈"===t?(u="⎡",s=o="⎢",p="Size4-Regular",c="lceil",h=667):"\\rfloor"===t||"⌋"===t?(s=u="⎥",o="⎦",p="Size4-Regular",c="rfloor",h=667):"\\rceil"===t||"⌉"===t?(u="⎤",s=o="⎥",p="Size4-Regular",c="rceil",h=667):"("===t||"\\lparen"===t?(u="⎛",s="⎜",o="⎝",p="Size4-Regular",c="lparen",h=875):")"===t||"\\rparen"===t?(u="⎞",s="⎟",o="⎠",p="Size4-Regular",c="rparen",h=875):"\\{"===t||"\\lbrace"===t?(u="⎧",d="⎨",o="⎩",s="⎪",p="Size4-Regular"):"\\}"===t||"\\rbrace"===t?(u="⎫",d="⎬",o="⎭",s="⎪",p="Size4-Regular"):"\\lgroup"===t||"⟮"===t?(u="⎧",o="⎩",s="⎪",p="Size4-Regular"):"\\rgroup"===t||"⟯"===t?(u="⎫",o="⎭",s="⎪",p="Size4-Regular"):"\\lmoustache"===t||"⎰"===t?(u="⎧",o="⎭",s="⎪",p="Size4-Regular"):"\\rmoustache"!==t&&"⎱"!==t||(u="⎫",o="⎩",s="⎪",p="Size4-Regular"),(t=bo(u,p,i)).height+t.depth),g=(g=bo(s,p,i)).height+g.depth,f=(f=bo(o,p,i)).height+f.depth,m=0,y=1,e=(null!==d&&(m=(v=bo(d,p,i)).height+v.depth,y=2),(v=t+f+m)+Math.max(0,Math.ceil((e-v)/(y*g)))*y*g),v=n.fontMetrics().axisHeight,y=(r&&(v*=n.sizeMultiplier),e/2-v),g=[],v=(0","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Po=[0,1.2,1.8,2.4,3],tl=me(function(t,e,r,n,i){if("<"===t||"\\lt"===t||"⟨"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"⟩"!==t||(t="\\rangle"),Yi.contains(Mo,t)||Yi.contains(Oo,t))return Co(t,e,!1,r,n,i);if(Yi.contains(Do,t))return Io(t,Po[e],!1,r,n,i);throw new X("Illegal delimiter: '"+t+"'")},"makeSizedDelim"),Bo=[{type:"small",style:ra.SCRIPTSCRIPT},{type:"small",style:ra.SCRIPT},{type:"small",style:ra.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],$o=[{type:"small",style:ra.SCRIPTSCRIPT},{type:"small",style:ra.SCRIPT},{type:"small",style:ra.TEXT},{type:"stack"}],Fo=[{type:"small",style:ra.SCRIPTSCRIPT},{type:"small",style:ra.SCRIPT},{type:"small",style:ra.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],zo=me(function(t){if("small"===t.type)return"Main-Regular";if("large"===t.type)return"Size"+t.size+"-Regular";if("stack"===t.type)return"Size4-Regular";throw new Error("Add support for delim type '"+t.type+"' here.")},"delimTypeToFont"),Go=me(function(t,e,r,n){for(var i=Math.min(2,3-n.style.size);i"!==t&&"\\gt"!==t&&"⟩"!==t||(t="\\rangle");var s=Yi.contains(Oo,t)?Bo:Yi.contains(Mo,t)?Fo:$o;return"small"===(s=Go(t,e,s,n)).type?To(t,s.style,r,n,i,a):"large"===s.type?Co(t,s.size,r,n,i,a):Io(t,e,r,n,i,a)},"makeCustomSizedDelim"),f=me(function(t,e,r,n,i,a){var s=n.fontMetrics().axisHeight*n.sizeMultiplier,o=5/n.fontMetrics().ptPerEm,e=Math.max(e-s,r+s),r=Math.max(e/500*901,2*e-o);return Uo(t,r,!0,n,i,a)},"makeLeftRightDelim"),qo={sqrtImage:Jo,sizedDelim:tl,sizeToMaxHeight:Po,customSizedDelim:Uo,leftRightDelim:f},jo={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Wo=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."],me(Ii,"checkDelimiter"),o({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:me((t,e)=>(e=Ii(e[0],t),{type:"delimsizing",mode:t.parser.mode,size:jo[t.funcName].size,mclass:jo[t.funcName].mclass,delim:e.text}),"handler"),htmlBuilder:me((t,e)=>"."===t.delim?Z.makeSpan([t.mclass]):qo.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),"htmlBuilder"),mathmlBuilder:me(t=>{var e=[],e=("."!==t.delim&&e.push(Ys(t.delim,t.mode)),new E.MathNode("mo",e)),t=("mopen"===t.mclass||"mclose"===t.mclass?e.setAttribute("fence","true"):e.setAttribute("fence","false"),e.setAttribute("stretchy","true"),K(qo.sizeToMaxHeight[t.size]));return e.setAttribute("minsize",t),e.setAttribute("maxsize",t),e},"mathmlBuilder")}),me(Ri,"assertParsed"),o({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:me((t,e)=>{var r=t.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new X("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:Ii(e[0],t).text,color:r}},"handler")}),o({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:me((t,e)=>{var e=Ii(e[0],t),r=(++(t=t.parser).leftrightDepth,t.parseExpression(!1)),n=(--t.leftrightDepth,t.expect("\\right",!1),Ei(t.parseFunction(),"leftright-right"));return{type:"leftright",mode:t.mode,body:r,left:e.text,right:n.delim,rightColor:n.color}},"handler"),htmlBuilder:me((t,e)=>{Ri(t);for(var r,n=Bs(t.body,e,!0,["mopen","mclose"]),i=0,a=0,s=!1,o=0;o{Ri(t);var r,e=Xs(t.body,e);return"."!==t.left&&((r=new E.MathNode("mo",[Ys(t.left,t.mode)])).setAttribute("fence","true"),e.unshift(r)),"."!==t.right&&((r=new E.MathNode("mo",[Ys(t.right,t.mode)])).setAttribute("fence","true"),t.rightColor&&r.setAttribute("mathcolor",t.rightColor),e.push(r)),Hs(e)},"mathmlBuilder")}),o({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:me((t,e)=>{if(e=Ii(e[0],t),t.parser.leftrightDepth)return{type:"middle",mode:t.parser.mode,delim:e.text};throw new X("\\middle without preceding \\left",e)},"handler"),htmlBuilder:me((t,e)=>{var r;return"."===t.delim?r=Us(e,[]):(r=qo.sizedDelim(t.delim,1,e,t.mode,[]),t={delim:t.delim,options:e},r.isMiddle=t),r},"htmlBuilder"),mathmlBuilder:me((t,e)=>(t="\\vert"===t.delim||"|"===t.delim?Ys("|","text"):Ys(t.delim,t.mode),(t=new E.MathNode("mo",[t])).setAttribute("fence","true"),t.setAttribute("lspace","0.05em"),t.setAttribute("rspace","0.05em"),t),"mathmlBuilder")}),cl=me((t,e)=>{var r,n,i,a,s,o=Z.wrapFragment(qs(t.body,e),e),l=t.label.slice(1),c=e.sizeMultiplier,h=0,u=Yi.isCharacterBox(t.body);return"sout"===l?((r=Z.makeSpan(["stretchy","sout"])).height=e.fontMetrics().defaultRuleThickness/c,h=-.5*e.fontMetrics().xHeight):"phase"===l?(a=Aa({number:.6,unit:"pt"},e),s=Aa({number:.35,unit:"ex"},e),c/=e.havingBaseSizing().sizeMultiplier,n=o.height+o.depth+a+s,o.style.paddingLeft=K(n/2+a),c=Math.floor(1e3*n*c),i=ha(c),i=new Fa([new za("phase",i)],{width:"400em",height:K(c/1e3),viewBox:"0 0 400000 "+c,preserveAspectRatio:"xMinYMin slice"}),(r=Z.makeSvgSpan(["hide-tail"],[i],e)).style.height=K(n),h=o.depth+a+s):(/cancel/.test(l)?u||o.classes.push("cancel-pad"):"angl"===l?o.classes.push("anglpad"):o.classes.push("boxpad"),n=i=c=0,i=/box/.test(l)?(n=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),c=e.fontMetrics().fboxsep+("colorbox"===l?0:n)):"angl"===l?(c=4*(n=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness)),Math.max(0,.25-o.depth)):c=u?.2:0,r=ao.encloseSpan(o,l,c,i,e),/fbox|boxed|fcolorbox/.test(l)?(r.style.borderStyle="solid",r.style.borderWidth=K(n)):"angl"===l&&.049!==n&&(r.style.borderTopWidth=K(n),r.style.borderRightWidth=K(n)),h=o.depth+i,t.backgroundColor&&(r.style.backgroundColor=t.backgroundColor,t.borderColor)&&(r.style.borderColor=t.borderColor)),s=t.backgroundColor?Z.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:h},{type:"elem",elem:o,shift:0}]},e):(a=/cancel|phase/.test(l)?["svg-align"]:[],Z.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:0},{type:"elem",elem:r,shift:h,wrapperClasses:a}]},e)),/cancel/.test(l)&&(s.height=o.height,s.depth=o.depth),/cancel/.test(l)&&!u?Z.makeSpan(["mord","cancel-lap"],[s],e):Z.makeSpan(["mord"],[s],e)},"htmlBuilder$7"),pl=me((t,e)=>{var r=new E.MathNode(-1{if(!t.parser.settings.displayMode)throw new X("{"+t.envName+"} can be used only in display mode.")},"validateAmsEnvironmentContext"),me(Oi,"getAutoTag"),me(Pi,"parseArray"),me(Bi,"dCellStyle"),m=me(function(t,e){var r=t.body.length,P=t.hLinesBeforeRow,n=0,i=new Array(r),a=[],s=Math.max(e.fontMetrics().arrayRuleWidth,e.minRuleThickness),o=1/e.fontMetrics().ptPerEm,l=5*o,c=(t.colSeparationType&&"small"===t.colSeparationType&&(l=e.havingStyle(ra.SCRIPT).sizeMultiplier/e.sizeMultiplier*.2778),"CD"===t.colSeparationType?Aa({number:3,unit:"ex"},e):12*o),B=3*o,$=.7*(o=t.arraystretch*c),F=.3*o,h=0;function u(t){for(var e=0;et))for(M=0;Mt.length)),i.cols=new Array(n).fill({type:"align",align:r}),e?{type:"leftright",mode:t.mode,body:[i],left:e[0],right:e[1],rightColor:void 0}:i},htmlBuilder:m,mathmlBuilder:Pl}),Mi({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){return(t=Pi(t.parser,{arraystretch:.5},"script")).colSeparationType="small",t},htmlBuilder:m,mathmlBuilder:Pl}),Mi({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){if(1<(e=(Si(e[0])?[e[0]]:Ei(e[0],"ordgroup").body).map(function(t){var e=Ci(t).text;if(-1!=="lc".indexOf(e))return{type:"align",align:e};throw new X("Unknown column alignment: "+e,t)})).length)throw new X("{subarray} can contain only one column");if(0<(t=Pi(t.parser,{cols:e,hskipBeforeAndAfter:!1,arraystretch:.5},"script")).body.length&&1{var r=t.font,e=e.withFont(r);return qs(t.body,e)},"htmlBuilder$5"),g=me((t,e)=>{var r=t.font,e=e.withFont(r);return Zs(t.body,e)},"mathmlBuilder$4"),Zo={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"},o({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:me((t,e)=>{var{parser:t,funcName:r}=t,e=Ns(e[0]);return{type:"font",mode:t.mode,font:(r=r in Zo?Zo[r]:r).slice(1),body:e}},"handler"),htmlBuilder:Bl,mathmlBuilder:g}),o({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:me((t,e)=>{var t=t.parser,e=e[0],r=Yi.isCharacterBox(e);return{type:"mclass",mode:t.mode,mclass:ho(e),body:[{type:"font",mode:t.mode,font:"boldsymbol",body:e}],isCharacterBox:r}},"handler")}),o({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:me((t,e)=>{var{parser:t,funcName:r,breakOnTokenText:n}=t,i=t.mode,n=t.parseExpression(!0,n);return{type:"font",mode:i,font:"math"+r.slice(1),body:{type:"ordgroup",mode:t.mode,body:n}}},"handler"),htmlBuilder:Bl,mathmlBuilder:g}),Qo=me((t,e)=>("display"===t?e=e.id>=ra.SCRIPT.id?e.text():ra.DISPLAY:"text"===t&&e.size===ra.DISPLAY.size?e=ra.TEXT:"script"===t?e=ra.SCRIPT:"scriptscript"===t&&(e=ra.SCRIPTSCRIPT),e),"adjustStyle"),Jo=me((t,e)=>{var r,n,i,a,s=Qo(t.size,e.style),o=s.fracNum(),l=s.fracDen(),o=e.havingStyle(o),c=qs(t.numer,o,e),h=(t.continued&&(h=8.5/e.fontMetrics().ptPerEm,u=3.5/e.fontMetrics().ptPerEm,c.height=c.height{var r=new E.MathNode("mfrac",[Zs(t.numer,e),Zs(t.denom,e)]),n=(t.hasBarLine?t.barSize&&(n=Aa(t.barSize,e),r.setAttribute("linethickness",K(n))):r.setAttribute("linethickness","0px"),Qo(t.size,e.style));return n.size!==e.style.size&&(r=new E.MathNode("mstyle",[r]),e=n.size===ra.DISPLAY.size?"true":"false",r.setAttribute("displaystyle",e),r.setAttribute("scriptlevel","0")),null!=t.leftDelim||null!=t.rightDelim?(n=[],null!=t.leftDelim&&((e=new E.MathNode("mo",[new E.TextNode(t.leftDelim.replace("\\",""))])).setAttribute("fence","true"),n.push(e)),n.push(r),null!=t.rightDelim&&((e=new E.MathNode("mo",[new E.TextNode(t.rightDelim.replace("\\",""))])).setAttribute("fence","true"),n.push(e)),Hs(n)):r},"mathmlBuilder$3"),o({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:me((t,e)=>{var r,{parser:t,funcName:n}=t,i=e[0],e=e[1],a=null,s=null,o="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":r=!0;break;case"\\\\atopfrac":r=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":r=!1,a="(",s=")";break;case"\\\\bracefrac":r=!1,a="\\{",s="\\}";break;case"\\\\brackfrac":r=!1,a="[",s="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":o="display";break;case"\\tfrac":case"\\tbinom":o="text"}return{type:"genfrac",mode:t.mode,continued:!1,numer:i,denom:e,hasBarLine:r,leftDelim:a,rightDelim:s,size:o,barSize:null}},"handler"),htmlBuilder:Jo,mathmlBuilder:tl}),o({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:me((t,e)=>{var t=t.parser,r=e[0];return{type:"genfrac",mode:t.mode,continued:!0,numer:r,denom:e[1],hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}},"handler")}),o({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var e,{parser:t,funcName:r,token:n}=t;switch(r){case"\\over":e="\\frac";break;case"\\choose":e="\\binom";break;case"\\atop":e="\\\\atopfrac";break;case"\\brace":e="\\\\bracefrac";break;case"\\brack":e="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:t.mode,replaceWith:e,token:n}}}),el=["display","text","script","scriptscript"],rl=me(function(t){var e=null;return 0{var t=t.parser,r=e[0],n=Wi(Ei(e[1],"infix").size),e=e[2],i=0{var r,n,i=e.style,i="supsub"===t.type?(r=t.sup?qs(t.sup,e.havingStyle(i.sup()),e):qs(t.sub,e.havingStyle(i.sub()),e),Ei(t.base,"horizBrace")):Ei(t,"horizBrace"),t=qs(i.base,e.havingBaseStyle(ra.DISPLAY)),a=ao.svgSpan(i,e);return(i.isOver?(n=Z.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:t},{type:"kern",size:.1},{type:"elem",elem:a}]},e)).children[0].children[0].children[1]:(n=Z.makeVList({positionType:"bottom",positionData:t.depth+.1+a.height,children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:t}]},e)).children[0].children[0].children[0]).classes.push("svg-align"),r&&(a=Z.makeSpan(["mord",i.isOver?"mover":"munder"],[n],e),n=i.isOver?Z.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.2},{type:"elem",elem:r}]},e):Z.makeVList({positionType:"bottom",positionData:a.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:a}]},e)),Z.makeSpan(["mord",i.isOver?"mover":"munder"],[n],e)},"htmlBuilder$3"),f=me((t,e)=>{var r=ao.mathMLnode(t.label);return new E.MathNode(t.isOver?"mover":"munder",[Zs(t.base,e),r])},"mathmlBuilder$2"),o({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:t,funcName:r}=t;return{type:"horizBrace",mode:t.mode,label:r,isOver:/^\\over/.test(r),base:e[0]}},htmlBuilder:nl,mathmlBuilder:f}),o({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:me((t,e)=>{var t=t.parser,r=e[1],e=Ei(e[0],"url").url;return t.settings.isTrusted({command:"\\href",url:e})?{type:"href",mode:t.mode,href:e,body:Is(r)}:t.formatUnsupportedCmd("\\href")},"handler"),htmlBuilder:me((t,e)=>{var r=Bs(t.body,e,!1);return Z.makeAnchor(t.href,[],r,e)},"htmlBuilder"),mathmlBuilder:me((t,e)=>((e=(e=Ks(t.body,e))instanceof js?e:new js("mrow",[e])).setAttribute("href",t.href),e),"mathmlBuilder")}),o({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:me((t,e)=>{var t=t.parser,r=Ei(e[0],"url").url;if(!t.settings.isTrusted({command:"\\url",url:r}))return t.formatUnsupportedCmd("\\url");for(var n=[],i=0;i{var{parser:t,funcName:r}=t,n=Ei(e[0],"raw").string,e=e[1];t.settings.strict&&t.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var i,a={};switch(r){case"\\htmlClass":i={command:"\\htmlClass",class:a.class=n};break;case"\\htmlId":i={command:"\\htmlId",id:a.id=n};break;case"\\htmlStyle":i={command:"\\htmlStyle",style:a.style=n};break;case"\\htmlData":for(var s=n.split(","),o=0;o{var r,n=Bs(t.body,e,!1),i=["enclosing"],a=(t.attributes.class&&i.push(...t.attributes.class.trim().split(/\s+/)),Z.makeSpan(i,n,e));for(r in t.attributes)"class"!==r&&t.attributes.hasOwnProperty(r)&&a.setAttribute(r,t.attributes[r]);return a},"htmlBuilder"),mathmlBuilder:me((t,e)=>Ks(t.body,e),"mathmlBuilder")}),o({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:me((t,e)=>({type:"htmlmathml",mode:(t=t.parser).mode,html:Is(e[0]),mathml:Is(e[1])}),"handler"),htmlBuilder:me((t,e)=>(t=Bs(t.html,e,!1),Z.makeFragment(t)),"htmlBuilder"),mathmlBuilder:me((t,e)=>Ks(t.mathml,e),"mathmlBuilder")}),il=me(function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var e=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!e)throw new X("Invalid size: '"+t+"' in \\includegraphics");if(t={number:+(e[1]+e[2]),unit:e[3]},_a(t))return t;throw new X("Invalid unit: '"+t.unit+"' in \\includegraphics.")},"sizeData"),o({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:me((t,e,r)=>{var t=t.parser,n={number:0,unit:"em"},i={number:.9,unit:"em"},a={number:0,unit:"em"},s="";if(r[0])for(var o=Ei(r[0],"raw").string.split(","),l=0;l{var r=Aa(t.height,e),n=0,i=(0{var r=new E.MathNode("mglyph",[]),n=(r.setAttribute("alt",t.alt),Aa(t.height,e)),i=0;return 0{var{parser:t,funcName:r}=t,e=e[0];return{type:"lap",mode:t.mode,alignment:r.slice(5),body:e}},"handler"),htmlBuilder:me((t,e)=>{var r="clap"===t.alignment?(r=Z.makeSpan([],[qs(t.body,e)]),Z.makeSpan(["inner"],[r],e)):Z.makeSpan(["inner"],[qs(t.body,e)]),n=Z.makeSpan(["fix"],[]),t=Z.makeSpan([t.alignment],[r,n],e);return(r=Z.makeSpan(["strut"])).style.height=K(t.height+t.depth),t.depth&&(r.style.verticalAlign=K(-t.depth)),t.children.unshift(r),t=Z.makeSpan(["thinbox"],[t],e),Z.makeSpan(["mord","vbox"],[t],e)},"htmlBuilder"),mathmlBuilder:me((t,e)=>(e=new E.MathNode("mpadded",[Zs(t.body,e)]),"rlap"!==t.alignment&&(t="llap"===t.alignment?"-1":"-0.5",e.setAttribute("lspace",t+"width")),e.setAttribute("width","0px"),e),"mathmlBuilder")}),o({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:t,parser:r}=t,n=r.mode,t=(r.switchMode("math"),"\\("===t?"\\)":"$"),i=r.parseExpression(!1,t);return r.expect(t),r.switchMode(n),{type:"styling",mode:r.mode,style:"text",body:i}}}),o({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new X("Mismatched "+t.funcName)}}),al=me((t,e)=>{switch(e.style.size){case ra.DISPLAY.size:return t.display;case ra.TEXT.size:return t.text;case ra.SCRIPT.size:return t.script;case ra.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}},"chooseMathStyle"),o({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:me((t,e)=>({type:"mathchoice",mode:(t=t.parser).mode,display:Is(e[0]),text:Is(e[1]),script:Is(e[2]),scriptscript:Is(e[3])}),"handler"),htmlBuilder:me((t,e)=>(t=al(t,e),t=Bs(t,e,!1),Z.makeFragment(t)),"htmlBuilder"),mathmlBuilder:me((t,e)=>(t=al(t,e),Ks(t,e)),"mathmlBuilder")}),sl=me((t,e,r,n,i,a,s)=>{t=Z.makeSpan([],[t]);var o,l,c=r&&Yi.isCharacterBox(r);if(e&&(o={elem:e=qs(e,n.havingStyle(i.sup()),n),kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-e.depth)}),r&&(l={elem:e=qs(r,n.havingStyle(i.sub()),n),kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-e.height)}),o&&l)var r=n.fontMetrics().bigOpSpacing5+l.elem.height+l.elem.depth+l.kern+t.depth+s,h=Z.makeVList({positionType:"bottom",positionData:r,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:K(-a)},{type:"kern",size:l.kern},{type:"elem",elem:t},{type:"kern",size:o.kern},{type:"elem",elem:o.elem,marginLeft:K(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n);else if(l)i=t.height-s,h=Z.makeVList({positionType:"top",positionData:i,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:K(-a)},{type:"kern",size:l.kern},{type:"elem",elem:t}]},n);else{if(!o)return t;e=t.depth+s,h=Z.makeVList({positionType:"bottom",positionData:e,children:[{type:"elem",elem:t},{type:"kern",size:o.kern},{type:"elem",elem:o.elem,marginLeft:K(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}return r=[h],l&&0!==a&&!c&&((i=Z.makeSpan(["mspace"],[],n)).style.marginRight=K(a),r.unshift(i)),Z.makeSpan(["mop","op-limits"],r,n)},"assembleSupSub"),ol=["\\smallint"],ll=me((t,e)=>{var r,n,i,a=!1,s=("supsub"===t.type?(r=t.sup,n=t.sub,i=Ei(t.base,"op"),a=!0):i=Ei(t,"op"),!1);if((t=e.style).size===ra.DISPLAY.size&&i.symbol&&!Yi.contains(ol,i.name)&&(s=!0),i.symbol){var o,l=s?"Size2-Regular":"Size1-Regular",c="";"\\oiint"!==i.name&&"\\oiiint"!==i.name||(c=i.name.slice(1),i.name="oiint"===c?"\\iint":"\\iiint"),l=Z.makeSymbol(i.name,l,"math",e,["mop","op-symbol",s?"large-op":"small-op"]),0{var r;return t.symbol?(r=new js("mo",[Ys(t.name,t.mode)]),Yi.contains(ol,t.name)&&r.setAttribute("largeop","false")):r=t.body?new js("mo",Xs(t.body,e)):(r=new js("mi",[new Ws(t.name.slice(1))]),e=new js("mo",[Ys("⁡","text")]),t.parentIsSupSub?new js("mrow",[r,e]):wi([r,e])),r},"mathmlBuilder$1"),hl={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"},o({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:me((t,e)=>{var{parser:t,funcName:r}=t;return 1===r.length&&(r=hl[r]),{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:r}},"handler"),htmlBuilder:ll,mathmlBuilder:cl}),o({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:me((t,e)=>(t=t.parser,e=e[0],{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Is(e)}),"handler"),htmlBuilder:ll,mathmlBuilder:cl}),ul={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"},o({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:t,funcName:e}=t;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:e}},htmlBuilder:ll,mathmlBuilder:cl}),o({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:t,funcName:e}=t;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:e}},htmlBuilder:ll,mathmlBuilder:cl}),o({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler(t){var{parser:t,funcName:e}=t;return 1===e.length&&(e=ul[e]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:e}},htmlBuilder:ll,mathmlBuilder:cl}),dl=me((t,e)=>{var r,n,i,a,s=!1;if("supsub"===t.type?(r=t.sup,n=t.sub,i=Ei(t.base,"operatorname"),s=!0):i=Ei(t,"operatorname"),0{var e=t.text;return"string"==typeof e?{type:"textord",mode:t.mode,text:e}:t}),o=Bs(t,e.withFont("mathrm"),!0),l=0;l{for(var r=Xs(t.body,e.withFont("mathrm")),n=!0,i=0;it.toText()).join(""),r=[new E.TextNode(e)]),(e=new E.MathNode("mi",r)).setAttribute("mathvariant","normal");var o=new E.MathNode("mo",[Ys("⁡","text")]);return t.parentIsSupSub?new E.MathNode("mrow",[e,o]):E.newDocumentFragment([e,o])},"mathmlBuilder"),o({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:me((t,e)=>{var{parser:t,funcName:r}=t,e=e[0];return{type:"operatorname",mode:t.mode,body:Is(e),alwaysHandleSupSub:"\\operatornamewithlimits"===r,limits:!1,parentIsSupSub:!1}},"handler"),htmlBuilder:dl,mathmlBuilder:pl}),l("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),vi({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?Z.makeFragment(Bs(t.body,e,!1)):Z.makeSpan(["mord"],Bs(t.body,e,!0),e)},mathmlBuilder(t,e){return Ks(t.body,e,!0)}}),o({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){return t=t.parser,e=e[0],{type:"overline",mode:t.mode,body:e}},htmlBuilder(t,e){var t=qs(t.body,e.havingCrampedStyle()),r=Z.makeLineSpan("overline-line",e),n=e.fontMetrics().defaultRuleThickness,t=Z.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:t},{type:"kern",size:3*n},{type:"elem",elem:r},{type:"kern",size:n}]},e);return Z.makeSpan(["mord","overline"],[t],e)},mathmlBuilder(t,e){var r=new E.MathNode("mo",[new E.TextNode("‾")]);return r.setAttribute("stretchy","true"),(t=new E.MathNode("mover",[Zs(t.body,e),r])).setAttribute("accent","true"),t}}),o({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:me((t,e)=>(t=t.parser,e=e[0],{type:"phantom",mode:t.mode,body:Is(e)}),"handler"),htmlBuilder:me((t,e)=>(t=Bs(t.body,e.withPhantom(),!1),Z.makeFragment(t)),"htmlBuilder"),mathmlBuilder:me((t,e)=>(t=Xs(t.body,e),new E.MathNode("mphantom",t)),"mathmlBuilder")}),o({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:me((t,e)=>(t=t.parser,e=e[0],{type:"hphantom",mode:t.mode,body:e}),"handler"),htmlBuilder:me((t,e)=>{var r=Z.makeSpan([],[qs(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n(t=Xs(Is(t.body),e),e=new E.MathNode("mphantom",t),(t=new E.MathNode("mpadded",[e])).setAttribute("height","0px"),t.setAttribute("depth","0px"),t),"mathmlBuilder")}),o({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:me((t,e)=>(t=t.parser,e=e[0],{type:"vphantom",mode:t.mode,body:e}),"handler"),htmlBuilder:me((t,e)=>{var t=Z.makeSpan(["inner"],[qs(t.body,e.withPhantom())]),r=Z.makeSpan(["fix"],[]);return Z.makeSpan(["mord","rlap"],[t,r],e)},"htmlBuilder"),mathmlBuilder:me((t,e)=>(t=Xs(Is(t.body),e),e=new E.MathNode("mphantom",t),(t=new E.MathNode("mpadded",[e])).setAttribute("width","0px"),t),"mathmlBuilder")}),o({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var t=t.parser,r=Ei(e[0],"size").value;return{type:"raisebox",mode:t.mode,dy:r,body:e[1]}},htmlBuilder(t,e){var r=qs(t.body,e),t=Aa(t.dy,e);return Z.makeVList({positionType:"shift",positionData:-t,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){return e=new E.MathNode("mpadded",[Zs(t.body,e)]),t=t.dy.number+t.dy.unit,e.setAttribute("voffset",t),e}}),o({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){return{type:"internal",mode:(t=t.parser).mode}}}),o({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,r){var t=t.parser,r=r[0],n=Ei(e[0],"size"),e=Ei(e[1],"size");return{type:"rule",mode:t.mode,shift:r&&Ei(r,"size").value,width:n.value,height:e.value}},htmlBuilder(t,e){var r=Z.makeSpan(["mord","rule"],[],e),n=Aa(t.width,e),i=Aa(t.height,e),t=t.shift?Aa(t.shift,e):0;return r.style.borderRightWidth=K(n),r.style.borderTopWidth=K(i),r.style.bottom=K(t),r.width=n,r.height=i+t,r.depth=-t,r.maxFontSize=1.125*i*e.sizeMultiplier,r},mathmlBuilder(t,e){var r=Aa(t.width,e),n=Aa(t.height,e),t=t.shift?Aa(t.shift,e):0,e=e.color&&e.getColor()||"black",i=new E.MathNode("mspace"),e=(i.setAttribute("mathbackground",e),i.setAttribute("width",K(r)),i.setAttribute("height",K(n)),new E.MathNode("mpadded",[i]));return 0<=t?e.setAttribute("height",K(t)):(e.setAttribute("height",K(t)),e.setAttribute("depth",K(-t))),e.setAttribute("voffset",K(t)),e}}),me($i,"sizingGroup"),gl=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],fl=me((t,e)=>{var r=e.havingSize(t.size);return $i(t.body,r,e)},"htmlBuilder"),o({type:"sizing",names:gl,props:{numArgs:0,allowedInText:!0},handler:me((t,e)=>{var{breakOnTokenText:t,funcName:r,parser:n}=t,t=n.parseExpression(!1,t);return{type:"sizing",mode:n.mode,size:gl.indexOf(r)+1,body:t}},"handler"),htmlBuilder:fl,mathmlBuilder:me((t,e)=>(e=e.havingSize(t.size),t=Xs(t.body,e),(t=new E.MathNode("mstyle",t)).setAttribute("mathsize",K(e.sizeMultiplier)),t),"mathmlBuilder")}),o({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:me((t,e,r)=>{var t=t.parser,n=!1,i=!1,a=r[0]&&Ei(r[0],"ordgroup");if(a)for(var s,o=0;o{var r=Z.makeSpan([],[qs(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var n=0;n(e=new E.MathNode("mpadded",[Zs(t.body,e)]),t.smashHeight&&e.setAttribute("height","0px"),t.smashDepth&&e.setAttribute("depth","0px"),e),"mathmlBuilder")}),o({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){return t=t.parser,r=r[0],e=e[0],{type:"sqrt",mode:t.mode,body:e,index:r}},htmlBuilder(t,e){0===(r=qs(t.body,e.havingCrampedStyle())).height&&(r.height=e.fontMetrics().xHeight);var r=Z.wrapFragment(r,e),n=i=e.fontMetrics().defaultRuleThickness,n=i+(e.style.idr.height+r.depth+n&&(n=(n+o-r.height-r.depth)/2),i.height-r.height-n-a),n=(r.style.paddingLeft=K(s),Z.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+o)},{type:"elem",elem:i},{type:"kern",size:a}]},e));return t.index?(s=e.havingStyle(ra.SCRIPTSCRIPT),r=qs(t.index,s,e),o=.6*(n.height-n.depth),i=Z.makeVList({positionType:"shift",positionData:-o,children:[{type:"elem",elem:r}]},e),a=Z.makeSpan(["root"],[i]),Z.makeSpan(["mord","sqrt"],[a,n],e)):Z.makeSpan(["mord","sqrt"],[n],e)},mathmlBuilder(t,e){var{body:t,index:r}=t;return r?new E.MathNode("mroot",[Zs(t,e),Zs(r,e)]):new E.MathNode("msqrt",[Zs(t,e)])}}),ml={display:ra.DISPLAY,text:ra.TEXT,script:ra.SCRIPT,scriptscript:ra.SCRIPTSCRIPT},o({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:t,funcName:r,parser:n}=t,t=n.parseExpression(!0,t),r=r.slice(1,r.length-5);return{type:"styling",mode:n.mode,style:r,body:t}},htmlBuilder(t,e){var r=ml[t.style],r=e.havingStyle(r).withFont("");return $i(t.body,r,e)},mathmlBuilder(t,e){var r=ml[t.style],e=e.havingStyle(r),r=Xs(t.body,e),e=new E.MathNode("mstyle",r),r={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[t.style];return e.setAttribute("scriptlevel",r[0]),e.setAttribute("displaystyle",r[1]),e}}),yl=me(function(t,e){var r=t.base;return r?"op"===r.type?r.limits&&(e.style.size===ra.DISPLAY.size||r.alwaysHandleSupSub)?ll:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(e.style.size===ra.DISPLAY.size||r.limits)?dl:null:"accent"===r.type?Yi.isCharacterBox(r.base)?so:null:"horizBrace"===r.type&&!t.sub===r.isOver?nl:null:null},"htmlBuilderDelegate"),vi({type:"supsub",htmlBuilder(t,e){if(a=yl(t,e))return a(t,e);var r,n,i,{base:a,sup:s,sub:o}=t,l=qs(a,e),c=e.fontMetrics(),h=0,u=0,a=a&&Yi.isCharacterBox(a),o=(s&&(i=e.havingStyle(e.style.sup()),r=qs(s,i,e),a||(h=l.height-i.fontMetrics().supDrop*i.sizeMultiplier/e.sizeMultiplier)),o&&(s=e.havingStyle(e.style.sub()),n=qs(o,s,e),a||(u=l.depth+s.fontMetrics().subDrop*s.sizeMultiplier/e.sizeMultiplier)),i=e.style===ra.DISPLAY?c.sup1:e.style.cramped?c.sup3:c.sup2,e.sizeMultiplier),a=K(.5/c.ptPerEm/o),s=null;if(n&&(o=t.base&&"op"===t.base.type&&t.base.name&&("\\oiint"===t.base.name||"\\oiiint"===t.base.name),l instanceof $a||o)&&(s=K(-l.italic)),r&&n){h=Math.max(h,i,r.depth+.25*c.xHeight),u=Math.max(u,c.sub2),t=4*c.defaultRuleThickness,h-r.depth-(n.height-u){var t=new E.MathNode("mtd",[]);return t.setAttribute("width","50%"),t},"pad"),vi({type:"tag",mathmlBuilder(t,e){return(t=new E.MathNode("mtable",[new E.MathNode("mtr",[wl(),new E.MathNode("mtd",[Ks(t.body,e)]),wl(),new E.MathNode("mtd",[Ks(t.tag,e)])])])).setAttribute("width","100%"),t}}),kl={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Tl={"\\textbf":"textbf","\\textmd":"textmd"},El={"\\textit":"textit","\\textup":"textup"},Cl=me((t,e)=>(t=t.font)?kl[t]?e.withTextFontFamily(kl[t]):Tl[t]?e.withTextFontWeight(Tl[t]):"\\emph"===t?"textit"===e.fontShape?e.withTextFontShape("textup"):e.withTextFontShape("textit"):e.withTextFontShape(El[t]):e,"optionsWithFont"),o({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:t,funcName:r}=t,e=e[0];return{type:"text",mode:t.mode,body:Is(e),font:r}},htmlBuilder(t,e){return e=Cl(t,e),t=Bs(t.body,e,!0),Z.makeSpan(["mord","text"],t,e)},mathmlBuilder(t,e){return e=Cl(t,e),Ks(t.body,e)}}),o({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){return{type:"underline",mode:(t=t.parser).mode,body:e[0]}},htmlBuilder(t,e){var t=qs(t.body,e),r=Z.makeLineSpan("underline-line",e),n=e.fontMetrics().defaultRuleThickness,r=Z.makeVList({positionType:"top",positionData:t.height,children:[{type:"kern",size:n},{type:"elem",elem:r},{type:"kern",size:3*n},{type:"elem",elem:t}]},e);return Z.makeSpan(["mord","underline"],[r],e)},mathmlBuilder(t,e){var r=new E.MathNode("mo",[new E.TextNode("‾")]);return r.setAttribute("stretchy","true"),(t=new E.MathNode("munder",[Zs(t.body,e),r])).setAttribute("accentunder","true"),t}}),o({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){return{type:"vcenter",mode:(t=t.parser).mode,body:e[0]}},htmlBuilder(t,e){var t=qs(t.body,e),r=e.fontMetrics().axisHeight,r=.5*(t.height-r-(t.depth+r));return Z.makeVList({positionType:"shift",positionData:r,children:[{type:"elem",elem:t}]},e)},mathmlBuilder(t,e){return new E.MathNode("mpadded",[Zs(t.body,e)],["vcenter"])}}),o({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,r){throw new X("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var r=Sl(t),n=[],i=e.havingStyle(e.style.text()),a=0;at.body.replace(/ /g,t.star?"␣":" "),"makeVerb"),_l=_s,Al=new RegExp("[̀-ͯ]+$"),Ll=class{static{me(this,"Lexer")}constructor(t,e){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=t,this.settings=e,this.tokenRegex=new RegExp("([ \r\n\t]+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-‧‪-퟿豈-￿][̀-ͯ]*|[\ud800-\udbff][\udc00-\udfff][̀-ͯ]*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|(\\\\[a-zA-Z@]+)[ \r\n\t]*|\\\\[^\ud800-\udfff])","g"),this.catcodes={"%":14,"~":13}}setCatcode(t,e){this.catcodes[t]=e}lex(){var t=this.input,e=this.tokenRegex.lastIndex;if(e===t.length)return new zi("EOF",new Fi(this,e,e));if(null===(n=this.tokenRegex.exec(t))||n.index!==e)throw new X("Unexpected character: '"+t[e]+"'",new zi(t[e],new Fi(this,e,e+1)));var r,n=n[6]||n[3]||(n[2]?"\\ ":" ");return 14===this.catcodes[n]?(-1===(r=t.indexOf(` +`,this.tokenRegex.lastIndex))?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=r+1,this.lex()):new zi(n,new Fi(this,e,this.tokenRegex.lastIndex))}},Nl=class{static{me(this,"Namespace")}constructor(t,e){void 0===t&&(t={}),void 0===e&&(e={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=e,this.builtins=t,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new X("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t,e=this.undefStack.pop();for(t in e)e.hasOwnProperty(t)&&(null==e[t]?delete this.current[t]:this.current[t]=e[t])}endGroups(){for(;0{var i=t.consumeArg().tokens;if(1!==i.length)throw new X("\\newcommand's first argument must be a macro name");var a=i[0].text,s=t.isDefined(a);if(s&&!e)throw new X("\\newcommand{"+a+"} attempting to redefine "+a+"; use \\renewcommand");if(!s&&!r)throw new X("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");if(e=0,1===(i=t.consumeArg().tokens).length&&"["===i[0].text){for(var o="",l=t.expandNextToken();"]"!==l.text&&"EOF"!==l.text;)o+=l.text,l=t.expandNextToken();if(!o.match(/^\s*[0-9]+\s*$/))throw new X("Invalid number of arguments: "+o);e=parseInt(o),i=t.consumeArg().tokens}return s&&n||t.macros.set(a,{tokens:i,numArgs:e}),""},"newcommand"),l("\\newcommand",t=>Ml(t,!1,!0,!1)),l("\\renewcommand",t=>Ml(t,!0,!1,!1)),l("\\providecommand",t=>Ml(t,!0,!0,!0)),l("\\message",t=>(t=t.consumeArgs(1)[0],console.log(t.reverse().map(t=>t.text).join("")),"")),l("\\errmessage",t=>(t=t.consumeArgs(1)[0],console.error(t.reverse().map(t=>t.text).join("")),"")),l("\\show",t=>{var e=t.popToken(),r=e.text;return console.log(e,t.macros.get(r),_l[r],ja.math[r],ja.text[r]),""}),l("\\bgroup","{"),l("\\egroup","}"),l("~","\\nobreakspace"),l("\\lq","`"),l("\\rq","'"),l("\\aa","\\r a"),l("\\AA","\\r A"),l("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}"),l("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),l("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"),l("ℬ","\\mathscr{B}"),l("ℰ","\\mathscr{E}"),l("ℱ","\\mathscr{F}"),l("ℋ","\\mathscr{H}"),l("ℐ","\\mathscr{I}"),l("ℒ","\\mathscr{L}"),l("ℳ","\\mathscr{M}"),l("ℛ","\\mathscr{R}"),l("ℭ","\\mathfrak{C}"),l("ℌ","\\mathfrak{H}"),l("ℨ","\\mathfrak{Z}"),l("\\Bbbk","\\Bbb{k}"),l("·","\\cdotp"),l("\\llap","\\mathllap{\\textrm{#1}}"),l("\\rlap","\\mathrlap{\\textrm{#1}}"),l("\\clap","\\mathclap{\\textrm{#1}}"),l("\\mathstrut","\\vphantom{(}"),l("\\underbar","\\underline{\\text{#1}}"),l("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),l("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}"),l("\\ne","\\neq"),l("≠","\\neq"),l("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}"),l("∉","\\notin"),l("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}"),l("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}"),l("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}"),l("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}"),l("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}"),l("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}"),l("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}"),l("⟂","\\perp"),l("‼","\\mathclose{!\\mkern-0.8mu!}"),l("∌","\\notni"),l("⌜","\\ulcorner"),l("⌝","\\urcorner"),l("⌞","\\llcorner"),l("⌟","\\lrcorner"),l("©","\\copyright"),l("®","\\textregistered"),l("️","\\textregistered"),l("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'),l("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'),l("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'),l("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'),l("\\vdots","{\\varvdots\\rule{0pt}{15pt}}"),l("⋮","\\vdots"),l("\\varGamma","\\mathit{\\Gamma}"),l("\\varDelta","\\mathit{\\Delta}"),l("\\varTheta","\\mathit{\\Theta}"),l("\\varLambda","\\mathit{\\Lambda}"),l("\\varXi","\\mathit{\\Xi}"),l("\\varPi","\\mathit{\\Pi}"),l("\\varSigma","\\mathit{\\Sigma}"),l("\\varUpsilon","\\mathit{\\Upsilon}"),l("\\varPhi","\\mathit{\\Phi}"),l("\\varPsi","\\mathit{\\Psi}"),l("\\varOmega","\\mathit{\\Omega}"),l("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),l("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"),l("\\boxed","\\fbox{$\\displaystyle{#1}$}"),l("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),l("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),l("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;"),l("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}"),l("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}"),Dl={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"},l("\\dots",function(t){var e="\\dotso";return(t=t.expandAfterFuture().text)in Dl?e=Dl[t]:("\\not"===t.slice(0,4)||t in ja.math&&Yi.contains(["bin","rel"],ja.math[t].group))&&(e="\\dotsb"),e}),Ol={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0},l("\\dotso",function(t){return t.future().text in Ol?"\\ldots\\,":"\\ldots"}),l("\\dotsc",function(t){return(t=t.future().text)in Ol&&","!==t?"\\ldots\\,":"\\ldots"}),l("\\cdots",function(t){return t.future().text in Ol?"\\@cdots\\,":"\\@cdots"}),l("\\dotsb","\\cdots"),l("\\dotsm","\\cdots"),l("\\dotsi","\\!\\cdots"),l("\\dotsx","\\ldots\\,"),l("\\DOTSI","\\relax"),l("\\DOTSB","\\relax"),l("\\DOTSX","\\relax"),l("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),l("\\,","\\tmspace+{3mu}{.1667em}"),l("\\thinspace","\\,"),l("\\>","\\mskip{4mu}"),l("\\:","\\tmspace+{4mu}{.2222em}"),l("\\medspace","\\:"),l("\\;","\\tmspace+{5mu}{.2777em}"),l("\\thickspace","\\;"),l("\\!","\\tmspace-{3mu}{.1667em}"),l("\\negthinspace","\\!"),l("\\negmedspace","\\tmspace-{4mu}{.2222em}"),l("\\negthickspace","\\tmspace-{5mu}{.277em}"),l("\\enspace","\\kern.5em "),l("\\enskip","\\hskip.5em\\relax"),l("\\quad","\\hskip1em\\relax"),l("\\qquad","\\hskip2em\\relax"),l("\\tag","\\@ifstar\\tag@literal\\tag@paren"),l("\\tag@paren","\\tag@literal{({#1})}"),l("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new X("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),l("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),l("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),l("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),l("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),l("\\newline","\\\\\\relax"),l("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}"),l("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+(Pl=K(ya["Main-Regular"][84][1]-.7*ya["Main-Regular"][65][1]))+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),l("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+Pl+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),l("\\hspace","\\@ifstar\\@hspacer\\@hspace"),l("\\@hspace","\\hskip #1\\relax"),l("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),l("\\ordinarycolon",":"),l("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),l("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),l("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),l("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),l("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),l("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),l("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),l("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),l("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),l("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),l("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),l("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),l("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),l("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),l("∷","\\dblcolon"),l("∹","\\eqcolon"),l("≔","\\coloneqq"),l("≕","\\eqqcolon"),l("⩴","\\Coloneqq"),l("\\ratio","\\vcentcolon"),l("\\coloncolon","\\dblcolon"),l("\\colonequals","\\coloneqq"),l("\\coloncolonequals","\\Coloneqq"),l("\\equalscolon","\\eqqcolon"),l("\\equalscoloncolon","\\Eqqcolon"),l("\\colonminus","\\coloneq"),l("\\coloncolonminus","\\Coloneq"),l("\\minuscolon","\\eqcolon"),l("\\minuscoloncolon","\\Eqcolon"),l("\\coloncolonapprox","\\Colonapprox"),l("\\coloncolonsim","\\Colonsim"),l("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),l("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),l("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),l("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),l("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}"),l("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),l("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),l("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),l("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),l("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),l("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),l("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),l("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),l("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}"),l("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}"),l("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}"),l("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}"),l("\\nleqq","\\html@mathml{\\@nleqq}{≰}"),l("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}"),l("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}"),l("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}"),l("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}"),l("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}"),l("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}"),l("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}"),l("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}"),l("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}"),l("\\imath","\\html@mathml{\\@imath}{ı}"),l("\\jmath","\\html@mathml{\\@jmath}{ȷ}"),l("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}"),l("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}"),l("⟦","\\llbracket"),l("⟧","\\rrbracket"),l("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}"),l("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}"),l("⦃","\\lBrace"),l("⦄","\\rBrace"),l("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}"),l("⦵","\\minuso"),l("\\darr","\\downarrow"),l("\\dArr","\\Downarrow"),l("\\Darr","\\Downarrow"),l("\\lang","\\langle"),l("\\rang","\\rangle"),l("\\uarr","\\uparrow"),l("\\uArr","\\Uparrow"),l("\\Uarr","\\Uparrow"),l("\\N","\\mathbb{N}"),l("\\R","\\mathbb{R}"),l("\\Z","\\mathbb{Z}"),l("\\alef","\\aleph"),l("\\alefsym","\\aleph"),l("\\Alpha","\\mathrm{A}"),l("\\Beta","\\mathrm{B}"),l("\\bull","\\bullet"),l("\\Chi","\\mathrm{X}"),l("\\clubs","\\clubsuit"),l("\\cnums","\\mathbb{C}"),l("\\Complex","\\mathbb{C}"),l("\\Dagger","\\ddagger"),l("\\diamonds","\\diamondsuit"),l("\\empty","\\emptyset"),l("\\Epsilon","\\mathrm{E}"),l("\\Eta","\\mathrm{H}"),l("\\exist","\\exists"),l("\\harr","\\leftrightarrow"),l("\\hArr","\\Leftrightarrow"),l("\\Harr","\\Leftrightarrow"),l("\\hearts","\\heartsuit"),l("\\image","\\Im"),l("\\infin","\\infty"),l("\\Iota","\\mathrm{I}"),l("\\isin","\\in"),l("\\Kappa","\\mathrm{K}"),l("\\larr","\\leftarrow"),l("\\lArr","\\Leftarrow"),l("\\Larr","\\Leftarrow"),l("\\lrarr","\\leftrightarrow"),l("\\lrArr","\\Leftrightarrow"),l("\\Lrarr","\\Leftrightarrow"),l("\\Mu","\\mathrm{M}"),l("\\natnums","\\mathbb{N}"),l("\\Nu","\\mathrm{N}"),l("\\Omicron","\\mathrm{O}"),l("\\plusmn","\\pm"),l("\\rarr","\\rightarrow"),l("\\rArr","\\Rightarrow"),l("\\Rarr","\\Rightarrow"),l("\\real","\\Re"),l("\\reals","\\mathbb{R}"),l("\\Reals","\\mathbb{R}"),l("\\Rho","\\mathrm{P}"),l("\\sdot","\\cdot"),l("\\sect","\\S"),l("\\spades","\\spadesuit"),l("\\sub","\\subset"),l("\\sube","\\subseteq"),l("\\supe","\\supseteq"),l("\\Tau","\\mathrm{T}"),l("\\thetasym","\\vartheta"),l("\\weierp","\\wp"),l("\\Zeta","\\mathrm{Z}"),l("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),l("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),l("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),l("\\bra","\\mathinner{\\langle{#1}|}"),l("\\ket","\\mathinner{|{#1}\\rangle}"),l("\\braket","\\mathinner{\\langle{#1}\\rangle}"),l("\\Bra","\\left\\langle#1\\right|"),l("\\Ket","\\left|#1\\right\\rangle"),l("\\bra@ket",(Bl=me(l=>t=>{var e=t.consumeArg().tokens,n=t.consumeArg().tokens,i=t.consumeArg().tokens,r=t.consumeArg().tokens,a=t.macros.get("|"),s=t.macros.get("\\|"),o=(t.macros.beginGroup(),me(r=>t=>{l&&(t.macros.set("|",a),i.length)&&t.macros.set("\\|",s);var e=r;return!r&&i.length&&"|"===t.future().text&&(t.popToken(),e=!0),{tokens:e?i:n,numArgs:0}},"midMacro")),o=(t.macros.set("|",o(!1)),i.length&&t.macros.set("\\|",o(!0)),t.consumeArg().tokens),r=t.expandTokens([...r,...o,...e]);return t.macros.endGroup(),{tokens:r.reverse(),numArgs:0}},"braketHelper"))(!1)),l("\\bra@set",Bl(!0)),l("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),l("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),l("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),l("\\angln","{\\angl n}"),l("\\blue","\\textcolor{##6495ed}{#1}"),l("\\orange","\\textcolor{##ffa500}{#1}"),l("\\pink","\\textcolor{##ff00af}{#1}"),l("\\red","\\textcolor{##df0030}{#1}"),l("\\green","\\textcolor{##28ae7b}{#1}"),l("\\gray","\\textcolor{gray}{#1}"),l("\\purple","\\textcolor{##9d38bd}{#1}"),l("\\blueA","\\textcolor{##ccfaff}{#1}"),l("\\blueB","\\textcolor{##80f6ff}{#1}"),l("\\blueC","\\textcolor{##63d9ea}{#1}"),l("\\blueD","\\textcolor{##11accd}{#1}"),l("\\blueE","\\textcolor{##0c7f99}{#1}"),l("\\tealA","\\textcolor{##94fff5}{#1}"),l("\\tealB","\\textcolor{##26edd5}{#1}"),l("\\tealC","\\textcolor{##01d1c1}{#1}"),l("\\tealD","\\textcolor{##01a995}{#1}"),l("\\tealE","\\textcolor{##208170}{#1}"),l("\\greenA","\\textcolor{##b6ffb0}{#1}"),l("\\greenB","\\textcolor{##8af281}{#1}"),l("\\greenC","\\textcolor{##74cf70}{#1}"),l("\\greenD","\\textcolor{##1fab54}{#1}"),l("\\greenE","\\textcolor{##0d923f}{#1}"),l("\\goldA","\\textcolor{##ffd0a9}{#1}"),l("\\goldB","\\textcolor{##ffbb71}{#1}"),l("\\goldC","\\textcolor{##ff9c39}{#1}"),l("\\goldD","\\textcolor{##e07d10}{#1}"),l("\\goldE","\\textcolor{##a75a05}{#1}"),l("\\redA","\\textcolor{##fca9a9}{#1}"),l("\\redB","\\textcolor{##ff8482}{#1}"),l("\\redC","\\textcolor{##f9685d}{#1}"),l("\\redD","\\textcolor{##e84d39}{#1}"),l("\\redE","\\textcolor{##bc2612}{#1}"),l("\\maroonA","\\textcolor{##ffbde0}{#1}"),l("\\maroonB","\\textcolor{##ff92c6}{#1}"),l("\\maroonC","\\textcolor{##ed5fa6}{#1}"),l("\\maroonD","\\textcolor{##ca337c}{#1}"),l("\\maroonE","\\textcolor{##9e034e}{#1}"),l("\\purpleA","\\textcolor{##ddd7ff}{#1}"),l("\\purpleB","\\textcolor{##c6b9fc}{#1}"),l("\\purpleC","\\textcolor{##aa87ff}{#1}"),l("\\purpleD","\\textcolor{##7854ab}{#1}"),l("\\purpleE","\\textcolor{##543b78}{#1}"),l("\\mintA","\\textcolor{##f5f9e8}{#1}"),l("\\mintB","\\textcolor{##edf2df}{#1}"),l("\\mintC","\\textcolor{##e0e5cc}{#1}"),l("\\grayA","\\textcolor{##f6f7f7}{#1}"),l("\\grayB","\\textcolor{##f0f1f2}{#1}"),l("\\grayC","\\textcolor{##e3e5e6}{#1}"),l("\\grayD","\\textcolor{##d6d8da}{#1}"),l("\\grayE","\\textcolor{##babec2}{#1}"),l("\\grayF","\\textcolor{##888d93}{#1}"),l("\\grayG","\\textcolor{##626569}{#1}"),l("\\grayH","\\textcolor{##3b3e40}{#1}"),l("\\grayI","\\textcolor{##21242c}{#1}"),l("\\kaBlue","\\textcolor{##314453}{#1}"),l("\\kaGreen","\\textcolor{##71B307}{#1}"),$l={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},Fl=class{static{me(this,"MacroExpander")}constructor(t,e,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=e,this.expansionCount=0,this.feed(t),this.macros=new Nl(Il,e.macros),this.mode=r,this.stack=[]}feed(t){this.lexer=new Ll(t,this.settings)}switchMode(t){this.mode=t}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(t){this.stack.push(t)}pushTokens(t){this.stack.push(...t)}scanArgument(t){var e,r,n;if(t){if(this.consumeSpaces(),"["!==this.future().text)return null;e=this.popToken(),{tokens:n,end:r}=this.consumeArg(["]"])}else({tokens:n,start:e,end:r}=this.consumeArg());return this.pushToken(new zi("EOF",r.loc)),this.pushTokens(n),e.range(r,"")}consumeSpaces(){for(;" "===this.future().text;)this.stack.pop()}consumeArg(t){var e,r=[],n=t&&0this.settings.maxExpand)throw new X("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(t){var e=this.popToken(),r=e.text,n=e.noexpand?null:this._getExpansion(r);if(null==n||t&&n.unexpandable){if(t&&null==n&&"\\"===r[0]&&!this.isDefined(r))throw new X("Undefined control sequence: "+r);return this.pushToken(e),!1}this.countExpansion(1);var i=n.tokens,a=this.consumeArgs(n.numArgs,n.delimiters);if(n.numArgs)for(var s=(i=i.slice()).length-1;0<=s;--s){var o=i[s];if("#"===o.text){if(0===s)throw new X("Incomplete placeholder at end of macro body",o);if("#"===(o=i[--s]).text)i.splice(s+1,1);else{if(!/^[1-9]$/.test(o.text))throw new X("Not a valid argument number",o);i.splice(s,2,...a[+o.text-1])}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;){var t;if(!1===this.expandOnce())return(t=this.stack.pop()).treatAsRelax&&(t.text="\\relax"),t}throw new Error}expandMacro(t){return this.macros.has(t)?this.expandTokens([new zi(t)]):void 0}expandTokens(t){var e,r=[],n=this.stack.length;for(this.pushTokens(t);this.stack.length>n;)!1===this.expandOnce(!0)&&((e=this.stack.pop()).treatAsRelax&&(e.noexpand=!1,e.treatAsRelax=!1),r.push(e));return this.countExpansion(r.length),r}expandMacroAsText(t){return(t=this.expandMacro(t))&&t.map(t=>t.text).join("")}_getExpansion(t){var e=this.macros.get(t);if(null==e)return e;if(1!==t.length||null==(t=this.lexer.catcodes[t])||13===t){if("string"!=typeof(t="function"==typeof e?e(this):e))return t;var r=0;if(-1!==t.indexOf("#"))for(var n=t.replace(/##/g,"");-1!==n.indexOf("#"+(r+1));)++r;for(var i=new Ll(t,this.settings),a=[],s=i.lex();"EOF"!==s.text;)a.push(s),s=i.lex();return a.reverse(),{tokens:a,numArgs:r}}}isDefined(t){return this.macros.has(t)||_l.hasOwnProperty(t)||ja.math.hasOwnProperty(t)||ja.text.hasOwnProperty(t)||$l.hasOwnProperty(t)}isExpandable(t){var e=this.macros.get(t);return null!=e?"string"==typeof e||"function"==typeof e||!e.unexpandable:_l.hasOwnProperty(t)&&!_l[t].primitive}},zl=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Gl=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g","ʰ":"h","ⁱ":"i","ʲ":"j","ᵏ":"k","ˡ":"l","ᵐ":"m","ⁿ":"n","ᵒ":"o","ᵖ":"p","ʳ":"r","ˢ":"s","ᵗ":"t","ᵘ":"u","ᵛ":"v","ʷ":"w","ˣ":"x","ʸ":"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),Ul={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},ql={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","ḉ":"ḉ","č":"č","ĉ":"ĉ","ċ":"ċ","ç":"ç","ď":"ď","ḋ":"ḋ","ḑ":"ḑ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ḝ":"ḝ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ȩ":"ȩ","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ģ":"ģ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","ḩ":"ḩ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ķ":"ķ","ĺ":"ĺ","ľ":"ľ","ļ":"ļ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ņ":"ņ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ŗ":"ŗ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ş":"ş","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ţ":"ţ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Ḉ":"Ḉ","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ç":"Ç","Ď":"Ď","Ḋ":"Ḋ","Ḑ":"Ḑ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ḝ":"Ḝ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ȩ":"Ȩ","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ģ":"Ģ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Ḩ":"Ḩ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ķ":"Ķ","Ĺ":"Ĺ","Ľ":"Ľ","Ļ":"Ļ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ņ":"Ņ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ŗ":"Ŗ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ş":"Ş","Ť":"Ť","Ṫ":"Ṫ","Ţ":"Ţ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"},(jl=class a{static{me(this,"Parser")}constructor(t,e){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new Fl(t,e,this.mode),this.settings=e,this.leftrightDepth=0}expect(t,e){if(void 0===e&&(e=!0),this.fetch().text!==t)throw new X("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());e&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(t){this.mode=t,this.gullet.switchMode(t)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var t=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),t}finally{this.gullet.endGroups()}}subparse(t){var e=this.nextToken,t=(this.consume(),this.gullet.pushToken(new zi("}")),this.gullet.pushTokens(t),this.parseExpression(!1));return this.expect("}"),this.nextToken=e,t}parseExpression(t,e){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var n=this.fetch();if(-1!==a.endOfExpression.indexOf(n.text)||e&&n.text===e||t&&_l[n.text]&&_l[n.text].infix)break;if(!(n=this.parseAtom(e)))break;"internal"!==n.type&&r.push(n)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(t){for(var e,r,n,i=-1,a=0;a{"A"===t.tagName&&t.hasAttribute("target")&&t.setAttribute(e,t.getAttribute("target")??"")}),si.addHook("afterSanitizeAttributes",t=>{"A"===t.tagName&&t.hasAttribute(e)&&(t.setAttribute("target",t.getAttribute(e)??""),t.removeAttribute(e),"_blank"===t.getAttribute("target"))&&t.setAttribute("rel","noopener")})}var nc,ic,ac,sc,oc,lc,cc,hc,uc,dc,pc,gc,fc,mc,yc,vc,xc,bc,wc,kc,Tc,Ec,Cc,Sc,_c,L,Ac,Lc,Nc,Ic,Rc,Mc,Dc,Oc=b(()=>{oi(),nc=//gi,ic=me(t=>t?pc(t).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),ac=(()=>{let t=!1;return()=>{t||(rc(),t=!0)}})(),me(rc,"setupDompurifyHooks"),sc=me(t=>(ac(),si.sanitize(t)),"removeScript"),oc=me((t,e)=>(!1!==e.flowchart?.htmlLabels&&("antiscript"===(e=e.securityLevel)||"strict"===e?t=sc(t):"loose"!==e&&(t=(t=(t=pc(t)).replace(//g,">")).replace(/=/g,"="),t=dc(t))),t),"sanitizeMore"),lc=me((t,e)=>t&&(e.dompurifyConfig?si.sanitize(oc(t,e),e.dompurifyConfig):si.sanitize(oc(t,e),{FORBID_TAGS:["style"]})).toString(),"sanitizeText"),cc=me((t,e)=>"string"==typeof t?lc(t,e):t.flat().map(t=>lc(t,e)),"sanitizeTextOrArray"),hc=me(t=>nc.test(t),"hasBreaks"),uc=me(t=>t.split(nc),"splitBreaks"),dc=me(t=>t.replace(/#br#/g,"
"),"placeholderToBreak"),pc=me(t=>t.replace(nc,"#br#"),"breakToPlaceholder"),gc=me(t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=CSS.escape(e)),e},"getUrl"),fc=me(t=>!(!1===t||["false","null","0"].includes(String(t).trim().toLowerCase())),"evaluate"),mc=me(function(...t){return t=t.filter(t=>!isNaN(t)),Math.max(...t)},"getMax"),yc=me(function(...t){return t=t.filter(t=>!isNaN(t)),Math.min(...t)},"getMin"),vc=me(function(t){var r,n,i=t.split(/(,)/),a=[];for(let e=0;eMath.max(0,t.split(e).length-1),"countOccurrence"),bc=me((t,e)=>(t=xc(t,"~"),e=xc(e,"~"),1===t&&1===e),"shouldCombineSets"),wc=me(t=>{let e=xc(t,"~"),r=!1;if(e<=1)return t;e%2!=0&&t.startsWith("~")&&(t=t.substring(1),r=!0);let n=[...t],i=n.indexOf("~"),a=n.lastIndexOf("~");for(;-1!==i&&-1!==a&&i!==a;)n[i]="<",n[a]=">",i=n.indexOf("~"),a=n.lastIndexOf("~");return r&&n.unshift("~"),n.join("")},"processSet"),kc=me(()=>void 0!==window.MathMLElement,"isMathMLSupported"),Tc=/\$\$(.*)\$\$/g,Ec=me(t=>0<(t.match(Tc)?.length??0),"hasKatex"),Cc=me(async(t,e)=>{var r=document.createElement("div"),t=(r.innerHTML=await _c(t,e),r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",r),{width:r.clientWidth,height:r.clientHeight});return r.remove(),t},"calculateMathMLDimensions"),Sc=me(async(t,e)=>{if(!Ec(t))return t;if(!(kc()||e.legacyMathML||e.forceLegacyMathML))return t.replace(Tc,"MathML is unsupported in this environment.");{let r=(await Promise.resolve().then(()=>(ec(),li))).default,n=e.forceLegacyMathML||!kc()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(nc).map(t=>Ec(t)?`

`:`
${t}
`).join("").replace(Tc,(t,e)=>r.renderToString(e,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,""))}},"renderKatexUnsanitized"),_c=me(async(t,e)=>lc(await Sc(t,e),e),"renderKatexSanitized"),L={getRows:ic,sanitizeText:lc,sanitizeTextOrArray:cc,hasBreaks:hc,splitBreaks:uc,lineBreakRegex:nc,removeScript:sc,getUrl:gc,evaluate:fc,getMax:mc,getMin:yc}}),Pc=b(()=>{fr(),rn(),Oc(),t(),Ac={body:'?',height:80,width:80},Lc=new Map,Nc=new Map,Ic=me(t=>{for(var e of t){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(D.debug("Registering icon pack:",e.name),"loader"in e)Nc.set(e.name,e.loader);else{if(!("icons"in e))throw D.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.');Lc.set(e.name,e.icons)}}},"registerIconPacks"),Rc=me(async(t,e)=>{var r=A(t,!0,void 0!==e);if(!r)throw new Error("Invalid icon name: "+t);if(!(e=r.prefix||e))throw new Error("Icon name must contain a prefix: "+t);let n=Lc.get(e);if(!n){var i=Nc.get(e);if(!i)throw new Error("Icon set not found: "+r.prefix);try{n={...await i(),prefix:e},Lc.set(e,n)}catch(t){throw D.error(t),new Error("Failed to load icon set: "+r.prefix)}}if(i=lt(n,r.name))return i;throw new Error("Icon not found: "+t)},"getRegisteredIconData"),Mc=me(async t=>{try{return await Rc(t),!0}catch{return!1}},"isIconAvailable"),Dc=me(async(t,e,r)=>{let n;try{n=await Rc(t,e?.fallbackPrefix)}catch(t){D.error(t),n=Ac}return e=St(wt((t=vt(n,e)).body),{...t.attributes,...r}),lc(e,ar())},"getIconSVG")});function Bc(t){for(var e=[],r=1;r{me(Bc,"dedent")}),ih=b(()=>{$c=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,Fc=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,zc=/\s*%%.*\n/gm}),ah=b(()=>{Gc=class extends Error{static{me(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}}}),sh=b(()=>{t(),ih(),ah(),Uc={},qc=me(function(t,e){t=t.replace($c,"").replace(Fc,"").replace(zc,` +`);for(var[r,{detector:n}]of Object.entries(Uc))if(n(t,e))return r;throw new Gc("No diagram type detected matching given configuration for text: "+t)},"detectType"),jc=me((...t)=>{for(var{id:e,detector:r,loader:n}of t)Wc(e,r,n)},"registerLazyLoadedDiagrams"),Wc=me((t,e,r)=>{Uc[t]&&D.warn(`Detector with key ${t} already exists. Overwriting.`),Uc[t]={detector:e,loader:r},D.debug(`Detector with key ${t} added`+(r?" with loader":""))},"addDetector"),Yc=me(t=>Uc[t].loader,"getDiagramLoader")}),oh=b(()=>{function B(){this.yy={}}var t=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),e=[1,24],r=[1,25],$=[1,26],F=[1,27],z=[1,28],n=[1,63],i=[1,64],a=[1,65],s=[1,66],o=[1,67],l=[1,68],h=[1,69],u=[1,29],d=[1,30],p=[1,31],g=[1,32],f=[1,33],m=[1,34],y=[1,35],v=[1,36],x=[1,37],b=[1,38],w=[1,39],k=[1,40],T=[1,41],E=[1,42],C=[1,43],S=[1,44],_=[1,45],A=[1,46],L=[1,47],N=[1,48],I=[1,50],G=[1,51],U=[1,52],q=[1,53],j=[1,54],W=[1,55],Y=[1,56],H=[1,57],V=[1,58],X=[1,59],K=[1,60],Z=[14,42],Q=[14,34,36,37,38,39,40,41,42,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,70,71,72,73,74],J=[12,14,34,36,37,38,39,40,41,42,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,70,71,72,73,74],R=[1,82],M=[1,83],D=[1,84],O=[1,85],P=[12,14,42],tt=[12,14,33,42],et=[12,14,33,42,76,77,79,80],rt=[12,33],nt=[34,36,37,38,39,40,41,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,70,71,72,73,74],e={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 3:n.setDirection("TB");break;case 4:n.setDirection("BT");break;case 5:n.setDirection("RL");break;case 6:n.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:n.setC4Type(a[o-3]);break;case 19:n.setTitle(a[o].substring(6)),this.$=a[o].substring(6);break;case 20:n.setAccDescription(a[o].substring(15)),this.$=a[o].substring(15);break;case 21:this.$=a[o].trim(),n.setTitle(this.$);break;case 22:case 23:this.$=a[o].trim(),n.setAccDescription(this.$);break;case 28:a[o].splice(2,0,"ENTERPRISE"),n.addPersonOrSystemBoundary(...a[o]),this.$=a[o];break;case 29:a[o].splice(2,0,"SYSTEM"),n.addPersonOrSystemBoundary(...a[o]),this.$=a[o];break;case 30:n.addPersonOrSystemBoundary(...a[o]),this.$=a[o];break;case 31:a[o].splice(2,0,"CONTAINER"),n.addContainerBoundary(...a[o]),this.$=a[o];break;case 32:n.addDeploymentNode("node",...a[o]),this.$=a[o];break;case 33:n.addDeploymentNode("nodeL",...a[o]),this.$=a[o];break;case 34:n.addDeploymentNode("nodeR",...a[o]),this.$=a[o];break;case 35:n.popBoundaryParseStack();break;case 39:n.addPersonOrSystem("person",...a[o]),this.$=a[o];break;case 40:n.addPersonOrSystem("external_person",...a[o]),this.$=a[o];break;case 41:n.addPersonOrSystem("system",...a[o]),this.$=a[o];break;case 42:n.addPersonOrSystem("system_db",...a[o]),this.$=a[o];break;case 43:n.addPersonOrSystem("system_queue",...a[o]),this.$=a[o];break;case 44:n.addPersonOrSystem("external_system",...a[o]),this.$=a[o];break;case 45:n.addPersonOrSystem("external_system_db",...a[o]),this.$=a[o];break;case 46:n.addPersonOrSystem("external_system_queue",...a[o]),this.$=a[o];break;case 47:n.addContainer("container",...a[o]),this.$=a[o];break;case 48:n.addContainer("container_db",...a[o]),this.$=a[o];break;case 49:n.addContainer("container_queue",...a[o]),this.$=a[o];break;case 50:n.addContainer("external_container",...a[o]),this.$=a[o];break;case 51:n.addContainer("external_container_db",...a[o]),this.$=a[o];break;case 52:n.addContainer("external_container_queue",...a[o]),this.$=a[o];break;case 53:n.addComponent("component",...a[o]),this.$=a[o];break;case 54:n.addComponent("component_db",...a[o]),this.$=a[o];break;case 55:n.addComponent("component_queue",...a[o]),this.$=a[o];break;case 56:n.addComponent("external_component",...a[o]),this.$=a[o];break;case 57:n.addComponent("external_component_db",...a[o]),this.$=a[o];break;case 58:n.addComponent("external_component_queue",...a[o]),this.$=a[o];break;case 60:n.addRel("rel",...a[o]),this.$=a[o];break;case 61:n.addRel("birel",...a[o]),this.$=a[o];break;case 62:n.addRel("rel_u",...a[o]),this.$=a[o];break;case 63:n.addRel("rel_d",...a[o]),this.$=a[o];break;case 64:n.addRel("rel_l",...a[o]),this.$=a[o];break;case 65:n.addRel("rel_r",...a[o]),this.$=a[o];break;case 66:n.addRel("rel_b",...a[o]),this.$=a[o];break;case 67:a[o].splice(0,1),n.addRel("rel",...a[o]),this.$=a[o];break;case 68:n.updateElStyle("update_el_style",...a[o]),this.$=a[o];break;case 69:n.updateRelStyle("update_rel_style",...a[o]),this.$=a[o];break;case 70:n.updateLayoutConfig("update_layout_config",...a[o]),this.$=a[o];break;case 71:this.$=[a[o]];break;case 72:a[o].unshift(a[o-1]),this.$=a[o];break;case 73:case 75:this.$=a[o].trim();break;case 74:var l={};l[a[o-1].trim()]=a[o].trim(),this.$=l;break;case 76:this.$=""}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:e,23:r,24:$,26:F,28:z,29:49,30:61,32:62,34:n,36:i,37:a,38:s,39:o,40:l,41:h,43:23,44:u,45:d,46:p,47:g,48:f,49:m,50:y,51:v,52:x,53:b,54:w,55:k,56:T,57:E,58:C,59:S,60:_,61:A,62:L,63:N,64:I,65:G,66:U,67:q,68:j,69:W,70:Y,71:H,72:V,73:X,74:K},{13:70,19:20,20:21,21:22,22:e,23:r,24:$,26:F,28:z,29:49,30:61,32:62,34:n,36:i,37:a,38:s,39:o,40:l,41:h,43:23,44:u,45:d,46:p,47:g,48:f,49:m,50:y,51:v,52:x,53:b,54:w,55:k,56:T,57:E,58:C,59:S,60:_,61:A,62:L,63:N,64:I,65:G,66:U,67:q,68:j,69:W,70:Y,71:H,72:V,73:X,74:K},{13:71,19:20,20:21,21:22,22:e,23:r,24:$,26:F,28:z,29:49,30:61,32:62,34:n,36:i,37:a,38:s,39:o,40:l,41:h,43:23,44:u,45:d,46:p,47:g,48:f,49:m,50:y,51:v,52:x,53:b,54:w,55:k,56:T,57:E,58:C,59:S,60:_,61:A,62:L,63:N,64:I,65:G,66:U,67:q,68:j,69:W,70:Y,71:H,72:V,73:X,74:K},{13:72,19:20,20:21,21:22,22:e,23:r,24:$,26:F,28:z,29:49,30:61,32:62,34:n,36:i,37:a,38:s,39:o,40:l,41:h,43:23,44:u,45:d,46:p,47:g,48:f,49:m,50:y,51:v,52:x,53:b,54:w,55:k,56:T,57:E,58:C,59:S,60:_,61:A,62:L,63:N,64:I,65:G,66:U,67:q,68:j,69:W,70:Y,71:H,72:V,73:X,74:K},{13:73,19:20,20:21,21:22,22:e,23:r,24:$,26:F,28:z,29:49,30:61,32:62,34:n,36:i,37:a,38:s,39:o,40:l,41:h,43:23,44:u,45:d,46:p,47:g,48:f,49:m,50:y,51:v,52:x,53:b,54:w,55:k,56:T,57:E,58:C,59:S,60:_,61:A,62:L,63:N,64:I,65:G,66:U,67:q,68:j,69:W,70:Y,71:H,72:V,73:X,74:K},{14:[1,74]},t(Z,[2,13],{43:23,29:49,30:61,32:62,20:75,34:n,36:i,37:a,38:s,39:o,40:l,41:h,44:u,45:d,46:p,47:g,48:f,49:m,50:y,51:v,52:x,53:b,54:w,55:k,56:T,57:E,58:C,59:S,60:_,61:A,62:L,63:N,64:I,65:G,66:U,67:q,68:j,69:W,70:Y,71:H,72:V,73:X,74:K}),t(Z,[2,14]),t(Q,[2,16],{12:[1,76]}),t(Z,[2,36],{12:[1,77]}),t(J,[2,19]),t(J,[2,20]),{25:[1,78]},{27:[1,79]},t(J,[2,23]),{35:80,75:81,76:R,77:M,79:D,80:O},{35:86,75:81,76:R,77:M,79:D,80:O},{35:87,75:81,76:R,77:M,79:D,80:O},{35:88,75:81,76:R,77:M,79:D,80:O},{35:89,75:81,76:R,77:M,79:D,80:O},{35:90,75:81,76:R,77:M,79:D,80:O},{35:91,75:81,76:R,77:M,79:D,80:O},{35:92,75:81,76:R,77:M,79:D,80:O},{35:93,75:81,76:R,77:M,79:D,80:O},{35:94,75:81,76:R,77:M,79:D,80:O},{35:95,75:81,76:R,77:M,79:D,80:O},{35:96,75:81,76:R,77:M,79:D,80:O},{35:97,75:81,76:R,77:M,79:D,80:O},{35:98,75:81,76:R,77:M,79:D,80:O},{35:99,75:81,76:R,77:M,79:D,80:O},{35:100,75:81,76:R,77:M,79:D,80:O},{35:101,75:81,76:R,77:M,79:D,80:O},{35:102,75:81,76:R,77:M,79:D,80:O},{35:103,75:81,76:R,77:M,79:D,80:O},{35:104,75:81,76:R,77:M,79:D,80:O},t(P,[2,59]),{35:105,75:81,76:R,77:M,79:D,80:O},{35:106,75:81,76:R,77:M,79:D,80:O},{35:107,75:81,76:R,77:M,79:D,80:O},{35:108,75:81,76:R,77:M,79:D,80:O},{35:109,75:81,76:R,77:M,79:D,80:O},{35:110,75:81,76:R,77:M,79:D,80:O},{35:111,75:81,76:R,77:M,79:D,80:O},{35:112,75:81,76:R,77:M,79:D,80:O},{35:113,75:81,76:R,77:M,79:D,80:O},{35:114,75:81,76:R,77:M,79:D,80:O},{35:115,75:81,76:R,77:M,79:D,80:O},{20:116,29:49,30:61,32:62,34:n,36:i,37:a,38:s,39:o,40:l,41:h,43:23,44:u,45:d,46:p,47:g,48:f,49:m,50:y,51:v,52:x,53:b,54:w,55:k,56:T,57:E,58:C,59:S,60:_,61:A,62:L,63:N,64:I,65:G,66:U,67:q,68:j,69:W,70:Y,71:H,72:V,73:X,74:K},{12:[1,118],33:[1,117]},{35:119,75:81,76:R,77:M,79:D,80:O},{35:120,75:81,76:R,77:M,79:D,80:O},{35:121,75:81,76:R,77:M,79:D,80:O},{35:122,75:81,76:R,77:M,79:D,80:O},{35:123,75:81,76:R,77:M,79:D,80:O},{35:124,75:81,76:R,77:M,79:D,80:O},{35:125,75:81,76:R,77:M,79:D,80:O},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(Z,[2,15]),t(Q,[2,17],{21:22,19:130,22:e,23:r,24:$,26:F,28:z}),t(Z,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:e,23:r,24:$,26:F,28:z,34:n,36:i,37:a,38:s,39:o,40:l,41:h,44:u,45:d,46:p,47:g,48:f,49:m,50:y,51:v,52:x,53:b,54:w,55:k,56:T,57:E,58:C,59:S,60:_,61:A,62:L,63:N,64:I,65:G,66:U,67:q,68:j,69:W,70:Y,71:H,72:V,73:X,74:K}),t(J,[2,21]),t(J,[2,22]),t(P,[2,39]),t(tt,[2,71],{75:81,35:132,76:R,77:M,79:D,80:O}),t(et,[2,73]),{78:[1,133]},t(et,[2,75]),t(et,[2,76]),t(P,[2,40]),t(P,[2,41]),t(P,[2,42]),t(P,[2,43]),t(P,[2,44]),t(P,[2,45]),t(P,[2,46]),t(P,[2,47]),t(P,[2,48]),t(P,[2,49]),t(P,[2,50]),t(P,[2,51]),t(P,[2,52]),t(P,[2,53]),t(P,[2,54]),t(P,[2,55]),t(P,[2,56]),t(P,[2,57]),t(P,[2,58]),t(P,[2,60]),t(P,[2,61]),t(P,[2,62]),t(P,[2,63]),t(P,[2,64]),t(P,[2,65]),t(P,[2,66]),t(P,[2,67]),t(P,[2,68]),t(P,[2,69]),t(P,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(rt,[2,28]),t(rt,[2,29]),t(rt,[2,30]),t(rt,[2,31]),t(rt,[2,32]),t(rt,[2,33]),t(rt,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t(Q,[2,18]),t(Z,[2,38]),t(tt,[2,72]),t(et,[2,74]),t(P,[2,24]),t(P,[2,35]),t(nt,[2,25]),t(nt,[2,26],{12:[1,138]}),t(nt,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0{t(),Xc=me(function(t,e){for(var r of e)t.attr(r[0],r[1])},"d3Attrs"),Kc=me(function(t,e,r){var n=new Map;return r?(n.set("width","100%"),n.set("style",`max-width: ${e}px;`)):(n.set("height",t),n.set("width",e)),n},"calculateSvgSizeAttrs"),Zc=me(function(t,e,r,n){e=Kc(e,r,n),Xc(t,e)},"configureSvgSize"),Qc=me(function(t,e,r,n){var i=e.node().getBBox(),a=i.width,s=(D.info(`SVG bounds: ${a}x`+(s=i.height),i),D.info("Graph bounds: 0x0",t),D.info(`Calculated bounds: ${t=a+2*r}x`+(a=s+2*r)),Zc(e,a,t,n),`${i.x-r} ${i.y-r} ${i.width+2*r} `+(i.height+2*r));e.attr("viewBox",s)},"setupGraphViewbox")}),ch=b(()=>{t(),Jc={},th=me((t,e,r)=>{let n="";return t in Jc&&Jc[t]?n=Jc[t](r):D.warn("No theme found for "+t),` & { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + fill: ${r.textColor} + } + @keyframes edge-animation-frame { + from { + stroke-dashoffset: 0; + } + } + @keyframes dash { + to { + stroke-dashoffset: 0; + } + } + & .edge-animation-slow { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 50s linear infinite; + stroke-linecap: round; + } + & .edge-animation-fast { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 20s linear infinite; + stroke-linecap: round; + } + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${r.errorBkgColor}; + } + & .error-text { + fill: ${r.errorTextColor}; + stroke: ${r.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: 1px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + & .edge-thickness-invisible { + stroke-width: 0; + fill: none; + } + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${r.lineColor}; + stroke: ${r.lineColor}; + } + & .marker.cross { + stroke: ${r.lineColor}; + } + + & svg { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + } + & p { + margin: 0 + } + + ${n} + + ${e} +`},"getStyles"),eh=me((t,e)=>{void 0!==e&&(Jc[t]=e)},"addStylesForDiagram"),rh=th}),hh={};KBt(hh,{clear:()=>fh,getAccDescription:()=>xh,getAccTitle:()=>yh,getDiagramTitle:()=>wh,setAccDescription:()=>vh,setAccTitle:()=>mh,setDiagramTitle:()=>bh});var uh,dh,ph,gh,fh,mh,yh,vh,xh,bh,wh,kh,Th,O,Eh,Ch,Sh,_h,Ah,Lh,Nh,Ih,Rh,Mh,Dh,Oh,Ph,Bh,$h,Fh,zh,Gh,Uh,qh,jh,Wh,Yh,Hh,Vh,Xh,Kh,Zh,Qh,Jh,tu,eu,ru,nu,iu,au,su,ou,lu,cu,hu,uu,du,pu,gu,fu,mu,yu,vu,xu,bu,wu,ku=b(()=>{Oc(),rn(),ph=dh=uh="",gh=me(t=>lc(t,ar()),"sanitizeText"),fh=me(()=>{dh=ph=uh=""},"clear"),mh=me(t=>{uh=gh(t).replace(/^\s+/g,"")},"setAccTitle"),yh=me(()=>uh,"getAccTitle"),vh=me(t=>{ph=gh(t).replace(/\n\s+/g,` +`)},"setAccDescription"),xh=me(()=>ph,"getAccDescription"),bh=me(t=>{dh=gh(t)},"setDiagramTitle"),wh=me(()=>dh,"getDiagramTitle")}),Tu=b(()=>{sh(),t(),rn(),Oc(),lh(),ch(),ku(),kh=D,Th=It,O=ar,Eh=ir,Ch=Ve,Sh=me(t=>lc(t,O()),"sanitizeText"),_h=Qc,Ah=me(()=>hh,"getCommonDb"),Lh={},Nh=me((t,e,r)=>{Lh[t]&&kh.warn(`Diagram with id ${t} already registered. Overwriting.`),Lh[t]=e,r&&Wc(t,r),eh(t,e.styles),e.injectUtils?.(kh,Th,O,Sh,_h,Ah(),()=>{})},"registerDiagram"),Ih=me(t=>{if(t in Lh)return Lh[t];throw new Rh(t)},"getDiagram"),Rh=class extends Error{static{me(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}}}),Eu=b(()=>{Tu(),Oc(),ku(),Mh=[],Dh=[""],Bh=[{alias:Oh="global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:Ph=""}],Fh="",zh=!($h=[]),Gh=4,Uh=2,jh=me(function(){return qh},"getC4Type"),Wh=me(function(t){qh=lc(t,O())},"setC4Type"),Yh=me(function(r,n,i,a,s,o,l,c,h){if(null!=r&&null!=n&&null!=i&&null!=a){let t={},e=$h.find(t=>t.from===n&&t.to===i);e?t=e:$h.push(t),t.type=r,t.from=n,t.to=i,t.label={text:a},null==s?t.techn={text:""}:"object"==typeof s?([r,a]=Object.entries(s)[0],t[r]={text:a}):t.techn={text:s},null==o?t.descr={text:""}:"object"==typeof o?([r,a]=Object.entries(o)[0],t[r]={text:a}):t.descr={text:o},"object"==typeof l?([s,r]=Object.entries(l)[0],t[s]=r):t.sprite=l,"object"==typeof c?([a,o]=Object.entries(c)[0],t[a]=o):t.tags=c,"object"==typeof h?([s,r]=Object.entries(h)[0],t[s]=r):t.link=h,t.wrap=fu()}},"addRel"),Hh=me(function(r,n,i,a,s,o,l){if(null!==n&&null!==i){let t={},e=Mh.find(t=>t.alias===n);var c;e&&n===e.alias?t=e:(t.alias=n,Mh.push(t)),t.label=null==i?{text:""}:{text:i},null==a?t.descr={text:""}:"object"==typeof a?([i,c]=Object.entries(a)[0],t[i]={text:c}):t.descr={text:a},"object"==typeof s?([i,c]=Object.entries(s)[0],t[i]=c):t.sprite=s,"object"==typeof o?([a,i]=Object.entries(o)[0],t[a]=i):t.tags=o,"object"==typeof l?([c,s]=Object.entries(l)[0],t[c]=s):t.link=l,t.typeC4Shape={text:r},t.parentBoundary=Oh,t.wrap=fu()}},"addPersonOrSystem"),Vh=me(function(r,n,i,a,s,o,l,c){if(null!==n&&null!==i){let t={},e=Mh.find(t=>t.alias===n);var h;e&&n===e.alias?t=e:(t.alias=n,Mh.push(t)),t.label=null==i?{text:""}:{text:i},null==a?t.techn={text:""}:"object"==typeof a?([i,h]=Object.entries(a)[0],t[i]={text:h}):t.techn={text:a},null==s?t.descr={text:""}:"object"==typeof s?([i,h]=Object.entries(s)[0],t[i]={text:h}):t.descr={text:s},"object"==typeof o?([a,i]=Object.entries(o)[0],t[a]=i):t.sprite=o,"object"==typeof l?([h,s]=Object.entries(l)[0],t[h]=s):t.tags=l,"object"==typeof c?([a,i]=Object.entries(c)[0],t[a]=i):t.link=c,t.wrap=fu(),t.typeC4Shape={text:r},t.parentBoundary=Oh}},"addContainer"),Xh=me(function(r,n,i,a,s,o,l,c){if(null!==n&&null!==i){let t={},e=Mh.find(t=>t.alias===n);var h;e&&n===e.alias?t=e:(t.alias=n,Mh.push(t)),t.label=null==i?{text:""}:{text:i},null==a?t.techn={text:""}:"object"==typeof a?([i,h]=Object.entries(a)[0],t[i]={text:h}):t.techn={text:a},null==s?t.descr={text:""}:"object"==typeof s?([i,h]=Object.entries(s)[0],t[i]={text:h}):t.descr={text:s},"object"==typeof o?([a,i]=Object.entries(o)[0],t[a]=i):t.sprite=o,"object"==typeof l?([h,s]=Object.entries(l)[0],t[h]=s):t.tags=l,"object"==typeof c?([a,i]=Object.entries(c)[0],t[a]=i):t.link=c,t.wrap=fu(),t.typeC4Shape={text:r},t.parentBoundary=Oh}},"addComponent"),Kh=me(function(r,n,i,a,s){if(null!==r&&null!==n){let t={},e=Bh.find(t=>t.alias===r);var o;e&&r===e.alias?t=e:(t.alias=r,Bh.push(t)),t.label=null==n?{text:""}:{text:n},null==i?t.type={text:"system"}:"object"==typeof i?([n,o]=Object.entries(i)[0],t[n]={text:o}):t.type={text:i},"object"==typeof a?([n,o]=Object.entries(a)[0],t[n]=o):t.tags=a,"object"==typeof s?([i,n]=Object.entries(s)[0],t[i]=n):t.link=s,t.parentBoundary=Oh,t.wrap=fu(),Ph=Oh,Oh=r,Dh.push(Ph)}},"addPersonOrSystemBoundary"),Zh=me(function(r,n,i,a,s){if(null!==r&&null!==n){let t={},e=Bh.find(t=>t.alias===r);var o;e&&r===e.alias?t=e:(t.alias=r,Bh.push(t)),t.label=null==n?{text:""}:{text:n},null==i?t.type={text:"container"}:"object"==typeof i?([n,o]=Object.entries(i)[0],t[n]={text:o}):t.type={text:i},"object"==typeof a?([n,o]=Object.entries(a)[0],t[n]=o):t.tags=a,"object"==typeof s?([i,n]=Object.entries(s)[0],t[i]=n):t.link=s,t.parentBoundary=Oh,t.wrap=fu(),Ph=Oh,Oh=r,Dh.push(Ph)}},"addContainerBoundary"),Qh=me(function(r,n,i,a,s,t,o,l){if(null!==n&&null!==i){let t={},e=Bh.find(t=>t.alias===n);var c;e&&n===e.alias?t=e:(t.alias=n,Bh.push(t)),t.label=null==i?{text:""}:{text:i},null==a?t.type={text:"node"}:"object"==typeof a?([i,c]=Object.entries(a)[0],t[i]={text:c}):t.type={text:a},null==s?t.descr={text:""}:"object"==typeof s?([i,c]=Object.entries(s)[0],t[i]={text:c}):t.descr={text:s},"object"==typeof o?([a,i]=Object.entries(o)[0],t[a]=i):t.tags=o,"object"==typeof l?([c,s]=Object.entries(l)[0],t[c]=s):t.link=l,t.nodeType=r,t.parentBoundary=Oh,t.wrap=fu(),Ph=Oh,Oh=n,Dh.push(Ph)}},"addDeploymentNode"),Jh=me(function(){Oh=Ph,Dh.pop(),Ph=Dh.pop(),Dh.push(Ph)},"popBoundaryParseStack"),tu=me(function(t,e,r,n,i,a,s,o,l,c,h){let u=Mh.find(t=>t.alias===e);var d,p;void 0===u&&void 0===(u=Bh.find(t=>t.alias===e))||(null!=r&&("object"==typeof r?([p,d]=Object.entries(r)[0],u[p]=d):u.bgColor=r),null!=n&&("object"==typeof n?([p,d]=Object.entries(n)[0],u[p]=d):u.fontColor=n),null!=i&&("object"==typeof i?([r,p]=Object.entries(i)[0],u[r]=p):u.borderColor=i),null!=a&&("object"==typeof a?([d,n]=Object.entries(a)[0],u[d]=n):u.shadowing=a),null!=s&&("object"==typeof s?([r,p]=Object.entries(s)[0],u[r]=p):u.shape=s),null!=o&&("object"==typeof o?([i,d]=Object.entries(o)[0],u[i]=d):u.sprite=o),null!=l&&("object"==typeof l?([n,a]=Object.entries(l)[0],u[n]=a):u.techn=l),null!=c&&("object"==typeof c?([r,p]=Object.entries(c)[0],u[r]=p):u.legendText=c),null!=h&&("object"==typeof h?([s,i]=Object.entries(h)[0],u[s]=i):u.legendSprite=h))},"updateElStyle"),eu=me(function(t,e,r,n,i,a,s){var o,l,c=$h.find(t=>t.from===e&&t.to===r);void 0!==c&&(null!=n&&("object"==typeof n?([o,l]=Object.entries(n)[0],c[o]=l):c.textColor=n),null!=i&&("object"==typeof i?([o,l]=Object.entries(i)[0],c[o]=l):c.lineColor=i),null!=a&&("object"==typeof a?([n,o]=Object.entries(a)[0],c[n]=parseInt(o)):c.offsetX=parseInt(a)),null!=s)&&("object"==typeof s?([l,i]=Object.entries(s)[0],c[l]=parseInt(i)):c.offsetY=parseInt(s))},"updateRelStyle"),ru=me(function(t,e,r){var e="object"==typeof e?(n=Object.values(e)[0],parseInt(n)):parseInt(e),n="object"==typeof r?(n=Object.values(r)[0],parseInt(n)):parseInt(r);1<=e&&(Gh=e),1<=n&&(Uh=n)},"updateLayoutConfig"),nu=me(function(){return Gh},"getC4ShapeInRow"),iu=me(function(){return Uh},"getC4BoundaryInRow"),au=me(function(){return Oh},"getCurrentBoundaryParse"),su=me(function(){return Ph},"getParentBoundaryParse"),ou=me(function(e){return null==e?Mh:Mh.filter(t=>t.parentBoundary===e)},"getC4ShapeArray"),lu=me(function(e){return Mh.find(t=>t.alias===e)},"getC4Shape"),cu=me(function(t){return Object.keys(ou(t))},"getC4ShapeKeys"),hu=me(function(e){return null==e?Bh:Bh.filter(t=>t.parentBoundary===e)},"getBoundaries"),uu=hu,du=me(function(){return $h},"getRels"),pu=me(function(){return Fh},"getTitle"),gu=me(function(t){zh=t},"setWrap"),fu=me(function(){return zh},"autoWrap"),mu=me(function(){Mh=[],Bh=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Oh="global",Dh=[Ph=""],Dh=[Fh=""],zh=!($h=[]),Gh=4,Uh=2},"clear"),yu={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},vu={FILLED:0,OPEN:1},xu={LEFTOF:0,RIGHTOF:1,OVER:2},bu=me(function(t){Fh=lc(t,O())},"setTitle"),wu={addPersonOrSystem:Hh,addPersonOrSystemBoundary:Kh,addContainer:Vh,addContainerBoundary:Zh,addComponent:Xh,addDeploymentNode:Qh,popBoundaryParseStack:Jh,addRel:Yh,updateElStyle:tu,updateRelStyle:eu,updateLayoutConfig:ru,autoWrap:fu,setWrap:gu,getC4ShapeArray:ou,getC4Shape:lu,getC4ShapeKeys:cu,getBoundaries:hu,getBoundarys:uu,getCurrentBoundaryParse:au,getParentBoundaryParse:su,getRels:du,getTitle:pu,getC4Type:jh,getC4ShapeInRow:nu,getC4BoundaryInRow:iu,setAccTitle:mh,getAccTitle:yh,getAccDescription:xh,setAccDescription:vh,getConfig:me(()=>O().c4,"getConfig"),clear:mu,LINETYPE:yu,ARROWTYPE:vu,PLACEMENT:xu,setTitle:bu,setC4Type:Wh}});function Cu(t,e){return null==t||null==e?NaN:t{me(Cu,"ascending")});function _u(t,e){return null==t||null==e?NaN:e{me(_u,"descending")});function Lu(r){let a,s,i;function o(t,e,r=0,n=t.length){if(r>>1}while(s(t[i],e)<0?r=1+i:n=i,r>>1}while(s(t[i],e)<=0?r=1+i:n=i,r-i(t[n],e)?n-1:n}return i=2!==r.length?(a=Cu,s=me((t,e)=>Cu(r(t),e),"compare2"),me((t,e)=>r(t)-e,"delta")):(a=r===Cu||r===_u?r:Nu,s=r),me(o,"left"),me(t,"right"),me(e,"center"),{left:o,center:e,right:t}}function Nu(){return 0}var Iu=b(()=>{Su(),Au(),me(Lu,"bisector"),me(Nu,"zero")});function Ru(t){return null===t?NaN:+t}var Mu,Du,Ou=b(()=>{me(Ru,"number")}),Pu=b(()=>{Su(),Iu(),Ou(),Mu=Lu(Cu).right,Lu(Ru).center,Du=Mu});function Bu({_intern:t,_key:e},r){return e=e(r),t.has(e)?t.get(e):r}function $u({_intern:t,_key:e},r){return e=e(r),t.has(e)?t.get(e):(t.set(e,r),r)}function Fu({_intern:t,_key:e},r){return e=e(r),t.has(e)&&(r=t.get(e),t.delete(e)),r}function zu(t){return null!==t&&"object"==typeof t?t.valueOf():t}var Gu,Uu=b(()=>{Gu=class extends Map{static{me(this,"InternMap")}constructor(t,e=zu){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(var[r,n]of t)this.set(r,n)}get(t){return super.get(Bu(this,t))}has(t){return super.has(Bu(this,t))}set(t,e){return super.set($u(this,t),e)}delete(t){return super.delete(Fu(this,t))}},me(Bu,"intern_get"),me($u,"intern_set"),me(Fu,"intern_delete"),me(zu,"keyof")});function qu(t,e,r){let n=(e-t)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),s=Hu<=a?10:Vu<=a?5:Xu<=a?2:1,o,l,c;return i<0?(c=Math.pow(10,-i)/s,o=Math.round(t*c),l=Math.round(e*c),o/ce&&--l,c=-c):(c=Math.pow(10,i)*s,o=Math.round(t/c),l=Math.round(e/c),o*ce&&--l),l{Hu=Math.sqrt(50),Vu=Math.sqrt(10),Xu=Math.sqrt(2),me(qu,"tickSpec"),me(ju,"ticks"),me(Wu,"tickIncrement"),me(Yu,"tickStep")});function Zu(e,r){let n;if(void 0===r)for(var t of e)null!=t&&(n{me(Zu,"max")});function Ju(e,r){let n;if(void 0===r)for(var t of e)null!=t&&(n>t||void 0===n&&t<=t)&&(n=t);else{let t=-1;for(var i of e)null!=(i=r(i,++t,e))&&(n>i||void 0===n&&i<=i)&&(n=i)}return n}var td=b(()=>{me(Ju,"min")});function ed(t,e,r){t=+t,e=+e,r=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+r;for(var n=-1,i=0|Math.max(0,Math.ceil((e-t)/r)),a=new Array(i);++n{me(ed,"range")}),nd=b(()=>{Pu(),Iu(),Qu(),td(),rd(),Ku(),Uu()});function id(t){return t}var ad=b(()=>{me(id,"default")});function sd(t){return"translate("+t+",0)"}function od(t){return"translate(0,"+t+")"}function ld(e){return t=>+e(t)}function cd(e,r){return r=Math.max(0,e.bandwidth()-2*r)/2,e.round()&&(r=Math.round(r)),t=>+e(t)+r}function hd(){return!this.__axis}function ud(p,g){var f=[],m=null,y=null,v=6,x=6,b=3,w=typeof window<"u"&&1{ad(),gd=1,fd=3,me(sd,"translateX"),me(od,"translateY"),me(ld,"number"),me(cd,"center"),me(hd,"entering"),me(ud,"axis"),me(dd,"axisTop"),me(pd,"axisBottom")}),yd=b(()=>{md()});function vd(){for(var t,e=0,r=arguments.length,n={};e{Td={value:me(()=>{},"value")},me(vd,"dispatch"),me(xd,"Dispatch"),me(bd,"parseTypenames"),xd.prototype=vd.prototype={constructor:xd,on:me(function(t,e){var r,n=this._,i=bd(t+"",n),a=-1,s=i.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++a{_d()}),Ld=b(()=>{Sd={svg:"http://www.w3.org/2000/svg",xhtml:Cd="http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function Nd(t){var e=t+="",r=e.indexOf(":");return 0<=r&&"xmlns"!==(e=t.slice(0,r))&&(t=t.slice(r+1)),Sd.hasOwnProperty(e)?{space:Sd[e],local:t}:t}var Id=b(()=>{Ld(),me(Nd,"default")});function Rd(r){return function(){var t=this.ownerDocument,e=this.namespaceURI;return e===Cd&&t.documentElement.namespaceURI===Cd?t.createElement(r):t.createElementNS(e,r)}}function Md(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Dd(t){return((t=Nd(t)).local?Md:Rd)(t)}var Od=b(()=>{Id(),Ld(),me(Rd,"creatorInherit"),me(Md,"creatorFixed"),me(Dd,"default")});function Pd(){}function Bd(t){return null==t?Pd:function(){return this.querySelector(t)}}var $d=b(()=>{me(Pd,"none"),me(Bd,"default")});function Fd(t){"function"!=typeof t&&(t=Bd(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{yg(),$d(),me(Fd,"default")});function Gd(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}var Ud=b(()=>{me(Gd,"array")});function qd(){return[]}function jd(t){return null==t?qd:function(){return this.querySelectorAll(t)}}var Wd=b(()=>{me(qd,"empty"),me(jd,"default")});function Yd(t){return function(){return Gd(t.apply(this,arguments))}}function Hd(t){t=("function"==typeof t?Yd:jd)(t);for(var e=this._groups,r=e.length,n=[],i=[],a=0;a{yg(),Ud(),Wd(),me(Yd,"arrayAll"),me(Hd,"default")});function Xd(t){return function(){return this.matches(t)}}function Kd(e){return function(t){return t.matches(e)}}var Zd=b(()=>{me(Xd,"default"),me(Kd,"childMatcher")});function Qd(t){return function(){return ep.call(this.children,t)}}function Jd(){return this.firstElementChild}function tp(t){return this.select(null==t?Jd:Qd("function"==typeof t?t:Kd(t)))}var ep,rp=b(()=>{Zd(),ep=Array.prototype.find,me(Qd,"childFind"),me(Jd,"childFirst"),me(tp,"default")});function np(){return Array.from(this.children)}function ip(t){return function(){return sp.call(this.children,t)}}function ap(t){return this.selectAll(null==t?np:ip("function"==typeof t?t:Kd(t)))}var sp,op=b(()=>{Zd(),sp=Array.prototype.filter,me(np,"children"),me(ip,"childrenFilter"),me(ap,"default")});function lp(t){"function"!=typeof t&&(t=Xd(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{yg(),Zd(),me(lp,"default")});function hp(t){return new Array(t.length)}var up=b(()=>{me(hp,"default")});function dp(){return new dg(this._enter||this._groups.map(hp),this._parents)}function pp(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}var gp=b(()=>{up(),yg(),me(dp,"default"),me(pp,"EnterNode"),pp.prototype={constructor:pp,appendChild:me(function(t){return this._parent.insertBefore(t,this._next)},"appendChild"),insertBefore:me(function(t,e){return this._parent.insertBefore(t,e)},"insertBefore"),querySelector:me(function(t){return this._parent.querySelector(t)},"querySelector"),querySelectorAll:me(function(t){return this._parent.querySelectorAll(t)},"querySelectorAll")}});function fp(t){return function(){return t}}var mp=b(()=>{me(fp,"default")});function yp(t,e,r,n,i,a){for(var s,o=0,l=e.length,c=a.length;o{yg(),gp(),mp(),me(yp,"bindIndex"),me(vp,"bindKey"),me(xp,"datum"),me(bp,"default"),me(wp,"arraylike")});function Tp(){return new dg(this._exit||this._groups.map(hp),this._parents)}var Ep=b(()=>{up(),yg(),me(Tp,"default")});function Cp(t,e,r){var n=this.enter(),i=this,a=this.exit(),n="function"==typeof t?(n=t(n))&&n.selection():n.append(t+"");return null!=e&&(i=(i=e(i))&&i.selection()),null==r?a.remove():r(a),n&&i?n.merge(i).order():i}var Sp=b(()=>{me(Cp,"default")});function _p(t){for(var t=t.selection?t.selection():t,e=this._groups,r=t._groups,n=e.length,t=r.length,i=Math.min(n,t),a=new Array(n),s=0;s{yg(),me(_p,"default")});function Lp(){for(var t=this._groups,e=-1,r=t.length;++e{me(Lp,"default")});function Ip(r){function t(t,e){return t&&e?r(t.__data__,e.__data__):!t-!e}r=r||Rp,me(t,"compareNode");for(var e=this._groups,n=e.length,i=new Array(n),a=0;a{yg(),me(Ip,"default"),me(Rp,"ascending")});function Dp(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}var Op=b(()=>{me(Dp,"default")});function Pp(){return Array.from(this)}var Bp=b(()=>{me(Pp,"default")});function $p(){for(var t=this._groups,e=0,r=t.length;e{me($p,"default")});function zp(){let t=0;for(var e of this)++t;return t}var Gp=b(()=>{me(zp,"default")});function Up(){return!this.node()}var qp=b(()=>{me(Up,"default")});function jp(t){for(var e=this._groups,r=0,n=e.length;r{me(jp,"default")});function Yp(t){return function(){this.removeAttribute(t)}}function Hp(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Vp(t,e){return function(){this.setAttribute(t,e)}}function Xp(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Kp(e,r){return function(){var t=r.apply(this,arguments);null==t?this.removeAttribute(e):this.setAttribute(e,t)}}function Zp(e,r){return function(){var t=r.apply(this,arguments);null==t?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,t)}}function Qp(t,e){var r,t=Nd(t);return arguments.length<2?(r=this.node(),t.local?r.getAttributeNS(t.space,t.local):r.getAttribute(t)):this.each((null==e?t.local?Hp:Yp:"function"==typeof e?t.local?Zp:Kp:t.local?Xp:Vp)(t,e))}var Jp=b(()=>{Id(),me(Yp,"attrRemove"),me(Hp,"attrRemoveNS"),me(Vp,"attrConstant"),me(Xp,"attrConstantNS"),me(Kp,"attrFunction"),me(Zp,"attrFunctionNS"),me(Qp,"default")});function t0(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}var e0=b(()=>{me(t0,"default")});function r0(t){return function(){this.style.removeProperty(t)}}function n0(t,e,r){return function(){this.style.setProperty(t,e,r)}}function i0(e,r,n){return function(){var t=r.apply(this,arguments);null==t?this.style.removeProperty(e):this.style.setProperty(e,t,n)}}function a0(t,e,r){return 1{e0(),me(r0,"styleRemove"),me(n0,"styleConstant"),me(i0,"styleFunction"),me(a0,"default"),me(s0,"styleValue")});function l0(t){return function(){delete this[t]}}function c0(t,e){return function(){this[t]=e}}function h0(e,r){return function(){var t=r.apply(this,arguments);null==t?delete this[e]:this[e]=t}}function u0(t,e){return 1{me(l0,"propertyRemove"),me(c0,"propertyConstant"),me(h0,"propertyFunction"),me(u0,"default")});function p0(t){return t.trim().split(/^|\s+/)}function g0(t){return t.classList||new f0(t)}function f0(t){this._node=t,this._names=p0(t.getAttribute("class")||"")}function m0(t,e){for(var r=g0(t),n=-1,i=e.length;++n{me(p0,"classArray"),me(g0,"classList"),me(f0,"ClassList"),f0.prototype={add:me(function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:me(function(t){0<=(t=this._names.indexOf(t))&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:me(function(t){return 0<=this._names.indexOf(t)},"contains")},me(m0,"classedAdd"),me(y0,"classedRemove"),me(v0,"classedTrue"),me(x0,"classedFalse"),me(b0,"classedFunction"),me(w0,"default")});function T0(){this.textContent=""}function E0(t){return function(){this.textContent=t}}function C0(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function S0(t){return arguments.length?this.each(null==t?T0:("function"==typeof t?C0:E0)(t)):this.node().textContent}var _0=b(()=>{me(T0,"textRemove"),me(E0,"textConstant"),me(C0,"textFunction"),me(S0,"default")});function A0(){this.innerHTML=""}function L0(t){return function(){this.innerHTML=t}}function N0(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function I0(t){return arguments.length?this.each(null==t?A0:("function"==typeof t?N0:L0)(t)):this.node().innerHTML}var R0=b(()=>{me(A0,"htmlRemove"),me(L0,"htmlConstant"),me(N0,"htmlFunction"),me(I0,"default")});function M0(){this.nextSibling&&this.parentNode.appendChild(this)}function D0(){return this.each(M0)}var O0=b(()=>{me(M0,"raise"),me(D0,"default")});function P0(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function B0(){return this.each(P0)}var $0=b(()=>{me(P0,"lower"),me(B0,"default")});function F0(t){var e="function"==typeof t?t:Dd(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}var z0=b(()=>{Od(),me(F0,"default")});function G0(){return null}function U0(t,e){var r="function"==typeof t?t:Dd(t),n=null==e?G0:"function"==typeof e?e:Bd(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var q0=b(()=>{Od(),$d(),me(G0,"constantNull"),me(U0,"default")});function j0(){var t=this.parentNode;t&&t.removeChild(this)}function W0(){return this.each(j0)}var Y0=b(()=>{me(j0,"remove"),me(W0,"default")});function H0(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function V0(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function X0(t){return this.select(t?V0:H0)}var K0=b(()=>{me(H0,"selection_cloneShallow"),me(V0,"selection_cloneDeep"),me(X0,"default")});function Z0(t){return arguments.length?this.property("__data__",t):this.node().__data__}var Q0=b(()=>{me(Z0,"default")});function J0(e){return function(t){e.call(this,t,this.__data__)}}function tg(t){return t.trim().split(/^|\s+/).map(function(t){var e="",r=t.indexOf(".");return 0<=r&&(e=t.slice(r+1),t=t.slice(0,r)),{type:t,name:e}})}function eg(a){return function(){var t=this.__on;if(t){for(var e,r=0,n=-1,i=t.length;r{me(J0,"contextListener"),me(tg,"parseTypenames"),me(eg,"onRemove"),me(rg,"onAdd"),me(ng,"default")});function ag(t,e,r){var n=t0(t),i=n.CustomEvent;"function"==typeof i?i=new i(e,r):(i=n.document.createEvent("Event"),r?(i.initEvent(e,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function sg(t,e){return function(){return ag(this,t,e)}}function og(t,e){return function(){return ag(this,t,e.apply(this,arguments))}}function lg(t,e){return this.each(("function"==typeof e?og:sg)(t,e))}var cg=b(()=>{e0(),me(ag,"dispatchEvent"),me(sg,"dispatchConstant"),me(og,"dispatchFunction"),me(lg,"default")});function*hg(){for(var t=this._groups,e=0,r=t.length;e{me(hg,"default")});function dg(t,e){this._groups=t,this._parents=e}function pg(){return new dg([[document.documentElement]],fg)}function gg(){return this}var fg,mg,yg=b(()=>{zd(),Vd(),rp(),op(),cp(),kp(),gp(),Ep(),Sp(),Ap(),Np(),Mp(),Op(),Bp(),Fp(),Gp(),qp(),Wp(),Jp(),o0(),d0(),k0(),_0(),R0(),O0(),$0(),z0(),q0(),Y0(),K0(),Q0(),ig(),cg(),ug(),fg=[null],me(dg,"Selection"),me(pg,"selection"),me(gg,"selection_selection"),dg.prototype=pg.prototype={constructor:dg,select:Fd,selectAll:Hd,selectChild:tp,selectChildren:ap,filter:lp,data:bp,enter:dp,exit:Tp,join:Cp,merge:_p,selection:gg,order:Lp,sort:Ip,call:Dp,nodes:Pp,node:$p,size:zp,empty:Up,each:jp,attr:Qp,style:a0,property:u0,classed:w0,text:S0,html:I0,raise:D0,lower:B0,append:F0,insert:U0,remove:W0,clone:X0,datum:Z0,on:ng,dispatch:lg,[Symbol.iterator]:hg},mg=pg});function H(t){return"string"==typeof t?new dg([[document.querySelector(t)]],[document.documentElement]):new dg([[t]],fg)}var vg=b(()=>{yg(),me(H,"default")}),xg=b(()=>{Zd(),Id(),vg(),yg(),$d(),Wd(),o0()}),bg=b(()=>{});function wg(t,e,r){(t.prototype=e.prototype=r).constructor=t}function kg(t,e){var r,n=Object.create(t.prototype);for(r in e)n[r]=e[r];return n}var Tg=b(()=>{me(wg,"default"),me(kg,"extend")});function Eg(){}function Cg(){return this.rgb().formatHex()}function Sg(){return this.rgb().formatHex8()}function _g(){return Ug(this).formatHsl()}function Ag(){return this.rgb().formatRgb()}function Lg(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=Zg.exec(t))?(r=e[1].length,e=parseInt(e[1],16),6===r?Ng(e):3===r?new Dg(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?Ig(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?Ig(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Qg.exec(t))?new Dg(e[1],e[2],e[3],1):(e=Jg.exec(t))?new Dg(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=t1.exec(t))?Ig(e[1],e[2],e[3],e[4]):(e=e1.exec(t))?Ig(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=r1.exec(t))?Gg(e[1],e[2]/100,e[3]/100,1):(e=n1.exec(t))?Gg(e[1],e[2]/100,e[3]/100,e[4]):i1.hasOwnProperty(t)?Ng(i1[t]):"transparent"===t?new Dg(NaN,NaN,NaN,0):null}function Ng(t){return new Dg(t>>16&255,t>>8&255,255&t,1)}function Ig(t,e,r,n){return new Dg(t=n<=0?e=r=NaN:t,e,r,n)}function Rg(t){return(t=t instanceof Eg?t:Lg(t))?new Dg((t=t.rgb()).r,t.g,t.b,t.opacity):new Dg}function Mg(t,e,r,n){return 1===arguments.length?Rg(t):new Dg(t,e,r,n??1)}function Dg(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function Og(){return"#"+zg(this.r)+zg(this.g)+zg(this.b)}function Pg(){return"#"+zg(this.r)+zg(this.g)+zg(this.b)+zg(255*(isNaN(this.opacity)?1:this.opacity))}function Bg(){var t=$g(this.opacity);return(1===t?"rgb(":"rgba(")+Fg(this.r)+`, ${Fg(this.g)}, `+Fg(this.b)+(1===t?")":`, ${t})`)}function $g(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Fg(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function zg(t){return((t=Fg(t))<16?"0":"")+t.toString(16)}function Gg(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||1<=r?t=e=NaN:e<=0&&(t=NaN),new jg(t,e,r,n)}function Ug(t){var e,r,n,i,a,s,o,l;return t instanceof jg?new jg(t.h,t.s,t.l,t.opacity):(t=t instanceof Eg?t:Lg(t))?t instanceof jg?t:(e=(t=t.rgb()).r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),s=NaN,l=((a=Math.max(e,r,n))+i)/2,(o=a-i)?(s=e===a?(r-n)/o+6*(r{Tg(),me(Eg,"Color"),Vg="\\s*([+-]?\\d+)\\s*",Xg="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Kg="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Zg=/^#([0-9a-f]{3,8})$/,Qg=new RegExp(`^rgb\\(${Vg},${Vg},${Vg}\\)$`),Jg=new RegExp(`^rgb\\(${Kg},${Kg},${Kg}\\)$`),t1=new RegExp(`^rgba\\(${Vg},${Vg},${Vg},${Xg}\\)$`),e1=new RegExp(`^rgba\\(${Kg},${Kg},${Kg},${Xg}\\)$`),r1=new RegExp(`^hsl\\(${Xg},${Kg},${Kg}\\)$`),n1=new RegExp(`^hsla\\(${Xg},${Kg},${Kg},${Xg}\\)$`),i1={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},wg(Eg,Lg,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Cg,formatHex:Cg,formatHex8:Sg,formatHsl:_g,formatRgb:Ag,toString:Ag}),me(Cg,"color_formatHex"),me(Sg,"color_formatHex8"),me(_g,"color_formatHsl"),me(Ag,"color_formatRgb"),me(Lg,"color"),me(Ng,"rgbn"),me(Ig,"rgba"),me(Rg,"rgbConvert"),me(Mg,"rgb"),me(Dg,"Rgb"),wg(Dg,Mg,kg(Eg,{brighter(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Dg(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new Dg(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Dg(Fg(this.r),Fg(this.g),Fg(this.b),$g(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:Og,formatHex:Og,formatHex8:Pg,formatRgb:Bg,toString:Bg})),me(Og,"rgb_formatHex"),me(Pg,"rgb_formatHex8"),me(Bg,"rgb_formatRgb"),me($g,"clampa"),me(Fg,"clampi"),me(zg,"hex"),me(Gg,"hsla"),me(Ug,"hslConvert"),me(qg,"hsl"),me(jg,"Hsl"),wg(jg,qg,kg(Eg,{brighter(t){return t=null==t?1/.7:Math.pow(1/.7,t),new jg(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new jg(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l;return new Dg(Hg(240<=t?t-240:120+t,r=2*r-(e=r+(r<.5?r:1-r)*e),e),Hg(t,r,e),Hg(t<120?240+t:t-120,r,e),this.opacity)},clamp(){return new jg(Wg(this.h),Yg(this.s),Yg(this.l),$g(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(){var t=$g(this.opacity);return(1===t?"hsl(":"hsla(")+Wg(this.h)+`, ${100*Yg(this.s)}%, ${100*Yg(this.l)}%`+(1===t?")":`, ${t})`)}})),me(Wg,"clamph"),me(Yg,"clampt"),me(Hg,"hsl2rgb")}),l1=b(()=>{a1=Math.PI/180,s1=180/Math.PI});function c1(t){var e,r,n,i,a,s;return t instanceof u1?new u1(t.l,t.a,t.b,t.opacity):t instanceof v1?x1(t):(i=d1(.2225045*(e=f1((t=t instanceof Dg?t:Rg(t)).r))+.7168786*(r=f1(t.g))+.0606169*(n=f1(t.b))),e===r&&r===n?a=s=i:(a=d1((.4360747*e+.3850649*r+.1430804*n)/.96422),s=d1((.0139322*e+.0971045*r+.7141733*n)/.82521)),new u1(116*i-16,500*(a-i),200*(i-s),t.opacity))}function h1(t,e,r,n){return 1===arguments.length?c1(t):new u1(t,e,r,n??1)}function u1(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function d1(t){return T1{Tg(),o1(),l1(),b1=4/29,k1=3*(w1=6/29)*w1,T1=w1*w1*w1,me(c1,"labConvert"),me(h1,"lab"),me(u1,"Lab"),wg(u1,h1,kg(Eg,{brighter(t){return new u1(this.l+18*(t??1),this.a,this.b,this.opacity)},darker(t){return new u1(this.l-18*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,r=isNaN(this.b)?t:t-this.b/200;return new Dg(g1(3.1338561*(e=.96422*p1(e))-1.6168667*(t=+p1(t))-.4906146*(r=.82521*p1(r))),g1(-.9787684*e+1.9161415*t+.033454*r),g1(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}})),me(d1,"xyz2lab"),me(p1,"lab2xyz"),me(g1,"lrgb2rgb"),me(f1,"rgb2lrgb"),me(m1,"hclConvert"),me(y1,"hcl"),me(v1,"Hcl"),me(x1,"hcl2lab"),wg(v1,y1,kg(Eg,{brighter(t){return new v1(this.h,this.c,this.l+18*(t??1),this.opacity)},darker(t){return new v1(this.h,this.c,this.l-18*(t??1),this.opacity)},rgb(){return x1(this).rgb()}}))}),C1=b(()=>{o1(),E1()});function S1(t,e,r,n,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*r+(1+3*t+3*a-3*s)*n+s*i)/6}function _1(s){var o=s.length-1;return function(t){var e=t<=0?t=0:1<=t?o-(t=1):Math.floor(t*o),r=s[e],n=s[e+1],i=0{me(S1,"basis"),me(_1,"default")});function L1(n){var i=n.length;return function(t){var e=Math.floor(((t%=1)<0?++t:t)*i),r=n[(e+i-1)%i];return S1((t-e/i)*i,r,n[e%i],n[(e+1)%i],n[(e+2)%i])}}var N1,I1=b(()=>{A1(),me(L1,"default")}),R1=b(()=>{N1=me(t=>()=>t,"default")});function M1(e,r){return function(t){return e+t*r}}function D1(e,r,n){return e=Math.pow(e,n),r=Math.pow(r,n)-e,n=1/n,function(t){return Math.pow(e+t*r,n)}}function O1(t,e){var r=e-t;return r?M1(t,180{R1(),me(M1,"linear"),me(D1,"exponential"),me(O1,"hue"),me(P1,"gamma"),me(B1,"nogamma")});function F1(o){return function(t){for(var e,r=t.length,n=new Array(r),i=new Array(r),a=new Array(r),s=0;s{C1(),A1(),I1(),$1(),z1=me(function t(e){var s=P1(e);function r(e,t){var r=s((e=Mg(e)).r,(t=Mg(t)).r),n=s(e.g,t.g),i=s(e.b,t.b),a=B1(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=n(t),e.b=i(t),e.opacity=a(t),e+""}}return me(r,"rgb"),r.gamma=t,r},"rgbGamma")(1),me(F1,"rgbSpline"),F1(_1),F1(L1)});function U1(e,r){r=r||[];var n,i=e?Math.min(r.length,e.length):0,a=r.slice();return function(t){for(n=0;n{me(U1,"default"),me(q1,"isNumberArray")});function W1(t,e){for(var r=e?e.length:0,n=t?Math.min(r,t.length):0,i=new Array(n),a=new Array(r),s=0;s{of(),me(W1,"genericArray")});function H1(e,r){var n=new Date;return e=+e,r=+r,function(t){return n.setTime(e*(1-t)+r*t),n}}var V1=b(()=>{me(H1,"default")});function X1(e,r){return e=+e,r=+r,function(t){return e*(1-t)+r*t}}var K1=b(()=>{me(X1,"default")});function Z1(t,e){var r,n={},i={};for(r in null!==t&&"object"==typeof t||(t={}),e=null!==e&&"object"==typeof e?e:{})r in t?n[r]=sf(t[r],e[r]):i[r]=e[r];return function(t){for(r in n)i[r]=n[r](t);return i}}var Q1=b(()=>{of(),me(Z1,"default")});function J1(t){return function(){return t}}function tf(e){return function(t){return e(t)+""}}function ef(t,n){var e,r,i,a=rf.lastIndex=nf.lastIndex=0,s=-1,o=[],l=[];for(t+="",n+="";(e=rf.exec(t))&&(r=nf.exec(n));)(i=r.index)>a&&(i=n.slice(a,i),o[s]?o[s]+=i:o[++s]=i),(e=e[0])===(r=r[0])?o[s]?o[s]+=r:o[++s]=r:(o[++s]=null,l.push({i:s,x:X1(e,r)})),a=nf.lastIndex;return a{K1(),rf=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,nf=new RegExp(rf.source,"g"),me(J1,"zero"),me(tf,"one"),me(ef,"default")});function sf(t,e){var r=typeof e;return null==e||"boolean"==r?N1(e):("number"==r?X1:"string"==r?(r=Lg(e))?(e=r,z1):ef:e instanceof Lg?z1:e instanceof Date?H1:q1(e)?U1:Array.isArray(e)?W1:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?Z1:X1)(t,e)}var of=b(()=>{C1(),G1(),Y1(),V1(),K1(),Q1(),af(),R1(),j1(),me(sf,"default")});function lf(e,r){return e=+e,r=+r,function(t){return Math.round(e*(1-t)+r*t)}}var cf=b(()=>{me(lf,"default")});function hf(t,e,r,n,i,a){var s,o,l;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(l=t*r+e*n)&&(r-=t*l,n-=e*l),(o=Math.sqrt(r*r+n*n))&&(r/=o,n/=o,l/=o),t*n{uf=180/Math.PI,df={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},me(hf,"default")});function gf(t){return(t=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"")).isIdentity?df:hf(t.a,t.b,t.c,t.d,t.e,t.f)}function ff(t){return null!=t&&((mf=mf||document.createElementNS("http://www.w3.org/2000/svg","g")).setAttribute("transform",t),t=mf.transform.baseVal.consolidate())?hf((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):df}var mf,yf=b(()=>{pf(),me(gf,"parseCss"),me(ff,"parseSvg")});function vf(r,o,l,i){function c(t){return t.length?t.pop()+" ":""}function n(t,e,r,n,i,a){var s;t!==r||e!==n?(s=i.push("translate(",null,o,null,l),a.push({i:s-4,x:X1(t,r)},{i:s-2,x:X1(e,n)})):(r||n)&&i.push("translate("+r+o+n+l)}function s(t,e,r,n){t!==e?(180{K1(),yf(),me(vf,"interpolateTransform"),xf=vf(gf,"px, ","px)","deg)"),bf=vf(ff,", ",")",")")});function kf(s){return function(e,t){var r=s((e=y1(e)).h,(t=y1(t)).h),n=B1(e.c,t.c),i=B1(e.l,t.l),a=B1(e.opacity,t.opacity);return function(t){return e.h=r(t),e.c=n(t),e.l=i(t),e.opacity=a(t),e+""}}}var Tf,Ef=b(()=>{C1(),$1(),me(kf,"hcl"),Tf=kf(O1),kf(B1)}),Cf=b(()=>{of(),K1(),cf(),af(),wf(),G1(),Ef()});function Sf(){return Uf||(Wf(_f),Uf=jf.now()+qf)}function _f(){Uf=0}function Af(){this._call=this._time=this._next=null}function Lf(t,e,r){var n=new Af;return n.restart(t,e,r),n}function Nf(){Sf(),++Of;for(var t,e=Ff;e;)0<=(t=Uf-e._time)&&e._call.call(void 0,t),e=e._next;--Of}function If(){Uf=(Gf=jf.now())+qf,Of=Pf=0;try{Nf()}finally{Of=0,Mf(),Uf=0}}function Rf(){var t=jf.now(),e=t-Gf;$fr._time&&(n=r._time),(t=r)._next):(e=r._next,r._next=null,t?t._next=e:Ff=e);zf=t,Df(n)}function Df(t){Of||(Pf=Pf&&clearTimeout(Pf),24{$f=1e3,qf=Uf=Gf=Bf=Pf=Of=0,jf="object"==typeof performance&&performance.now?performance:Date,Wf="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)},me(Sf,"now"),me(_f,"clearNow"),me(Af,"Timer"),Af.prototype=Lf.prototype={constructor:Af,restart:me(function(t,e,r){if("function"!=typeof t)throw new TypeError("callback is not a function");r=(null==r?Sf():+r)+(null==e?0:+e),this._next||zf===this||(zf?zf._next=this:Ff=this,zf=this),this._call=t,this._time=r,Df()},"restart"),stop:me(function(){this._call&&(this._call=null,this._time=1/0,Df())},"stop")},me(Lf,"timer"),me(Nf,"timerFlush"),me(If,"wake"),me(Rf,"poke"),me(Mf,"nap"),me(Df,"sleep")});function Hf(e,r,t){var n=new Af;return r=null==r?0:+r,n.restart(t=>{n.stop(),e(t+r)},r,t),n}var Vf=b(()=>{Yf(),me(Hf,"default")}),Xf=b(()=>{Yf(),Vf()});function Kf(t,e,r,n,i,a){var s=t.__transition;if(s){if(r in s)return}else t.__transition={};tm(t,r,{name:e,index:n,group:i,on:em,tween:rm,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:nm})}function Zf(t,e){if((t=Jf(t,e)).state>nm)throw new Error("too late; already scheduled");return t}function Qf(t,e){if((t=Jf(t,e)).state>sm)throw new Error("too late; already running");return t}function Jf(t,e){if(t=(t=t.__transition)&&t[e])return t;throw new Error("transition not found")}function tm(a,s,o){var l,c=a.__transition;function t(t){o.state=im,o.timer.restart(h,o.delay,o.time),o.delay<=t&&h(t-o.delay)}function h(t){var e,r,n,i;if(o.state!==im)return d();for(e in c)if(i=c[e],i.name===o.name){if(i.state===sm)return Hf(h);i.state===om?(i.state=cm,i.timer.stop(),i.on.call("interrupt",a,a.__data__,i.index,i.group),delete c[e]):+e{Ad(),Xf(),em=Ed("start","end","cancel","interrupt"),rm=[],nm=0,im=1,am=2,sm=3,om=4,lm=5,cm=6,me(Kf,"default"),me(Zf,"init"),me(Qf,"set"),me(Jf,"get"),me(tm,"create")});function um(t,e){var r,n,i,a=t.__transition,s=!0;if(a){for(i in e=null==e?null:e+"",a)(r=a[i]).name!==e?s=!1:(n=am{hm(),me(um,"default")});function pm(t){return this.each(function(){um(this,t)})}var gm=b(()=>{dm(),me(pm,"default")});function fm(i,a){var s,o;return function(){var t=Qf(this,i),e=t.tween;if(e!==s)for(var r=0,n=(o=s=e).length;r{hm(),me(fm,"tweenRemove"),me(mm,"tweenFunction"),me(ym,"default"),me(vm,"tweenValue")});function bm(t,e){var r;return("number"==typeof e?X1:e instanceof Lg?z1:(r=Lg(e))?(e=r,z1):ef)(t,e)}var wm=b(()=>{C1(),Cf(),me(bm,"default")});function km(t){return function(){this.removeAttribute(t)}}function Tm(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Em(e,r,n){var i,a,s=n+"";return function(){var t=this.getAttribute(e);return t===s?null:t===i?a:a=r(i=t,n)}}function Cm(e,r,n){var i,a,s=n+"";return function(){var t=this.getAttributeNS(e.space,e.local);return t===s?null:t===i?a:a=r(i=t,n)}}function Sm(n,i,a){var s,o,l;return function(){var t,e,r=a(this);return null==r?void this.removeAttribute(n):(t=this.getAttribute(n))===(e=r+"")?null:t===s&&e===o?l:(o=e,l=i(s=t,r))}}function _m(n,i,a){var s,o,l;return function(){var t,e,r=a(this);return null==r?void this.removeAttributeNS(n.space,n.local):(t=this.getAttributeNS(n.space,n.local))===(e=r+"")?null:t===s&&e===o?l:(o=e,l=i(s=t,r))}}function Am(t,e){var r=Nd(t),n="transform"===r?bf:bm;return this.attrTween(t,"function"==typeof e?(r.local?_m:Sm)(r,n,vm(this,"attr."+t,e)):null==e?(r.local?Tm:km)(r):(r.local?Cm:Em)(r,n,e))}var Lm=b(()=>{Cf(),xg(),xm(),wm(),me(km,"attrRemove"),me(Tm,"attrRemoveNS"),me(Em,"attrConstant"),me(Cm,"attrConstantNS"),me(Sm,"attrFunction"),me(_m,"attrFunctionNS"),me(Am,"default")});function Nm(e,r){return function(t){this.setAttribute(e,r.call(this,t))}}function Im(e,r){return function(t){this.setAttributeNS(e.space,e.local,r.call(this,t))}}function Rm(e,r){var n,i;function t(){var t=r.apply(this,arguments);return n=t!==i?(i=t)&&Im(e,t):n}return me(t,"tween"),t._value=r,t}function Mm(e,r){var n,i;function t(){var t=r.apply(this,arguments);return n=t!==i?(i=t)&&Nm(e,t):n}return me(t,"tween"),t._value=r,t}function Dm(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return t=Nd(t),this.tween(r,(t.local?Rm:Mm)(t,e))}var Om=b(()=>{xg(),me(Nm,"attrInterpolate"),me(Im,"attrInterpolateNS"),me(Rm,"attrTweenNS"),me(Mm,"attrTween"),me(Dm,"default")});function Pm(t,e){return function(){Zf(this,t).delay=+e.apply(this,arguments)}}function Bm(t,e){return e=+e,function(){Zf(this,t).delay=e}}function $m(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?Pm:Bm)(e,t)):Jf(this.node(),e).delay}var Fm=b(()=>{hm(),me(Pm,"delayFunction"),me(Bm,"delayConstant"),me($m,"default")});function zm(t,e){return function(){Qf(this,t).duration=+e.apply(this,arguments)}}function Gm(t,e){return e=+e,function(){Qf(this,t).duration=e}}function Um(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?zm:Gm)(e,t)):Jf(this.node(),e).duration}var qm=b(()=>{hm(),me(zm,"durationFunction"),me(Gm,"durationConstant"),me(Um,"default")});function jm(t,e){if("function"!=typeof e)throw new Error;return function(){Qf(this,t).ease=e}}function Wm(t){var e=this._id;return arguments.length?this.each(jm(e,t)):Jf(this.node(),e).ease}var Ym=b(()=>{hm(),me(jm,"easeConstant"),me(Wm,"default")});function Hm(e,r){return function(){var t=r.apply(this,arguments);if("function"!=typeof t)throw new Error;Qf(this,e).ease=t}}function Vm(t){if("function"!=typeof t)throw new Error;return this.each(Hm(this._id,t))}var Xm=b(()=>{hm(),me(Hm,"easeVarying"),me(Vm,"default")});function Km(t){"function"!=typeof t&&(t=Xd(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{xg(),Uy(),me(Km,"default")});function Qm(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,n=e.length,t=r.length,i=Math.min(n,t),a=new Array(n),s=0;s{Uy(),me(Qm,"default")});function ty(t){return(t+"").trim().split(/^|\s+/).every(function(t){var e=t.indexOf(".");return!(t=0<=e?t.slice(0,e):t)||"start"===t})}function ey(r,n,i){var a,s,o=ty(n)?Zf:Qf;return function(){var t=o(this,r),e=t.on;e!==a&&(s=(a=e).copy()).on(n,i),t.on=s}}function ry(t,e){var r=this._id;return arguments.length<2?Jf(this.node(),r).on.on(t):this.each(ey(r,t,e))}var ny=b(()=>{hm(),me(ty,"start"),me(ey,"onFunction"),me(ry,"default")});function iy(r){return function(){var t,e=this.parentNode;for(t in this.__transition)if(+t!==r)return;e&&e.removeChild(this)}}function ay(){return this.on("end.remove",iy(this._id))}var sy=b(()=>{me(iy,"removeFunction"),me(ay,"default")});function oy(t){var e=this._name,r=this._id;"function"!=typeof t&&(t=Bd(t));for(var n=this._groups,i=n.length,a=new Array(i),s=0;s{xg(),Uy(),hm(),me(oy,"default")});function cy(t){var e=this._name,r=this._id;"function"!=typeof t&&(t=jd(t));for(var n=this._groups,i=n.length,a=[],s=[],o=0;o{xg(),Uy(),hm(),me(cy,"default")});function uy(){return new dy(this._groups,this._parents)}var dy,py=b(()=>{xg(),dy=mg.prototype.constructor,me(uy,"default")});function gy(r,n){var i,a,s;return function(){var t=s0(this,r),e=(this.style.removeProperty(r),s0(this,r));return t===e?null:t===i&&e===a?s:s=n(i=t,a=e)}}function fy(t){return function(){this.style.removeProperty(t)}}function my(e,r,n){var i,a,s=n+"";return function(){var t=s0(this,e);return t===s?null:t===i?a:a=r(i=t,n)}}function yy(n,i,a){var s,o,l;return function(){var t=s0(this,n),e=a(this),r=e+"";return null==e&&(this.style.removeProperty(n),r=e=s0(this,n)),t===r?null:t===s&&r===o?l:(o=r,l=i(s=t,e))}}function vy(n,i){var a,s,o,l,c="style."+i,h="end."+c;return function(){var t=Qf(this,n),e=t.on,r=null==t.value[c]?l=l||fy(i):void 0;e===a&&o===r||(s=(a=e).copy()).on(h,o=r),t.on=s}}function xy(t,e,r){var n="transform"==(t+="")?xf:bm;return null==e?this.styleTween(t,gy(t,n)).on("end.style."+t,fy(t)):"function"==typeof e?this.styleTween(t,yy(t,n,vm(this,"style."+t,e))).each(vy(this._id,t)):this.styleTween(t,my(t,n,e),r).on("end.style."+t,null)}var by=b(()=>{Cf(),xg(),hm(),xm(),wm(),me(gy,"styleNull"),me(fy,"styleRemove"),me(my,"styleConstant"),me(yy,"styleFunction"),me(vy,"styleMaybeRemove"),me(xy,"default")});function wy(e,r,n){return function(t){this.style.setProperty(e,r.call(this,t),n)}}function ky(e,r,n){var i,a;function t(){var t=r.apply(this,arguments);return i=t!==a?(a=t)&&wy(e,t,n):i}return me(t,"tween"),t._value=r,t}function Ty(t,e,r){var n="style."+(t+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;return this.tween(n,ky(t,e,r??""))}var Ey=b(()=>{me(wy,"styleInterpolate"),me(ky,"styleTween"),me(Ty,"default")});function Cy(t){return function(){this.textContent=t}}function Sy(e){return function(){var t=e(this);this.textContent=t??""}}function _y(t){return this.tween("text","function"==typeof t?Sy(vm(this,"text",t)):Cy(null==t?"":t+""))}var Ay=b(()=>{xm(),me(Cy,"textConstant"),me(Sy,"textFunction"),me(_y,"default")});function Ly(e){return function(t){this.textContent=e.call(this,t)}}function Ny(e){var r,n;function t(){var t=e.apply(this,arguments);return r=t!==n?(n=t)&&Ly(t):r}return me(t,"tween"),t._value=e,t}function Iy(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,Ny(t))}var Ry=b(()=>{me(Ly,"textInterpolate"),me(Ny,"textTween"),me(Iy,"default")});function My(){for(var t=this._name,e=this._id,r=++zy,n=this._groups,i=n.length,a=0;a{Uy(),hm(),me(My,"default")});function Oy(){var i,a,s=this,o=s._id,l=s.size();return new Promise(function(t,e){var r={value:e},n={value:me(function(){0==--l&&t()},"value")};s.each(function(){var t=Qf(this,o),e=t.on;e!==i&&((a=(i=e).copy())._.cancel.push(r),a._.interrupt.push(r),a._.end.push(n)),t.on=a}),0===l&&t()})}var Py=b(()=>{hm(),me(Oy,"default")});function By(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function $y(t){return mg().transition(t)}function Fy(){return++zy}var zy,Gy,Uy=b(()=>{xg(),Lm(),Om(),Fm(),qm(),Ym(),Xm(),Zm(),Jm(),ny(),sy(),ly(),hy(),py(),by(),Ey(),Ay(),Ry(),Dy(),xm(),Py(),zy=0,me(By,"Transition"),me($y,"transition"),me(Fy,"newId"),Gy=mg.prototype,By.prototype=$y.prototype={constructor:By,select:oy,selectAll:cy,selectChild:Gy.selectChild,selectChildren:Gy.selectChildren,filter:Km,merge:Qm,selection:uy,transition:My,call:Gy.call,nodes:Gy.nodes,node:Gy.node,size:Gy.size,empty:Gy.empty,each:Gy.each,on:ry,attr:Am,attrTween:Dm,style:xy,styleTween:Ty,text:_y,textTween:Iy,remove:ay,tween:ym,delay:$m,duration:Um,ease:Wm,easeVarying:Vm,end:Oy,[Symbol.iterator]:Gy[Symbol.iterator]}});function qy(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var jy=b(()=>{me(qy,"cubicInOut")}),Wy=b(()=>{jy()});function Yy(t,e){for(var r;!(r=t.__transition)||!(r=r[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return r}function Hy(t){var e,r;t=t instanceof By?(e=t._id,t._name):(e=++zy,(r=Vy).time=Sf(),null==t?null:t+"");for(var n=this._groups,i=n.length,a=0;a{Uy(),hm(),Wy(),Xf(),Vy={time:null,delay:0,duration:250,ease:qy},me(Yy,"inherit"),me(Hy,"default")}),Ky=b(()=>{xg(),gm(),Xy(),mg.prototype.interrupt=pm,mg.prototype.transition=Hy}),Zy=b(()=>{Ky()}),Qy=b(()=>{}),Jy=b(()=>{}),t2=b(()=>{});function e2(t){return[+t[0],+t[1]]}function r2(t){return[e2(t[0]),e2(t[1])]}function n2(t){return{type:t}}var i2,a2,s2,o2=b(()=>{Zy(),Qy(),Jy(),t2(),{abs:i2,max:a2,min:s2}=Math,me(e2,"number1"),me(r2,"number2"),["w","e"].map(n2),me(function(t,e){return null==t?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},"input"),me(function(t){return t&&[t[0][0],t[1][0]]},"output"),["n","s"].map(n2),me(function(t,e){return null==t?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},"input"),me(function(t){return t&&[t[0][1],t[1][1]]},"output"),["n","w","e","s","nw","ne","sw","se"].map(n2),me(function(t){return null==t?null:r2(t)},"input"),me(function(t){return t},"output"),me(n2,"type")}),l2=b(()=>{o2()});function c2(r){this._+=r[0];for(let t=1,e=r.length;t{d2=Math.PI,f2=(p2=2*d2)-(g2=1e-6),me(c2,"append"),me(h2,"appendRound"),m2=class{static{me(this,"Path")}constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?c2:h2(t)}moveTo(t,e){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,e){this._append`L${this._x1=+t},${this._y1=+e}`}quadraticCurveTo(t,e,r,n){this._append`Q${+t},${+e},${this._x1=+r},${this._y1=+n}`}bezierCurveTo(t,e,r,n,i,a){this._append`C${+t},${+e},${+r},${+n},${this._x1=+i},${this._y1=+a}`}arcTo(t,e,r,n,i){if(t=+t,e=+e,r=+r,n=+n,(i=+i)<0)throw new Error("negative radius: "+i);var a,s,o=this._x1,l=this._y1,c=r-t,h=n-e,u=o-t,d=l-e,p=u*u+d*d;null===this._x1?this._append`M${this._x1=t},${this._y1=e}`:g2g2&&i?(s=c*c+h*h,n=(r-=o)*r+(o=n-l)*o,l=Math.sqrt(s),a=Math.sqrt(p),p=(s=i*Math.tan((d2-Math.acos((s+p-n)/(2*l*a)))/2))/a,n=s/l,Math.abs(p-1)>g2&&this._append`L${t+p*u},${e+p*d}`,this._append`A${i},${i},0,0,${+(u*og2||Math.abs(this._y1-c)>g2)&&this._append`L${l},${c}`,r&&((a=a<0?a%p2+p2:a)>f2?this._append`A${r},${r},0,1,${h},${t-s},${e-o}A${r},${r},0,1,${h},${this._x1=l},${this._y1=c}`:g2{y2()}),x2=b(()=>{}),b2=b(()=>{}),w2=b(()=>{}),k2=b(()=>{}),T2=b(()=>{}),E2=b(()=>{}),C2=b(()=>{});function S2(t){return 1e21<=Math.abs(t=Math.round(t))?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function _2(t,e){var r;return(e=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0?null:[1<(r=t.slice(0,e)).length?r[0]+r.slice(2):r,+t.slice(e+1)]}var A2=b(()=>{me(S2,"default"),me(_2,"formatDecimalParts")});function L2(t){return(t=_2(Math.abs(t)))?t[1]:NaN}var N2=b(()=>{A2(),me(L2,"default")});function I2(o,l){return function(t,e){for(var r=t.length,n=[],i=0,a=o[0],s=0;0e));)a=o[i=(i+1)%o.length];return n.reverse().join(l)}}var R2=b(()=>{me(I2,"default")});function M2(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var D2=b(()=>{me(M2,"default")});function O2(t){var e;if(e=B2.exec(t))return new P2({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]});throw new Error("invalid format: "+t)}function P2(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}var B2,$2=b(()=>{B2=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i,me(O2,"formatSpecifier"),O2.prototype=P2.prototype,me(P2,"FormatSpecifier"),P2.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type}});function F2(t){t:for(var e,r=t.length,n=1,i=-1;n{me(F2,"default")});function G2(t,e){var r,n,i=_2(t,e);return i?(r=i[0],(i=(i=i[1])-(U2=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1)===(n=r.length)?r:n{A2(),me(G2,"default")});function j2(t,e){var r;return(e=_2(t,e))?(r=e[0],(e=e[1])<0?"0."+new Array(-e).join("0")+r:r.length>e+1?r.slice(0,e+1)+"."+r.slice(e+1):r+new Array(e-r.length+2).join("0")):t+""}var W2,Y2=b(()=>{A2(),me(j2,"default")}),H2=b(()=>{A2(),q2(),Y2(),W2={"%":me((t,e)=>(100*t).toFixed(e),"%"),b:me(t=>Math.round(t).toString(2),"b"),c:me(t=>t+"","c"),d:S2,e:me((t,e)=>t.toExponential(e),"e"),f:me((t,e)=>t.toFixed(e),"f"),g:me((t,e)=>t.toPrecision(e),"g"),o:me(t=>Math.round(t).toString(8),"o"),p:me((t,e)=>j2(100*t,e),"p"),r:j2,s:G2,X:me(t=>Math.round(t).toString(16).toUpperCase(),"X"),x:me(t=>Math.round(t).toString(16),"x")}});function V2(t){return t}var X2=b(()=>{me(V2,"default")});function K2(t){var k=void 0===t.grouping||void 0===t.thousands?V2:I2(Z2.call(t.grouping,Number),t.thousands+""),n=void 0===t.currency?"":t.currency[0]+"",i=void 0===t.currency?"":t.currency[1]+"",T=void 0===t.decimal?".":t.decimal+"",E=void 0===t.numerals?V2:M2(Z2.call(t.numerals,String)),a=void 0===t.percent?"%":t.percent+"",C=void 0===t.minus?"−":t.minus+"",S=void 0===t.nan?"NaN":t.nan+"";function s(t){var c=(t=O2(t)).fill,h=t.align,u=t.sign,e=t.symbol,d=t.zero,p=t.width,g=t.comma,f=t.precision,m=t.trim,y=t.type,v=("n"===y?(g=!0,y="g"):W2[y]||(void 0===f&&(f=12),m=!0,y="g"),(d||"0"===c&&"="===h)&&(d=!0,c="0",h="="),"$"===e?n:"#"===e&&/[boxX]/.test(y)?"0"+y.toLowerCase():""),x="$"===e?i:/[%p]/.test(y)?a:"",b=W2[y],w=/[defgprs%]/.test(y);function r(t){var e,r,n,i=v,a=x;if("c"===y)a=b(t)+a,t="";else{var s=(t=+t)<0||1/t<0;if(t=isNaN(t)?S:b(Math.abs(t),f),m&&(t=F2(t)),i=((s=(!s||0!=+t||"+"===u)&&s)?"("===u?u:C:"-"===u||"("===u?"":u)+i,a=("s"===y?Q2[8+U2/3]:"")+a+(s&&"("===u?")":""),w)for(e=-1,r=t.length;++e>1)+i+t+a+l.slice(o);break;default:t=l+i+t+a}return E(t)}return f=void 0===f?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,f)):Math.max(0,Math.min(20,f)),me(r,"format"),r.toString=function(){return t+""},r}function e(t,e){var r=s(((t=O2(t)).type="f",t)),t=3*Math.max(-8,Math.min(8,Math.floor(L2(e)/3))),n=Math.pow(10,-t),i=Q2[8+t/3];return function(t){return r(n*t)+i}}return me(s,"newFormat"),me(e,"formatPrefix"),{format:s,formatPrefix:e}}var Z2,Q2,J2=b(()=>{N2(),R2(),D2(),$2(),z2(),H2(),q2(),X2(),Z2=Array.prototype.map,Q2=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],me(K2,"default")});function tv(t){return ev=K2(t),rv=ev.format,nv=ev.formatPrefix,ev}var ev,rv,nv,iv=b(()=>{J2(),tv({thousands:",",grouping:[3],currency:["$",""]}),me(tv,"defaultLocale")});function av(t){return Math.max(0,-L2(Math.abs(t)))}var sv=b(()=>{N2(),me(av,"default")});function ov(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(L2(e)/3)))-L2(Math.abs(t)))}var lv=b(()=>{N2(),me(ov,"default")});function cv(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,L2(e)-L2(t))+1}var hv=b(()=>{N2(),me(cv,"default")}),uv=b(()=>{iv(),$2(),sv(),lv(),hv()}),dv=b(()=>{});function pv(t){var e=0,r=t.children,n=r&&r.length;if(n)for(;0<=--n;)e+=r[n].value;else e=1;t.value=e}function gv(){return this.eachAfter(pv)}var fv=b(()=>{me(pv,"count"),me(gv,"default")});function mv(t,e){let r=-1;for(var n of this)t.call(e,n,++r,this);return this}var yv=b(()=>{me(mv,"default")});function vv(t,e){for(var r,n,i,a=[this],s=-1;r=a.pop();)if(t.call(e,r,++s,this),n=r.children)for(i=n.length-1;0<=i;--i)a.push(n[i]);return this}var xv=b(()=>{me(vv,"default")});function bv(t,e){for(var r,n,i,a=this,s=[a],o=[],l=-1;a=s.pop();)if(o.push(a),r=a.children)for(n=0,i=r.length;n{me(bv,"default")});function kv(t,e){let r=-1;for(var n of this)if(t.call(e,n,++r,this))return n}var Tv=b(()=>{me(kv,"default")});function Ev(i){return this.eachAfter(function(t){for(var e=+i(t.data)||0,r=t.children,n=r&&r.length;0<=--n;)e+=r[n].value;t.value=e})}var Cv=b(()=>{me(Ev,"default")});function Sv(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}var _v=b(()=>{me(Sv,"default")});function Av(t){for(var e=this,r=Lv(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var i=n.length;t!==r;)n.splice(i,0,t),t=t.parent;return n}function Lv(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),i=null;for(t=r.pop(),e=n.pop();t===e;)i=t,t=r.pop(),e=n.pop();return i}var Nv=b(()=>{me(Av,"default"),me(Lv,"leastCommonAncestor")});function Iv(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e}var Rv=b(()=>{me(Iv,"default")});function Mv(){return Array.from(this)}var Dv=b(()=>{me(Mv,"default")});function Ov(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}var Pv=b(()=>{me(Ov,"default")});function Bv(){var e=this,r=[];return e.each(function(t){t!==e&&r.push({source:t.parent,target:t})}),r}var $v=b(()=>{me(Bv,"default")});function*Fv(){var t,e,r,n,i,a=[this];do{for(e=a.reverse(),a=[];t=e.pop();)if(yield t,r=t.children)for(n=0,i=r.length;n{me(Fv,"default")});function Gv(t,e){t instanceof Map?(t=[void 0,t],void 0===e&&(e=jv)):void 0===e&&(e=qv);for(var r,n,i,a,s,o=[t=new Hv(t)];r=o.pop();)if((i=e(r.data))&&(s=(i=Array.from(i)).length))for(r.children=i,a=s-1;0<=a;--a)o.push(n=i[a]=new Hv(i[a])),n.parent=r,n.depth=r.depth+1;return t.eachBefore(Yv)}function Uv(){return Gv(this).eachBefore(Wv)}function qv(t){return t.children}function jv(t){return Array.isArray(t)?t[1]:null}function Wv(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Yv(t){for(var e=0;t.height=e,(t=t.parent)&&t.height<++e;);}function Hv(t){this.data=t,this.depth=this.height=0,this.parent=null}var Vv=b(()=>{fv(),yv(),xv(),wv(),Tv(),Cv(),_v(),Nv(),Rv(),Dv(),Pv(),$v(),zv(),me(Gv,"hierarchy"),me(Uv,"node_copy"),me(qv,"objectChildren"),me(jv,"mapChildren"),me(Wv,"copyData"),me(Yv,"computeHeight"),me(Hv,"Node"),Hv.prototype=Gv.prototype={constructor:Hv,count:gv,each:mv,eachAfter:bv,eachBefore:vv,find:kv,sum:Ev,sort:Sv,path:Av,ancestors:Iv,descendants:Mv,leaves:Ov,links:Bv,copy:Uv,[Symbol.iterator]:Fv}});function Xv(t){if("function"!=typeof t)throw new Error;return t}var Kv=b(()=>{me(Xv,"required")});function Zv(){return 0}function Qv(t){return function(){return t}}var Jv=b(()=>{me(Zv,"constantZero"),me(Qv,"default")});function tx(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}var ex=b(()=>{me(tx,"default")});function rx(t,e,r,n,i){for(var a,s=t.children,o=-1,l=s.length,c=t.value&&(n-e)/t.value;++o{me(rx,"default")});function ix(t,e,r,n,i){for(var a,s=t.children,o=-1,l=s.length,c=t.value&&(i-r)/t.value;++o{me(ix,"default")});function sx(t,e,r,n,i,a){for(var s,o,l,c,h,u,d,p,g,f,m,y=[],v=e.children,x=0,b=0,w=v.length,k=e.value;x{nx(),ax(),ox=(1+Math.sqrt(5))/2,me(sx,"squarifyRatio"),lx=me(function e(a){function t(t,e,r,n,i){sx(a,t,e,r,n,i)}return me(t,"squarify"),t.ratio=function(t){return e(1<(t=+t)?t:1)},t},"custom")(ox)});function hx(){var s=lx,e=!1,r=1,n=1,o=[0],l=Zv,c=Zv,h=Zv,u=Zv,d=Zv;function i(t){return t.x0=t.y0=0,t.x1=r,t.y1=n,t.eachBefore(a),o=[0],e&&t.eachBefore(tx),t}function a(t){var e=o[t.depth],r=t.x0+e,n=t.y0+e,i=t.x1-e,a=t.y1-e;i{ex(),cx(),Kv(),Jv(),me(hx,"default")}),dx=b(()=>{Vv(),ux()}),px=b(()=>{}),gx=b(()=>{});function fx(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}var mx=b(()=>{me(fx,"initRange")});function yx(){var r=new Gu,n=[],i=[],a=vx;function s(t){let e=r.get(t);if(void 0===e){if(a!==vx)return a;r.set(t,e=n.push(t)-1)}return i[e%i.length]}return me(s,"scale"),s.domain=function(t){if(!arguments.length)return n.slice();n=[],r=new Gu;for(var e of t)r.has(e)||r.set(e,n.push(e)-1);return s},s.range=function(t){return arguments.length?(i=Array.from(t),s):i.slice()},s.unknown=function(t){return arguments.length?(a=t,s):a},s.copy=function(){return yx(n,i).unknown(a)},fx.apply(s,arguments),s}var vx,xx=b(()=>{nd(),mx(),vx=Symbol("implicit"),me(yx,"ordinal")});function bx(){var i,a,t=yx().unknown(void 0),s=t.domain,o=t.range,l=0,c=1,h=!1,u=0,d=0,p=.5;function e(){var t=s().length,e=c{nd(),mx(),xx(),me(bx,"band")});function kx(t){return function(){return t}}var Tx=b(()=>{me(kx,"constants")});function Ex(t){return+t}var Cx=b(()=>{me(Ex,"number")});function Sx(t){return t}function _x(e,r){return(r-=e=+e)?function(t){return(t-e)/r}:kx(isNaN(r)?NaN:.5)}function Ax(e,r){var t;return r{nd(),Cf(),Tx(),Cx(),Dx=[0,1],me(Sx,"identity"),me(_x,"normalize"),me(Ax,"clamper"),me(Lx,"bimap"),me(Nx,"polymap"),me(Ix,"copy"),me(Rx,"transformer"),me(Mx,"continuous")});function Px(t,e,r,n){var i,a=Yu(t,e,r);switch((n=O2(n??",f")).type){case"s":var s=Math.max(Math.abs(t),Math.abs(e));return null!=n.precision||isNaN(i=ov(a,s))||(n.precision=i),nv(n,s);case"":case"e":case"g":case"p":case"r":null!=n.precision||isNaN(i=cv(a,Math.max(Math.abs(t),Math.abs(e))))||(n.precision=i-("e"===n.type));break;case"f":case"%":null!=n.precision||isNaN(i=av(a))||(n.precision=i-2*("%"===n.type))}return rv(n)}var Bx=b(()=>{nd(),uv(),me(Px,"tickFormat")});function $x(c){var h=c.domain;return c.ticks=function(t){var e=h();return ju(e[0],e[e.length-1],t??10)},c.tickFormat=function(t,e){var r=h();return Px(r[0],r[r.length-1],t??10,e)},c.nice=function(t){null==t&&(t=10);var e,r,n=h(),i=0,a=n.length-1,s=n[i],o=n[a],l=10;for(o{nd(),Ox(),mx(),Bx(),me($x,"linearish"),me(Fx,"linear")});function Gx(t,e){var r,n=0,i=(t=t.slice()).length-1,a=t[n],s=t[i];return s{me(Gx,"nice")});function qx(a,s,r,n){function o(t){return a(t=0===arguments.length?new Date:new Date(+t)),t}return me(o,"interval"),o.floor=t=>(a(t=new Date(+t)),t),o.ceil=t=>(a(t=new Date(t-1)),s(t,1),a(t),t),o.round=t=>{var e=o(t),r=o.ceil(t);return t-e(s(t=new Date(+t),null==e?1:Math.floor(e)),t),o.range=(t,e,r)=>{var n,i=[];if(t=o.ceil(t),r=null==r?1:Math.floor(r),tqx(t=>{if(t<=t)for(;a(t),!r(t);)t.setTime(t-1)},(t,e)=>{if(t<=t)if(e<0)for(;++e<=0;)for(;s(t,-1),!r(t););else for(;0<=--e;)for(;s(t,1),!r(t););}),r&&(o.count=(t,e)=>(jx.setTime(+t),Wx.setTime(+e),a(jx),a(Wx),Math.floor(r(jx,Wx))),o.every=e=>(e=Math.floor(e),isFinite(e)&&0n(t)%e==0:t=>o.count(0,t)%e==0):o:null)),o}var jx,Wx,Yx,Hx,Vx,Xx,Kx,Zx,Qx,Jx,tb,eb=b(()=>{jx=new Date,Wx=new Date,me(qx,"timeInterval")}),rb=b(()=>{eb(),(Yx=qx(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t)).every=r=>(r=Math.floor(r),isFinite(r)&&0{t.setTime(Math.floor(t/r)*r)},(t,e)=>{t.setTime(+t+e*r)},(t,e)=>(e-t)/r):Yx:null)}),nb=b(()=>{eb(),(Hx=qx(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+1e3*e)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds())).range}),ib=b(()=>{eb(),(Vx=qx(t=>{t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},(t,e)=>{t.setTime(+t+6e4*e)},(t,e)=>(e-t)/6e4,t=>t.getMinutes())).range,(Xx=qx(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+6e4*e)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes())).range}),ab=b(()=>{eb(),(Kx=qx(t=>{t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())},(t,e)=>{t.setTime(+t+36e5*e)},(t,e)=>(e-t)/36e5,t=>t.getHours())).range,(Zx=qx(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+36e5*e)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours())).range}),sb=b(()=>{eb(),(Qx=qx(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5,t=>t.getDate()-1)).range,(Jx=qx(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1)).range,(tb=qx(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5))).range});function ob(e){return qx(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,e)=>{t.setDate(t.getDate()+7*e)},(t,e)=>(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5)}function lb(e){return qx(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)},(t,e)=>(e-t)/6048e5)}var cb,hb,ub,db,pb,gb,fb,mb,yb,vb,xb,bb,wb,kb,Tb,Eb,Cb,Sb,_b=b(()=>{eb(),me(ob,"timeWeekday"),cb=ob(0),hb=ob(1),ub=ob(2),db=ob(3),pb=ob(4),gb=ob(5),fb=ob(6),cb.range,hb.range,ub.range,db.range,pb.range,gb.range,fb.range,me(lb,"utcWeekday"),mb=lb(0),yb=lb(1),vb=lb(2),xb=lb(3),bb=lb(4),wb=lb(5),kb=lb(6),mb.range,yb.range,vb.range,xb.range,bb.range,wb.range,kb.range}),Ab=b(()=>{eb(),(Tb=qx(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear()),t=>t.getMonth())).range,(Eb=qx(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear()),t=>t.getUTCMonth())).range}),Lb=b(()=>{eb(),(Cb=qx(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear())).every=r=>isFinite(r=Math.floor(r))&&0{t.setFullYear(Math.floor(t.getFullYear()/r)*r),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e*r)}):null,(Sb=qx(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear())).every=r=>isFinite(r=Math.floor(r))&&0{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/r)*r),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e*r)}):null});function Nb(a,t,e,r,n,i){let s=[[Hx,1,1e3],[Hx,5,5e3],[Hx,15,15e3],[Hx,30,3e4],[i,1,6e4],[i,5,3e5],[i,15,9e5],[i,30,18e5],[n,1,36e5],[n,3,108e5],[n,6,216e5],[n,12,432e5],[r,1,864e5],[r,2,1728e5],[e,1,6048e5],[t,1,2592e6],[t,3,7776e6],[a,1,31536e6]];function o(t,e,r){var n=et).right(s,n);return i===s.length?a.every(Yu(t/31536e6,e/31536e6,r)):0===i?Yx.every(Math.max(Yu(t,e,r),1)):([t,e]=s[n/s[i-1][2]{nd(),rb(),nb(),ib(),ab(),sb(),_b(),Ab(),Lb(),me(Nb,"ticker"),[Ib,Rb]=Nb(Sb,Eb,mb,tb,Zx,Xx),[Mb,Db]=Nb(Cb,Tb,cb,Qx,Kx,Vx)}),Pb=b(()=>{rb(),nb(),ib(),ab(),sb(),_b(),Ab(),Lb(),Ob()});function Bb(t){var e;return 0<=t.y&&t.y<100?((e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L)).setFullYear(t.y),e):new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function $b(t){var e;return 0<=t.y&&t.y<100?((e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L))).setUTCFullYear(t.y),e):new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Fb(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function zb(t){var n=t.dateTime,i=t.date,a=t.time,e=t.periods,r=t.days,s=t.shortDays,o=t.months,l=t.shortMonths,c=qb(e),h=jb(e),P=qb(r),B=jb(r),$=qb(s),F=jb(s),z=qb(o),G=jb(o),U=qb(l),q=jb(l),u={a:E,A:C,b:S,B:_,c:null,d:u4,e:u4,f:m4,g:_4,G:L4,H:d4,I:p4,j:g4,L:f4,m:y4,M:v4,p:A,q:L,Q:Q4,s:J4,S:x4,u:b4,U:w4,V:T4,w:E4,W:C4,x:null,X:null,y:S4,Y:A4,Z:N4,"%":Z4},d={a:N,A:I,b:R,B:M,c:null,d:I4,e:I4,f:P4,g:H4,G:X4,H:R4,I:M4,j:D4,L:O4,m:B4,M:$4,p:D,q:O,Q:Q4,s:J4,S:F4,u:z4,U:G4,V:q4,w:j4,W:W4,x:null,X:null,y:Y4,Y:V4,Z:K4,"%":Z4},j={a:y,A:v,b:x,B:b,c:w,d:e4,e:e4,f:o4,g:Zb,G:Kb,H:n4,I:n4,j:r4,L:s4,m:t4,M:i4,p:m,q:Jb,Q:c4,s:h4,S:a4,u:Yb,U:Hb,V:Vb,w:Wb,W:Xb,x:k,X:T,y:Zb,Y:Kb,Z:Qb,"%":l4};function p(l,c){return function(t){var e,r,n,i=[],a=-1,s=0,o=l.length;for(t instanceof Date||(t=new Date(+t));++a[t.toLowerCase(),e]))}function Wb(t,e,r){return(e=e5.exec(e.slice(r,r+1)))?(t.w=+e[0],r+e[0].length):-1}function Yb(t,e,r){return(e=e5.exec(e.slice(r,r+1)))?(t.u=+e[0],r+e[0].length):-1}function Hb(t,e,r){return(e=e5.exec(e.slice(r,r+2)))?(t.U=+e[0],r+e[0].length):-1}function Vb(t,e,r){return(e=e5.exec(e.slice(r,r+2)))?(t.V=+e[0],r+e[0].length):-1}function Xb(t,e,r){return(e=e5.exec(e.slice(r,r+2)))?(t.W=+e[0],r+e[0].length):-1}function Kb(t,e,r){return(e=e5.exec(e.slice(r,r+4)))?(t.y=+e[0],r+e[0].length):-1}function Zb(t,e,r){return(e=e5.exec(e.slice(r,r+2)))?(t.y=+e[0]+(68<+e[0]?1900:2e3),r+e[0].length):-1}function Qb(t,e,r){return(e=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6)))?(t.Z=e[1]?0:-(e[2]+(e[3]||"00")),r+e[0].length):-1}function Jb(t,e,r){return(e=e5.exec(e.slice(r,r+1)))?(t.q=3*e[0]-3,r+e[0].length):-1}function t4(t,e,r){return(e=e5.exec(e.slice(r,r+2)))?(t.m=e[0]-1,r+e[0].length):-1}function e4(t,e,r){return(e=e5.exec(e.slice(r,r+2)))?(t.d=+e[0],r+e[0].length):-1}function r4(t,e,r){return(e=e5.exec(e.slice(r,r+3)))?(t.m=0,t.d=+e[0],r+e[0].length):-1}function n4(t,e,r){return(e=e5.exec(e.slice(r,r+2)))?(t.H=+e[0],r+e[0].length):-1}function i4(t,e,r){return(e=e5.exec(e.slice(r,r+2)))?(t.M=+e[0],r+e[0].length):-1}function a4(t,e,r){return(e=e5.exec(e.slice(r,r+2)))?(t.S=+e[0],r+e[0].length):-1}function s4(t,e,r){return(e=e5.exec(e.slice(r,r+3)))?(t.L=+e[0],r+e[0].length):-1}function o4(t,e,r){return(e=e5.exec(e.slice(r,r+6)))?(t.L=Math.floor(e[0]/1e3),r+e[0].length):-1}function l4(t,e,r){return(e=r5.exec(e.slice(r,r+1)))?r+e[0].length:-1}function c4(t,e,r){return(e=e5.exec(e.slice(r)))?(t.Q=+e[0],r+e[0].length):-1}function h4(t,e,r){return(e=e5.exec(e.slice(r)))?(t.s=+e[0],r+e[0].length):-1}function u4(t,e){return Gb(t.getDate(),e,2)}function d4(t,e){return Gb(t.getHours(),e,2)}function p4(t,e){return Gb(t.getHours()%12||12,e,2)}function g4(t,e){return Gb(1+Qx.count(Cb(t),t),e,3)}function f4(t,e){return Gb(t.getMilliseconds(),e,3)}function m4(t,e){return f4(t,e)+"000"}function y4(t,e){return Gb(t.getMonth()+1,e,2)}function v4(t,e){return Gb(t.getMinutes(),e,2)}function x4(t,e){return Gb(t.getSeconds(),e,2)}function b4(t){return 0===(t=t.getDay())?7:t}function w4(t,e){return Gb(cb.count(Cb(t)-1,t),e,2)}function k4(t){var e=t.getDay();return 4<=e||0===e?pb(t):pb.ceil(t)}function T4(t,e){return t=k4(t),Gb(pb.count(Cb(t),t)+(4===Cb(t).getDay()),e,2)}function E4(t){return t.getDay()}function C4(t,e){return Gb(hb.count(Cb(t)-1,t),e,2)}function S4(t,e){return Gb(t.getFullYear()%100,e,2)}function _4(t,e){return Gb((t=k4(t)).getFullYear()%100,e,2)}function A4(t,e){return Gb(t.getFullYear()%1e4,e,4)}function L4(t,e){var r=t.getDay();return Gb((t=4<=r||0===r?pb(t):pb.ceil(t)).getFullYear()%1e4,e,4)}function N4(t){return(0<(t=t.getTimezoneOffset())?"-":(t*=-1,"+"))+Gb(t/60|0,"0",2)+Gb(t%60,"0",2)}function I4(t,e){return Gb(t.getUTCDate(),e,2)}function R4(t,e){return Gb(t.getUTCHours(),e,2)}function M4(t,e){return Gb(t.getUTCHours()%12||12,e,2)}function D4(t,e){return Gb(1+Jx.count(Sb(t),t),e,3)}function O4(t,e){return Gb(t.getUTCMilliseconds(),e,3)}function P4(t,e){return O4(t,e)+"000"}function B4(t,e){return Gb(t.getUTCMonth()+1,e,2)}function $4(t,e){return Gb(t.getUTCMinutes(),e,2)}function F4(t,e){return Gb(t.getUTCSeconds(),e,2)}function z4(t){return 0===(t=t.getUTCDay())?7:t}function G4(t,e){return Gb(mb.count(Sb(t)-1,t),e,2)}function U4(t){var e=t.getUTCDay();return 4<=e||0===e?bb(t):bb.ceil(t)}function q4(t,e){return t=U4(t),Gb(bb.count(Sb(t),t)+(4===Sb(t).getUTCDay()),e,2)}function j4(t){return t.getUTCDay()}function W4(t,e){return Gb(yb.count(Sb(t)-1,t),e,2)}function Y4(t,e){return Gb(t.getUTCFullYear()%100,e,2)}function H4(t,e){return Gb((t=U4(t)).getUTCFullYear()%100,e,2)}function V4(t,e){return Gb(t.getUTCFullYear()%1e4,e,4)}function X4(t,e){var r=t.getUTCDay();return Gb((t=4<=r||0===r?bb(t):bb.ceil(t)).getUTCFullYear()%1e4,e,4)}function K4(){return"+0000"}function Z4(){return"%"}function Q4(t){return+t}function J4(t){return Math.floor(+t/1e3)}var t5,e5,r5,n5,i5=b(()=>{Pb(),me(Bb,"localDate"),me($b,"utcDate"),me(Fb,"newDate"),me(zb,"formatLocale"),t5={"-":"",_:" ",0:"0"},e5=/^\s*\d+/,r5=/^%/,n5=/[\\^$*+?|[\]().{}]/g,me(Gb,"pad"),me(Ub,"requote"),me(qb,"formatRe"),me(jb,"formatLookup"),me(Wb,"parseWeekdayNumberSunday"),me(Yb,"parseWeekdayNumberMonday"),me(Hb,"parseWeekNumberSunday"),me(Vb,"parseWeekNumberISO"),me(Xb,"parseWeekNumberMonday"),me(Kb,"parseFullYear"),me(Zb,"parseYear"),me(Qb,"parseZone"),me(Jb,"parseQuarter"),me(t4,"parseMonthNumber"),me(e4,"parseDayOfMonth"),me(r4,"parseDayOfYear"),me(n4,"parseHour24"),me(i4,"parseMinutes"),me(a4,"parseSeconds"),me(s4,"parseMilliseconds"),me(o4,"parseMicroseconds"),me(l4,"parseLiteralPercent"),me(c4,"parseUnixTimestamp"),me(h4,"parseUnixTimestampSeconds"),me(u4,"formatDayOfMonth"),me(d4,"formatHour24"),me(p4,"formatHour12"),me(g4,"formatDayOfYear"),me(f4,"formatMilliseconds"),me(m4,"formatMicroseconds"),me(y4,"formatMonthNumber"),me(v4,"formatMinutes"),me(x4,"formatSeconds"),me(b4,"formatWeekdayNumberMonday"),me(w4,"formatWeekNumberSunday"),me(k4,"dISO"),me(T4,"formatWeekNumberISO"),me(E4,"formatWeekdayNumberSunday"),me(C4,"formatWeekNumberMonday"),me(S4,"formatYear"),me(_4,"formatYearISO"),me(A4,"formatFullYear"),me(L4,"formatFullYearISO"),me(N4,"formatZone"),me(I4,"formatUTCDayOfMonth"),me(R4,"formatUTCHour24"),me(M4,"formatUTCHour12"),me(D4,"formatUTCDayOfYear"),me(O4,"formatUTCMilliseconds"),me(P4,"formatUTCMicroseconds"),me(B4,"formatUTCMonthNumber"),me($4,"formatUTCMinutes"),me(F4,"formatUTCSeconds"),me(z4,"formatUTCWeekdayNumberMonday"),me(G4,"formatUTCWeekNumberSunday"),me(U4,"UTCdISO"),me(q4,"formatUTCWeekNumberISO"),me(j4,"formatUTCWeekdayNumberSunday"),me(W4,"formatUTCWeekNumberMonday"),me(Y4,"formatUTCYear"),me(H4,"formatUTCYearISO"),me(V4,"formatUTCFullYear"),me(X4,"formatUTCFullYearISO"),me(K4,"formatUTCZone"),me(Z4,"formatLiteralPercent"),me(Q4,"formatUnixTimestamp"),me(J4,"formatUnixTimestampSeconds")});function a5(t){return s5=zb(t),o5=s5.format,s5}var s5,o5,l5=b(()=>{i5(),a5({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"]}),me(a5,"defaultLocale")}),c5=b(()=>{l5()});function h5(t){return new Date(t)}function u5(t){return t instanceof Date?+t:+new Date(+t)}function d5(r,n,e,i,a,s,o,l,c,h){var u=Mx(),d=u.invert,p=u.domain,g=h(".%L"),f=h(":%S"),m=h("%I:%M"),y=h("%I %p"),v=h("%a %d"),x=h("%b %d"),b=h("%B"),w=h("%Y");function k(t){return(c(t){Pb(),c5(),Ox(),mx(),Ux(),me(h5,"date"),me(u5,"number"),me(d5,"calendar"),me(p5,"time")}),f5=b(()=>{wx(),zx(),xx(),g5()});function m5(t){for(var e=t.length/6|0,r=new Array(e),n=0;n{me(m5,"default")}),x5=b(()=>{v5(),y5=m5("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab")}),b5=b(()=>{x5()});function w5(t){return me(function(){return t},"constant")}var k5=b(()=>{me(w5,"default")});function T5(t){return 1{C5=Math.abs,S5=Math.atan2,_5=Math.cos,A5=Math.max,L5=Math.min,N5=Math.sin,I5=Math.sqrt,R5=1e-12,D5=(M5=Math.PI)/2,O5=2*M5,me(T5,"acos"),me(E5,"asin")});function B5(r){let n=3;return r.digits=function(t){if(!arguments.length)return n;if(null==t)n=null;else{var e=Math.floor(t);if(!(0<=e))throw new RangeError("invalid digits: "+t);n=e}return r},()=>new m2(n)}var $5=b(()=>{v2(),me(B5,"withPath")});function F5(t){return t.innerRadius}function z5(t){return t.outerRadius}function G5(t){return t.startAngle}function U5(t){return t.endAngle}function q5(t){return t&&t.padAngle}function j5(t,e,r,n,i,a,s,o){var l=(o-=a)*(r-=t)-(s-=i)*(n-=e);if(!(l*lR5?(n+=u*=_?1:-1,i-=u):(a=0,n=i=(E+C)/2),(s-=2*d)>R5?(e+=d*=_?1:-1,r-=d):(s=0,e=r=(E+C)/2)),h=T*_5(e),u=T*N5(e),d=k*_5(i),E=k*N5(i),R5{k5(),P5(),$5(),me(F5,"arcInnerRadius"),me(z5,"arcOuterRadius"),me(G5,"arcStartAngle"),me(U5,"arcEndAngle"),me(q5,"arcPadAngle"),me(j5,"intersect"),me(W5,"cornerTangents"),me(Y5,"default")});function V5(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}var X5=b(()=>{Array.prototype.slice,me(V5,"default")});function K5(t){this._context=t}function Z5(t){return new K5(t)}var Q5=b(()=>{me(K5,"Linear"),K5.prototype={areaStart:me(function(){this._line=0},"areaStart"),areaEnd:me(function(){this._line=NaN},"areaEnd"),lineStart:me(function(){this._point=0},"lineStart"),lineEnd:me(function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:me(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}},"point")},me(Z5,"default")});function J5(t){return t[0]}function t3(t){return t[1]}var e3=b(()=>{me(J5,"x"),me(t3,"y")});function r3(s,o){var l=w5(!0),c=null,h=Z5,u=null,d=B5(e);function e(t){var e,r,n,i=(t=V5(t)).length,a=!1;for(null==c&&(u=h(n=d())),e=0;e<=i;++e)!(e{X5(),k5(),Q5(),$5(),e3(),me(r3,"default")});function i3(t,e){return e{me(i3,"default")});function s3(t){return t}var o3=b(()=>{me(s3,"default")});function l3(){var p=s3,g=i3,f=null,m=w5(0),y=w5(O5),v=w5(0);function e(r){for(var t,e,n,i=(r=V5(r)).length,a=0,s=new Array(i),o=new Array(i),l=+m.apply(this,arguments),c=Math.min(O5,Math.max(-O5,y.apply(this,arguments)-l)),h=Math.min(Math.abs(c)/i,v.apply(this,arguments)),u=h*(c<0?-1:1),d=0;d{X5(),k5(),a3(),o3(),P5(),me(l3,"default")});function h3(t){return new d3(t,!0)}function u3(t){return new d3(t,!1)}var d3,p3=b(()=>{d3=class{static{me(this,"Bump")}constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e)}this._x0=t,this._y0=e}},me(h3,"bumpX"),me(u3,"bumpY")});function g3(){}var f3=b(()=>{me(g3,"default")});function m3(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function y3(t){this._context=t}function v3(t){return new y3(t)}var x3=b(()=>{me(m3,"point"),me(y3,"Basis"),y3.prototype={areaStart:me(function(){this._line=0},"areaStart"),areaEnd:me(function(){this._line=NaN},"areaEnd"),lineStart:me(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:me(function(){switch(this._point){case 3:m3(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:me(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);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:m3(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")},me(v3,"default")});function b3(t){this._context=t}function w3(t){return new b3(t)}var k3=b(()=>{f3(),x3(),me(b3,"BasisClosed"),b3.prototype={areaStart:g3,areaEnd:g3,lineStart:me(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},"lineStart"),lineEnd:me(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)}},"lineEnd"),point:me(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:m3(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")},me(w3,"default")});function T3(t){this._context=t}function E3(t){return new T3(t)}var C3=b(()=>{x3(),me(T3,"BasisOpen"),T3.prototype={areaStart:me(function(){this._line=0},"areaStart"),areaEnd:me(function(){this._line=NaN},"areaEnd"),lineStart:me(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:me(function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:me(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:m3(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")},me(E3,"default")});function S3(t,e){this._basis=new y3(t),this._beta=e}var _3,A3=b(()=>{x3(),me(S3,"Bundle"),S3.prototype={lineStart:me(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:me(function(){var t=this._x,e=this._y,r=t.length-1;if(0{me(L3,"point"),me(N3,"Cardinal"),N3.prototype={areaStart:me(function(){this._line=0},"areaStart"),areaEnd:me(function(){this._line=NaN},"areaEnd"),lineStart:me(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:me(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:L3(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:me(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:L3(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")},I3=me(function e(r){function t(t){return new N3(t,r)}return me(t,"cardinal"),t.tension=function(t){return e(+t)},t},"custom")(0)});function M3(t,e){this._context=t,this._k=(1-e)/6}var D3,O3=b(()=>{f3(),R3(),me(M3,"CardinalClosed"),M3.prototype={areaStart:g3,areaEnd:g3,lineStart:me(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},"lineStart"),lineEnd:me(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)}},"lineEnd"),point:me(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:L3(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")},D3=me(function e(r){function t(t){return new M3(t,r)}return me(t,"cardinal"),t.tension=function(t){return e(+t)},t},"custom")(0)});function P3(t,e){this._context=t,this._k=(1-e)/6}var B3,$3=b(()=>{R3(),me(P3,"CardinalOpen"),P3.prototype={areaStart:me(function(){this._line=0},"areaStart"),areaEnd:me(function(){this._line=NaN},"areaEnd"),lineStart:me(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:me(function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:me(function(t,e){switch(t=+t,e=+e,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:L3(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")},B3=me(function e(r){function t(t){return new P3(t,r)}return me(t,"cardinal"),t.tension=function(t){return e(+t)},t},"custom")(0)});function F3(t,e,r){var n,i,a=t._x1,s=t._y1,o=t._x2,l=t._y2;R5{P5(),R3(),me(F3,"point"),me(z3,"CatmullRom"),z3.prototype={areaStart:me(function(){this._line=0},"areaStart"),areaEnd:me(function(){this._line=NaN},"areaEnd"),lineStart:me(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},"lineStart"),lineEnd:me(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:me(function(t,e){var r,n;switch(t=+t,e=+e,this._point&&(r=this._x2-t,n=this._y2-e,this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))),this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:F3(this,t,e)}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=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")},G3=me(function e(r){function t(t){return r?new z3(t,r):new N3(t,0)}return me(t,"catmullRom"),t.alpha=function(t){return e(+t)},t},"custom")(.5)});function q3(t,e){this._context=t,this._alpha=e}var j3,W3=b(()=>{O3(),f3(),U3(),me(q3,"CatmullRomClosed"),q3.prototype={areaStart:g3,areaEnd:g3,lineStart:me(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},"lineStart"),lineEnd:me(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)}},"lineEnd"),point:me(function(t,e){var r,n;switch(t=+t,e=+e,this._point&&(r=this._x2-t,n=this._y2-e,this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))),this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:F3(this,t,e)}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=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")},j3=me(function e(r){function t(t){return r?new q3(t,r):new M3(t,0)}return me(t,"catmullRom"),t.alpha=function(t){return e(+t)},t},"custom")(.5)});function Y3(t,e){this._context=t,this._alpha=e}var H3,V3=b(()=>{$3(),U3(),me(Y3,"CatmullRomOpen"),Y3.prototype={areaStart:me(function(){this._line=0},"areaStart"),areaEnd:me(function(){this._line=NaN},"areaEnd"),lineStart:me(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},"lineStart"),lineEnd:me(function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:me(function(t,e){var r,n;switch(t=+t,e=+e,this._point&&(r=this._x2-t,n=this._y2-e,this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))),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:F3(this,t,e)}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=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")},H3=me(function e(r){function t(t){return r?new Y3(t,r):new P3(t,0)}return me(t,"catmullRom"),t.alpha=function(t){return e(+t)},t},"custom")(.5)});function X3(t){this._context=t}function K3(t){return new X3(t)}var Z3=b(()=>{f3(),me(X3,"LinearClosed"),X3.prototype={areaStart:g3,areaEnd:g3,lineStart:me(function(){this._point=0},"lineStart"),lineEnd:me(function(){this._point&&this._context.closePath()},"lineEnd"),point:me(function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))},"point")},me(K3,"default")});function Q3(t){return t<0?-1:1}function J3(t,e,r){var n=t._x1-t._x0,e=e-t._x1,i=(t._y1-t._y0)/(n||e<0&&-0),t=(i*e+(r=(r-t._y1)/(e||n<0&&-0))*n)/(n+e);return(Q3(i)+Q3(r))*Math.min(Math.abs(i),Math.abs(r),.5*Math.abs(t))||0}function tw(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function ew(t,e,r){var n=t._x0,i=t._x1,a=t._y1,s=(i-n)/3;t._context.bezierCurveTo(n+s,t._y0+s*e,i-s,a-s*r,i,a)}function rw(t){this._context=t}function nw(t){this._context=new iw(t)}function iw(t){this._context=t}function aw(t){return new rw(t)}function sw(t){return new nw(t)}var ow=b(()=>{me(Q3,"sign"),me(J3,"slope3"),me(tw,"slope2"),me(ew,"point"),me(rw,"MonotoneX"),rw.prototype={areaStart:me(function(){this._line=0},"areaStart"),areaEnd:me(function(){this._line=NaN},"areaEnd"),lineStart:me(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:me(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:ew(this,this._t0,tw(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:me(function(t,e){var r=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,ew(this,tw(this,r=J3(this,t,e)),r);break;default:ew(this,this._t0,r=J3(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}},"point")},me(nw,"MonotoneY"),(nw.prototype=Object.create(rw.prototype)).point=function(t,e){rw.prototype.point.call(this,e,t)},me(iw,"ReflectContext"),iw.prototype={moveTo:me(function(t,e){this._context.moveTo(e,t)},"moveTo"),closePath:me(function(){this._context.closePath()},"closePath"),lineTo:me(function(t,e){this._context.lineTo(e,t)},"lineTo"),bezierCurveTo:me(function(t,e,r,n,i,a){this._context.bezierCurveTo(e,t,n,r,a,i)},"bezierCurveTo")},me(aw,"monotoneX"),me(sw,"monotoneY")});function lw(t){this._context=t}function cw(t){var e,r,n=t.length-1,i=new Array(n),a=new Array(n),s=new Array(n);for(a[i[0]=0]=2,s[0]=t[0]+2*t[1],e=1;e{me(lw,"Natural"),lw.prototype={areaStart:me(function(){this._line=0},"areaStart"),areaEnd:me(function(){this._line=NaN},"areaEnd"),lineStart:me(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:me(function(){var t=this._x,e=this._y,r=t.length;if(r)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===r)this._context.lineTo(t[1],e[1]);else for(var n=cw(t),i=cw(e),a=0,s=1;s{me(dw,"Step"),dw.prototype={areaStart:me(function(){this._line=0},"areaStart"),areaEnd:me(function(){this._line=NaN},"areaEnd"),lineStart:me(function(){this._x=this._y=NaN,this._point=0},"lineStart"),lineEnd:me(function(){0{H5(),n3(),c3(),k3(),C3(),x3(),p3(),A3(),O3(),$3(),R3(),W3(),V3(),U3(),Z3(),Q5(),ow(),uw(),mw()}),vw=b(()=>{}),xw=b(()=>{});function bw(t,e,r){this.k=t,this.x=e,this.y=r}function ww(t){for(;!t.__zoom;)if(!(t=t.parentNode))return kw;return t.__zoom}var kw,Tw,Ew,Cw,Sw,_w,Aw,Lw,Nw,Iw,Rw,Mw,Dw,Ow,Pw,Bw,$w,Fw,zw,Gw,Uw,qw,jw,Ww,Yw,Hw,Vw,Xw,Kw,Zw,Qw,Jw,t6=b(()=>{me(bw,"Transform"),bw.prototype={constructor:bw,scale:me(function(t){return 1===t?this:new bw(this.k*t,this.x,this.y)},"scale"),translate:me(function(t,e){return 0===t&0===e?this:new bw(this.k,this.x+this.k*t,this.y+this.k*e)},"translate"),apply:me(function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},"apply"),applyX:me(function(t){return t*this.k+this.x},"applyX"),applyY:me(function(t){return t*this.k+this.y},"applyY"),invert:me(function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},"invert"),invertX:me(function(t){return(t-this.x)/this.k},"invertX"),invertY:me(function(t){return(t-this.y)/this.k},"invertY"),rescaleX:me(function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},"rescaleX"),rescaleY:me(function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},"rescaleY"),toString:me(function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"},"toString")},kw=new bw(1,0,0),ww.prototype=bw.prototype,me(ww,"transform")}),e6=b(()=>{}),r6=b(()=>{Zy(),vw(),xw(),t6(),e6()}),n6=b(()=>{r6(),t6()}),i6=b(()=>{nd(),yd(),l2(),x2(),C1(),b2(),w2(),Ad(),bg(),k2(),Wy(),T2(),C2(),uv(),dv(),dx(),Cf(),v2(),px(),E2(),gx(),f5(),b5(),xg(),yw(),Pb(),c5(),Xf(),Zy(),n6()}),a6=WBt(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BLANK_URL=t.relativeFirstCharacters=t.whitespaceEscapeCharsRegex=t.urlSchemeRegex=t.ctrlCharactersRegex=t.htmlCtrlEntityRegex=t.htmlEntitiesRegex=t.invalidProtocolRegex=void 0,t.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im,t.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g,t.htmlCtrlEntityRegex=/&(newline|tab);/gi,t.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,t.urlSchemeRegex=/^.+(:|:)/gim,t.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g,t.relativeFirstCharacters=[".","/"],t.BLANK_URL="about:blank"}),s6=WBt(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.sanitizeUrl=void 0;var a=a6();function s(t){return-1{Tw=q(s6(),1),Oc(),Ew=me((t,e)=>{var r=t.append("rect");if(r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("width",e.width),r.attr("height",e.height),e.name&&r.attr("name",e.name),e.rx&&r.attr("rx",e.rx),e.ry&&r.attr("ry",e.ry),void 0!==e.attrs)for(var n in e.attrs)r.attr(n,e.attrs[n]);return e.class&&r.attr("class",e.class),r},"drawRect"),Cw=me((t,e)=>{e={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"},Ew(t,e).lower()},"drawBackgroundRect"),Sw=me((t,e)=>{var r=e.text.replace(nc," "),n=((t=t.append("text")).attr("x",e.x),t.attr("y",e.y),t.attr("class","legend"),t.style("text-anchor",e.anchor),e.class&&t.attr("class",e.class),t.append("tspan"));return n.attr("x",e.x+2*e.textMargin),n.text(r),t},"drawText"),_w=me((t,e,r,n)=>{(t=t.append("image")).attr("x",e),t.attr("y",r),e=(0,Tw.sanitizeUrl)(n),t.attr("xlink:href",e)},"drawImage"),Aw=me((t,e,r,n)=>{(t=t.append("use")).attr("x",e),t.attr("y",r),e=(0,Tw.sanitizeUrl)(n),t.attr("xlink:href","#"+e)},"drawEmbeddedImage"),Lw=me(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),Nw=me(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")}),l6=b(()=>{function e(t,e,r,n,i,a,s){g(e.append("text").attr("x",r+i/2).attr("y",n+a/2+5).style("text-anchor","middle").text(t),s)}function l(t,e,r,n,i,a,s,o){var{fontSize:l,fontFamily:c,fontWeight:h}=o,u=t.split(L.lineBreakRegex);for(let t=0;t{let n=t.append("g"),i=0;for(var a of e){var s,o=a.textColor||"#444444",l=a.lineColor||"#444444",c=a.offsetX?parseInt(a.offsetX):0,h=a.offsetY?parseInt(a.offsetY):0,l=(0===i?((s=n.append("line")).attr("x1",a.startPoint.x),s.attr("y1",a.startPoint.y),s.attr("x2",a.endPoint.x),s.attr("y2",a.endPoint.y),s.attr("stroke-width","1"),s.attr("stroke",l),s.style("fill","none"),"rel_b"!==a.type&&s.attr("marker-end","url(#arrowhead)"),"birel"!==a.type&&"rel_b"!==a.type||s.attr("marker-start","url(#arrowend)"),i=-1):((s=n.append("path")).attr("fill","none").attr("stroke-width","1").attr("stroke",l).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",a.startPoint.x).replaceAll("starty",a.startPoint.y).replaceAll("controlx",a.startPoint.x+(a.endPoint.x-a.startPoint.x)/2-(a.endPoint.x-a.startPoint.x)/4).replaceAll("controly",a.startPoint.y+(a.endPoint.y-a.startPoint.y)/2).replaceAll("stopx",a.endPoint.x).replaceAll("stopy",a.endPoint.y)),"rel_b"!==a.type&&s.attr("marker-end","url(#arrowhead)"),"birel"!==a.type&&"rel_b"!==a.type||s.attr("marker-start","url(#arrowend)")),r.messageFont());Yw(r)(a.label.text,n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+c,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+h,a.label.width,a.label.height,{fill:o},l),a.techn&&""!==a.techn.text&&(l=r.messageFont(),Yw(r)("["+a.techn.text+"]",n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+c,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+r.messageFontSize+5+h,Math.max(a.label.width,a.techn.width),a.techn.height,{fill:o,"font-style":"italic"},l))}},"drawRels"),Ow=me(function(t,e,r){let n=t.append("g"),i=e.bgColor||"none",a=e.borderColor||"#444444",s=e.fontColor||"black",o=e.nodeType?{"stroke-width":1}:{"stroke-width":1,"stroke-dasharray":"7.0,7.0"},l=(Rw(n,t={x:e.x,y:e.y,fill:i,stroke:a,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:o}),r.boundaryFont());l.fontWeight="bold",l.fontSize=l.fontSize+2,l.fontColor=s,Yw(r)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},l),e.type&&""!==e.type.text&&((l=r.boundaryFont()).fontColor=s,Yw(r)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},l)),e.descr&&""!==e.descr.text&&((l=r.boundaryFont()).fontSize=l.fontSize-2,l.fontColor=s,Yw(r)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},l))},"drawBoundary"),Pw=me(function(t,e,r){let n=e.bgColor||r[e.typeC4Shape.text+"_bg_color"],i=e.borderColor||r[e.typeC4Shape.text+"_border_color"],a=e.fontColor||"#FFFFFF",s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(e.typeC4Shape.text){case"person":s="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":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII="}var o=t.append("g"),l=(o.attr("class","person-man"),Lw());switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":l.x=e.x,l.y=e.y,l.fill=n,l.width=e.width,l.height=e.height,l.stroke=i,l.rx=2.5,l.ry=2.5,l.attrs={"stroke-width":.5},Rw(o,l);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":o.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).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",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2).replaceAll("height",e.height)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":o.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).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",e.x).replaceAll("starty",e.y).replaceAll("width",e.width).replaceAll("half",e.height/2)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",e.x+e.width).replaceAll("starty",e.y).replaceAll("half",e.height/2))}switch(t=Ww(r,e.typeC4Shape.text),o.append("text").attr("fill",a).attr("font-family",t.fontFamily).attr("font-size",t.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",e.typeC4Shape.width).attr("x",e.x+e.width/2-e.typeC4Shape.width/2).attr("y",e.y+e.typeC4Shape.Y).text("<<"+e.typeC4Shape.text+">>"),e.typeC4Shape.text){case"person":case"external_person":Mw(o,48,48,e.x+e.width/2-24,e.y+e.image.Y,s)}let c=r[e.typeC4Shape.text+"Font"]();return c.fontWeight="bold",c.fontSize=c.fontSize+2,c.fontColor=a,Yw(r)(e.label.text,o,e.x,e.y+e.label.Y,e.width,e.height,{fill:a},c),(c=r[e.typeC4Shape.text+"Font"]()).fontColor=a,e.techn&&""!==e.techn?.text?Yw(r)(e.techn.text,o,e.x,e.y+e.techn.Y,e.width,e.height,{fill:a,"font-style":"italic"},c):e.type&&""!==e.type.text&&Yw(r)(e.type.text,o,e.x,e.y+e.type.Y,e.width,e.height,{fill:a,"font-style":"italic"},c),e.descr&&""!==e.descr.text&&((c=r.personFont()).fontColor=a,Yw(r)(e.descr.text,o,e.x,e.y+e.descr.Y,e.width,e.height,{fill:a},c)),e.height},"drawC4Shape"),Bw=me(function(t){t.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")},"insertDatabaseIcon"),$w=me(function(t){t.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")},"insertComputerIcon"),Fw=me(function(t){t.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")},"insertClockIcon"),zw=me(function(t){t.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")},"insertArrowHead"),Gw=me(function(t){t.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")},"insertArrowEnd"),Uw=me(function(t){t.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")},"insertArrowFilledHead"),qw=me(function(t){t.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)},"insertDynamicNumber"),jw=me(function(t){(t=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4)).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"),t.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")},"insertArrowCrossHead"),Ww=me((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"getC4ShapeFont"),me(e,"byText"),me(l,"byTspan"),me(r,"byFo"),me(g,"_setTextAttrs"),Yw=function(t){return"fo"===t.textPlacement?r:"old"===t.textPlacement?e:l},Hw={drawRect:Rw,drawBoundary:Ow,drawC4Shape:Pw,drawRels:Dw,drawImage:Mw,insertArrowHead:zw,insertArrowEnd:Gw,insertArrowFilledHead:Uw,insertDynamicNumber:qw,insertArrowCrossHead:jw,insertDatabaseIcon:Bw,insertComputerIcon:$w,insertClockIcon:Fw}}),c6=b(()=>{Vw="object"==typeof global&&global&&global.Object===Object&&global,Xw=Vw}),h6=b(()=>{c6(),Kw="object"==typeof self&&self&&self.Object===Object&&self,Kw=Xw||Kw||Function("return this")(),Zw=Kw}),u6=b(()=>{h6(),Qw=Zw.Symbol,Jw=Qw});function d6(t){var e=g6.call(t,m6),r=t[m6];try{var n=!(t[m6]=void 0)}catch{}var i=f6.call(t);return n&&(e?t[m6]=r:delete t[m6]),i}var p6,g6,f6,m6,y6,v6=b(()=>{u6(),p6=Object.prototype,g6=p6.hasOwnProperty,f6=p6.toString,m6=Jw?Jw.toStringTag:void 0,me(d6,"getRawTag"),y6=d6});function x6(t){return w6.call(t)}var b6,w6,k6,T6=b(()=>{b6=Object.prototype,w6=b6.toString,me(x6,"objectToString"),k6=x6});function E6(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":(C6&&C6 in Object(t)?y6:k6)(t)}var C6,S6,_6=b(()=>{u6(),v6(),T6(),C6=Jw?Jw.toStringTag:void 0,me(E6,"baseGetTag"),S6=E6});function A6(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}var L6,N6=b(()=>{me(A6,"isObject"),L6=A6});function I6(t){return!!L6(t)&&("[object Function]"==(t=S6(t))||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t)}var R6,M6,D6,O6=b(()=>{_6(),N6(),me(I6,"isFunction"),R6=I6}),P6=b(()=>{h6(),M6=Zw["__core-js_shared__"],D6=M6});function B6(t){return!!$6&&$6 in t}var $6,F6,z6=b(()=>{var t;P6(),t=/[^.]+$/.exec(D6&&D6.keys&&D6.keys.IE_PROTO||""),$6=t?"Symbol(src)_1."+t:"",me(B6,"isMasked"),F6=B6});function G6(t){if(null!=t){try{return q6.call(t)}catch{}try{return t+""}catch{}}return""}var U6,q6,j6,W6=b(()=>{U6=Function.prototype,q6=U6.toString,me(G6,"toSource"),j6=G6});function Y6(t){return!(!L6(t)||F6(t))&&(R6(t)?Z6:V6).test(j6(t))}var H6,V6,X6,K6,Z6,Q6,J6=b(()=>{O6(),z6(),N6(),W6(),H6=/[\\^$.*+?()[\]{}|]/g,V6=/^\[object .+?Constructor\]$/,X6=Function.prototype,K6=Object.prototype,X6=X6.toString,K6=K6.hasOwnProperty,Z6=RegExp("^"+X6.call(K6).replace(H6,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),me(Y6,"baseIsNative"),Q6=Y6});function tk(t,e){return t?.[e]}var ek,rk=b(()=>{me(tk,"getValue"),ek=tk});function nk(t,e){return t=ek(t,e),Q6(t)?t:void 0}var ik,ak,sk,ok=b(()=>{J6(),rk(),me(nk,"getNative"),ik=nk}),lk=b(()=>{ok(),ak=ik(Object,"create"),sk=ak});function ck(){this.__data__=sk?sk(null):{},this.size=0}var hk,uk=b(()=>{lk(),me(ck,"hashClear"),hk=ck});function dk(t){return t=this.has(t)&&delete this.__data__[t],this.size-=t?1:0,t}var pk,gk=b(()=>{me(dk,"hashDelete"),pk=dk});function fk(t){var e,r=this.__data__;return sk?"__lodash_hash_undefined__"===(e=r[t])?void 0:e:yk.call(r,t)?r[t]:void 0}var mk,yk,vk,xk=b(()=>{lk(),mk=Object.prototype,yk=mk.hasOwnProperty,me(fk,"hashGet"),vk=fk});function bk(t){var e=this.__data__;return sk?void 0!==e[t]:kk.call(e,t)}var wk,kk,Tk,Ek=b(()=>{lk(),wk=Object.prototype,kk=wk.hasOwnProperty,me(bk,"hashHas"),Tk=bk});function Ck(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=sk&&void 0===e?"__lodash_hash_undefined__":e,this}var Sk,_k=b(()=>{lk(),me(Ck,"hashSet"),Sk=Ck});function Ak(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{uk(),gk(),xk(),Ek(),_k(),me(Ak,"Hash"),Ak.prototype.clear=hk,Ak.prototype.delete=pk,Ak.prototype.get=vk,Ak.prototype.has=Tk,Ak.prototype.set=Sk,Lk=Ak});function Ik(){this.__data__=[],this.size=0}var Rk,Mk=b(()=>{me(Ik,"listCacheClear"),Rk=Ik});function Dk(t,e){return t===e||t!=t&&e!=e}var Ok,Pk=b(()=>{me(Dk,"eq"),Ok=Dk});function Bk(t,e){for(var r=t.length;r--;)if(Ok(t[r][0],e))return r;return-1}var $k,Fk=b(()=>{Pk(),me(Bk,"assocIndexOf"),$k=Bk});function zk(t){var e=this.__data__;return!((t=$k(e,t))<0||(t==e.length-1?e.pop():Uk.call(e,t,1),--this.size,0))}var Gk,Uk,qk,jk=b(()=>{Fk(),Gk=Array.prototype,Uk=Gk.splice,me(zk,"listCacheDelete"),qk=zk});function Wk(t){var e=this.__data__;return(t=$k(e,t))<0?void 0:e[t][1]}var Yk,Hk=b(()=>{Fk(),me(Wk,"listCacheGet"),Yk=Wk});function Vk(t){return-1<$k(this.__data__,t)}var Xk,Kk=b(()=>{Fk(),me(Vk,"listCacheHas"),Xk=Vk});function Zk(t,e){var r=this.__data__,n=$k(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var Qk,Jk=b(()=>{Fk(),me(Zk,"listCacheSet"),Qk=Zk});function tT(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{Mk(),jk(),Hk(),Kk(),Jk(),me(tT,"ListCache"),tT.prototype.clear=Rk,tT.prototype.delete=qk,tT.prototype.get=Yk,tT.prototype.has=Xk,tT.prototype.set=Qk,eT=tT}),aT=b(()=>{ok(),h6(),rT=ik(Zw,"Map"),nT=rT});function sT(){this.size=0,this.__data__={hash:new Lk,map:new(nT||eT),string:new Lk}}var oT,lT=b(()=>{Nk(),iT(),aT(),me(sT,"mapCacheClear"),oT=sT});function cT(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}var hT,uT=b(()=>{me(cT,"isKeyable"),hT=cT});function dT(t,e){return t=t.__data__,hT(e)?t["string"==typeof e?"string":"hash"]:t.map}var pT,gT=b(()=>{uT(),me(dT,"getMapData"),pT=dT});function fT(t){return t=pT(this,t).delete(t),this.size-=t?1:0,t}var mT,yT=b(()=>{gT(),me(fT,"mapCacheDelete"),mT=fT});function vT(t){return pT(this,t).get(t)}var xT,bT=b(()=>{gT(),me(vT,"mapCacheGet"),xT=vT});function wT(t){return pT(this,t).has(t)}var kT,TT=b(()=>{gT(),me(wT,"mapCacheHas"),kT=wT});function ET(t,e){var r=pT(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this}var CT,ST=b(()=>{gT(),me(ET,"mapCacheSet"),CT=ET});function _T(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{lT(),yT(),bT(),TT(),ST(),me(_T,"MapCache"),_T.prototype.clear=oT,_T.prototype.delete=mT,_T.prototype.get=xT,_T.prototype.has=kT,_T.prototype.set=CT,AT=_T});function NT(n,i){if("function"!=typeof n||null!=i&&"function"!=typeof i)throw new TypeError(IT);var a=me(function(){var t=arguments,e=i?i.apply(this,t):t[0],r=a.cache;return r.has(e)?r.get(e):(t=n.apply(this,t),a.cache=r.set(e,t)||r,t)},"memoized");return a.cache=new(NT.Cache||AT),a}var IT,RT,MT=b(()=>{LT(),IT="Expected a function",me(NT,"memoize"),NT.Cache=AT,RT=NT});function DT(){this.__data__=new eT,this.size=0}var OT,PT=b(()=>{iT(),me(DT,"stackClear"),OT=DT});function BT(t){var e=this.__data__,t=e.delete(t);return this.size=e.size,t}var $T,FT=b(()=>{me(BT,"stackDelete"),$T=BT});function zT(t){return this.__data__.get(t)}var GT,UT=b(()=>{me(zT,"stackGet"),GT=zT});function qT(t){return this.__data__.has(t)}var jT,WT=b(()=>{me(qT,"stackHas"),jT=qT});function YT(t,e){var r=this.__data__;if(r instanceof eT){var n=r.__data__;if(!nT||n.length<199)return n.push([t,e]),this.size=++r.size,this;r=this.__data__=new AT(n)}return r.set(t,e),this.size=r.size,this}var HT,VT=b(()=>{iT(),aT(),LT(),me(YT,"stackSet"),HT=YT});function XT(t){t=this.__data__=new eT(t),this.size=t.size}var KT,ZT,QT,JT=b(()=>{iT(),PT(),FT(),UT(),WT(),VT(),me(XT,"Stack"),XT.prototype.clear=OT,XT.prototype.delete=$T,XT.prototype.get=GT,XT.prototype.has=jT,XT.prototype.set=HT,KT=XT}),t7=b(()=>{ok(),ZT=(()=>{try{var t=ik(Object,"defineProperty");return t({},"",{}),t}catch{}})(),QT=ZT});function e7(t,e,r){"__proto__"==e&&QT?QT(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var r7,n7=b(()=>{t7(),me(e7,"baseAssignValue"),r7=e7});function i7(t,e,r){(void 0===r||Ok(t[e],r))&&(void 0!==r||e in t)||r7(t,e,r)}var a7,s7=b(()=>{n7(),Pk(),me(i7,"assignMergeValue"),a7=i7});function o7(l){return function(t,e,r){for(var n=-1,i=Object(t),a=r(t),s=a.length;s--;){var o=a[l?s:++n];if(!1===e(i[o],o,i))break}return t}}var l7,c7,h7,u7=b(()=>{me(o7,"createBaseFor"),l7=o7}),d7=b(()=>{u7(),c7=l7(),h7=c7});function p7(t,e){return e?t.slice():(e=t.length,e=m7?m7(e):new t.constructor(e),t.copy(e),e)}var g7,f7,m7,y7,v7,x7,b7=b(()=>{h6(),g7="object"==typeof exports&&exports&&!exports.nodeType&&exports,f7=(f7=g7&&"object"==typeof module&&module&&!module.nodeType&&module)&&f7.exports===g7?Zw.Buffer:void 0,m7=f7?f7.allocUnsafe:void 0,me(p7,"cloneBuffer"),y7=p7}),w7=b(()=>{h6(),v7=Zw.Uint8Array,x7=v7});function k7(t){var e=new t.constructor(t.byteLength);return new x7(e).set(new x7(t)),e}var T7,E7=b(()=>{w7(),me(k7,"cloneArrayBuffer"),T7=k7});function C7(t,e){return e=e?T7(t.buffer):t.buffer,new t.constructor(e,t.byteOffset,t.length)}var S7,_7=b(()=>{E7(),me(C7,"cloneTypedArray"),S7=C7});function A7(t,e){var r=-1,n=t.length;for(e=e||Array(n);++r{me(A7,"copyArray"),L7=A7}),M7=b(()=>{function e(){}N6(),N7=Object.create,me(e,"object"),I7=function(t){return L6(t)?N7?N7(t):(e.prototype=t,t=new e,e.prototype=void 0,t):{}}});function D7(e,r){return function(t){return e(r(t))}}var O7,P7,B7,$7=b(()=>{me(D7,"overArg"),O7=D7}),F7=b(()=>{$7(),P7=O7(Object.getPrototypeOf,Object),B7=P7});function z7(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||G7)}var G7,U7,q7=b(()=>{G7=Object.prototype,me(z7,"isPrototype"),U7=z7});function j7(t){return"function"!=typeof t.constructor||U7(t)?{}:I7(B7(t))}var W7,Y7=b(()=>{M7(),F7(),q7(),me(j7,"initCloneObject"),W7=j7});function H7(t){return null!=t&&"object"==typeof t}var V7,X7=b(()=>{me(H7,"isObjectLike"),V7=H7});function K7(t){return V7(t)&&"[object Arguments]"==S6(t)}var Z7,Q7,J7,t8,e8,r8,n8,i8=b(()=>{_6(),X7(),me(K7,"baseIsArguments"),Z7=K7}),a8=b(()=>{i8(),X7(),t8=Object.prototype,Q7=t8.hasOwnProperty,J7=t8.propertyIsEnumerable,t8=Z7(function(){return arguments}())?Z7:function(t){return V7(t)&&Q7.call(t,"callee")&&!J7.call(t,"callee")},e8=t8}),s8=b(()=>{r8=Array.isArray,n8=r8});function o8(t){return"number"==typeof t&&-1{me(o8,"isLength"),l8=o8});function h8(t){return null!=t&&l8(t.length)&&!R6(t)}var u8,d8=b(()=>{O6(),c8(),me(h8,"isArrayLike"),u8=h8});function p8(t){return V7(t)&&u8(t)}var g8,f8=b(()=>{d8(),X7(),me(p8,"isArrayLikeObject"),g8=p8});function m8(){return!1}var y8,v8,x8,b8,w8=b(()=>{me(m8,"stubFalse"),y8=m8}),k8=b(()=>{h6(),w8(),x8="object"==typeof exports&&exports&&!exports.nodeType&&exports,v8=(v8=x8&&"object"==typeof module&&module&&!module.nodeType&&module)&&v8.exports===x8?Zw.Buffer:void 0,x8=v8?v8.isBuffer:void 0,b8=x8||y8});function T8(t){return!(!V7(t)||"[object Object]"!=S6(t))&&(null===(t=B7(t))||"function"==typeof(t=_8.call(t,"constructor")&&t.constructor)&&t instanceof t&&S8.call(t)==A8)}var E8,C8,S8,_8,A8,L8,N8=b(()=>{_6(),F7(),X7(),E8=Function.prototype,C8=Object.prototype,S8=E8.toString,_8=C8.hasOwnProperty,A8=S8.call(Object),me(T8,"isPlainObject"),L8=T8});function I8(t){return V7(t)&&l8(t.length)&&!!R8[S6(t)]}var R8,M8,D8=b(()=>{_6(),c8(),X7(),(R8={})["[object Float32Array]"]=R8["[object Float64Array]"]=R8["[object Int8Array]"]=R8["[object Int16Array]"]=R8["[object Int32Array]"]=R8["[object Uint8Array]"]=R8["[object Uint8ClampedArray]"]=R8["[object Uint16Array]"]=R8["[object Uint32Array]"]=!0,R8["[object Arguments]"]=R8["[object Array]"]=R8["[object ArrayBuffer]"]=R8["[object Boolean]"]=R8["[object DataView]"]=R8["[object Date]"]=R8["[object Error]"]=R8["[object Function]"]=R8["[object Map]"]=R8["[object Number]"]=R8["[object Object]"]=R8["[object RegExp]"]=R8["[object Set]"]=R8["[object String]"]=R8["[object WeakMap]"]=!1,me(I8,"baseIsTypedArray"),M8=I8});function O8(e){return function(t){return e(t)}}var P8,B8,$8,F8,z8,G8,U8,q8=b(()=>{me(O8,"baseUnary"),P8=O8}),j8=b(()=>{c6(),F8="object"==typeof exports&&exports&&!exports.nodeType&&exports,B8=F8&&"object"==typeof module&&module&&!module.nodeType&&module,F8=B8&&B8.exports===F8,$8=F8&&Xw.process,F8=(()=>{try{return B8&&B8.require&&B8.require("util").types||$8&&$8.binding&&$8.binding("util")}catch{}})(),z8=F8}),W8=b(()=>{D8(),q8(),j8(),G8=(G8=z8&&z8.isTypedArray)?P8(G8):M8,U8=G8});function Y8(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var H8,V8=b(()=>{me(Y8,"safeGet"),H8=Y8});function X8(t,e,r){var n=t[e];Z8.call(t,e)&&Ok(n,r)&&(void 0!==r||e in t)||r7(t,e,r)}var K8,Z8,Q8,J8=b(()=>{n7(),Pk(),K8=Object.prototype,Z8=K8.hasOwnProperty,me(X8,"assignValue"),Q8=X8});function tE(t,e,r,n){var i=!r;r=r||{};for(var a=-1,s=e.length;++a{J8(),n7(),me(tE,"copyObject"),eE=tE});function nE(t,e){for(var r=-1,n=Array(t);++r{me(nE,"baseTimes"),iE=nE});function sE(t,e){var r=typeof t;return!!(e=e??9007199254740991)&&("number"==r||"symbol"!=r&&oE.test(t))&&-1{oE=/^(?:0|[1-9]\d*)$/,me(sE,"isIndex"),lE=sE});function hE(t,e){var r,n=n8(t),i=!n&&e8(t),a=!n&&!i&&b8(t),s=!n&&!i&&!a&&U8(t),o=n||i||a||s,l=o?iE(t.length,String):[],c=l.length;for(r in t)!e&&!dE.call(t,r)||o&&("length"==r||a&&("offset"==r||"parent"==r)||s&&("buffer"==r||"byteLength"==r||"byteOffset"==r)||lE(r,c))||l.push(r);return l}var uE,dE,pE,gE=b(()=>{aE(),a8(),s8(),k8(),cE(),W8(),uE=Object.prototype,dE=uE.hasOwnProperty,me(hE,"arrayLikeKeys"),pE=hE});function fE(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}var mE,yE=b(()=>{me(fE,"nativeKeysIn"),mE=fE});function vE(t){if(!L6(t))return mE(t);var e,r=U7(t),n=[];for(e in t)("constructor"!=e||!r&&bE.call(t,e))&&n.push(e);return n}var xE,bE,wE,kE=b(()=>{N6(),q7(),yE(),xE=Object.prototype,bE=xE.hasOwnProperty,me(vE,"baseKeysIn"),wE=vE});function TE(t){return u8(t)?pE(t,!0):wE(t)}var EE,CE=b(()=>{gE(),kE(),d8(),me(TE,"keysIn"),EE=TE});function SE(t){return eE(t,EE(t))}var _E,AE=b(()=>{rE(),CE(),me(SE,"toPlainObject"),_E=SE});function LE(t,e,r,n,i,a,s){var o,l,c,h=H8(t,r),u=H8(e,r),d=s.get(u);d||((e=void 0===(d=a?a(h,u,r+"",t,e,s):void 0))&&(l=!(o=n8(u))&&b8(u),c=!o&&!l&&U8(u),d=u,o||l||c?d=n8(h)?h:g8(h)?L7(h):l?y7(u,!(e=!1)):c?S7(u,!(e=!1)):[]:L8(u)||e8(u)?e8(d=h)?d=_E(h):L6(h)&&!R6(h)||(d=W7(u)):e=!1),e&&(s.set(u,d),i(d,u,n,a,s),s.delete(u))),a7(t,r,d)}var NE,IE=b(()=>{s7(),b7(),_7(),R7(),Y7(),a8(),s8(),f8(),k8(),O6(),N6(),N8(),W8(),V8(),AE(),me(LE,"baseMergeDeep"),NE=LE});function RE(n,i,a,s,o){n!==i&&h7(i,function(t,e){var r;o=o||new KT,L6(t)?NE(n,i,e,a,RE,s,o):(r=s?s(H8(n,e),t,e+"",n,i,o):void 0,a7(n,e,void 0===r?t:r))},EE)}var ME,DE=b(()=>{JT(),s7(),d7(),IE(),N6(),CE(),V8(),me(RE,"baseMerge"),ME=RE});function OE(t){return t}var PE,BE=b(()=>{me(OE,"identity"),PE=OE});function $E(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}var FE,zE=b(()=>{me($E,"apply"),FE=$E});function GE(a,s,o){return s=UE(void 0===s?a.length-1:s,0),function(){for(var t=arguments,e=-1,r=UE(t.length-s,0),n=Array(r);++e{zE(),UE=Math.max,me(GE,"overRest"),qE=GE});function WE(t){return function(){return t}}var YE,HE,VE=b(()=>{me(WE,"constant"),YE=WE}),XE=b(()=>{VE(),t7(),BE(),HE=QT?function(t,e){return QT(t,"toString",{configurable:!0,enumerable:!1,value:YE(e),writable:!0})}:PE});function KE(r){var n=0,i=0;return function(){var t=ZE(),e=16-(t-i);if(i=t,0{ZE=Date.now,me(KE,"shortOut"),QE=KE}),rC=b(()=>{XE(),eC(),JE=QE(HE),tC=JE});function nC(t,e){return tC(qE(t,e,PE),t+"")}var iC,aC=b(()=>{BE(),jE(),rC(),me(nC,"baseRest"),iC=nC});function sC(t,e,r){var n;return!!L6(r)&&!!("number"==(n=typeof e)?u8(r)&&lE(e,r.length):"string"==n&&e in r)&&Ok(r[e],t)}var oC,lC=b(()=>{Pk(),d8(),cE(),N6(),me(sC,"isIterateeCall"),oC=sC});function cC(o){return iC(function(t,e){var r=-1,n=e.length,i=1{aC(),lC(),me(cC,"createAssigner"),hC=cC}),gC=b(()=>{DE(),pC(),uC=hC(function(t,e,r){ME(t,e,r)}),dC=uC});function fC(t,e){return t?(t="curve"+(t.charAt(0).toUpperCase()+t.slice(1)),IC[t]??e):e}function mC(t,e){if(t=t.trim())return"loose"!==e.securityLevel?(0,LC.sanitizeUrl)(t):t}function yC(t,e){return t&&e?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):0}function vC(t){let e,r=0;t.forEach(t=>{r+=yC(t,e),e=t});var n=r/2;return FC(t,n)}function xC(t){return 1===t.length?t[0]:vC(t)}function bC(t,e,r){var r=structuredClone(r),n=(D.info("our points",r),"start_left"!==e&&"start_right"!==e&&r.reverse(),25+t),n=FC(r,n),t=10+.5*t,i=Math.atan2(r[0].y-n.y,r[0].x-n.x),a={x:0,y:0};return"start_left"===e?(a.x=Math.sin(i+Math.PI)*t+(r[0].x+n.x)/2,a.y=-Math.cos(i+Math.PI)*t+(r[0].y+n.y)/2):"end_right"===e?(a.x=Math.sin(i-Math.PI)*t+(r[0].x+n.x)/2-5,a.y=-Math.cos(i-Math.PI)*t+(r[0].y+n.y)/2-5):"end_left"===e?(a.x=Math.sin(i)*t+(r[0].x+n.x)/2-5,a.y=-Math.cos(i)*t+(r[0].y+n.y)/2-5):(a.x=Math.sin(i)*t+(r[0].x+n.x)/2,a.y=-Math.cos(i)*t+(r[0].y+n.y)/2),a}function wC(t){let e="",r="";for(var n of t)void 0!==n&&(n.startsWith("color:")||n.startsWith("text-align:")?r=r+n+";":e=e+n+";");return{style:e,labelStyle:r}}function kC(e){let r="",n="0123456789abcdef",i=n.length;for(let t=0;tMath.round(parseFloat(t)).toString())).includes(r.toString())||e.includes(t.toString())}var LC,NC,IC,RC,MC,DC,OC,PC,BC,$C,FC,zC,GC,UC,qC,jC,WC,YC,HC,VC,XC,KC,ZC,QC,JC,tS,eS,rS,nS,iS=b(()=>{LC=q(s6(),1),i6(),Oc(),en(),t(),sh(),mr(),MT(),gC(),ih(),NC="​",IC={curveBasis:v3,curveBasisClosed:w3,curveBasisOpen:E3,curveBumpX:h3,curveBumpY:u3,curveBundle:_3,curveCardinalClosed:D3,curveCardinalOpen:B3,curveCardinal:I3,curveCatmullRomClosed:j3,curveCatmullRomOpen:H3,curveCatmullRom:G3,curveLinear:Z5,curveLinearClosed:K3,curveMonotoneX:aw,curveMonotoneY:sw,curveNatural:hw,curveStep:pw,curveStepAfter:fw,curveStepBefore:gw},RC=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,MC=me(function(t,e){var r,n=DC(t,/(?:init\b)|(?:initialize\b)/),i={};if(i=Array.isArray(n)?(r=n.map(t=>t.args),Ye(r),At(i,[...r])):n.args)return r=qc(t,e),void 0!==i[n="config"]&&(i[r="flowchart-v2"===r?"flowchart":r]=i[n],delete i[n]),i},"detectInit"),DC=me(function(t,e=null){try{var r=new RegExp(`[%]{2}(?![{]${RC.source})(?=[}][%]{2}).* +`,"ig");t=t.trim().replace(r,"").replace(/'/gm,'"'),D.debug(`Detecting diagram directive${null!==e?" type:"+e:""} based on the text:`+t);for(var n,i,a,s=[];null!==(n=Fc.exec(t));)n.index===Fc.lastIndex&&Fc.lastIndex++,(n&&!e||e&&n[1]?.match(e)||e&&n[2]?.match(e))&&(i=n[1]||n[2],a=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null,s.push({type:i,args:a}));return 0===s.length?{type:t,args:null}:1===s.length?s[0]:s}catch(r){return D.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),OC=me(function(t){return t.replace(Fc,"")},"removeDirectives"),PC=me(function(t,e){for(var[r,n]of e.entries())if(n.match(t))return r;return-1},"isSubstringInArray"),me(fC,"interpolateToCurve"),me(mC,"formatUrl"),BC=me((e,...t)=>{let r=e.split("."),n=r.length-1,i=r[n],a=window;for(let t=0;t(e=Math.pow(10,e),Math.round(t*e)/e),"roundNumber"),FC=me((t,e)=>{let r,n=e;for(var i of t){if(r){var a=yC(i,r);if(0===a)return r;if(a{D.info("our points "+JSON.stringify(e)),e[0]!==r&&(e=e.reverse());var r=FC(e,25),t=t?10:5,n=Math.atan2(e[0].y-r.y,e[0].x-r.x),i={x:0,y:0};return i.x=Math.sin(n)*t+(e[0].x+r.x)/2,i.y=-Math.cos(n)*t+(e[0].y+r.y)/2,i},"calcCardinalityPosition"),me(bC,"calcTerminalLabelPosition"),me(wC,"getStylesFromArray"),GC=0,UC=me(()=>(GC++,"id-"+Math.random().toString(36).substr(2,12)+"-"+GC),"generateId"),me(kC,"makeRandomHex"),qC=me(t=>kC(t.length),"random"),jC=me(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,text:""}},"getTextObj"),WC=me(function(t,e){var r=e.text.replace(L.lineBreakRegex," "),[,n]=JC(e.fontSize);return(t=t.append("text")).attr("x",e.x),t.attr("y",e.y),t.style("text-anchor",e.anchor),t.style("font-family",e.fontFamily),t.style("font-size",n),t.style("font-weight",e.fontWeight),t.attr("fill",e.fill),void 0!==e.class&&t.attr("class",e.class),(n=t.append("tspan")).attr("x",e.x+2*e.textMargin),n.attr("fill",e.fill),n.text(r),t},"drawSimpleText"),YC=RT((t,s,o)=>{if(!t||(o=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},o),L.lineBreakRegex.test(t)))return t;let l=t.split(" ").filter(Boolean),c=[],h="";return l.forEach((t,e)=>{var r,n,i=EC(t+" ",o),a=EC(h,o);h=s""!==t).join(o.joinWith)},(t,e,r)=>""+t+e+r.fontSize+r.fontWeight+r.fontFamily+r.joinWith),HC=RT((t,n,i="-",a)=>{a=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},a);let s=[...t],o=[],l="";return s.forEach((t,e)=>{var r,t=""+l+t;l=EC(t,a)>=n?(e+=1,e=s.length===e,r=t+i,o.push(e?t:r),""):t}),{hyphenatedStrings:o,remainingWord:l}},(t,e,r="-",n)=>""+t+e+r+n.fontSize+n.fontWeight+n.fontFamily),me(TC,"calculateTextHeight"),me(EC,"calculateTextWidth"),VC=RT((t,e)=>{var{fontSize:e=12,fontFamily:r="Arial",fontWeight:n=400}=e;if(!t)return{width:0,height:0};var[,i]=JC(e),e=["sans-serif",r],a=t.split(L.lineBreakRegex),s=[];if(!(r=H("body")).remove)return{width:0,height:0,lineHeight:0};var o,l=r.append("svg");for(o of e){var c,h={width:0,height:0,lineHeight:0};for(c of a){var u=jC();if(u.text=c||NC,0===(u=((u=WC(l,u).style("font-size",i).style("font-weight",n).style("font-family",o))._groups||u)[0][0].getBBox()).width&&0===u.height)throw new Error("svg element not in render tree");h.width=Math.round(Math.max(h.width,u.width)),u=Math.round(u.height),h.height+=u,h.lineHeight=Math.round(Math.max(h.lineHeight,u))}s.push(h)}return l.remove(),s[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]},(t,e)=>""+t+e.fontSize+e.fontWeight+e.fontFamily),XC=class{constructor(t=!1,e){this.count=0,this.count=e?e.length:0,this.next=t?()=>this.count++:()=>Date.now()}static{me(this,"InitIDGenerator")}},ZC=me(function(t){return KC=KC||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),KC.innerHTML=t,unescape(KC.textContent)},"entityDecode"),me(CC,"isDetailedError"),QC=me((t,e,r,n)=>{var i;n&&(i=t.node()?.getBBox())&&t.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",e)},"insertTitle"),JC=me(t=>{var e;return"number"==typeof t?[t,t+"px"]:(e=parseInt(t??"",10),Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t])},"parseFontSize"),me(SC,"cleanAndMerge"),tS={assignWithDepth:At,wrapLabel:YC,calculateTextHeight:TC,calculateTextWidth:EC,calculateTextDimensions:VC,cleanAndMerge:SC,detectInit:MC,detectDirective:DC,isSubstringInArray:PC,interpolateToCurve:fC,calcLabelPosition:xC,calcCardinalityPosition:zC,calcTerminalLabelPosition:bC,formatUrl:mC,getStylesFromArray:wC,generateId:UC,random:qC,runFunc:BC,entityDecode:ZC,insertTitle:QC,isLabelCoordinateInPath:AC,parseFontSize:JC,InitIDGenerator:XC},eS=me(function(t){let e=t;return e=(e=(e=e.replace(/style.*:\S*#.*;/g,function(t){return t.substring(0,t.length-1)})).replace(/classDef.*:\S*#.*;/g,function(t){return t.substring(0,t.length-1)})).replace(/#\w+;/g,function(t){return t=t.substring(1,t.length-1),/^\+?\d+$/.test(t)?"fl°°"+t+"¶ß":"fl°"+t+"¶ß"})},"encodeEntities"),rS=me(function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),nS=me((t,e,{counter:r=0,prefix:n,suffix:i},a)=>a||(n?n+"_":"")+t+`_${e}_`+r+(i?"_"+i:""),"getEdgeId"),me(_C,"handleUndefinedAttr"),me(AC,"isLabelCoordinateInPath")});function aS(t,e,r,n,i){if(!e[t].width)if(r)e[t].text=YC(e[t].text,i,n),e[t].textLines=e[t].text.split(L.lineBreakRegex).length,e[t].width=i,e[t].height=TC(e[t].text,n);else{var a,s,r=e[t].text.split(L.lineBreakRegex);e[t].textLines=r.length,e[t].height=0,e[t].width=0;for(s of r)e[t].width=Math.max(EC(s,n),e[t].width),a=TC(s,n),e[t].height=e[t].height+a}}function sS(e,r,n,t,i){var a,s,o=new dS(i);o.data.widthLimit=n.data.widthLimit/Math.min(hS,t.length);for([a,s]of t.entries()){let t=0;s.image={width:0,height:0,Y:0},s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=t,t=s.image.Y+s.image.height);var l=s.wrap&&uS.wrap,c=fS(uS),l=(c.fontSize=c.fontSize+2,c.fontWeight="bold",aS("label",s,l,c,o.data.widthLimit),s.label.Y=t+8,t=s.label.Y+s.label.height,s.type&&""!==s.type.text&&(s.type.text="["+s.type.text+"]",aS("type",s,l,c=fS(uS),o.data.widthLimit),s.type.Y=t+5,t=s.type.Y+s.type.height),s.descr&&""!==s.descr.text&&((c=fS(uS)).fontSize=c.fontSize-2,aS("descr",s,l,c,o.data.widthLimit),s.descr.Y=t+20,t=s.descr.Y+s.descr.height),c=0==a||a%hS==0?(l=n.data.startx+uS.diagramMarginX,n.data.stopy+uS.diagramMarginY+t):(l=o.data.stopx!==o.data.startx?o.data.stopx+uS.diagramMarginX:o.data.startx,o.data.starty),o.setData(l,l,c,c),o.name=s.alias,i.db.getC4ShapeArray(s.alias));0<(c=i.db.getC4ShapeKeys(s.alias)).length&&vS(o,e,l,c),r=s.alias,0<(l=i.db.getBoundaries(r)).length&&sS(e,0,o,l,i),"global"!==s.alias&&yS(e,s,o),n.data.stopy=Math.max(o.data.stopy+uS.c4ShapeMargin,n.data.stopy),n.data.stopx=Math.max(o.data.stopx+uS.c4ShapeMargin,n.data.stopx),oS=Math.max(oS,n.data.stopx),lS=Math.max(lS,n.data.stopy)}}var oS,lS,cS,hS,uS,dS,pS,gS,fS,mS,yS,vS,xS,bS,wS,kS,TS,ES,CS,SS,_S=b(()=>{i6(),l6(),t(),oh(),Oc(),Eu(),Tu(),mr(),iS(),lh(),lS=oS=0,cS=4,hS=2,Hc.yy=wu,uS={},dS=class{static{me(this,"Bounds")}constructor(t){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,pS(t.db.getConfig())}setData(t,e,r,n){this.nextData.startx=this.data.startx=t,this.nextData.stopx=this.data.stopx=e,this.nextData.starty=this.data.starty=r,this.nextData.stopy=this.data.stopy=n}updateVal(t,e,r,n){void 0===t[e]?t[e]=r:t[e]=n(r,t[e])}insert(t){this.nextData.cnt=this.nextData.cnt+1;let e=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+t.margin:this.nextData.stopx+2*t.margin,r=e+t.width,n=this.nextData.starty+2*t.margin,i=n+t.height;(e>=this.data.widthLimit||r>=this.data.widthLimit||this.nextData.cnt>cS)&&(e=this.nextData.startx+t.margin+uS.nextLinePaddingX,n=this.nextData.stopy+2*t.margin,this.nextData.stopx=r=e+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=i=n+t.height,this.nextData.cnt=1),t.x=e,t.y=n,this.updateVal(this.data,"startx",e,Math.min),this.updateVal(this.data,"starty",n,Math.min),this.updateVal(this.data,"stopx",r,Math.max),this.updateVal(this.data,"stopy",i,Math.max),this.updateVal(this.nextData,"startx",e,Math.min),this.updateVal(this.nextData,"starty",n,Math.min),this.updateVal(this.nextData,"stopx",r,Math.max),this.updateVal(this.nextData,"stopy",i,Math.max)}init(t){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},pS(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},pS=me(function(t){At(uS,t),t.fontFamily&&(uS.personFontFamily=uS.systemFontFamily=uS.messageFontFamily=t.fontFamily),t.fontSize&&(uS.personFontSize=uS.systemFontSize=uS.messageFontSize=t.fontSize),t.fontWeight&&(uS.personFontWeight=uS.systemFontWeight=uS.messageFontWeight=t.fontWeight)},"setConf"),gS=me((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),fS=me(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),mS=me(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),me(aS,"calcC4ShapeTextWH"),yS=me(function(t,e,r){e.x=r.data.startx,e.y=r.data.starty,e.width=r.data.stopx-r.data.startx,e.height=r.data.stopy-r.data.starty,e.label.y=uS.c4ShapeMargin-35;var r=e.wrap&&uS.wrap,n=fS(uS),i=(n.fontSize=n.fontSize+2,n.fontWeight="bold",EC(e.label.text,n));aS("label",e,r,n,i),Hw.drawBoundary(t,e,uS)},"drawBoundary"),vS=me(function(r,n,i,t){let a=0;for(var s of t){a=0;var o=i[s];switch((s=gS(uS,o.typeC4Shape.text)).fontSize=s.fontSize-2,o.typeC4Shape.width=EC("«"+o.typeC4Shape.text+"»",s),o.typeC4Shape.height=s.fontSize+2,o.typeC4Shape.Y=uS.c4ShapePadding,a=o.typeC4Shape.Y+o.typeC4Shape.height-4,o.image={width:0,height:0,Y:0},o.typeC4Shape.text){case"person":case"external_person":o.image.width=48,o.image.height=48,o.image.Y=a,a=o.image.Y+o.image.height}o.sprite&&(o.image.width=48,o.image.height=48,o.image.Y=a,a=o.image.Y+o.image.height);var s=o.wrap&&uS.wrap,l=uS.width-2*uS.c4ShapePadding,c=gS(uS,o.typeC4Shape.text);c.fontSize=c.fontSize+2,c.fontWeight="bold",aS("label",o,s,c,l),o.label.Y=a+8,a=o.label.Y+o.label.height,o.type&&""!==o.type.text?(o.type.text="["+o.type.text+"]",aS("type",o,s,gS(uS,o.typeC4Shape.text),l),o.type.Y=a+5,a=o.type.Y+o.type.height):o.techn&&""!==o.techn.text&&(o.techn.text="["+o.techn.text+"]",aS("techn",o,s,gS(uS,o.techn.text),l),o.techn.Y=a+5,a=o.techn.Y+o.techn.height);let t=a,e=o.label.width;o.descr&&""!==o.descr.text&&(aS("descr",o,s,gS(uS,o.typeC4Shape.text),l),o.descr.Y=a+20,a=o.descr.Y+o.descr.height,e=Math.max(o.label.width,o.descr.width),t=a-5*o.descr.textLines),e+=uS.c4ShapePadding,o.width=Math.max(o.width||uS.width,e,uS.width),o.height=Math.max(o.height||uS.height,t,uS.height),o.margin=o.margin||uS.c4ShapeMargin,r.insert(o),Hw.drawC4Shape(n,o,uS)}r.bumpLastMargin(uS.c4ShapeMargin)},"drawC4ShapeArray"),xS=class{static{me(this,"Point")}constructor(t,e){this.x=t,this.y=e}},bS=me(function(t,e){let r=t.x,n=t.y,i=e.x,a=e.y,s=r+t.width/2,o=n+t.height/2,l=Math.abs(r-i),c=Math.abs(n-a),h=c/l,u=t.height/t.width,d=null;return n==a&&r{CS=me(t=>`.person { + stroke: ${t.personBorder}; + fill: ${t.personBkg}; + } +`,"getStyles"),SS=CS}),LS={};KBt(LS,{diagram:()=>NS});var NS,IS=b(()=>{oh(),Eu(),_S(),AS(),NS={parser:Vc,db:wu,renderer:ES,styles:SS,init:me(({c4:t,wrap:e})=>{ES.setConf(t),wu.setWrap(e)},"init")}});function RS(t){return"u">16&255),a.push(i>>8&255),a.push(255&i)),i=i<<6|n.indexOf(e.charAt(s));return 0==(t=r%4*6)?(a.push(i>>16&255),a.push(i>>8&255),a.push(255&i)):18==t?(a.push(i>>10&255),a.push(i>>2&255)):12==t&&a.push(i>>4&255),new Uint8Array(a)}function m_(t){for(var e,r="",n=0,i=t.length,a=KA,s=0;s>18&63])+a[n>>12&63])+a[n>>6&63])+a[63&n]),n=(n<<8)+t[s];return 0==(e=i%3)?r=(r=(r=(r+=a[n>>18&63])+a[n>>12&63])+a[n>>6&63])+a[63&n]:2==e?r=(r=(r=(r+=a[n>>10&63])+a[n>>4&63])+a[n<<2&63])+a[64]:1==e&&(r=(r=(r=(r+=a[n>>2&63])+a[n<<4&63])+a[64])+a[64]),r}function y_(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)}function v_(t){if(null!==t)for(var e,r,n,i=[],a=t,s=0,o=a.length;s>10),56320+(t-65536&1023))}function D_(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||a9,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function O_(t,e){return(t={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart}).snippet=FA(t),new $A(e,t)}function P_(t,e){throw O_(t,e)}function B_(t,e){t.onWarning&&t.onWarning.call(null,O_(t,e))}function $_(t,e,r,n){var i,a,s,o;if(el&&(l=t.lineIndent),C_(u))c++;else{if(t.lineIndente)&&0!==n)P_(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(y&&(s=t.line,o=t.lineStart,l=t.position),eA(t,e,h9,!0,i)&&(y?f=t.result:m=t.result),y||(z_(t,d,p,g,f,m,s,o,l),g=f=m=null),U_(t,!0,-1),c=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&0!==c)P_(t,"bad indentation of a mapping entry");else if(t.lineIndente?d=1:t.lineIndent===e?d=0:t.lineIndente?d=1:t.lineIndent===e?d=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),l=0,c=t.implicitTypes.length;l"),null!==t.result&&u.kind!==t.kind&&P_(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+u.kind+'", not "'+t.kind+'"'),u.resolve(t.result,t.tag)?(t.result=u.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):P_(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||g}function rA(t){var e,r,n,i,a=t.position,s=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(i=t.input.charCodeAt(t.position))&&(U_(t,!0,-1),i=t.input.charCodeAt(t.position),!(0{if(0===a.length)return i.quotingType===I9?'""':"''";if(!i.noCompatMode&&(-1!==L9.indexOf(a)||N9.test(a)))return i.quotingType===I9?'"'+a+'"':"'"+a+"'";var t=i.indent*Math.max(1,s),e=-1===i.lineWidth?-1:Math.max(Math.min(i.lineWidth,40),i.lineWidth-t),r=o||-1=i.flowLevel;function n(t){return uA(i,t)}switch(me(n,"testAmbiguity"),bA(a,r,i.indent,e,n,i.quotingType,i.forceQuotes&&!o,l)){case R9:return a;case M9:return"'"+a.replace(/'/g,"''")+"'";case D9:return"|"+kA(a,i.indent)+TA(cA(a,t));case O9:return">"+kA(a,i.indent)+TA(cA(EA(a,e),t));case P9:return'"'+SA(a)+'"';default:throw new $A("impossible error: invalid scalar style")}})()}function kA(t,e){var e=xA(t)?String(e):"",r=t[t.length-1]===` +`;return e+(!r||t[t.length-2]!==` +`&&t!==` +`?r?"":"-":"+")+` +`}function TA(t){return t[t.length-1]===` +`?t.slice(0,-1):t}function EA(t,e){for(var r,n=/(\n+)([^\n]*)/g,i=(r=-1!==(r=t.indexOf(` +`))?r:t.length,n.lastIndex=r,CA(t.slice(0,r),e)),a=t[0]===` +`||" "===t[0];o=n.exec(t);){var s=o[1],o=o[2],l=" "===o[0];i+=s+(a||l||""===o?"":` +`)+CA(o,e),a=l}return i}function CA(t,e){if(""===t||" "===t[0])return t;for(var r,n,i=/ [^ ]/g,a=0,s=0,o="";n=i.exec(t);)e<(n=n.index)-a&&(o+=` +`+t.slice(a,r=ae&&a tag resolver accepts not "'+a+'" style');n=i.represent[a](e,a)}t.dump=n}return!0}return!1}function RA(t,e,r,n,i,a,s){t.tag=null,t.dump=r,IA(t,r,!1)||IA(t,r,!0);var o,l,c=E9.call(t.dump),h=n,u=(n=n&&(t.flowLevel<0||t.flowLevel>e),"[object Object]"===c||"[object Array]"===c);if(u&&(l=-1!==(o=t.duplicates.indexOf(r))),(null!==t.tag&&"?"!==t.tag||l||2!==t.indent&&0",t.dump=r+" "+t.dump)}return!0}function MA(t,e){var r,n,i=[],a=[];for(DA(t,i,a),r=0,n=a.length;r{for(me(RS,"isNothing"),me(MS,"isObject"),me(DS,"toArray"),me(OS,"extend"),me(PS,"repeat"),me(BS,"isNegativeZero"),BA={isNothing:RS,isObject:MS,toArray:DS,repeat:PS,isNegativeZero:BS,extend:OS},me($S,"formatError"),me(FS,"YAMLException$1"),((FS.prototype=Object.create(Error.prototype)).constructor=FS).prototype.toString=me(function(t){return this.name+": "+$S(this,t)},"toString"),$A=FS,me(zS,"getLine"),me(GS,"padStart"),me(US,"makeSnippet"),FA=US,zA=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],GA=["scalar","sequence","mapping"],me(qS,"compileStyleAliases"),me(jS,"Type$1"),UA=jS,me(WS,"compileList"),me(YS,"compileMap"),me(HS,"Schema$1"),HS.prototype.extend=me(function(t){var e=[],r=[];if(t instanceof UA)r.push(t);else if(Array.isArray(t))r=r.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new $A("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(e=e.concat(t.implicit)),t.explicit&&(r=r.concat(t.explicit))}return e.forEach(function(t){if(!(t instanceof UA))throw new $A("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new $A("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new $A("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),r.forEach(function(t){if(!(t instanceof UA))throw new $A("Specified list of YAML types (or a single Type object) contains a non-Type object.")}),(t=Object.create(HS.prototype)).implicit=(this.implicit||[]).concat(e),t.explicit=(this.explicit||[]).concat(r),t.compiledImplicit=WS(t,"implicit"),t.compiledExplicit=WS(t,"explicit"),t.compiledTypeMap=YS(t.compiledImplicit,t.compiledExplicit),t},"extend"),WA=HS,T9=new UA("tag:yaml.org,2002:str",{kind:"scalar",construct:me(function(t){return null!==t?t:""},"construct")}),VA=new UA("tag:yaml.org,2002:seq",{kind:"sequence",construct:me(function(t){return null!==t?t:[]},"construct")}),XA=new UA("tag:yaml.org,2002:map",{kind:"mapping",construct:me(function(t){return null!==t?t:{}},"construct")}),WA=new WA({explicit:[T9,VA,XA]}),me(VS,"resolveYamlNull"),me(XS,"constructYamlNull"),me(KS,"isNull"),T9=new UA("tag:yaml.org,2002:null",{kind:"scalar",resolve:VS,construct:XS,predicate:KS,represent:{canonical:me(function(){return"~"},"canonical"),lowercase:me(function(){return"null"},"lowercase"),uppercase:me(function(){return"NULL"},"uppercase"),camelcase:me(function(){return"Null"},"camelcase"),empty:me(function(){return""},"empty")},defaultStyle:"lowercase"}),me(ZS,"resolveYamlBoolean"),me(QS,"constructYamlBoolean"),me(JS,"isBoolean"),VA=new UA("tag:yaml.org,2002:bool",{kind:"scalar",resolve:ZS,construct:QS,predicate:JS,represent:{lowercase:me(function(t){return t?"true":"false"},"lowercase"),uppercase:me(function(t){return t?"TRUE":"FALSE"},"uppercase"),camelcase:me(function(t){return t?"True":"False"},"camelcase")},defaultStyle:"lowercase"}),me(t_,"isHexCode"),me(e_,"isOctCode"),me(r_,"isDecCode"),me(n_,"resolveYamlInteger"),me(i_,"constructYamlInteger"),me(a_,"isInteger"),XA=new UA("tag:yaml.org,2002:int",{kind:"scalar",resolve:n_,construct:i_,predicate:a_,represent:{binary:me(function(t){return 0<=t?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:me(function(t){return 0<=t?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:me(function(t){return t.toString(10)},"decimal"),hexadecimal:me(function(t){return 0<=t?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),qA=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),me(s_,"resolveYamlFloat"),me(o_,"constructYamlFloat"),jA=/^[-+]?[0-9]+e/,me(l_,"representYamlFloat"),me(c_,"isFloat"),ZA=new UA("tag:yaml.org,2002:float",{kind:"scalar",resolve:s_,construct:o_,predicate:c_,represent:l_,defaultStyle:"lowercase"}),WA=WA.extend({implicit:[T9,VA,XA,ZA]}),T9=WA,YA=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),HA=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]))?))?$"),me(h_,"resolveYamlTimestamp"),me(u_,"constructYamlTimestamp"),me(d_,"representYamlTimestamp"),VA=new UA("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:h_,construct:u_,instanceOf:Date,represent:d_}),me(p_,"resolveYamlMerge"),XA=new UA("tag:yaml.org,2002:merge",{kind:"scalar",resolve:p_}),KA=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`,me(g_,"resolveYamlBinary"),me(f_,"constructYamlBinary"),me(m_,"representYamlBinary"),me(y_,"isBinary"),ZA=new UA("tag:yaml.org,2002:binary",{kind:"scalar",resolve:g_,construct:f_,predicate:y_,represent:m_}),QA=Object.prototype.hasOwnProperty,JA=Object.prototype.toString,me(v_,"resolveYamlOmap"),me(x_,"constructYamlOmap"),t9=new UA("tag:yaml.org,2002:omap",{kind:"sequence",resolve:v_,construct:x_}),e9=Object.prototype.toString,me(b_,"resolveYamlPairs"),me(w_,"constructYamlPairs"),r9=new UA("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:b_,construct:w_}),n9=Object.prototype.hasOwnProperty,me(k_,"resolveYamlSet"),me(T_,"constructYamlSet"),i9=new UA("tag:yaml.org,2002:set",{kind:"mapping",resolve:k_,construct:T_}),a9=T9.extend({implicit:[VA,XA],explicit:[ZA,t9,r9,i9]}),s9=Object.prototype.hasOwnProperty,h9=4,u9=o9=1,d9=l9=2,p9=c9=3,g9=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,f9=/[\x85\u2028\u2029]/,m9=/[,\[\]\{\}]/,y9=/^(?:!|!!|![a-z\-]+!)$/i,v9=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i,me(E_,"_class"),me(C_,"is_EOL"),me(S_,"is_WHITE_SPACE"),me(__,"is_WS_OR_EOL"),me(A_,"is_FLOW_INDICATOR"),me(L_,"fromHexCode"),me(N_,"escapedHexLen"),me(I_,"fromDecimalCode"),me(R_,"simpleEscapeSequence"),me(M_,"charFromCodepoint"),x9=new Array(256),b9=new Array(256),w9=0;w9<256;w9++)x9[w9]=R_(w9)?1:0,b9[w9]=R_(w9);me(D_,"State$1"),me(O_,"generateError"),me(P_,"throwError"),me(B_,"throwWarning"),k9={YAML:me(function(t,e,r){var n,i;null!==t.version&&P_(t,"duplication of %YAML directive"),1!==r.length&&P_(t,"YAML directive accepts exactly one argument"),null===(i=/^([0-9]+)\.([0-9]+)$/.exec(r[0]))&&P_(t,"ill-formed argument of the YAML directive"),n=parseInt(i[1],10),i=parseInt(i[2],10),1!==n&&P_(t,"unacceptable YAML version of the document"),t.version=r[0],t.checkLineBreaks=i<2,1!==i&&2!==i&&B_(t,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:me(function(t,e,r){var n;2!==r.length&&P_(t,"TAG directive accepts exactly two arguments"),n=r[1],y9.test(r=r[0])||P_(t,"ill-formed tag handle (first argument) of the TAG directive"),s9.call(t.tagMap,r)&&P_(t,'there is a previously declared suffix for "'+r+'" tag handle'),v9.test(n)||P_(t,"ill-formed tag prefix (second argument) of the TAG directive");try{n=decodeURIComponent(n)}catch{P_(t,"tag prefix is malformed: "+n)}t.tagMap[r]=n},"handleTagDirective")},me($_,"captureSegment"),me(F_,"mergeMappings"),me(z_,"storeMappingPair"),me(G_,"readLineBreak"),me(U_,"skipSeparationSpace"),me(q_,"testDocumentSeparator"),me(j_,"writeFoldedLines"),me(W_,"readPlainScalar"),me(Y_,"readSingleQuotedScalar"),me(H_,"readDoubleQuotedScalar"),me(V_,"readFlowCollection"),me(X_,"readBlockScalar"),me(K_,"readBlockSequence"),me(Z_,"readBlockMapping"),me(Q_,"readTagProperty"),me(J_,"readAnchorProperty"),me(tA,"readAlias"),me(eA,"composeNode"),me(rA,"readDocument"),me(nA,"loadDocuments"),me(iA,"loadAll$1"),me(aA,"load$1"),T9={loadAll:iA,load:aA},E9=Object.prototype.toString,C9=Object.prototype.hasOwnProperty,S9=65279,_9=10,A9={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},L9=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],N9=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/,me(sA,"compileStyleMap"),me(oA,"encodeHex"),I9=2,me(lA,"State"),me(cA,"indentString"),me(hA,"generateNextLine"),me(uA,"testImplicitResolving"),me(dA,"isWhitespace"),me(pA,"isPrintable"),me(gA,"isNsCharOrWhitespace"),me(fA,"isPlainSafe"),me(mA,"isPlainSafeFirst"),me(yA,"isPlainSafeLast"),me(vA,"codePointAt"),me(xA,"needIndentIndicator"),R9=1,M9=2,D9=3,O9=4,P9=5,me(bA,"chooseScalarStyle"),me(wA,"writeScalar"),me(kA,"blockHeader"),me(TA,"dropEndingNewline"),me(EA,"foldString"),me(CA,"foldLine"),me(SA,"escapeString"),me(_A,"writeFlowSequence"),me(AA,"writeBlockSequence"),me(LA,"writeFlowMapping"),me(NA,"writeBlockMapping"),me(IA,"detectType"),me(RA,"writeNode"),me(MA,"getDuplicateReferences"),me(DA,"inspectNode"),me(OA,"dump$1"),me(PA,"renamed"),B9=WA,$9=T9.load,PA("safeLoad","load"),PA("safeLoadAll","loadAll"),PA("safeDump","dump")});function z9(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function G9(t){Z9=t}function U9(t,e=""){let n="string"==typeof t?t:t.source,i={replace:me((t,e)=>{let r="string"==typeof e?e:e.source;return r=r.replace(J9.caret,"$1"),n=n.replace(t,r),i},"replace"),getRegex:me(()=>new RegExp(n,e),"getRegex")};return i}function q9(t,e){if(e){if(J9.escapeTest.test(t))return t.replace(J9.escapeReplace,EL)}else if(J9.escapeTestNoEncode.test(t))return t.replace(J9.escapeReplaceNoEncode,EL);return t}function j9(t){try{t=encodeURI(t).replace(J9.percentDecode,"%")}catch{return null}return t}function W9(t,e){let r=t.replace(J9.findPipe,(t,e,r)=>{let n=!1,i=e;for(;0<=--i&&"\\"===r[i];)n=!n;return n?"|":" |"}),n=r.split(J9.splitPipe),i=0;if(n[0].trim()||n.shift(),0e)n.splice(e);else for(;n.length{var e=t.match(r.other.beginningSpace);return null!==e&&([e]=e,e.length>=n.length)?t.slice(n.length):t}).join(` +`)}function K9(t,e){return RL.parse(t,e)}var Z9,Q9,J9,tL,eL,rL,nL,iL,aL,sL,oL,lL,cL,hL,uL,dL,pL,gL,fL,mL,yL,vL,xL,bL,wL,kL,TL,EL,CL,SL,_L,AL,LL,NL,IL,RL,ML=b(()=>{me(z9,"_getDefaults"),Z9=z9(),me(G9,"changeDefaults"),Q9={exec:me(()=>null,"exec")},me(U9,"edit"),J9={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^
/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:me(t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:me(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:me(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:me(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:me(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),"headingBeginRegex"),htmlBeginRegex:me(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex")},aL=/^(?:[ \t]*(?:\n|$))+/,sL=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,rL=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hL=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,nL=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,iL=/(?:[*+-]|\d{1,9}[.)])/,xL=U9(gL=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g,iL).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),gL=U9(gL).replace(/bull/g,iL).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),yL=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,uL=/^[^\n]+/,fL=/(?!\s*\])(?:\\.|[^\[\]\\])+/,eL=U9(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",fL).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),iL=U9(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,iL).getRegex(),vL="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",pL=/|$))/,bL=U9("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",pL).replace("tag",vL).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),dL=U9(yL).replace("hr",hL).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",vL).getRegex(),tL={blockquote:U9(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",dL).getRegex(),code:sL,def:eL,fences:rL,heading:nL,hr:hL,html:bL,lheading:xL,list:iL,newline:aL,paragraph:dL,table:Q9,text:uL},sL=U9("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",hL).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",vL).getRegex(),eL={...tL,lheading:gL,table:sL,paragraph:U9(yL).replace("hr",hL).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",sL).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",vL).getRegex()},rL={...tL,html:U9(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",pL).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Q9,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:U9(yL).replace("hr",hL).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",xL).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},nL=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,bL=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,iL=/^( {2,}|\\)\n(?!\s*$)/,aL=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,IL=U9(oL=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,"u").replace(/punct/g,dL).getRegex(),oL=U9(oL,"u").replace(/punct/g,vL).getRegex(),lL=U9(cL="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)","gu").replace(/notPunctSpace/g,gL).replace(/punctSpace/g,uL).replace(/punct/g,dL).getRegex(),cL=U9(cL,"gu").replace(/notPunctSpace/g,hL).replace(/punctSpace/g,yL).replace(/punct/g,vL).getRegex(),hL=U9("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,gL).replace(/punctSpace/g,uL).replace(/punct/g,dL).getRegex(),yL=U9(/\\(punct)/,"gu").replace(/punct/g,dL).getRegex(),vL=U9(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),gL=U9(pL).replace("(?:--\x3e|$)","--\x3e").getRegex(),uL=U9("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",gL).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),dL=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,pL=U9(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",dL).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),gL=U9(/^!?\[(label)\]\[(ref)\]/).replace("label",dL).replace("ref",fL).getRegex(),fL=U9(/^!?\[(ref)\](?:\[\])?/).replace("ref",fL).getRegex(),mL=U9("reflink|nolink(?!\\()","g").replace("reflink",gL).replace("nolink",fL).getRegex(),vL={...yL={_backpedal:Q9,anyPunctuation:yL,autolink:vL,blockSkip:xL,br:iL,code:bL,del:Q9,emStrongLDelim:IL,emStrongRDelimAst:lL,emStrongRDelimUnd:hL,escape:nL,link:pL,nolink:fL,punctuation:sL,reflink:gL,reflinkSearch:mL,tag:uL,text:aL,url:Q9},link:U9(/^!?\[(label)\]\((.*?)\)/).replace("label",dL).getRegex(),reflink:U9(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",dL).getRegex()},xL={...yL,emStrongRDelimAst:cL,emStrongLDelim:oL,url:U9(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},EL=me(t=>TL[t],"getEscapeReplacement"),me(q9,"escape2"),me(j9,"cleanUrl"),me(W9,"splitCells"),me(Y9,"rtrim"),me(H9,"findClosingBracket"),me(V9,"outputLink"),me(X9,"indentCodeCompensation"),CL=class{static{me(this,"_Tokenizer")}options;rules;lexer;constructor(t){this.options=t||Z9}space(t){if((t=this.rules.block.newline.exec(t))&&0" ".repeat(3*t.length)),i=d.split(` +`,1)[0],a=!n.trim(),s=0;if(this.options.pedantic?(s=2,r=n.trimStart()):a?s=p[1].length+1:(s=4<(s=p[2].search(this.rules.other.nonSpaceChar))?1:s,r=n.slice(s),s+=p[1].length),a&&this.rules.other.blankLine.test(i)&&(e+=i+` +`,d=d.substring(i.length+1),t=!0),!t)for(var g=this.rules.other.nextBulletRegex(s),f=this.rules.other.hrRegex(s),m=this.rules.other.fencesBeginRegex(s),y=this.rules.other.headingBeginRegex(s),v=this.rules.other.htmlBeginRegex(s);d;){var x,b=d.split(` +`,1)[0];if(i=b,x=this.options.pedantic?i=i.replace(this.rules.other.listReplaceNesting," "):i.replace(this.rules.other.tabCharGlobal," "),m.test(i)||y.test(i)||v.test(i)||g.test(i)||f.test(i))break;if(x.search(this.rules.other.nonSpaceChar)>=s||!i.trim())r+=` +`+x.slice(s);else{if(a||4<=n.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)||m.test(n)||y.test(n)||f.test(n))break;r+=` +`+i}a||i.trim()||(a=!0),e+=b+` +`,d=d.substring(b.length+1),n=x.slice(s)}c.loose||(u?c.loose=!0:this.rules.other.doubleBlankLine.test(e)&&(u=!0));let o=null,l;this.options.gfm&&(o=this.rules.other.listIsTask.exec(r))&&(l="[ ] "!==o[0],r=r.replace(this.rules.other.listReplaceTask,"")),c.items.push({type:"list_item",raw:e,task:!!o,checked:l,loose:!1,text:r,tokens:[]}),c.raw+=e}var r,n=c.items.at(-1);if(n){n.raw=n.raw.trimEnd(),n.text=n.text.trimEnd(),c.raw=c.raw.trimEnd();for(let t=0;t"space"===t.type)).length&&r.some(t=>this.rules.other.anyLine.test(t.raw)),c.loose=r);if(c.loose)for(let t=0;t({text:t,tokens:this.lexer.inline(t),header:!1,align:n.align[e]})));return n}}}lheading(t){if(t=this.rules.block.lheading.exec(t))return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(t){var e;if(t=this.rules.block.paragraph.exec(t))return e=t[1].charAt(t[1].length-1)===` +`?t[1].slice(0,-1):t[1],{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}text(t){if(t=this.rules.block.text.exec(t))return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(t){if(t=this.rules.inline.escape.exec(t))return{type:"escape",raw:t[0],text:t[1]}}tag(t){if(t=this.rules.inline.tag.exec(t))return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(r){if(r=this.rules.inline.link.exec(r)){var n,i=r[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(i)){if(!this.rules.other.endAngleBracket.test(i))return;var a=Y9(i.slice(0,-1),"\\");if((i.length-a.length)%2==0)return}else{if(-2===(a=H9(r[2],"()")))return;-1!!(e=t.call({lexer:this},i,r))&&(i=i.substring(e.raw.length),r.push(e),!0)))if(e=this.tokenizer.space(i)){i=i.substring(e.raw.length);var t=r.at(-1);1===e.raw.length&&void 0!==t?t.raw+=` +`:r.push(e)}else if(e=this.tokenizer.code(i))i=i.substring(e.raw.length),"paragraph"===(t=r.at(-1))?.type||"text"===t?.type?(t.raw+=` +`+e.raw,t.text+=` +`+e.text,this.inlineQueue.at(-1).src=t.text):r.push(e);else if(e=this.tokenizer.fences(i))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.heading(i))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.hr(i))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.blockquote(i))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.list(i))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.html(i))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.def(i)){i=i.substring(e.raw.length);var a=r.at(-1);"paragraph"===a?.type||"text"===a?.type?(a.raw+=` +`+e.raw,a.text+=` +`+e.raw,this.inlineQueue.at(-1).src=a.text):this.tokens.links[e.tag]||(this.tokens.links[e.tag]={href:e.href,title:e.title})}else if(e=this.tokenizer.table(i))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.lheading(i))i=i.substring(e.raw.length),r.push(e);else{let t=i;if(this.options.extensions?.startBlock){let e=1/0,r=i.slice(1),n;this.options.extensions.startBlock.forEach(t=>{"number"==typeof(n=t.call({lexer:this},r))&&0<=n&&(e=Math.min(e,n))}),e<1/0&&0<=e&&(t=i.substring(0,e+1))}if(this.state.top&&(e=this.tokenizer.paragraph(t)))a=r.at(-1),n&&"paragraph"===a?.type?(a.raw+=` +`+e.raw,a.text+=` +`+e.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):r.push(e),n=t.length!==i.length,i=i.substring(e.raw.length);else if(e=this.tokenizer.text(i)){i=i.substring(e.raw.length);var s=r.at(-1);"text"===s?.type?(s.raw+=` +`+e.raw,s.text+=` +`+e.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(e)}else if(i){if(s="Infinite loop on byte: "+i.charCodeAt(0),this.options.silent){console.error(s);break}throw new Error(s)}}}return this.state.top=!0,r}inline(t,e=[]){return this.inlineQueue.push({src:t,tokens:e}),e}inlineTokens(i,r=[]){let t=i,e=null;if(this.tokens.links){var n=Object.keys(this.tokens.links);if(0!!(e=t.call({lexer:this},i,r))&&(i=i.substring(e.raw.length),r.push(e),!0)))if(e=this.tokenizer.escape(i))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.tag(i))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.link(i))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.reflink(i,this.tokens.links)){i=i.substring(e.raw.length);var o=r.at(-1);"text"===e.type&&"text"===o?.type?(o.raw+=e.raw,o.text+=e.text):r.push(e)}else if(e=this.tokenizer.emStrong(i,t,s))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.codespan(i))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.br(i))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.del(i))i=i.substring(e.raw.length),r.push(e);else if(e=this.tokenizer.autolink(i))i=i.substring(e.raw.length),r.push(e);else if(!this.state.inLink&&(e=this.tokenizer.url(i)))i=i.substring(e.raw.length),r.push(e);else{let t=i;if(this.options.extensions?.startInline){let e=1/0,r=i.slice(1),n;this.options.extensions.startInline.forEach(t=>{"number"==typeof(n=t.call({lexer:this},r))&&0<=n&&(e=Math.min(e,n))}),e<1/0&&0<=e&&(t=i.substring(0,e+1))}if(e=this.tokenizer.inlineText(t))i=i.substring(e.raw.length),"_"!==e.raw.slice(-1)&&(s=e.raw.slice(-1)),a=!0,"text"===(o=r.at(-1))?.type?(o.raw+=e.raw,o.text+=e.text):r.push(e);else if(i){var l="Infinite loop on byte: "+i.charCodeAt(0);if(this.options.silent){console.error(l);break}throw new Error(l)}}}return r}},_L=class{static{me(this,"_Renderer")}options;parser;constructor(t){this.options=t||Z9}space(t){return""}code({text:t,lang:e,escaped:r}){return e=(e||"").match(J9.notSpaceStart)?.[0],t=t.replace(J9.endingNewline,"")+` +`,e?'
'+(r?t:q9(t,!0))+`
+`:"
"+(r?t:q9(t,!0))+`
+`}blockquote({tokens:t}){return`
+${this.parser.parse(t)}
+`}html({text:t}){return t}heading({tokens:t,depth:e}){return`${this.parser.parseInline(t)} +`}hr(t){return`
+`}list(e){let t=e.ordered,r=e.start,n="";for(let t=0;t +`+n+" +`}listitem(t){let e="",r;return t.task&&(r=this.checkbox({checked:!!t.checked}),t.loose?"paragraph"===t.tokens[0]?.type?(t.tokens[0].text=r+" "+t.tokens[0].text,t.tokens[0].tokens&&0${e+=this.parser.parse(t.tokens,!!t.loose)} +`}checkbox({checked:t}){return"'}paragraph({tokens:t}){return`

${this.parser.parseInline(t)}

+`}table(e){let t="",r="";for(let t=0;t + +`+t+` +`+(n=n&&`${n}`)+` +`}tablerow({text:t}){return` +${t} +`}tablecell(t){var e=this.parser.parseInline(t.tokens),r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+` +`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${q9(t,!0)}`}br(t){return"
"}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:r}){var r=this.parser.parseInline(r),n=j9(t);if(null===n)return r;let i='
"}image({href:t,title:e,text:r,tokens:n}){if(n&&(r=this.parser.parseInline(n,this.parser.textRenderer)),null===(n=j9(t)))return q9(r);let i=`${r}{t=e[t].flat(1/0),n=n.concat(this.walkTokens(t,r))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,r)))}}return n}use(...t){let i=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(e=>{var t={...e};if(t.async=this.defaults.async||t.async||!1,e.extensions&&(e.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let r=i.renderers[n.name];r?i.renderers[n.name]=function(...t){var e=n.renderer.apply(this,t);return!1===e?r.apply(this,t):e}:i.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||"block"!==n.level&&"inline"!==n.level)throw new Error("extension level must be 'block' or 'inline'");var t=i[n.level];t?t.unshift(n.tokenizer):i[n.level]=[n.tokenizer],n.start&&("block"===n.level?i.startBlock?i.startBlock.push(n.start):i.startBlock=[n.start]:"inline"===n.level&&(i.startInline?i.startInline.push(n.start):i.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(i.childTokens[n.name]=n.childTokens)}),t.extensions=i),e.renderer){let i=this.defaults.renderer||new _L(this.defaults);for(var a in e.renderer){if(!(a in i))throw new Error(`renderer '${a}' does not exist`);if(!["options","parser"].includes(a)){let t=a,r=e.renderer[t],n=i[t];i[t]=(...t)=>{var e=r.apply(i,t);return(!1===e?n.apply(i,t):e)||""}}}t.renderer=i}if(e.tokenizer){let i=this.defaults.tokenizer||new CL(this.defaults);for(var s in e.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if(!["options","rules","lexer"].includes(s)){let t=s,r=e.tokenizer[t],n=i[t];i[t]=(...t)=>{var e=r.apply(i,t);return!1===e?n.apply(i,t):e}}}t.tokenizer=i}if(e.hooks){let i=this.defaults.hooks||new NL;for(var o in e.hooks){if(!(o in i))throw new Error(`hook '${o}' does not exist`);if(!["options","block"].includes(o)){let t=o,r=e.hooks[t],n=i[t];NL.passThroughHooks.has(o)?i[t]=t=>this.defaults.async?Promise.resolve(r.call(i,t)).then(t=>n.call(i,t)):(t=r.call(i,t),n.call(i,t)):i[t]=(...t)=>{var e=r.apply(i,t);return!1===e?n.apply(i,t):e}}}t.hooks=i}if(e.walkTokens){let r=this.defaults.walkTokens,n=e.walkTokens;t.walkTokens=function(t){let e=[];return e.push(n.call(this,t)),e=r?e.concat(r.call(this,t)):e}}this.defaults={...this.defaults,...t}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return SL.lex(t,e??this.defaults)}parser(t,e){return LL.parse(t,e??this.defaults)}parseMarkdown(o){return me((r,t)=>{let e={...t},n={...this.defaults,...e},i=this.onError(!!n.silent,!!n.async);if(!0===this.defaults.async&&!1===e.async)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if("u"a(t,n)).then(t=>n.hooks?n.hooks.processAllTokens(t):t).then(t=>n.walkTokens?Promise.all(this.walkTokens(t,n.walkTokens)).then(()=>t):t).then(t=>s(t,n)).then(t=>n.hooks?n.hooks.postprocess(t):t).catch(i);try{n.hooks&&(r=n.hooks.preprocess(r));let t=a(r,n),e=(n.hooks&&(t=n.hooks.processAllTokens(t)),n.walkTokens&&this.walkTokens(t,n.walkTokens),s(t,n));return n.hooks?n.hooks.postprocess(e):e}catch(t){return i(t)}},"parse2")}onError(r,n){return t=>{var e;if(t.message+=` +Please report this to https://github.com/markedjs/marked.`,r)return e="

An error occurred:

"+q9(t.message+"",!0)+"
",n?Promise.resolve(e):e;if(n)return Promise.reject(t);throw t}}},RL=new IL,me(K9,"marked"),K9.options=K9.setOptions=function(t){return RL.setOptions(t),G9(K9.defaults=RL.defaults),K9},K9.getDefaults=z9,K9.defaults=Z9,K9.use=function(...t){return RL.use(...t),G9(K9.defaults=RL.defaults),K9},K9.walkTokens=function(t,e){return RL.walkTokens(t,e)},K9.parseInline=RL.parseInline,K9.Parser=LL,K9.parser=LL.parse,K9.Renderer=_L,K9.TextRenderer=AL,K9.Lexer=SL,K9.lexer=SL.lex,K9.Tokenizer=CL,K9.Hooks=NL,K9.parse=K9,SL.lex});function DL(t,{markdownAutoWrap:e}){return t=Bc(t.replace(//g,` +`).replace(/\n{2,}/g,` +`)),!1===e?t.replace(/ /g," "):t}function OL(t,e={}){let r=DL(t,e),n=K9.lexer(r),i=[[]],a=0;function s(e,r="normal"){"text"===e.type?e.text.split(` +`).forEach((t,e)=>{0!==e&&(a++,i.push([])),t.split(" ").forEach(t=>{(t=t.replace(/'/g,"'"))&&i[a].push({content:t,type:r})})}):"strong"===e.type||"em"===e.type?e.tokens.forEach(t=>{s(t,e.type)}):"html"===e.type&&i[a].push({content:e.text,type:"normal"})}return me(s,"processNode"),n.forEach(t=>{"paragraph"===t.type?t.tokens?.forEach(t=>{s(t)}):"html"===t.type?i[a].push({content:t.text,type:"normal"}):i[a].push({content:t.raw,type:"normal"})}),i}function PL(t,{markdownAutoWrap:e}={}){function r(t){return"text"===t.type?!1===e?t.text.replace(/\n */g,"
").replace(/ /g," "):t.text.replace(/\n */g,"
"):"strong"===t.type?`${t.tokens?.map(r).join("")}`:"em"===t.type?`${t.tokens?.map(r).join("")}`:"paragraph"===t.type?`

${t.tokens?.map(r).join("")}

`:"space"===t.type?"":"html"===t.type?""+t.text:"escape"===t.type?t.text:(D.warn("Unsupported markdown: "+t.type),t.raw)}return t=K9.lexer(t),me(r,"output"),t.map(r).join("")}var BL=b(()=>{ML(),nh(),t(),me(DL,"preprocessMarkdown"),me(OL,"markdownToLines"),me(PL,"markdownToHTML")});function $L(t){return Intl.Segmenter?[...(new Intl.Segmenter).segment(t)].map(t=>t.segment):[...t]}function FL(t,e){return zL(t,[],$L(e.content),e.type)}function zL(t,e,r,n){var i,a,s;return 0===r.length?[{content:e.join(""),type:n},{content:"",type:n}]:([i,...a]=r,t([{content:(s=[...e,i]).join(""),type:n}])?zL(t,s,a,n):(0===e.length&&i&&(e.push(i),r.shift()),[{content:e.join(""),type:n},{content:r.join(""),type:n}]))}function GL(t,e){if(t.some(({content:t})=>t.includes(` +`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return UL(t,e)}function UL(t,e,r=[],n=[]){if(0===t.length)return 0{me($L,"splitTextToChars"),me(FL,"splitWordToFitWidth"),me(zL,"splitWordToFitWidthRecursion"),me(GL,"splitLineToFitWidth"),me(UL,"splitLineToFitWidthRecursion")});function jL(t,e){e&&t.attr("style",e)}async function WL(t,e,r,n,i=!1,a=ar()){(t=t.append("foreignObject")).attr("width",10*r+"px"),t.attr("height",10*r+"px");var s=t.append("xhtml:div"),a=Ec(e.label)?await _c(e.label.replace(L.lineBreakRegex,` +`),a):lc(e.label,a),o=e.isNode?"nodeLabel":"edgeLabel",l=s.append("span");return l.html(a),jL(l,e.labelStyle),l.attr("class",o+" "+n),jL(s,e.labelStyle),s.style("display","table-cell"),s.style("white-space","nowrap"),s.style("line-height","1.5"),s.style("max-width",r+"px"),s.style("text-align","center"),s.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&s.attr("class","labelBkg"),(a=s.node().getBoundingClientRect()).width===r&&(s.style("display","table"),s.style("white-space","break-spaces"),s.style("width",r+"px"),a=s.node().getBoundingClientRect()),t.node()}function YL(t,e,r){return t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em")}function HL(t,e,r){return KL(e=YL(t=t.append("text"),1,e),r),r=e.node().getComputedTextLength(),t.remove(),r}function VL(t,e,r){return KL(e=YL(t=t.append("text"),1,e),[{content:r,type:"normal"}]),(r=e.node()?.getBoundingClientRect())&&t.remove(),r}function XL(e,t,r,n=!1){let i=t.append("g"),a=i.insert("rect").attr("class","background").attr("style","stroke: none"),s=i.append("text").attr("y","-10.1"),o=0;for(var l of r){var c,h=me(t=>HL(i,1.1,t)<=e,"checkWidth");for(c of h(l)?[l]:GL(l,h))KL(YL(s,o,1.1),c),o++}return(n?(t=s.node().getBBox(),a.attr("x",t.x-2).attr("y",t.y-2).attr("width",t.width+4).attr("height",t.height+4),i):s).node()}function KL(n,t){n.text(""),t.forEach((t,e)=>{var r=n.append("tspan").attr("font-style","em"===t.type?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight","strong"===t.type?"bold":"normal");0===e?r.text(t.content):r.text(" "+t.content)})}async function ZL(t,i={}){let a=[],e=(t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(e,r,n)=>(a.push((async()=>{var t=r+":"+n;return await Mc(t)?await Dc(t,void 0,{class:"label-icon"}):``})()),e)),await Promise.all(a));return t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>e.shift()??"")}var QL,JL=b(()=>{i6(),Oc(),t(),BL(),iS(),Pc(),qL(),rn(),me(jL,"applyStyle"),me(WL,"addHtmlSpan"),me(YL,"createTspan"),me(HL,"computeWidthOfText"),me(VL,"computeDimensionOfText"),me(XL,"createFormattedText"),me(KL,"updateTextContentAndStyles"),me(ZL,"replaceIconSubstring"),QL=me(async(t,e="",{style:r="",isTitle:n=!1,classes:i="",useHtmlLabels:a=!0,isNode:s=!0,width:o=200,addSvgBackground:l=!1}={},c)=>(D.debug("XYZ createText",e,r,n,i,a,s,"addSvgBackground: ",l),a?(n=PL(e,c),a=await ZL(rS(n),c),n=e.replace(/\\\\/g,"\\"),WL(t,{isNode:s,label:Ec(e)?n:a,labelStyle:r.replace("fill:","color:")},o,i,l,c)):(n=XL(o,t,OL(e.replace(//g,"
").replace("
","
"),c),!!e&&l),s?(a=(r=/stroke:/.exec(r)?r.replace("stroke:","lineColor:"):r).replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:"),H(n).attr("style",a)):(i=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:"),H(n).select("rect").attr("style",i.replace(/background:/g,"fill:")),o=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:"),H(n).select("text").attr("style",o)),n)),"createText")});function tN(t){return(t=t.map((t,e)=>(0===e?"M":"L")+t.x+","+t.y)).push("Z"),t.join(" ")}function eN(e,t,r,n,i,a){var s=[],o=r-e,l=2*Math.PI/(o/a),c=t+(n-t)/2;for(let t=0;t<=50;t++){var h=e+t/50*o,u=c+i*Math.sin(l*(h-e));s.push({x:h,y:u})}return s}function rN(e,r,n,i,t,a){var s=[],o=t*Math.PI/180,l=(a*Math.PI/180-o)/(i-1);for(let t=0;t{JL(),Tu(),i6(),tn(),Oc(),iS(),nN=me(async(t,e,r)=>{let n,i=e.useHtmlLabels||fc(O()?.htmlLabels),a=(n=r||"node default",t.insert("g").attr("class",n).attr("id",e.domId||e.id)),s=a.insert("g").attr("class","label").attr("style",_C(e.labelStyle)),o,l=(o=void 0===e.label?"":"string"==typeof e.label?e.label:e.label[0],await QL(s,lc(rS(o),O()),{useHtmlLabels:i,width:e.width||O().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:e.labelStyle,addSvgBackground:!!e.icon||!!e.img})),c=l.getBBox(),h=(e?.padding??0)/2;if(i){var r=l.children[0],t=H(l),u=r.getElementsByTagName("img");if(u){let n=""===o.replace(/]*>/g,"").trim();await Promise.all([...u].map(r=>new Promise(e=>{function t(){var t;r.style.display="flex",r.style.flexDirection="column",n?(t=(O().fontSize?O():window.getComputedStyle(document.body)).fontSize,[t=We.fontSize]=JC(t),r.style.minWidth=t=5*t+"px",r.style.maxWidth=t):r.style.width="100%",e(r)}me(t,"setupImage"),setTimeout(()=>{r.complete&&t()}),r.addEventListener("error",t),r.addEventListener("load",t)})))}c=r.getBoundingClientRect(),t.attr("width",c.width),t.attr("height",c.height)}return i?s.attr("transform","translate("+-c.width/2+", "+-c.height/2+")"):s.attr("transform","translate(0, "+-c.height/2+")"),e.centerLabel&&s.attr("transform","translate("+-c.width/2+", "+-c.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:c,halfPadding:h,label:s}},"labelHelper"),iN=me(async(t,e,r)=>{let n=r.useHtmlLabels||fc(O()?.flowchart?.htmlLabels),i=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await QL(i,lc(rS(e),O()),{useHtmlLabels:n,width:r.width||O()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),o=r.padding/2,l;return fc(O()?.flowchart?.htmlLabels)&&(e=a.children[0],l=H(a),s=e.getBoundingClientRect(),l.attr("width",s.width),l.attr("height",s.height)),n?i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"):i.attr("transform","translate(0, "+-s.height/2+")"),r.centerLabel&&i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),i.insert("rect",":first-child"),{shapeSvg:t,bbox:s,halfPadding:o,label:i}},"insertLabel"),aN=me((t,e)=>{e=e.node().getBBox(),t.width=e.width,t.height=e.height},"updateNodeBounds"),sN=me((t,e)=>("handDrawn"===t.look?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses"),me(tN,"createPathFromPoints"),me(eN,"generateFullSineWavePoints"),me(rN,"generateCirclePoints")});function oN(t,e){return t.intersect(e)}var lN,cN=b(()=>{me(oN,"intersectNode"),lN=oN});function hN(t,e,r,n){var i=t.x,t=t.y,a=i-n.x,s=t-n.y,o=Math.sqrt(e*e*s*s+r*r*a*a),a=Math.abs(e*r*a/o),e=(n.x{me(hN,"intersectEllipse"),uN=hN});function pN(t,e,r){return uN(t,e,e,r)}var gN,fN=b(()=>{dN(),me(pN,"intersectCircle"),gN=pN});function mN(t,e,r,n){var i=e.y-t.y,a=t.x-e.x,s=e.x*t.y-t.x*e.y,o=i*r.x+a*r.y+s,l=i*n.x+a*n.y+s;if(!(0!=o&&0!=l&&0{me(mN,"intersectLine"),me(yN,"sameSign"),vN=mN});function bN(e,r,n){let t=e.x,i=e.y,a=[],s=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;"function"==typeof r.forEach?r.forEach(function(t){s=Math.min(s,t.x),o=Math.min(o,t.y)}):(s=Math.min(s,r.x),o=Math.min(o,r.y));var l=t-e.width/2-s,c=i-e.height/2-o;for(let t=0;t{xN(),me(bN,"intersectPolygon"),wN=bN}),IN=b(()=>{kN=me((t,e)=>{var r,n=t.x,i=t.y,a=e.x-n,e=e.y-i,s=t.width/2,t=t.height/2,t=Math.abs(e)*s>Math.abs(a)*t?(e<0&&(t=-t),r=0==e?0:t*a/e,t):(r=s=a<0?-s:s,0==a?0:s*e/a);return{x:n+r,y:i+t}},"intersectRect"),TN=kN}),RN=b(()=>{cN(),fN(),dN(),NN(),IN(),V={node:lN,circle:gN,ellipse:uN,polygon:wN,rect:TN}}),MN=b(()=>{Tu(),EN=me(t=>({fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:O().handDrawnSeed}),"solidStateFill"),CN=me(t=>({stylesMap:t=SN([...t.cssCompiledStyles||[],...t.cssStyles||[]]),stylesArray:[...t]}),"compileStyles"),SN=me(t=>{let r=new Map;return t.forEach(t=>{var[t,e]=t.split(":");r.set(t.trim(),e?.trim())}),r},"styles2Map"),_N=me(t=>"color"===t||"font-size"===t||"font-family"===t||"font-weight"===t||"font-style"===t||"text-decoration"===t||"text-align"===t||"text-transform"===t||"line-height"===t||"letter-spacing"===t||"word-spacing"===t||"text-shadow"===t||"text-overflow"===t||"white-space"===t||"word-wrap"===t||"word-break"===t||"overflow-wrap"===t||"hyphens"===t,"isLabelStyle"),Q=me(t=>{let e=CN(t).stylesArray,r=[],n=[],i=[],a=[];return e.forEach(t=>{var e=t[0];_N(e)?r.push(t.join(":")+" !important"):(n.push(t.join(":")+" !important"),e.includes("stroke")&&i.push(t.join(":")+" !important"),"fill"===e&&a.push(t.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:n.join(";"),stylesArray:e,borderStyles:i,backgroundStyles:a}},"styles2String"),AN=me((t,e)=>{var{themeVariables:r,handDrawnSeed:n}=O(),{nodeBorder:r,mainBkg:i}=r,t=CN(t).stylesMap;return Object.assign({roughness:.7,fill:t.get("fill")||i,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:t.get("stroke")||r,seed:n,strokeWidth:t.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0],strokeLineDash:LN(t.get("stroke-dasharray"))},e)},"userNodeOverrides"),LN=me(t=>{var e;return t?1===(t=t.trim().split(/\s+/).map(Number)).length?[e=isNaN(t[0])?0:t[0],e]:[isNaN(t[0])?0:t[0],isNaN(t[1])?0:t[1]]:[0,0]},"getStrokeDashArray")});function DN(t,e,r){if(t&&t.length){var n,[i,a]=e,e=Math.PI/180*r,s=Math.cos(e),o=Math.sin(e);for(n of t){var[l,c]=n;n[0]=(l-i)*s-(c-a)*o+i,n[1]=(l-i)*o+(c-a)*s+a}}}function ON(t,e){return t[0]===e[0]&&t[1]===e[1]}function PN(t,r,n,e=1){var i=n,n=Math.max(r,.1),p=t[0]&&t[0][0]&&"number"==typeof t[0][0]?[t]:t,a=[0,0];if(i)for(var s of p)DN(s,a,i);if(r=((e,i)=>{var t,r=[];for(t of p){var n=[...t];ON(n[0],n[n.length-1])||n.push([n[0][0],n[0][1]]),2t.ymine.ymin?1:t.xe.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax)),o.length){let r=[],n=o[0].ymin,t=0;for(;r.length||o.length;){if(o.length){let e=-1;for(let t=0;tn);t++)e=t;o.splice(0,e+1).forEach(t=>{r.push({s:n,edge:t})})}if((r=r.filter(t=>!(t.edge.ymax<=n))).sort((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x)),(1!==i||t%e==0)&&1=r.length);t+=2){var u=r[t].edge,d=r[d].edge;s.push([[Math.round(u.x),n],[Math.round(d.x),n]])}n+=i,r.forEach(t=>{t.edge.x=t.edge.x+i*t.edge.islope}),t++}}return s})(n,e),i){for(var o of p)DN(o,a,-i);{t=a,n=-i;let e=[];r.forEach(t=>e.push(...t)),DN(e,t,n)}}return r}function BN(t,e){let r,n=e.hachureAngle+90,i=e.hachureGap,a=(i<0&&(i=4*e.strokeWidth),i=Math.round(Math.max(i,.1)),1);return 1<=e.roughness&&.7<((null==(r=e.randomizer)?void 0:r.next())||Math.random())&&(a=i),PN(t,i,n,a||1)}function $N(t){var e=t[0],t=t[1];return Math.sqrt(Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2))}function FN(t,e){return t.type===e}function zN(t){let n=[],i=(t=>{for(var e=new Array;""!==t;){if(!t.match(/^([ \t\r\n,]+)/))if(t.match(/^([aAcChHlLmMqQsStTvVzZ])/))e[e.length]={type:LI,text:RegExp.$1};else{if(!t.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];e[e.length]={type:NI,text:""+parseFloat(RegExp.$1)}}t=t.substr(RegExp.$1.length)}return e[e.length]={type:II,text:""},e})(t),a="BOD",s=0,o=i[s];for(;!FN(o,II);){let e=0,r=[];if("BOD"===a){if("M"!==o.text&&"m"!==o.text)return zN("M0,0"+t);s++,e=RI[o.text],a=o.text}else FN(o,NI)?e=RI[a]:(s++,e=RI[o.text],a=o.text);if(!(s+ee%2?t+n:t+r);a.push({key:"C",data:l}),r=l[4],n=l[5];break;case"Q":a.push({key:"Q",data:[...o]}),r=o[2],n=o[3];break;case"q":l=o.map((t,e)=>e%2?t+n:t+r),a.push({key:"Q",data:l}),r=l[2],n=l[3];break;case"A":a.push({key:"A",data:[...o]}),r=o[5],n=o[6];break;case"a":r+=o[5],n+=o[6],a.push({key:"A",data:[o[0],o[1],o[2],o[3],o[4],r,n]});break;case"H":a.push({key:"H",data:[...o]}),r=o[0];break;case"h":r+=o[0],a.push({key:"H",data:[r]});break;case"V":a.push({key:"V",data:[...o]}),n=o[0];break;case"v":n+=o[0],a.push({key:"V",data:[n]});break;case"S":a.push({key:"S",data:[...o]}),r=o[2],n=o[3];break;case"s":var c=o.map((t,e)=>e%2?t+n:t+r);a.push({key:"S",data:c}),r=c[2],n=c[3];break;case"T":a.push({key:"T",data:[...o]}),r=o[0],n=o[1];break;case"t":r+=o[0],n+=o[1],a.push({key:"T",data:[r,n]});break;case"Z":case"z":a.push({key:"Z",data:[]}),r=e,n=i}return a}function UN(t){let i=[],a="",s=0,o=0,e=0,r=0,l=0,c=0;for(var{key:n,data:h}of t){switch(n){case"M":i.push({key:"M",data:[...h]}),[s,o]=h,[e,r]=h;break;case"C":i.push({key:"C",data:[...h]}),s=h[4],o=h[5],l=h[2],c=h[3];break;case"L":i.push({key:"L",data:[...h]}),[s,o]=h;break;case"H":s=h[0],i.push({key:"L",data:[s,o]});break;case"V":o=h[0],i.push({key:"L",data:[s,o]});break;case"S":{let t=0,e;e="C"===a||"S"===a?(t=s+(s-l),o+(o-c)):(t=s,o),i.push({key:"C",data:[t,e,...h]}),l=h[0],c=h[1],s=h[2],o=h[3];break}case"T":{let[t,e]=h,r=0,n;n="Q"===a||"T"===a?(r=s+(s-l),o+(o-c)):(r=s,o);var u=s+2*(r-s)/3,d=o+2*(n-o)/3,p=t+2*(r-t)/3,g=e+2*(n-e)/3;i.push({key:"C",data:[u,d,p,g,t,e]}),l=r,c=n,s=t,o=e;break}case"Q":var[u,d,p,g]=h,f=s+2*(u-s)/3,m=o+2*(d-o)/3;i.push({key:"C",data:[f,m,p+2*(u-p)/3,g+2*(d-g)/3,p,g]}),l=u,c=d,s=p,o=g;break;case"A":var f=Math.abs(h[0]),m=Math.abs(h[1]),y=h[2],v=h[3],x=h[4],b=h[5],w=h[6];0===f||0===m?(i.push({key:"C",data:[s,o,b,w,b,w]}),s=b,o=w):s===b&&o===w||(jN(s,o,b,w,f,m,y,v,x).forEach(function(t){i.push({key:"C",data:t})}),s=b,o=w);break;case"Z":i.push({key:"Z",data:[]}),s=e,o=r}a=n}return i}function qN(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function jN(t,e,r,n,i,a,s,o,l,c){let h=Math.PI*s/180,u=[],d=0,p=0,g=0,f=0;c?[d,p,g,f]=c:([t,e]=qN(t,e,-h),[r,n]=qN(r,n,-h),1<(m=(y=(t-r)/2)*y/(i*i)+(v=(e-n)/2)*v/(a*a))&&(i*=m=Math.sqrt(m),a*=m),m=i*i,x=a*a,o=(o===l?-1:1)*Math.sqrt(Math.abs((m*x-m*v*v-x*y*y)/(m*v*v+x*y*y))),g=o*i*v/a+(t+r)/2,f=o*-a*y/i+(e+n)/2,d=Math.asin(parseFloat(((e-f)/a).toFixed(9))),p=Math.asin(parseFloat(((n-f)/a).toFixed(9))),tp&&(d-=2*Math.PI),!l&&p>d&&(p-=2*Math.PI));var m=p-d,y=(Math.abs(m)>120*Math.PI/180&&(x=p,v=r,o=n,p=l&&p>d?d+120*Math.PI/180*1:d+120*Math.PI/180*-1,u=jN(r=g+i*Math.cos(p),n=f+a*Math.sin(p),v,o,i,a,s,0,l,[p,x,g,f])),m=p-d,Math.cos(d)),v=Math.sin(d),o=Math.cos(p),s=Math.sin(p),x=4/3*i*(l=Math.tan(m/4)),i=[t,e],a=[t+x*v,e-(m=4/3*a*l)*y],l=[r+x*s,n-m*o],t=[r,n];if(a[0]=2*i[0]-a[0],a[1]=2*i[1]-a[1],c)return[a,l,t].concat(u);u=[a,l,t].concat(u);var b=[];for(let t=0;t2*Math.PI&&(c=0,h=2*Math.PI),i=2*Math.PI/l.curveStepCount,i=hI(a=Math.min(i/2,(h-c)/2),t,e,r,n,c,h,1,l),l.disableMultiStroke||(a=hI(a,t,e,r,n,c,h,1.5,l),i.push(...a)),s&&(o?i.push(...aI(t,e,t+r*Math.cos(c),e+n*Math.sin(c),l),...aI(t,e,t+r*Math.cos(h),e+n*Math.sin(h),l)):i.push({op:"lineTo",data:[t,e]},{op:"lineTo",data:[t+r*Math.cos(c),e+n*Math.sin(c)]})),{type:"path",ops:i}}function QN(t,e){let r=UN(GN(zN(t))),n=[],i=[0,0],a=[0,0];for(var{key:s,data:o}of r)switch(s){case"M":a=[o[0],o[1]],i=[o[0],o[1]];break;case"L":n.push(...aI(a[0],a[1],o[0],o[1],e)),a=[o[0],o[1]];break;case"C":var[l,c,h,u,d,p]=o;n.push(...uI(l,c,h,u,d,p,a,e)),a=[d,p];break;case"Z":n.push(...aI(a[0],a[1],i[0],i[1],e)),a=[i[0],i[1]]}return{type:"path",ops:n}}function JN(t,e){var r,n=[];for(r of t)if(r.length){var i=e.maxRandomnessOffset||0,a=r.length;if(2{let e=r.fillStyle||"hachure";if(!_I[e])switch(e){case"zigzag":_I[e]||(_I[e]=new kI(t));break;case"cross-hatch":_I[e]||(_I[e]=new TI(t));break;case"dots":_I[e]||(_I[e]=new EI(t));break;case"dashed":_I[e]||(_I[e]=new CI(t));break;case"zigzag-line":_I[e]||(_I[e]=new SI(t));break;default:e="hachure",_I[e]||(_I[e]=new wI(t))}return _I[e]})(MI).fillPolygons(t,r)}function eI(t){var e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function rI(t){return t.randomizer||(t.randomizer=new AI(t.seed||0)),t.randomizer.next()}function nI(t,e,r,n=1){return r.roughness*n*(rI(r)*(e-t)+t)}function iI(t,e,r=1){return nI(-t,t,e,r)}function aI(t,e,r,n,i,a=!1){var a=a?i.disableMultiStrokeFill:i.disableMultiStroke,s=sI(t,e,r,n,i,!0,!1);return a?s:(a=sI(t,e,r,n,i,!0,!0),s.concat(a))}function sI(t,e,r,n,i,a,s){let o=Math.pow(t-r,2)+Math.pow(e-n,2),l=Math.sqrt(o),c,h=(c=l<200?1:500o?l/10:h)/2,d=.2+.2*rI(i),p=i.bowing*i.maxRandomnessOffset*(n-e)/200,g=i.bowing*i.maxRandomnessOffset*(t-r)/200;p=iI(p,i,c),g=iI(g,i,c);var f=[],m=me(()=>iI(u,i,c),"M"),y=me(()=>iI(h,i,c),"k"),v=i.preserveVertices;return a&&f.push(s?{op:"move",data:[t+(v?0:m()),e+(v?0:m())]}:{op:"move",data:[t+(v?0:iI(h,i,c)),e+(v?0:iI(h,i,c))]}),f.push(s?{op:"bcurveTo",data:[p+t+(r-t)*d+m(),g+e+(n-e)*d+m(),p+t+2*(r-t)*d+m(),g+e+2*(n-e)*d+m(),r+(v?0:m()),n+(v?0:m())]}:{op:"bcurveTo",data:[p+t+(r-t)*d+y(),g+e+(n-e)*d+y(),p+t+2*(r-t)*d+y(),g+e+2*(n-e)*d+y(),r+(v?0:y()),n+(v?0:y())]}),f}function oI(e,r,n){if(!e.length)return[];var i=[];i.push([e[0][0]+iI(r,n),e[0][1]+iI(r,n)]),i.push([e[0][0]+iI(r,n),e[0][1]+iI(r,n)]);for(let t=1;t{let t=l[c+0],e=l[c+1],r=l[c+2],n=l[c+3],i=3*e[0]-2*t[0]-n[0],a=(i*=i,3*e[1]-2*t[1]-n[1]);a*=a;var s=3*r[0]-2*n[0]-t[0],o=(s*=s,3*r[1]-2*n[1]-t[1]);return o*=o,il&&(l=h,c=t)}return Math.sqrt(l)>t?(xI(e,r,c+1,t,a),xI(e,c,n,t,a)):(a.length||a.push(s),a.push(o)),a}function bI(e,r=.15,t){var n=[],i=(e.length-1)/3;for(let t=0;t{me(DN,"t"),me(ON,"e"),me(PN,"s"),me(BN,"n"),wI=class{static{me(this,"o")}constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){return t=BN(t,e),{type:"fillSketch",ops:this.renderLines(t,e)}}renderLines(t,e){var r,n=[];for(r of t)n.push(...this.helper.doubleLineOps(r[0][0],r[0][1],r[1][0],r[1][1],e));return n}},me($N,"a"),kI=class extends wI{static{me(this,"h")}fillPolygons(t,e){let r=e.hachureGap;r<0&&(r=4*e.strokeWidth),r=Math.max(r,.1);var n,i,t=BN(t,Object.assign({},e,{hachureGap:r})),a=Math.PI/180*e.hachureAngle,s=[],o=.5*r*Math.cos(a),l=.5*r*Math.sin(a);for([n,i]of t)$N([n,i])&&s.push([[n[0]-o,n[1]+l],[...i]],[[n[0]+o,n[1]-l],[...i]]);return{type:"fillSketch",ops:this.renderLines(s,e)}}},TI=class extends wI{static{me(this,"r")}fillPolygons(t,e){var r=this._fillPolygons(t,e),e=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),t=this._fillPolygons(t,e);return r.ops=r.ops.concat(t.ops),r}},EI=class{static{me(this,"i")}constructor(t){this.helper=t}fillPolygons(t,e){return t=BN(t,e=Object.assign({},e,{hachureAngle:0})),this.dotsOnLines(t,e)}dotsOnLines(t,e){let r=[],n=e.hachureGap,i=(n<0&&(n=4*e.strokeWidth),n=Math.max(n,.1),e.fillWeight);i<0&&(i=e.strokeWidth/2);var a,s=n/4;for(a of t){var o=$N(a),l=o/n,c=Math.ceil(l)-1,h=o-c*n,u=(a[0][0]+a[1][0])/2-n/4,d=Math.min(a[0][1],a[1][1]);for(let t=0;t{let e=$N(t),r=Math.floor(e/(h+u)),n=(e+u-r*(h+u))/2,i=t[0],a=t[1];i[0]>a[0]&&(i=t[1],a=t[0]);var s=Math.atan((a[1]-i[1])/(a[0]-i[0]));for(let t=0;t{let e=$N(t),r=Math.round(e/(2*c)),n=t[0],i=t[1];n[0]>i[0]&&(n=t[1],i=t[0]);var a=Math.atan((i[1]-n[1])/(i[0]-n[0]));for(let t=0;t{var i=d,a=p,s=Math.abs(g/2),o=Math.abs(t/2);s+=iI(.01*s,n),o+=iI(.01*o,n);let l=e,c=r;for(;l<0;)l+=2*Math.PI,c+=2*Math.PI;c-l>2*Math.PI&&(l=0,c=2*Math.PI);var h=(c-l)/n.curveStepCount,u=[];for(let t=l;t<=c;t+=h)u.push([i+s*Math.cos(t),a+o*Math.sin(t)]);return u.push([i+s*Math.cos(c),a+o*Math.sin(c)]),u.push([i,a]),tI([u],n)})(t,e,r,i))),i.stroke!==DI&&a.push(s),this._d("arc",a,i)}curve(t,e){var r=this._o(e),e=[],n=VN(t,r);if(r.fill&&r.fill!==DI)if("solid"===r.fillStyle){var i=VN(t,Object.assign(Object.assign({},r),{disableMultiStroke:!0,roughness:r.roughness?r.roughness+r.fillShapeRoughnessGain:0}));e.push({type:"fillPath",ops:this._mergedShape(i.ops)})}else{var a,s=[];if((i=t).length)for(a of"number"==typeof i[0][0]?[i]:i)a.length<3?s.push(...a):3===a.length?s.push(...bI(pI([a[0],a[0],a[1],a[2]]),10,(1+r.roughness)/2)):s.push(...bI(pI(a),10,(1+r.roughness)/2));s.length&&e.push(tI([s],r))}return r.stroke!==DI&&e.push(n),this._d("curve",e,r)}polygon(t,e){var r=[],n=YN(t,!0,e=this._o(e));return e.fill&&("solid"===e.fillStyle?r.push(JN([t],e)):r.push(tI([t],e))),e.stroke!==DI&&r.push(n),this._d("polygon",r,e)}path(t,e){let r=this._o(e),n=[];var i,a,s,o;return t&&(t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," "),e=r.fill&&"transparent"!==r.fill&&r.fill!==DI,i=r.stroke!==DI,s=((t,e)=>{let r=UN(GN(zN(t))),n=[],i=[],a=[0,0],s=[],o=me(()=>{4<=s.length&&i.push(...bI(s,1)),s=[]},"i"),l=me(()=>{o(),i.length&&(n.push(i),i=[])},"c");for(var{key:c,data:h}of r)switch(c){case"M":l(),a=[h[0],h[1]],i.push(a);break;case"L":o(),i.push([h[0],h[1]]);break;case"C":var u;s.length||(u=i.length?i[i.length-1]:a,s.push([u[0],u[1]])),s.push([h[0],h[1]]),s.push([h[2],h[3]]),s.push([h[4],h[5]]);break;case"Z":o(),i.push([a[0],a[1]])}if(l(),!e)return n;var d,p=[];for(d of n){var g=vI(d,e);g.length&&p.push(g)}return p})(t,(a=!!(r.simplification&&r.simplification<1))?4-4*(r.simplification||1):(1+r.roughness)/2),o=QN(t,r),e&&("solid"===r.fillStyle?1===s.length?(e=QN(t,Object.assign(Object.assign({},r),{disableMultiStroke:!0,roughness:r.roughness?r.roughness+r.fillShapeRoughnessGain:0})),n.push({type:"fillPath",ops:this._mergedShape(e.ops)})):n.push(JN(s,r)):n.push(tI(s,r))),i)&&(a?s.forEach(t=>{n.push(YN(t,!1,r))}):n.push(o)),this._d("path",n,r)}opsToPath(t,e){let r="";for(var n of t.ops){var i="number"==typeof e&&0<=e?n.data.map(t=>+t.toFixed(e)):n.data;switch(n.op){case"move":r+=`M${i[0]} ${i[1]} `;break;case"bcurveTo":r+=`C${i[0]} ${i[1]}, ${i[2]} ${i[3]}, ${i[4]} ${i[5]} `;break;case"lineTo":r+=`L${i[0]} ${i[1]} `}}return r.trim()}toPaths(t){var e,r=t.sets||[],n=t.options||this.defaultOptions,i=[];for(e of r){let t=null;switch(e.type){case"path":t={d:this.opsToPath(e),stroke:n.stroke,strokeWidth:n.strokeWidth,fill:DI};break;case"fillPath":t={d:this.opsToPath(e),stroke:DI,strokeWidth:0,fill:n.fill||DI};break;case"fillSketch":t=this.fillSketch(e,n)}t&&i.push(t)}return i}fillSketch(t,e){let r=e.fillWeight;return r<0&&(r=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||DI,strokeWidth:r,fill:DI}}_mergedShape(t){return t.filter((t,e)=>0===e||"move"!==t.op)}},PI=class{static{me(this,"st")}constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new OI(e)}draw(t){var e,r=t.sets||[],n=t.options||this.getDefaultOptions(),i=this.ctx,a=t.options.fixedDecimalPlaceDigits;for(e of r)switch(e.type){case"path":i.save(),i.strokeStyle="none"===n.stroke?"transparent":n.stroke,i.lineWidth=n.strokeWidth,n.strokeLineDash&&i.setLineDash(n.strokeLineDash),n.strokeLineDashOffset&&(i.lineDashOffset=n.strokeLineDashOffset),this._drawToContext(i,e,a),i.restore();break;case"fillPath":i.save(),i.fillStyle=n.fill||"";var s="curve"===t.shape||"polygon"===t.shape||"path"===t.shape?"evenodd":"nonzero";this._drawToContext(i,e,a,s),i.restore();break;case"fillSketch":this.fillSketch(i,e,n)}}fillSketch(t,e,r){let n=r.fillWeight;n<0&&(n=r.strokeWidth/2),t.save(),r.fillLineDash&&t.setLineDash(r.fillLineDash),r.fillLineDashOffset&&(t.lineDashOffset=r.fillLineDashOffset),t.strokeStyle=r.fill||"",t.lineWidth=n,this._drawToContext(t,e,r.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,r,n="nonzero"){t.beginPath();for(var i of e.ops){var a="number"==typeof r&&0<=r?i.data.map(t=>+t.toFixed(r)):i.data;switch(i.op){case"move":t.moveTo(a[0],a[1]);break;case"bcurveTo":t.bezierCurveTo(a[0],a[1],a[2],a[3],a[4],a[5]);break;case"lineTo":t.lineTo(a[0],a[1])}}"fillPath"===e.type?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,r,n,i){return t=this.gen.line(t,e,r,n,i),this.draw(t),t}rectangle(t,e,r,n,i){return t=this.gen.rectangle(t,e,r,n,i),this.draw(t),t}ellipse(t,e,r,n,i){return t=this.gen.ellipse(t,e,r,n,i),this.draw(t),t}circle(t,e,r,n){return t=this.gen.circle(t,e,r,n),this.draw(t),t}linearPath(t,e){return t=this.gen.linearPath(t,e),this.draw(t),t}polygon(t,e){return t=this.gen.polygon(t,e),this.draw(t),t}arc(t,e,r,n,i,a,s=!1,o){return t=this.gen.arc(t,e,r,n,i,a,s,o),this.draw(t),t}curve(t,e){return t=this.gen.curve(t,e),this.draw(t),t}path(t,e){return t=this.gen.path(t,e),this.draw(t),t}},BI="http://www.w3.org/2000/svg",$I=class{static{me(this,"ot")}constructor(t,e){this.svg=t,this.gen=new OI(e)}draw(e){var r,t=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,a=i.createElementNS(BI,"g"),s=e.options.fixedDecimalPlaceDigits;for(r of t){let t=null;switch(r.type){case"path":(t=i.createElementNS(BI,"path")).setAttribute("d",this.opsToPath(r,s)),t.setAttribute("stroke",n.stroke),t.setAttribute("stroke-width",n.strokeWidth+""),t.setAttribute("fill","none"),n.strokeLineDash&&t.setAttribute("stroke-dasharray",n.strokeLineDash.join(" ").trim()),n.strokeLineDashOffset&&t.setAttribute("stroke-dashoffset",""+n.strokeLineDashOffset);break;case"fillPath":(t=i.createElementNS(BI,"path")).setAttribute("d",this.opsToPath(r,s)),t.setAttribute("stroke","none"),t.setAttribute("stroke-width","0"),t.setAttribute("fill",n.fill||""),"curve"!==e.shape&&"polygon"!==e.shape||t.setAttribute("fill-rule","evenodd");break;case"fillSketch":t=this.fillSketch(i,r,n)}t&&a.appendChild(t)}return a}fillSketch(t,e,r){let n=r.fillWeight;return n<0&&(n=r.strokeWidth/2),(t=t.createElementNS(BI,"path")).setAttribute("d",this.opsToPath(e,r.fixedDecimalPlaceDigits)),t.setAttribute("stroke",r.fill||""),t.setAttribute("stroke-width",n+""),t.setAttribute("fill","none"),r.fillLineDash&&t.setAttribute("stroke-dasharray",r.fillLineDash.join(" ").trim()),r.fillLineDashOffset&&t.setAttribute("stroke-dashoffset",""+r.fillLineDashOffset),t}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,r,n,i){return t=this.gen.line(t,e,r,n,i),this.draw(t)}rectangle(t,e,r,n,i){return t=this.gen.rectangle(t,e,r,n,i),this.draw(t)}ellipse(t,e,r,n,i){return t=this.gen.ellipse(t,e,r,n,i),this.draw(t)}circle(t,e,r,n){return t=this.gen.circle(t,e,r,n),this.draw(t)}linearPath(t,e){return t=this.gen.linearPath(t,e),this.draw(t)}polygon(t,e){return t=this.gen.polygon(t,e),this.draw(t)}arc(t,e,r,n,i,a,s=!1,o){return t=this.gen.arc(t,e,r,n,i,a,s,o),this.draw(t)}curve(t,e){return t=this.gen.curve(t,e),this.draw(t)}path(t,e){return t=this.gen.path(t,e),this.draw(t)}},FI={canvas:me((t,e)=>new PI(t,e),"canvas"),svg:me((t,e)=>new $I(t,e),"svg"),generator:me(t=>new OI(t),"generator"),newSeed:me(()=>OI.newSeed(),"newSeed")}});function GI(t,e){var r=Q(e).labelStyles;e.labelStyle=r;let n=sN(e),i=n,a=(n||(i="anchor"),t.insert("g").attr("class",i).attr("id",e.domId||e.id)),s=e.cssStyles,o=FI.svg(a),l=AN(e,{fill:"black",stroke:"none",fillStyle:"solid"}),c=("handDrawn"!==e.look&&(l.roughness=0),o.circle(0,0,2,l)),h=a.insert(()=>c,":first-child");return h.attr("class","anchor").attr("style",_C(s)),aN(e,h),e.intersect=function(t){return D.info("Circle intersect",e,1,t),V.circle(e,1,t)},a}var UI=b(()=>{t(),i(),RN(),MN(),zI(),iS(),me(GI,"anchor")});function qI(t,e,r,n,i,a,s){var o=(t+r)/2,l=(e+n)/2,c=Math.atan2(n-e,r-t),h=Math.sqrt(((r-t)/2/i)**2+((n-e)/2/a)**2);if(1f,":first-child");return m.attr("class","basic label-container"),h&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",h),n&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",n),m.attr("transform",`translate(${c/2}, 0)`),aN(e,m),e.intersect=function(t){return V.polygon(e,u,t)},i}var WI=b(()=>{i(),RN(),MN(),zI(),me(qI,"generateArcPoints"),me(jI,"bowTieRect")});function YI(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var HI=b(()=>{me(YI,"insertPolygonShape")});async function VI(t,i){var{labelStyles:e,nodeStyles:r}=Q(i);i.labelStyle=e;let{shapeSvg:a,bbox:n}=await nN(t,i,sN(i)),s=n.height+i.padding,o=n.width+i.padding+12,l=o,c=-s,h=[{x:12,y:c},{x:l,y:c},{x:l,y:0},{x:0,y:0},{x:0,y:12+c},{x:12,y:c}],u,d=i.cssStyles;if("handDrawn"===i.look){let t=FI.svg(a),e=AN(i,{}),r=tN(h),n=t.path(r,e);u=a.insert(()=>n,":first-child").attr("transform",`translate(${-o/2}, ${s/2})`),d&&u.attr("style",d)}else u=YI(a,o,s,h);return r&&u.attr("style",r),aN(i,u),i.intersect=function(t){return V.polygon(i,h,t)},a}var XI=b(()=>{i(),RN(),MN(),zI(),HI(),i(),me(VI,"card")});function KI(t,e){var r=Q(e).nodeStyles;e.label="";let n=t.insert("g").attr("class",sN(e)).attr("id",e.domId??e.id),i=e.cssStyles,a=Math.max(28,e.width??0),s=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],o=FI.svg(n),l=AN(e,{}),c=("handDrawn"!==e.look&&(l.roughness=0,l.fillStyle="solid"),tN(s)),h=o.path(c,l),u=n.insert(()=>h,":first-child");return i&&"handDrawn"!==e.look&&u.selectAll("path").attr("style",i),r&&"handDrawn"!==e.look&&u.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(t){return V.polygon(e,s,t)},n}var ZI=b(()=>{RN(),zI(),MN(),i(),me(KI,"choice")});async function QI(t,n,e){var{labelStyles:r,nodeStyles:i}=Q(n);n.labelStyle=r;let{shapeSvg:a,bbox:s,halfPadding:o}=await nN(t,n,sN(n)),l=e?.padding??o,c=s.width/2+l,h,u=n.cssStyles;if("handDrawn"===n.look){let t=FI.svg(a),e=AN(n,{}),r=t.circle(0,0,2*c,e);(h=a.insert(()=>r,":first-child")).attr("class","basic label-container").attr("style",_C(u))}else h=a.insert("circle",":first-child").attr("class","basic label-container").attr("style",i).attr("r",c).attr("cx",0).attr("cy",0);return aN(n,h),n.calcIntersect=function(t,e){var r=t.width/2;return V.circle(t,r,e)},n.intersect=function(t){return D.info("Circle intersect",n,c,t),V.circle(n,c,t)},a}var JI=b(()=>{zI(),t(),iS(),RN(),MN(),i(),me(QI,"circle")});function tR(t){var e=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4);return`M ${-(t*=2)/2*e},${t/2*r} L ${t/2*e},${-t/2*r} + M ${t/2*e},${t/2*r} L ${-t/2*e},`+-t/2*r}function eR(t,e){var{labelStyles:r,nodeStyles:n}=Q(e);e.labelStyle=r,e.label="";let i=t.insert("g").attr("class",sN(e)).attr("id",e.domId??e.id),a=Math.max(30,e?.width??0),s=e.cssStyles,o=FI.svg(i),l=AN(e,{}),c=("handDrawn"!==e.look&&(l.roughness=0,l.fillStyle="solid"),o.circle(0,0,2*a,l)),h=tR(a),u=o.path(h,l),d=i.insert(()=>c,":first-child");return d.insert(()=>u),s&&"handDrawn"!==e.look&&d.selectAll("path").attr("style",s),n&&"handDrawn"!==e.look&&d.selectAll("path").attr("style",n),aN(e,d),e.intersect=function(t){return D.info("crossedCircle intersect",e,{radius:a,point:t}),V.circle(e,a,t)},i}var rR=b(()=>{t(),i(),MN(),zI(),RN(),me(tR,"createLine"),me(eR,"crossedCircle")});function nR(e,r,n,i=100,t=0,a=180){var s=[],o=t*Math.PI/180,l=(a*Math.PI/180-o)/(i-1);for(let t=0;tv,":first-child").attr("stroke-opacity",0),x.insert(()=>m,":first-child"),x.attr("class","text"),h&&"handDrawn"!==e.look&&x.selectAll("path").attr("style",h),n&&"handDrawn"!==e.look&&x.selectAll("path").attr("style",n),x.attr("transform",`translate(${c}, 0)`),s.attr("transform",`translate(${-o/2+c-(a.x-(a.left??0))},${-l/2+(e.padding??0)/2-(a.y-(a.top??0))})`),aN(e,x),e.intersect=function(t){return V.polygon(e,d,t)},i}var aR=b(()=>{i(),RN(),MN(),zI(),me(nR,"generateCirclePoints"),me(iR,"curlyBraceLeft")});function sR(e,r,n,i=100,t=0,a=180){var s=[],o=t*Math.PI/180,l=(a*Math.PI/180-o)/(i-1);for(let t=0;tv,":first-child").attr("stroke-opacity",0),x.insert(()=>m,":first-child"),x.attr("class","text"),h&&"handDrawn"!==e.look&&x.selectAll("path").attr("style",h),n&&"handDrawn"!==e.look&&x.selectAll("path").attr("style",n),x.attr("transform",`translate(${-c}, 0)`),s.attr("transform",`translate(${-o/2+(e.padding??0)/2-(a.x-(a.left??0))},${-l/2+(e.padding??0)/2-(a.y-(a.top??0))})`),aN(e,x),e.intersect=function(t){return V.polygon(e,d,t)},i}var lR=b(()=>{i(),RN(),MN(),zI(),me(sR,"generateCirclePoints"),me(oR,"curlyBraceRight")});function cR(e,r,n,i=100,t=0,a=180){var s=[],o=t*Math.PI/180,l=(a*Math.PI/180-o)/(i-1);for(let t=0;tw,":first-child").attr("stroke-opacity",0),k.insert(()=>y,":first-child"),k.insert(()=>x,":first-child"),k.attr("class","text"),h&&"handDrawn"!==e.look&&k.selectAll("path").attr("style",h),n&&"handDrawn"!==e.look&&k.selectAll("path").attr("style",n),k.attr("transform",`translate(${c-c/4}, 0)`),s.attr("transform",`translate(${-o/2+(e.padding??0)/2-(a.x-(a.left??0))},${-l/2+(e.padding??0)/2-(a.y-(a.top??0))})`),aN(e,k),e.intersect=function(t){return V.polygon(e,p,t)},i}var uR=b(()=>{i(),RN(),MN(),zI(),me(cR,"generateCirclePoints"),me(hR,"curlyBraces")});async function dR(t,e){var{labelStyles:r,nodeStyles:n}=Q(e),{shapeSvg:r,bbox:t}=(e.labelStyle=r,await nN(t,e,sN(e))),i=Math.max(80,1.25*(t.width+2*(e.padding??0)),e?.width??0),a=(t=Math.max(20,t.height+2*(e.padding??0),e?.height??0))/2,s=e.cssStyles,o=FI.svg(r),l=AN(e,{});"handDrawn"!==e.look&&(l.roughness=0,l.fillStyle="solid");let c=i,h=t,u=c-a,d=h/4,p=[{x:u,y:0},{x:d,y:0},{x:0,y:h/2},{x:d,y:h},{x:u,y:h},...rN(-u,-h/2,a,50,270,90)],g=tN(p),f=o.path(g,l),m=r.insert(()=>f,":first-child");return m.attr("class","basic label-container"),s&&"handDrawn"!==e.look&&m.selectChildren("path").attr("style",s),n&&"handDrawn"!==e.look&&m.selectChildren("path").attr("style",n),m.attr("transform",`translate(${-i/2}, ${-t/2})`),aN(e,m),e.intersect=function(t){return V.polygon(e,p,t)},r}var pR=b(()=>{i(),RN(),MN(),zI(),me(dR,"curvedTrapezoid")});async function gR(t,a){var{labelStyles:e,nodeStyles:r}=Q(a);a.labelStyle=e;let{shapeSvg:s,bbox:n,label:i}=await nN(t,a,sN(a)),o=Math.max(n.width+a.padding,a.width??0),l=o/2,c=l/(2.5+o/50),h=Math.max(n.height+c+a.padding,a.height??0),u,d=a.cssStyles;if("handDrawn"===a.look){let t=FI.svg(s),e=mR(0,0,o,h,l,c),r=yR(0,c,o,h,l,c),n=t.path(e,AN(a,{})),i=t.path(r,AN(a,{fill:"none"}));u=s.insert(()=>i,":first-child"),(u=s.insert(()=>n,":first-child")).attr("class","basic label-container"),d&&u.attr("style",d)}else e=fR(0,0,o,h,l,c),u=s.insert("path",":first-child").attr("d",e).attr("class","basic label-container").attr("style",_C(d)).attr("style",r);return u.attr("label-offset-y",c),u.attr("transform",`translate(${-o/2}, ${-(h/2+c)})`),aN(a,u),i.attr("transform",`translate(${-n.width/2-(n.x-(n.left??0))}, ${-n.height/2+(a.padding??0)/1.5-(n.y-(n.top??0))})`),a.intersect=function(e){var r=V.rect(a,e),n=r.x-(a.x??0);if(0!=l&&(Math.abs(n)<(a.width??0)/2||Math.abs(n)==(a.width??0)/2&&Math.abs(r.y-(a.y??0))>(a.height??0)/2-c)){let t=c*c*(1-n*n/(l*l));0{i(),RN(),MN(),zI(),iS(),fR=me((t,e,r,n,i,a)=>[`M${t},`+(e+a),`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,"l0,"+n,`a${i},${a} 0,0,0 ${r},0`,"l0,"+-n].join(" "),"createCylinderPathD"),mR=me((t,e,r,n,i,a)=>[`M${t},`+(e+a),`M${t+r},`+(e+a),`a${i},${a} 0,0,0 ${-r},0`,"l0,"+n,`a${i},${a} 0,0,0 ${r},0`,"l0,"+-n].join(" "),"createOuterCylinderPathD"),yR=me((t,e,r,n,i,a)=>[`M${t-r/2},`+-n/2,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD"),me(gR,"cylinder")});async function xR(t,e){var{labelStyles:r,nodeStyles:n}=Q(e),{shapeSvg:r,bbox:t,label:i}=(e.labelStyle=r,await nN(t,e,sN(e))),a=t.width+e.padding,s=.2*(o=t.height+e.padding),a=-a/2,o=-o/2-s/2,l=e.cssStyles,c=FI.svg(r),h=AN(e,{});"handDrawn"!==e.look&&(h.roughness=0,h.fillStyle="solid");let u=[{x:a,y:o+s},{x:-a,y:o+s},{x:-a,y:-o},{x:a,y:-o},{x:a,y:o},{x:-a,y:o},{x:-a,y:o+s}],d=c.polygon(u.map(t=>[t.x,t.y]),h),p=r.insert(()=>d,":first-child");return p.attr("class","basic label-container"),l&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",l),n&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",n),i.attr("transform",`translate(${a+(e.padding??0)/2-(t.x-(t.left??0))}, ${o+s+(e.padding??0)/2-(t.y-(t.top??0))})`),aN(e,p),e.intersect=function(t){return V.rect(e,t)},r}var bR=b(()=>{i(),RN(),MN(),zI(),me(xR,"dividedRectangle")});async function wR(t,e){var r,{labelStyles:n,nodeStyles:i}=Q(e);e.labelStyle=n;let{shapeSvg:a,bbox:s,halfPadding:o}=await nN(t,e,sN(e)),l=s.width/2+o+5,c=s.width/2+o,h,u=e.cssStyles;return"handDrawn"===e.look?(n=FI.svg(a),t=AN(e,{roughness:.2,strokeWidth:2.5}),r=AN(e,{roughness:.2,strokeWidth:1.5}),t=n.circle(0,0,2*l,t),n=n.circle(0,0,2*c,r),(h=a.insert("g",":first-child")).attr("class",_C(e.cssClasses)).attr("style",_C(u)),h.node()?.appendChild(t),h.node()?.appendChild(n)):(r=(h=a.insert("g",":first-child")).insert("circle",":first-child"),t=h.insert("circle"),h.attr("class","basic label-container").attr("style",i),r.attr("class","outer-circle").attr("style",i).attr("r",l).attr("cx",0).attr("cy",0),t.attr("class","inner-circle").attr("style",i).attr("r",c).attr("cx",0).attr("cy",0)),aN(e,h),e.intersect=function(t){return D.info("DoubleCircle intersect",e,l,t),V.circle(e,l,t)},a}var kR=b(()=>{t(),i(),RN(),MN(),zI(),iS(),me(wR,"doublecircle")});function TR(t,e,{config:{themeVariables:r}}){var{labelStyles:n,nodeStyles:i}=Q(e);e.label="",e.labelStyle=n;let a=t.insert("g").attr("class",sN(e)).attr("id",e.domId??e.id),s=e.cssStyles,o=FI.svg(a),l=r.nodeBorder,c=AN(e,{fillStyle:"solid"}),h=("handDrawn"!==e.look&&(c.roughness=0),o.circle(0,0,14,c)),u=a.insert(()=>h,":first-child");return u.selectAll("path").attr("style",`fill: ${l} !important;`),s&&0{zI(),t(),RN(),MN(),i(),me(TR,"filledCircle")});async function CR(t,e){var{labelStyles:r,nodeStyles:n}=Q(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await nN(t,e,sN(e)),o=a.width+(e.padding??0),l=o+a.height,c=o+a.height,h=[{x:0,y:-l},{x:c,y:-l},{x:c/2,y:0}],u=e.cssStyles,d=FI.svg(i),p=AN(e,{}),g=("handDrawn"!==e.look&&(p.roughness=0,p.fillStyle="solid"),tN(h)),f=d.path(g,p),m=i.insert(()=>f,":first-child").attr("transform",`translate(${-l/2}, ${l/2})`);return u&&"handDrawn"!==e.look&&m.selectChildren("path").attr("style",u),n&&"handDrawn"!==e.look&&m.selectChildren("path").attr("style",n),e.width=o,e.height=l,aN(e,m),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${-l/2+(e.padding??0)/2+(a.y-(a.top??0))})`),e.intersect=function(t){return D.info("Triangle intersect",e,h,t),V.polygon(e,h,t)},i}var SR=b(()=>{t(),i(),RN(),MN(),zI(),i(),me(CR,"flippedTriangle")});function _R(t,e,{dir:r,config:{state:n,themeVariables:i}}){var a=Q(e).nodeStyles;e.label="";let s=t.insert("g").attr("class",sN(e)).attr("id",e.domId??e.id),o=e.cssStyles,l=Math.max(70,e?.width??0),c=Math.max(10,e?.height??0);"LR"===r&&(l=Math.max(10,e?.width??0),c=Math.max(70,e?.height??0));var t=-1*l/2,r=-1*c/2,h=FI.svg(s),i=AN(e,{stroke:i.lineColor,fill:i.lineColor});"handDrawn"!==e.look&&(i.roughness=0,i.fillStyle="solid");let u=h.rectangle(t,r,l,c,i),d=s.insert(()=>u,":first-child");return o&&"handDrawn"!==e.look&&d.selectAll("path").attr("style",o),a&&"handDrawn"!==e.look&&d.selectAll("path").attr("style",a),aN(e,d),h=n?.padding??0,e.width&&e.height&&(e.width+=h/2||0,e.height+=h/2||0),e.intersect=function(t){return V.rect(e,t)},s}var AR=b(()=>{zI(),RN(),MN(),i(),me(_R,"forkJoin")});async function LR(t,e){var{labelStyles:r,nodeStyles:n}=Q(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await nN(t,e,sN(e)),s=Math.max(80,a.width+2*(e.padding??0),e?.width??0),o=Math.max(50,a.height+2*(e.padding??0),e?.height??0),l=o/2,c=e.cssStyles,h=FI.svg(i),u=AN(e,{}),d=("handDrawn"!==e.look&&(u.roughness=0,u.fillStyle="solid"),[{x:-s/2,y:-o/2},{x:s/2-l,y:-o/2},...rN(-s/2+l,0,l,50,90,270),{x:s/2-l,y:o/2},{x:-s/2,y:o/2}]),p=tN(d),g=h.path(p,u),f=i.insert(()=>g,":first-child");return f.attr("class","basic label-container"),c&&"handDrawn"!==e.look&&f.selectChildren("path").attr("style",c),n&&"handDrawn"!==e.look&&f.selectChildren("path").attr("style",n),aN(e,f),e.intersect=function(t){return D.info("Pill intersect",e,{radius:l,point:t}),V.polygon(e,d,t)},i}var NR=b(()=>{t(),i(),RN(),MN(),zI(),me(LR,"halfRoundedRectangle")});async function IR(t,e){var{labelStyles:r,nodeStyles:n}=Q(e),{shapeSvg:r,bbox:t}=(e.labelStyle=r,await nN(t,e,sN(e))),i=t.height+(e.padding??0),t=t.width+2.5*(e.padding??0),a=e.cssStyles,s=FI.svg(r),o=AN(e,{}),l=("handDrawn"!==e.look&&(o.roughness=0,o.fillStyle="solid"),t/2);let c=i/2,h=c/2,u=(l+=l/6)-h,d=[{x:-u,y:-c},{x:0,y:-c},{x:u,y:-c},{x:l,y:0},{x:u,y:c},{x:0,y:c},{x:-u,y:c},{x:-l,y:0}],p=tN(d),g=s.path(p,o),f=r.insert(()=>g,":first-child");return f.attr("class","basic label-container"),a&&"handDrawn"!==e.look&&f.selectChildren("path").attr("style",a),n&&"handDrawn"!==e.look&&f.selectChildren("path").attr("style",n),e.width=t,e.height=i,aN(e,f),e.intersect=function(t){return V.polygon(e,d,t)},r}var RR=b(()=>{i(),RN(),MN(),zI(),me(IR,"hexagon")});async function MR(t,e){var{labelStyles:r,nodeStyles:n}=Q(e),r=(e.label="",e.labelStyle=r,(await nN(t,e,sN(e))).shapeSvg),t=Math.max(30,e?.width??0),i=Math.max(30,e?.height??0),a=e.cssStyles,s=FI.svg(r),o=AN(e,{});"handDrawn"!==e.look&&(o.roughness=0,o.fillStyle="solid");let l=[{x:0,y:0},{x:t,y:0},{x:0,y:i},{x:t,y:i}],c=tN(l),h=s.path(c,o),u=r.insert(()=>h,":first-child");return u.attr("class","basic label-container"),a&&"handDrawn"!==e.look&&u.selectChildren("path").attr("style",a),n&&"handDrawn"!==e.look&&u.selectChildren("path").attr("style",n),u.attr("transform",`translate(${-t/2}, ${-i/2})`),aN(e,u),e.intersect=function(t){return D.info("Pill intersect",e,{points:l}),V.polygon(e,l,t)},r}var DR=b(()=>{t(),i(),RN(),MN(),zI(),me(MR,"hourglass")});async function OR(t,i,{config:{themeVariables:e,flowchart:r}}){var n,a=Q(i).labelStyles,a=(i.labelStyle=a,i.assetHeight??48),a=Math.max(a,i.assetWidth??48),r=r?.wrappingWidth;i.width=Math.max(a,r??0);let{shapeSvg:s,bbox:o,label:l}=await nN(t,i,"icon-shape default"),c="t"===i.pos,h=a,u=a,d=e.nodeBorder,p=CN(i).stylesMap,g=-u/2,f=-h/2,m=i.label?8:0,y=FI.svg(s),v=AN(i,{stroke:"none",fill:"none"}),x=("handDrawn"!==i.look&&(v.roughness=0,v.fillStyle="solid"),y.rectangle(g,f,u,h,v)),b=Math.max(u,o.width),w=h+o.height+m,k=y.rectangle(-b/2,-w/2,b,w,{...v,fill:"transparent",stroke:"none"}),T=s.insert(()=>x,":first-child"),E=s.insert(()=>k);return i.icon&&((r=s.append("g")).html(`${await Dc(i.icon,{height:a,width:a,fallbackPrefix:""})}`),e=(t=r.node().getBBox()).width,a=t.height,n=t.y,r.attr("transform",`translate(${-e/2-t.x},${c?o.height/2+m/2-a/2-n:-o.height/2-m/2-a/2-n})`),r.attr("style",`color: ${p.get("stroke")??d};`)),l.attr("transform",`translate(${-o.width/2-(o.x-(o.left??0))},${c?-w/2:w/2-o.height})`),T.attr("transform",`translate(0,${c?o.height/2+m/2:-o.height/2-m/2})`),aN(i,E),i.intersect=function(t){var e,r,n;return D.info("iconSquare intersect",i,t),i.label?(n=i.x??0,e=i.y??0,r=i.height??0,n=c?[{x:n-o.width/2,y:e-r/2},{x:n+o.width/2,y:e-r/2},{x:n+o.width/2,y:e-r/2+o.height+m},{x:n+u/2,y:e-r/2+o.height+m},{x:n+u/2,y:e+r/2},{x:n-u/2,y:e+r/2},{x:n-u/2,y:e-r/2+o.height+m},{x:n-o.width/2,y:e-r/2+o.height+m}]:[{x:n-u/2,y:e-r/2},{x:n+u/2,y:e-r/2},{x:n+u/2,y:e-r/2+h},{x:n+o.width/2,y:e-r/2+h},{x:n+o.width/2/2,y:e+r/2},{x:n-o.width/2,y:e+r/2},{x:n-o.width/2,y:e-r/2+h},{x:n-u/2,y:e-r/2+h}],V.polygon(i,n,t)):V.rect(i,t)},s}var PR=b(()=>{zI(),t(),Pc(),RN(),MN(),i(),me(OR,"icon")});async function BR(t,e,{config:{themeVariables:r,flowchart:n}}){var i=Q(e).labelStyles,i=(e.labelStyle=i,e.assetHeight??48),i=Math.max(i,e.assetWidth??48),n=n?.wrappingWidth,{shapeSvg:n,bbox:t,label:a}=(e.width=Math.max(i,n??0),await nN(t,e,"icon-shape default")),s=e.label?8:0,o="t"===e.pos,{nodeBorder:r,mainBkg:l}=r,c=CN(e).stylesMap,h=FI.svg(n),u=AN(e,{}),d=("handDrawn"!==e.look&&(u.roughness=0,u.fillStyle="solid"),c.get("fill")),d=(u.stroke=d??l,n.append("g"));e.icon&&d.html(`${await Dc(e.icon,{height:i,width:i,fallbackPrefix:""})}`);let p=d.node().getBBox(),g=p.width,f=p.height,m=p.x,y=p.y,v=Math.max(g,f)*Math.SQRT2+40,x=h.circle(0,0,v,u),b=Math.max(v,t.width),w=v+t.height+s,k=h.rectangle(-b/2,-w/2,b,w,{...u,fill:"transparent",stroke:"none"}),T=n.insert(()=>x,":first-child"),E=n.insert(()=>k);return d.attr("transform",`translate(${-g/2-m},${o?t.height/2+s/2-f/2-y:-t.height/2-s/2-f/2-y})`),d.attr("style",`color: ${c.get("stroke")??r};`),a.attr("transform",`translate(${-t.width/2-(t.x-(t.left??0))},${o?-w/2:w/2-t.height})`),T.attr("transform",`translate(0,${o?t.height/2+s/2:-t.height/2-s/2})`),aN(e,E),e.intersect=function(t){return D.info("iconSquare intersect",e,t),V.rect(e,t)},n}var $R,FR=b(()=>{zI(),t(),Pc(),RN(),MN(),i(),me(BR,"iconCircle")}),zR=b(()=>{$R=me((t,e,r,n,i)=>["M",t+i,e,"H",t+r-i,"A",i,i,0,0,1,t+r,e+i,"V",e+n-i,"A",i,i,0,0,1,t+r-i,e+n,"H",t+i,"A",i,i,0,0,1,t,e+n-i,"V",e+i,"A",i,i,0,0,1,t+i,e,"Z"].join(" "),"createRoundedRectPathD")});async function GR(t,i,{config:{themeVariables:e,flowchart:r}}){var n=Q(i).labelStyles,n=(i.labelStyle=n,i.assetHeight??48),n=Math.max(n,i.assetWidth??48),r=r?.wrappingWidth;i.width=Math.max(n,r??0);let{shapeSvg:a,bbox:s,halfPadding:o,label:l}=await nN(t,i,"icon-shape default"),c="t"===i.pos,h=n+2*o,u=n+2*o,{nodeBorder:d,mainBkg:p}=e,g=CN(i).stylesMap,f=-u/2,m=-h/2,y=i.label?8:0,v=FI.svg(a),x=AN(i,{});"handDrawn"!==i.look&&(x.roughness=0,x.fillStyle="solid");var b,r=g.get("fill");x.stroke=r??p;let w=v.path($R(f,m,u,h,5),x),k=Math.max(u,s.width),T=h+s.height+y,E=v.rectangle(-k/2,-T/2,k,T,{...x,fill:"transparent",stroke:"none"}),C=a.insert(()=>w,":first-child").attr("class","icon-shape2"),S=a.insert(()=>E);return i.icon&&((t=a.append("g")).html(`${await Dc(i.icon,{height:n,width:n,fallbackPrefix:""})}`),r=(e=t.node().getBBox()).width,n=e.height,b=e.y,t.attr("transform",`translate(${-r/2-e.x},${c?s.height/2+y/2-n/2-b:-s.height/2-y/2-n/2-b})`),t.attr("style",`color: ${g.get("stroke")??d};`)),l.attr("transform",`translate(${-s.width/2-(s.x-(s.left??0))},${c?-T/2:T/2-s.height})`),C.attr("transform",`translate(0,${c?s.height/2+y/2:-s.height/2-y/2})`),aN(i,S),i.intersect=function(t){var e,r,n;return D.info("iconSquare intersect",i,t),i.label?(n=i.x??0,e=i.y??0,r=i.height??0,n=c?[{x:n-s.width/2,y:e-r/2},{x:n+s.width/2,y:e-r/2},{x:n+s.width/2,y:e-r/2+s.height+y},{x:n+u/2,y:e-r/2+s.height+y},{x:n+u/2,y:e+r/2},{x:n-u/2,y:e+r/2},{x:n-u/2,y:e-r/2+s.height+y},{x:n-s.width/2,y:e-r/2+s.height+y}]:[{x:n-u/2,y:e-r/2},{x:n+u/2,y:e-r/2},{x:n+u/2,y:e-r/2+h},{x:n+s.width/2,y:e-r/2+h},{x:n+s.width/2/2,y:e+r/2},{x:n-s.width/2,y:e+r/2},{x:n-s.width/2,y:e-r/2+h},{x:n-u/2,y:e-r/2+h}],V.polygon(i,n,t)):V.rect(i,t)},a}var UR=b(()=>{zI(),t(),Pc(),RN(),MN(),zR(),i(),me(GR,"iconRounded")});async function qR(t,i,{config:{themeVariables:e,flowchart:r}}){var n=Q(i).labelStyles,n=(i.labelStyle=n,i.assetHeight??48),n=Math.max(n,i.assetWidth??48),r=r?.wrappingWidth;i.width=Math.max(n,r??0);let{shapeSvg:a,bbox:s,halfPadding:o,label:l}=await nN(t,i,"icon-shape default"),c="t"===i.pos,h=n+2*o,u=n+2*o,{nodeBorder:d,mainBkg:p}=e,g=CN(i).stylesMap,f=-u/2,m=-h/2,y=i.label?8:0,v=FI.svg(a),x=AN(i,{});"handDrawn"!==i.look&&(x.roughness=0,x.fillStyle="solid");var b,r=g.get("fill");x.stroke=r??p;let w=v.path($R(f,m,u,h,.1),x),k=Math.max(u,s.width),T=h+s.height+y,E=v.rectangle(-k/2,-T/2,k,T,{...x,fill:"transparent",stroke:"none"}),C=a.insert(()=>w,":first-child"),S=a.insert(()=>E);return i.icon&&((t=a.append("g")).html(`${await Dc(i.icon,{height:n,width:n,fallbackPrefix:""})}`),r=(e=t.node().getBBox()).width,n=e.height,b=e.y,t.attr("transform",`translate(${-r/2-e.x},${c?s.height/2+y/2-n/2-b:-s.height/2-y/2-n/2-b})`),t.attr("style",`color: ${g.get("stroke")??d};`)),l.attr("transform",`translate(${-s.width/2-(s.x-(s.left??0))},${c?-T/2:T/2-s.height})`),C.attr("transform",`translate(0,${c?s.height/2+y/2:-s.height/2-y/2})`),aN(i,S),i.intersect=function(t){var e,r,n;return D.info("iconSquare intersect",i,t),i.label?(n=i.x??0,e=i.y??0,r=i.height??0,n=c?[{x:n-s.width/2,y:e-r/2},{x:n+s.width/2,y:e-r/2},{x:n+s.width/2,y:e-r/2+s.height+y},{x:n+u/2,y:e-r/2+s.height+y},{x:n+u/2,y:e+r/2},{x:n-u/2,y:e+r/2},{x:n-u/2,y:e-r/2+s.height+y},{x:n-s.width/2,y:e-r/2+s.height+y}]:[{x:n-u/2,y:e-r/2},{x:n+u/2,y:e-r/2},{x:n+u/2,y:e-r/2+h},{x:n+s.width/2,y:e-r/2+h},{x:n+s.width/2/2,y:e+r/2},{x:n-s.width/2,y:e+r/2},{x:n-s.width/2,y:e-r/2+h},{x:n-u/2,y:e-r/2+h}],V.polygon(i,n,t)):V.rect(i,t)},a}var jR=b(()=>{zI(),t(),Pc(),RN(),zR(),MN(),i(),me(qR,"iconSquare")});async function WR(t,i,{config:{flowchart:e}}){(n=new Image).src=i?.img??"",await n.decode();var r=Number(n.naturalWidth.toString().replace("px","")),n=Number(n.naturalHeight.toString().replace("px","")),a=(i.imageAspectRatio=r/n,Q(i).labelStyles),a=(i.labelStyle=a,e?.wrappingWidth);i.defaultWidth=e?.wrappingWidth;let s=Math.max(i.label?a??0:0,i?.assetWidth??r),o="on"===i.constraint&&i?.assetHeight?i.assetHeight*i.imageAspectRatio:s,l="on"===i.constraint?o/i.imageAspectRatio:i?.assetHeight??n,{shapeSvg:c,bbox:h,label:u}=(i.width=Math.max(o,a??0),await nN(t,i,"image-shape default")),d="t"===i.pos,p=-o/2,g=-l/2,f=i.label?8:0,m=FI.svg(c),y=AN(i,{}),v=("handDrawn"!==i.look&&(y.roughness=0,y.fillStyle="solid"),m.rectangle(p,g,o,l,y)),x=Math.max(o,h.width),b=l+h.height+f,w=m.rectangle(-x/2,-b/2,x,b,{...y,fill:"none",stroke:"none"}),k=c.insert(()=>v,":first-child"),T=c.insert(()=>w);return i.img&&((e=c.append("image")).attr("href",i.img),e.attr("width",o),e.attr("height",l),e.attr("preserveAspectRatio","none"),e.attr("transform",`translate(${-o/2},${d?b/2-l:-b/2})`)),u.attr("transform",`translate(${-h.width/2-(h.x-(h.left??0))},${d?-l/2-h.height/2-f/2:l/2-h.height/2+f/2})`),k.attr("transform",`translate(0,${d?h.height/2+f/2:-h.height/2-f/2})`),aN(i,T),i.intersect=function(t){var e,r,n;return D.info("iconSquare intersect",i,t),i.label?(n=i.x??0,e=i.y??0,r=i.height??0,n=d?[{x:n-h.width/2,y:e-r/2},{x:n+h.width/2,y:e-r/2},{x:n+h.width/2,y:e-r/2+h.height+f},{x:n+o/2,y:e-r/2+h.height+f},{x:n+o/2,y:e+r/2},{x:n-o/2,y:e+r/2},{x:n-o/2,y:e-r/2+h.height+f},{x:n-h.width/2,y:e-r/2+h.height+f}]:[{x:n-o/2,y:e-r/2},{x:n+o/2,y:e-r/2},{x:n+o/2,y:e-r/2+l},{x:n+h.width/2,y:e-r/2+l},{x:n+h.width/2/2,y:e+r/2},{x:n-h.width/2,y:e+r/2},{x:n-h.width/2,y:e-r/2+l},{x:n-o/2,y:e-r/2+l}],V.polygon(i,n,t)):V.rect(i,t)},c}var YR=b(()=>{zI(),t(),RN(),MN(),i(),me(WR,"imageSquare")});async function HR(t,i){var{labelStyles:e,nodeStyles:r}=Q(i);i.labelStyle=e;let{shapeSvg:a,bbox:n}=await nN(t,i,sN(i)),s=Math.max(n.width+2*(i.padding??0),i?.width??0),o=Math.max(n.height+2*(i.padding??0),i?.height??0),l=[{x:0,y:0},{x:s,y:0},{x:s+3*o/6,y:-o},{x:-3*o/6,y:-o}],c,h=i.cssStyles;if("handDrawn"===i.look){let t=FI.svg(a),e=AN(i,{}),r=tN(l),n=t.path(r,e);c=a.insert(()=>n,":first-child").attr("transform",`translate(${-s/2}, ${o/2})`),h&&c.attr("style",h)}else c=YI(a,s,o,l);return r&&c.attr("style",r),i.width=s,i.height=o,aN(i,c),i.intersect=function(t){return V.polygon(i,l,t)},a}var VR=b(()=>{i(),RN(),MN(),zI(),HI(),me(HR,"inv_trapezoid")});async function XR(t,n,e){var{labelStyles:r,nodeStyles:i}=Q(n);n.labelStyle=r;let{shapeSvg:a,bbox:s}=await nN(t,n,sN(n)),o=Math.max(s.width+2*e.labelPaddingX,n?.width||0),l=Math.max(s.height+2*e.labelPaddingY,n?.height||0),c=-o/2,h=-l/2,u,{rx:d,ry:p}=n,g=n.cssStyles;if(e?.rx&&e.ry&&(d=e.rx,p=e.ry),"handDrawn"===n.look){let t=FI.svg(a),e=AN(n,{}),r=d||p?t.path($R(c,h,o,l,d||0),e):t.rectangle(c,h,o,l,e);(u=a.insert(()=>r,":first-child")).attr("class","basic label-container").attr("style",_C(g))}else(u=a.insert("rect",":first-child")).attr("class","basic label-container").attr("style",i).attr("rx",_C(d)).attr("ry",_C(p)).attr("x",c).attr("y",h).attr("width",o).attr("height",l);return aN(n,u),n.calcIntersect=function(t,e){return V.rect(t,e)},n.intersect=function(t){return V.rect(n,t)},a}var KR=b(()=>{i(),RN(),zR(),MN(),zI(),iS(),me(XR,"drawRect")});async function ZR(t,e){var{shapeSvg:t,bbox:r,label:n}=await nN(t,e,"label"),i=t.insert("rect",":first-child");return i.attr("width",.1).attr("height",.1),t.attr("class","label edgeLabel"),n.attr("transform",`translate(${-r.width/2-(r.x-(r.left??0))}, ${-r.height/2-(r.y-(r.top??0))})`),aN(e,i),e.intersect=function(t){return V.rect(e,t)},t}var QR=b(()=>{KR(),i(),RN(),me(ZR,"labelRect")});async function JR(t,i){var{labelStyles:e,nodeStyles:r}=Q(i);i.labelStyle=e;let{shapeSvg:a,bbox:n}=await nN(t,i,sN(i)),s=Math.max(n.width+(i.padding??0),i?.width??0),o=Math.max(n.height+(i.padding??0),i?.height??0),l=[{x:0,y:0},{x:s+3*o/6,y:0},{x:s,y:-o},{x:-3*o/6,y:-o}],c,h=i.cssStyles;if("handDrawn"===i.look){let t=FI.svg(a),e=AN(i,{}),r=tN(l),n=t.path(r,e);c=a.insert(()=>n,":first-child").attr("transform",`translate(${-s/2}, ${o/2})`),h&&c.attr("style",h)}else c=YI(a,s,o,l);return r&&c.attr("style",r),i.width=s,i.height=o,aN(i,c),i.intersect=function(t){return V.polygon(i,l,t)},a}var tM=b(()=>{i(),RN(),MN(),zI(),HI(),me(JR,"lean_left")});async function eM(t,i){var{labelStyles:e,nodeStyles:r}=Q(i);i.labelStyle=e;let{shapeSvg:a,bbox:n}=await nN(t,i,sN(i)),s=Math.max(n.width+(i.padding??0),i?.width??0),o=Math.max(n.height+(i.padding??0),i?.height??0),l=[{x:-3*o/6,y:0},{x:s,y:0},{x:s+3*o/6,y:-o},{x:0,y:-o}],c,h=i.cssStyles;if("handDrawn"===i.look){let t=FI.svg(a),e=AN(i,{}),r=tN(l),n=t.path(r,e);c=a.insert(()=>n,":first-child").attr("transform",`translate(${-s/2}, ${o/2})`),h&&c.attr("style",h)}else c=YI(a,s,o,l);return r&&c.attr("style",r),i.width=s,i.height=o,aN(i,c),i.intersect=function(t){return V.polygon(i,l,t)},a}var rM=b(()=>{i(),RN(),MN(),zI(),HI(),me(eM,"lean_right")});function nM(t,e){var{labelStyles:r,nodeStyles:n}=Q(e);e.label="",e.labelStyle=r;let i=t.insert("g").attr("class",sN(e)).attr("id",e.domId??e.id),a=e.cssStyles,s=Math.max(35,e?.width??0),o=Math.max(35,e?.height??0),l=[{x:s,y:0},{x:0,y:o+3.5},{x:s-14,y:o+3.5},{x:0,y:2*o},{x:s,y:o-3.5},{x:14,y:o-3.5}],c=FI.svg(i),h=AN(e,{}),u=("handDrawn"!==e.look&&(h.roughness=0,h.fillStyle="solid"),tN(l)),d=c.path(u,h),p=i.insert(()=>d,":first-child");return a&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",a),n&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",n),p.attr("transform",`translate(-${s/2},${-o})`),aN(e,p),e.intersect=function(t){return D.info("lightningBolt intersect",e,t),V.polygon(e,l,t)},i}var iM=b(()=>{t(),i(),MN(),zI(),RN(),i(),me(nM,"lightningBolt")});async function aM(t,s){var{labelStyles:e,nodeStyles:r}=Q(s);s.labelStyle=e;let{shapeSvg:o,bbox:n,label:i}=await nN(t,s,sN(s)),l=Math.max(n.width+(s.padding??0),s.width??0),c=l/2,h=c/(2.5+l/50),u=Math.max(n.height+h+(s.padding??0),s.height??0),d=.1*u,p,g=s.cssStyles;if("handDrawn"===s.look){let t=FI.svg(o),e=oM(0,0,l,u,c,h,d),r=lM(0,h,l,u,c,h),n=AN(s,{}),i=t.path(e,n),a=t.path(r,n);o.insert(()=>a,":first-child").attr("class","line"),(p=o.insert(()=>i,":first-child")).attr("class","basic label-container"),g&&p.attr("style",g)}else e=sM(0,0,l,u,c,h,d),p=o.insert("path",":first-child").attr("d",e).attr("class","basic label-container").attr("style",_C(g)).attr("style",r);return p.attr("label-offset-y",h),p.attr("transform",`translate(${-l/2}, ${-(u/2+h)})`),aN(s,p),i.attr("transform",`translate(${-n.width/2-(n.x-(n.left??0))}, ${-n.height/2+h-(n.y-(n.top??0))})`),s.intersect=function(e){var r=V.rect(s,e),n=r.x-(s.x??0);if(0!=c&&(Math.abs(n)<(s.width??0)/2||Math.abs(n)==(s.width??0)/2&&Math.abs(r.y-(s.y??0))>(s.height??0)/2-h)){let t=h*h*(1-n*n/(c*c));0{i(),RN(),MN(),zI(),iS(),sM=me((t,e,r,n,i,a,s)=>[`M${t},`+(e+a),`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,"l0,"+n,`a${i},${a} 0,0,0 ${r},0`,"l0,"+-n,`M${t},`+(e+a+s),`a${i},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),oM=me((t,e,r,n,i,a,s)=>[`M${t},`+(e+a),`M${t+r},`+(e+a),`a${i},${a} 0,0,0 ${-r},0`,"l0,"+n,`a${i},${a} 0,0,0 ${r},0`,"l0,"+-n,`M${t},`+(e+a+s),`a${i},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),lM=me((t,e,r,n,i,a)=>[`M${t-r/2},`+-n/2,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD"),me(aM,"linedCylinder")});async function hM(t,e){var{labelStyles:r,nodeStyles:n}=Q(e),{shapeSvg:r,bbox:t,label:i}=(e.labelStyle=r,await nN(t,e,sN(e))),a=Math.max(t.width+2*(e.padding??0),e?.width??0),s=Math.max(t.height+2*(e.padding??0),e?.height??0),o=s/4,l=s+o,c=e.cssStyles,h=FI.svg(r),u=AN(e,{});"handDrawn"!==e.look&&(u.roughness=0,u.fillStyle="solid");let d=[{x:-a/2-a/2*.1,y:-l/2},{x:-a/2-a/2*.1,y:l/2},...eN(-a/2-a/2*.1,l/2,a/2+a/2*.1,l/2,o,.8),{x:a/2+a/2*.1,y:-l/2},{x:-a/2-a/2*.1,y:-l/2},{x:-a/2,y:-l/2},{x:-a/2,y:l/2*1.1},{x:-a/2,y:-l/2}],p=h.polygon(d.map(t=>[t.x,t.y]),u),g=r.insert(()=>p,":first-child");return g.attr("class","basic label-container"),c&&"handDrawn"!==e.look&&g.selectAll("path").attr("style",c),n&&"handDrawn"!==e.look&&g.selectAll("path").attr("style",n),g.attr("transform",`translate(0,${-o/2})`),i.attr("transform",`translate(${-a/2+(e.padding??0)+a/2*.1/2-(t.x-(t.left??0))},${-s/2+(e.padding??0)-o/2-(t.y-(t.top??0))})`),aN(e,g),e.intersect=function(t){return V.polygon(e,d,t)},r}var uM=b(()=>{i(),RN(),zI(),MN(),me(hM,"linedWaveEdgedRect")});async function dM(t,e){var{labelStyles:r,nodeStyles:n}=Q(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await nN(t,e,sN(e)),o=Math.max(a.width+2*(e.padding??0),e?.width??0),l=Math.max(a.height+2*(e.padding??0),e?.height??0),c=-o/2,h=-l/2,u=e.cssStyles,d=FI.svg(i),p=AN(e,{}),g=[{x:c-5,y:5+h},{x:c-5,y:h+l+5},{x:c+o-5,y:h+l+5},{x:c+o-5,y:h+l},{x:c+o,y:h+l},{x:c+o,y:h+l-5},{x:c+o+5,y:h+l-5},{x:c+o+5,y:h-5},{x:5+c,y:h-5},{x:5+c,y:h},{x:c,y:h},{x:c,y:5+h}],f=[{x:c,y:5+h},{x:c+o-5,y:5+h},{x:c+o-5,y:h+l},{x:c+o,y:h+l},{x:c+o,y:h},{x:c,y:h}],m=("handDrawn"!==e.look&&(p.roughness=0,p.fillStyle="solid"),tN(g)),y=d.path(m,p),v=tN(f),x=d.path(v,{...p,fill:"none"}),b=i.insert(()=>x,":first-child");return b.insert(()=>y,":first-child"),b.attr("class","basic label-container"),u&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",u),n&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",n),s.attr("transform",`translate(${-a.width/2-5-(a.x-(a.left??0))}, ${-a.height/2+5-(a.y-(a.top??0))})`),aN(e,b),e.intersect=function(t){return V.polygon(e,g,t)},i}var pM=b(()=>{i(),MN(),zI(),RN(),me(dM,"multiRect")});async function gM(t,e){var{labelStyles:r,nodeStyles:n}=Q(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await nN(t,e,sN(e)),o=Math.max(a.width+2*(e.padding??0),e?.width??0),l=Math.max(a.height+2*(e.padding??0),e?.height??0),c=l/4,h=l+c,u=-o/2,d=-h/2,p=e.cssStyles,g=eN(u-5,d+h+5,u+o-5,d+h+5,c,.8),f=g?.[g.length-1],m=[{x:u-5,y:5+d},{x:u-5,y:d+h+5},...g,{x:u+o-5,y:f.y-5},{x:u+o,y:f.y-5},{x:u+o,y:f.y-10},{x:u+o+5,y:f.y-10},{x:u+o+5,y:d-5},{x:5+u,y:d-5},{x:5+u,y:d},{x:u,y:d},{x:u,y:5+d}],y=[{x:u,y:5+d},{x:u+o-5,y:5+d},{x:u+o-5,y:f.y-5},{x:u+o,y:f.y-5},{x:u+o,y:d},{x:u,y:d}],v=FI.svg(i),x=AN(e,{}),b=("handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid"),tN(m)),w=v.path(b,x),k=tN(y),T=v.path(k,x),E=i.insert(()=>w,":first-child");return E.insert(()=>T),E.attr("class","basic label-container"),p&&"handDrawn"!==e.look&&E.selectAll("path").attr("style",p),n&&"handDrawn"!==e.look&&E.selectAll("path").attr("style",n),E.attr("transform",`translate(0,${-c/2})`),s.attr("transform",`translate(${-a.width/2-5-(a.x-(a.left??0))}, ${-a.height/2+5-c/2-(a.y-(a.top??0))})`),aN(e,E),e.intersect=function(t){return V.polygon(e,m,t)},i}var fM=b(()=>{i(),RN(),zI(),MN(),me(gM,"multiWaveEdgedRectangle")});async function mM(t,e,{config:{themeVariables:r}}){var{labelStyles:n,nodeStyles:i}=Q(e),{shapeSvg:n,bbox:t,label:a}=(e.labelStyle=n,e.useHtmlLabels||!1!==ar().flowchart?.htmlLabels||(e.centerLabel=!0),await nN(t,e,sN(e))),s=Math.max(t.width+2*(e.padding??0),e?.width??0),o=Math.max(t.height+2*(e.padding??0),e?.height??0),l=-s/2,c=-o/2,h=e.cssStyles,u=FI.svg(n),r=AN(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});"handDrawn"!==e.look&&(r.roughness=0,r.fillStyle="solid");let d=u.rectangle(l,c,s,o,r),p=n.insert(()=>d,":first-child");return p.attr("class","basic label-container"),h&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",h),i&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",i),a.attr("transform",`translate(${-t.width/2-(t.x-(t.left??0))}, ${-t.height/2-(t.y-(t.top??0))})`),aN(e,p),e.intersect=function(t){return V.rect(e,t)},n}var yM=b(()=>{zI(),RN(),MN(),i(),rn(),me(mM,"note")});async function vM(t,i){var{labelStyles:e,nodeStyles:r}=Q(i);i.labelStyle=e;let{shapeSvg:a,bbox:n}=await nN(t,i,sN(i)),s=n.width+i.padding,o=n.height+i.padding,l=s+o,c=[{x:l/2,y:0},{x:l,y:-l/2},{x:l/2,y:-l},{x:0,y:-l/2}],h,u=i.cssStyles;if("handDrawn"===i.look){let t=FI.svg(a),e=AN(i,{}),r=xM(0,0,l),n=t.path(r,e);h=a.insert(()=>n,":first-child").attr("transform",`translate(${-l/2+.5}, ${l/2})`),u&&h.attr("style",u)}else(h=YI(a,l,l,c)).attr("transform",`translate(${-l/2+.5}, ${l/2})`);return r&&h.attr("style",r),aN(i,h),i.calcIntersect=function(t,e){var r=t.width;return{x:(t=V.polygon(t,[{x:r/2,y:0},{x:r,y:-r/2},{x:r/2,y:-r},{x:0,y:-r/2}],e)).x-.5,y:t.y-.5}},i.intersect=function(t){return this.calcIntersect(i,t)},a}var xM,bM=b(()=>{i(),RN(),MN(),zI(),HI(),xM=me((t,e,r)=>[`M${t+r/2},`+e,`L${t+r},`+(e-r/2),`L${t+r/2},`+(e-r),`L${t},`+(e-r/2),"Z"].join(" "),"createDecisionBoxPathD"),me(vM,"question")});async function wM(t,e){var{labelStyles:r,nodeStyles:n}=Q(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await nN(t,e,sN(e)),o=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),c=-o/2,h=-l/2,u=h/2,d=[{x:c+u,y:h},{x:c,y:0},{x:c+u,y:-h},{x:-c,y:-h},{x:-c,y:h}],p=e.cssStyles,g=FI.svg(i),f=AN(e,{}),m=("handDrawn"!==e.look&&(f.roughness=0,f.fillStyle="solid"),tN(d)),y=g.path(m,f),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),p&&"handDrawn"!==e.look&&v.selectAll("path").attr("style",p),n&&"handDrawn"!==e.look&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(${-u/2},0)`),s.attr("transform",`translate(${-u/2-a.width/2-(a.x-(a.left??0))}, ${-a.height/2-(a.y-(a.top??0))})`),aN(e,v),e.intersect=function(t){return V.polygon(e,d,t)},i}var kM=b(()=>{i(),RN(),MN(),zI(),me(wM,"rect_left_inv_arrow")});function TM(t,e){e&&t.attr("style",e)}async function EM(t){let e=H(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),n=O(),i=t.label;t.label&&Ec(t.label)&&(i=await _c(t.label.replace(L.lineBreakRegex,` +`),n));var a='"+i+"";return r.html(lc(a,n)),TM(r,t.labelStyle),r.style("display","inline-block"),r.style("padding-right","1px"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}var CM,SM,_M=b(()=>{i6(),Tu(),Oc(),t(),iS(),me(TM,"applyStyle"),me(EM,"addHtmlLabel"),CM=me(async(t,e,r,n)=>{let i=t||"";if("object"==typeof i&&(i=i[0]),fc(O().flowchart.htmlLabels))return i=i.replace(/\\n|\n/g,"
"),D.info("vertexText"+i),EM({isNode:n,label:rS(i).replace(/fa[blrs]?:fa-[\w-]+/g,t=>``),labelStyle:e&&e.replace("fill:","color:")});var a,s=document.createElementNS("http://www.w3.org/2000/svg","text");s.setAttribute("style",e.replace("color:","fill:"));for(a of"string"==typeof i?i.split(/\\n|\n|/gi):Array.isArray(i)?i:[]){var o=document.createElementNS("http://www.w3.org/2000/svg","tspan");o.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),o.setAttribute("dy","1em"),o.setAttribute("x","0"),r?o.setAttribute("class","title-row"):o.setAttribute("class","row"),o.textContent=a.trim(),s.appendChild(o)}return s},"createLabel"),SM=CM});async function AM(i,a){var{labelStyles:t,nodeStyles:e}=Q(a);a.labelStyle=t;let r,s=(r=a.cssClasses?"node "+a.cssClasses:"node default",i.insert("g").attr("class",r).attr("id",a.domId||a.id)),n=s.insert("g"),o=s.insert("g").attr("class","label").attr("style",e),l=a.description,c=a.label,h=o.node().appendChild(await SM(c,a.labelStyle,!0,!0)),u={width:0,height:0};fc(O()?.flowchart?.htmlLabels)&&(t=h.children[0],i=H(h),u=t.getBoundingClientRect(),i.attr("width",u.width),i.attr("height",u.height)),D.info("Text 2",l);var t=l||[],i=h.getBBox(),d=(t=o.node().appendChild(await SM(t.join?t.join("
"):t,a.labelStyle,!0,!0))).children[0],p=H(t),d=(u=d.getBoundingClientRect(),p.attr("width",u.width),p.attr("height",u.height),(a.padding||0)/2);H(t).attr("transform","translate( "+(u.width>i.width?0:(i.width-u.width)/2)+", "+(i.height+d+5)+")"),H(h).attr("transform","translate( "+(u.width(D.debug("Rough node insert CXC",r),n),":first-child"),v=s.insert(()=>(D.debug("Rough node insert CXC",r),r),":first-child")}else v=n.insert("rect",":first-child"),x=n.insert("line"),v.attr("class","outer title-state").attr("style",e).attr("x",-u.width/2-d).attr("y",-u.height/2-d).attr("width",u.width+(a.padding||0)).attr("height",u.height+(a.padding||0)),x.attr("class","divider").attr("x1",-u.width/2-d).attr("x2",u.width/2+d).attr("y1",-u.height/2-d+i.height+d).attr("y2",-u.height/2-d+i.height+d);return aN(a,v),a.intersect=function(t){return V.rect(a,t)},s}var LM=b(()=>{i6(),Oc(),i(),_M(),RN(),MN(),zI(),Tu(),zR(),t(),me(AM,"rectWithTitle")});function NM(t,e,r,n,i,a,s){var o=(t+r)/2,l=(e+n)/2,c=Math.atan2(n-e,r-t),h=Math.sqrt(((r-t)/2/i)**2+((n-e)/2/a)**2);if(1d,":first-child");return p.attr("class","basic label-container outer-path"),o&&"handDrawn"!==e.look&&p.selectChildren("path").attr("style",o),n&&"handDrawn"!==e.look&&p.selectChildren("path").attr("style",n),aN(e,p),e.intersect=function(t){return V.polygon(e,h,t)},r}var RM=b(()=>{i(),RN(),MN(),zI(),me(NM,"generateArcPoints"),me(IM,"roundedRect")});async function MM(t,e){var{labelStyles:r,nodeStyles:n}=Q(e),{shapeSvg:r,bbox:t,label:i}=(e.labelStyle=r,await nN(t,e,sN(e))),a=e?.padding??0,s=Math.max(t.width+2*(e.padding??0),e?.width??0),o=Math.max(t.height+2*(e.padding??0),e?.height??0),l=-t.width/2-a,a=-t.height/2-a,c=e.cssStyles,h=FI.svg(r),u=AN(e,{});"handDrawn"!==e.look&&(u.roughness=0,u.fillStyle="solid");let d=[{x:l,y:a},{x:l+s+8,y:a},{x:l+s+8,y:a+o},{x:l-8,y:a+o},{x:l-8,y:a},{x:l,y:a},{x:l,y:a+o}],p=h.polygon(d.map(t=>[t.x,t.y]),u),g=r.insert(()=>p,":first-child");return g.attr("class","basic label-container").attr("style",_C(c)),n&&"handDrawn"!==e.look&&g.selectAll("path").attr("style",n),c&&"handDrawn"!==e.look&&g.selectAll("path").attr("style",n),i.attr("transform",`translate(${-s/2+4+(e.padding??0)-(t.x-(t.left??0))},${-o/2+(e.padding??0)-(t.y-(t.top??0))})`),aN(e,g),e.intersect=function(t){return V.rect(e,t)},r}var DM=b(()=>{i(),RN(),MN(),zI(),iS(),me(MM,"shadedProcess")});async function OM(t,e){var{labelStyles:r,nodeStyles:n}=Q(e),{shapeSvg:r,bbox:t,label:i}=(e.labelStyle=r,await nN(t,e,sN(e))),a=Math.max(t.width+2*(e.padding??0),e?.width??0),s=Math.max(t.height+2*(e.padding??0),e?.height??0),o=-a/2,l=-s/2,c=e.cssStyles,h=FI.svg(r),u=AN(e,{});"handDrawn"!==e.look&&(u.roughness=0,u.fillStyle="solid");let d=[{x:o,y:l},{x:o,y:l+s},{x:o+a,y:l+s},{x:o+a,y:l-s/2}],p=tN(d),g=h.path(p,u),f=r.insert(()=>g,":first-child");return f.attr("class","basic label-container"),c&&"handDrawn"!==e.look&&f.selectChildren("path").attr("style",c),n&&"handDrawn"!==e.look&&f.selectChildren("path").attr("style",n),f.attr("transform",`translate(0, ${s/4})`),i.attr("transform",`translate(${-a/2+(e.padding??0)-(t.x-(t.left??0))}, ${-s/4+(e.padding??0)-(t.y-(t.top??0))})`),aN(e,f),e.intersect=function(t){return V.polygon(e,d,t)},r}var PM=b(()=>{i(),RN(),MN(),zI(),me(OM,"slopedRect")});async function BM(t,e){return XR(t,e,{rx:0,ry:0,classes:"",labelPaddingX:e.labelPaddingX??2*(e?.padding||0),labelPaddingY:+(e?.padding||0)})}var $M=b(()=>{KR(),me(BM,"squareRect")});async function FM(t,e){var{labelStyles:r,nodeStyles:n}=Q(e),{shapeSvg:r,bbox:t}=(e.labelStyle=r,await nN(t,e,sN(e))),i=t.height+e.padding,t=t.width+i/4+e.padding,a=i/2,s=e.cssStyles,o=FI.svg(r),l=AN(e,{});"handDrawn"!==e.look&&(l.roughness=0,l.fillStyle="solid");let c=[{x:-t/2+a,y:-i/2},{x:t/2-a,y:-i/2},...rN(-t/2+a,0,a,50,90,270),{x:t/2-a,y:i/2},...rN(t/2-a,0,a,50,270,450)],h=tN(c),u=o.path(h,l),d=r.insert(()=>u,":first-child");return d.attr("class","basic label-container outer-path"),s&&"handDrawn"!==e.look&&d.selectChildren("path").attr("style",s),n&&"handDrawn"!==e.look&&d.selectChildren("path").attr("style",n),aN(e,d),e.intersect=function(t){return V.polygon(e,c,t)},r}var zM=b(()=>{i(),RN(),MN(),zI(),me(FM,"stadium")});async function GM(t,e){return XR(t,e,{rx:5,ry:5,classes:"flowchart-node"})}var UM=b(()=>{KR(),me(GM,"state")});function qM(t,e,{config:{themeVariables:r}}){var{labelStyles:n,nodeStyles:i}=Q(e),n=(e.labelStyle=n,e.cssStyles),{lineColor:r,stateBorder:a,nodeBorder:s}=r,t=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),o=FI.svg(t),l=AN(e,{});"handDrawn"!==e.look&&(l.roughness=0,l.fillStyle="solid");let c=o.circle(0,0,14,{...l,stroke:r,strokeWidth:2}),h=a??s,u=o.circle(0,0,5,{...l,fill:h,stroke:h,strokeWidth:2,fillStyle:"solid"}),d=t.insert(()=>c,":first-child");return d.insert(()=>u),n&&d.selectAll("path").attr("style",n),i&&d.selectAll("path").attr("style",i),aN(e,d),e.intersect=function(t){return V.circle(e,7,t)},t}var jM=b(()=>{zI(),RN(),MN(),i(),me(qM,"stateEnd")});function WM(t,e,{config:{themeVariables:r}}){let n=r.lineColor,i=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a;if("handDrawn"===e.look){let t=FI.svg(i).circle(0,0,14,EN(n));(a=i.insert(()=>t)).attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else(a=i.insert("circle",":first-child")).attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return aN(e,a),e.intersect=function(t){return V.circle(e,7,t)},i}var YM=b(()=>{zI(),RN(),MN(),i(),me(WM,"stateStart")});async function HM(a,s){var{labelStyles:o,nodeStyles:t}=Q(s);s.labelStyle=o;let{shapeSvg:l,bbox:e}=await nN(a,s,sN(s)),r=(s?.padding||0)/2,c=e.width+s.padding,h=e.height+s.padding,u=-e.width/2-r,d=-e.height/2-r,n=[{x:0,y:0},{x:c,y:0},{x:c,y:-h},{x:0,y:-h},{x:0,y:0},{x:-8,y:0},{x:c+8,y:0},{x:c+8,y:-h},{x:-8,y:-h},{x:-8,y:0}];if("handDrawn"===s.look){let t=FI.svg(l),e=AN(s,{}),r=t.rectangle(u-8,d,c+16,h,e),n=t.line(u,d,u,d+h,e),i=t.line(u+c,d,u+c,d+h,e);l.insert(()=>n,":first-child"),l.insert(()=>i,":first-child"),o=l.insert(()=>r,":first-child"),a=s.cssStyles,o.attr("class","basic label-container").attr("style",_C(a)),aN(s,o)}else a=YI(l,c,h,n),t&&a.attr("style",t),aN(s,a);return s.intersect=function(t){return V.polygon(s,n,t)},l}var VM=b(()=>{i(),RN(),MN(),zI(),HI(),iS(),me(HM,"subroutine")});async function XM(t,e){var{labelStyles:r,nodeStyles:n}=Q(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await nN(t,e,sN(e)),s=Math.max(a.width+2*(e.padding??0),e?.width??0),o=Math.max(a.height+2*(e.padding??0),e?.height??0),l=-s/2,c=-o/2,h=.2*o,u=.2*o,d=e.cssStyles,p=FI.svg(i),g=AN(e,{}),f=[{x:l-h/2,y:c},{x:l+s+h/2,y:c},{x:l+s+h/2,y:c+o},{x:l-h/2,y:c+o}],m=[{x:l+s-h/2,y:c+o},{x:l+s+h/2,y:c+o},{x:l+s+h/2,y:c+o-u}],y=("handDrawn"!==e.look&&(g.roughness=0,g.fillStyle="solid"),tN(f)),v=p.path(y,g),x=tN(m),b=p.path(x,{...g,fillStyle:"solid"}),w=i.insert(()=>b,":first-child");return w.insert(()=>v,":first-child"),w.attr("class","basic label-container"),d&&"handDrawn"!==e.look&&w.selectAll("path").attr("style",d),n&&"handDrawn"!==e.look&&w.selectAll("path").attr("style",n),aN(e,w),e.intersect=function(t){return V.polygon(e,f,t)},i}var KM=b(()=>{i(),MN(),zI(),RN(),me(XM,"taggedRect")});async function ZM(t,e){var{labelStyles:r,nodeStyles:n}=Q(e),{shapeSvg:r,bbox:t,label:i}=(e.labelStyle=r,await nN(t,e,sN(e))),a=Math.max(t.width+2*(e.padding??0),e?.width??0),s=Math.max(t.height+2*(e.padding??0),e?.height??0),o=s/4,l=.2*a,c=.2*s,h=s+o,u=e.cssStyles,d=FI.svg(r),p=AN(e,{});"handDrawn"!==e.look&&(p.roughness=0,p.fillStyle="solid");let g=[{x:-a/2-a/2*.1,y:h/2},...eN(-a/2-a/2*.1,h/2,a/2+a/2*.1,h/2,o,.8),{x:a/2+a/2*.1,y:-h/2},{x:-a/2-a/2*.1,y:-h/2}],f=-a/2+a/2*.1,m=-h/2-.4*c,y=[{x:f+a-l,y:1.4*(m+s)},{x:f+a,y:m+s-c},{x:f+a,y:.9*(m+s)},...eN(f+a,1.3*(m+s),f+a-l,1.5*(m+s),.03*-s,.5)],v=tN(g),x=d.path(v,p),b=tN(y),w=d.path(b,{...p,fillStyle:"solid"}),k=r.insert(()=>w,":first-child");return k.insert(()=>x,":first-child"),k.attr("class","basic label-container"),u&&"handDrawn"!==e.look&&k.selectAll("path").attr("style",u),n&&"handDrawn"!==e.look&&k.selectAll("path").attr("style",n),k.attr("transform",`translate(0,${-o/2})`),i.attr("transform",`translate(${-a/2+(e.padding??0)-(t.x-(t.left??0))},${-s/2+(e.padding??0)-o/2-(t.y-(t.top??0))})`),aN(e,k),e.intersect=function(t){return V.polygon(e,g,t)},r}var QM=b(()=>{i(),RN(),zI(),MN(),me(ZM,"taggedWaveEdgedRectangle")});async function JM(t,e){var{labelStyles:r,nodeStyles:n}=Q(e),{shapeSvg:r,bbox:t}=(e.labelStyle=r,await nN(t,e,sN(e))),i=Math.max(t.width+e.padding,e?.width||0),a=-i/2,s=-(t=Math.max(t.height+e.padding,e?.height||0))/2,o=r.insert("rect",":first-child");return o.attr("class","text").attr("style",n).attr("rx",0).attr("ry",0).attr("x",a).attr("y",s).attr("width",i).attr("height",t),aN(e,o),e.intersect=function(t){return V.rect(e,t)},r}var tD=b(()=>{i(),RN(),MN(),me(JM,"text")});async function eD(t,a){var{labelStyles:e,nodeStyles:r}=Q(a);a.labelStyle=e;let{shapeSvg:s,bbox:n,label:i,halfPadding:o}=await nN(t,a,sN(a)),l="neo"===a.look?2*o:o,c=n.height+l,h=c/2,u=h/(2.5+c/50),d=n.width+u+l,p=a.cssStyles,g;if("handDrawn"===a.look){let t=FI.svg(s),e=nD(0,0,d,c,u,h),r=iD(0,0,d,c,u,h),n=t.path(e,AN(a,{})),i=t.path(r,AN(a,{fill:"none"}));g=s.insert(()=>i,":first-child"),(g=s.insert(()=>n,":first-child")).attr("class","basic label-container"),p&&g.attr("style",p)}else e=rD(0,0,d,c,u,h),(g=s.insert("path",":first-child").attr("d",e).attr("class","basic label-container").attr("style",_C(p)).attr("style",r)).attr("class","basic label-container"),p&&g.selectAll("path").attr("style",p),r&&g.selectAll("path").attr("style",r);return g.attr("label-offset-x",u),g.attr("transform",`translate(${-d/2}, ${c/2} )`),i.attr("transform",`translate(${-n.width/2-u-(n.x-(n.left??0))}, ${-n.height/2-(n.y-(n.top??0))})`),aN(a,g),a.intersect=function(e){var r=V.rect(a,e),n=r.y-(a.y??0);if(0!=h&&(Math.abs(n)<(a.height??0)/2||Math.abs(n)==(a.height??0)/2&&Math.abs(r.x-(a.x??0))>(a.width??0)/2-u)){let t=u*u*(1-n*n/(h*h));0!=t&&(t=Math.sqrt(Math.abs(t))),t=u-t,0{i(),MN(),zI(),RN(),iS(),rD=me((t,e,r,n,i,a)=>`M${t},${e} + a${i},${a} 0,0,1 0,${-n} + l${r},0 + a${i},${a} 0,0,1 0,${n} + M${r},${-n} + a${i},${a} 0,0,0 0,${n} + l${-r},0`,"createCylinderPathD"),nD=me((t,e,r,n,i,a)=>[`M${t},`+e,`M${t+r},`+e,`a${i},${a} 0,0,0 0,`+-n,`l${-r},0`,`a${i},${a} 0,0,0 0,`+n,`l${r},0`].join(" "),"createOuterCylinderPathD"),iD=me((t,e,r,n,i,a)=>[`M${t+r/2},`+-n/2,`a${i},${a} 0,0,0 0,`+n].join(" "),"createInnerCylinderPathD"),me(eD,"tiltedCylinder")});async function sD(t,i){var{labelStyles:e,nodeStyles:r}=Q(i);i.labelStyle=e;let{shapeSvg:a,bbox:n}=await nN(t,i,sN(i)),s=n.width+i.padding,o=n.height+i.padding,l=[{x:-3*o/6,y:0},{x:s+3*o/6,y:0},{x:s,y:-o},{x:0,y:-o}],c,h=i.cssStyles;if("handDrawn"===i.look){let t=FI.svg(a),e=AN(i,{}),r=tN(l),n=t.path(r,e);c=a.insert(()=>n,":first-child").attr("transform",`translate(${-s/2}, ${o/2})`),h&&c.attr("style",h)}else c=YI(a,s,o,l);return r&&c.attr("style",r),i.width=s,i.height=o,aN(i,c),i.intersect=function(t){return V.polygon(i,l,t)},a}var oD=b(()=>{i(),RN(),MN(),zI(),HI(),me(sD,"trapezoid")});async function lD(t,e){var{labelStyles:r,nodeStyles:n}=Q(e),{shapeSvg:r,bbox:t}=(e.labelStyle=r,await nN(t,e,sN(e))),i=Math.max(60,t.width+2*(e.padding??0),e?.width??0),t=Math.max(20,t.height+2*(e.padding??0),e?.height??0),a=e.cssStyles,s=FI.svg(r),o=AN(e,{});"handDrawn"!==e.look&&(o.roughness=0,o.fillStyle="solid");let l=[{x:-i/2*.8,y:-t/2},{x:i/2*.8,y:-t/2},{x:i/2,y:-t/2*.6},{x:i/2,y:t/2},{x:-i/2,y:t/2},{x:-i/2,y:-t/2*.6}],c=tN(l),h=s.path(c,o),u=r.insert(()=>h,":first-child");return u.attr("class","basic label-container"),a&&"handDrawn"!==e.look&&u.selectChildren("path").attr("style",a),n&&"handDrawn"!==e.look&&u.selectChildren("path").attr("style",n),aN(e,u),e.intersect=function(t){return V.polygon(e,l,t)},r}var cD=b(()=>{i(),RN(),MN(),zI(),me(lD,"trapezoidalPentagon")});async function hD(t,e){var{labelStyles:r,nodeStyles:n}=Q(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await nN(t,e,sN(e)),o=fc(O().flowchart?.htmlLabels),l=a.width+(e.padding??0),c=l+a.height,h=l+a.height,u=[{x:0,y:0},{x:h,y:0},{x:h/2,y:-c}],d=e.cssStyles,p=FI.svg(i),g=AN(e,{}),f=("handDrawn"!==e.look&&(g.roughness=0,g.fillStyle="solid"),tN(u)),m=p.path(f,g),y=i.insert(()=>m,":first-child").attr("transform",`translate(${-c/2}, ${c/2})`);return d&&"handDrawn"!==e.look&&y.selectChildren("path").attr("style",d),n&&"handDrawn"!==e.look&&y.selectChildren("path").attr("style",n),e.width=l,e.height=c,aN(e,y),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${c/2-(a.height+(e.padding??0)/(o?2:1)-(a.y-(a.top??0)))})`),e.intersect=function(t){return D.info("Triangle intersect",e,u,t),V.polygon(e,u,t)},i}var uD=b(()=>{t(),i(),RN(),MN(),zI(),i(),Oc(),Tu(),me(hD,"triangle")});async function dD(t,e){var{labelStyles:r,nodeStyles:n}=Q(e),{shapeSvg:r,bbox:t,label:i}=(e.labelStyle=r,await nN(t,e,sN(e))),a=Math.max(t.width+2*(e.padding??0),e?.width??0),s=Math.max(t.height+2*(e.padding??0),e?.height??0),o=s/8,l=s+o,c=e.cssStyles,h=0<(h=70-a)?h/2:0,u=FI.svg(r),d=AN(e,{});"handDrawn"!==e.look&&(d.roughness=0,d.fillStyle="solid");let p=[{x:-a/2-h,y:l/2},...eN(-a/2-h,l/2,a/2+h,l/2,o,.8),{x:a/2+h,y:-l/2},{x:-a/2-h,y:-l/2}],g=tN(p),f=u.path(g,d),m=r.insert(()=>f,":first-child");return m.attr("class","basic label-container"),c&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",c),n&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",n),m.attr("transform",`translate(0,${-o/2})`),i.attr("transform",`translate(${-a/2+(e.padding??0)-(t.x-(t.left??0))},${-s/2+(e.padding??0)-o-(t.y-(t.top??0))})`),aN(e,m),e.intersect=function(t){return V.polygon(e,p,t)},r}var pD=b(()=>{i(),RN(),zI(),MN(),me(dD,"waveEdgedRectangle")});async function gD(t,e){var{labelStyles:r,nodeStyles:n}=Q(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await nN(t,e,sN(e)),s=Math.max(a.width+2*(e.padding??0),e?.width??0),o=Math.max(a.height+2*(e.padding??0),e?.height??0),l=s/o,c=s,h=o;c>h*l?h=c/l:c=h*l,c=Math.max(c,100),h=Math.max(h,50);var r=Math.min(.2*h,h/4),t=h+2*r,u=e.cssStyles,d=FI.svg(i),p=AN(e,{});"handDrawn"!==e.look&&(p.roughness=0,p.fillStyle="solid");let g=[{x:-c/2,y:t/2},...eN(-c/2,t/2,c/2,t/2,r,1),{x:c/2,y:-t/2},...eN(c/2,-t/2,-c/2,-t/2,r,-1)],f=tN(g),m=d.path(f,p),y=i.insert(()=>m,":first-child");return y.attr("class","basic label-container"),u&&"handDrawn"!==e.look&&y.selectAll("path").attr("style",u),n&&"handDrawn"!==e.look&&y.selectAll("path").attr("style",n),aN(e,y),e.intersect=function(t){return V.polygon(e,g,t)},i}var fD=b(()=>{i(),RN(),MN(),zI(),me(gD,"waveRectangle")});async function mD(t,e){var{labelStyles:r,nodeStyles:n}=Q(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await nN(t,e,sN(e)),o=Math.max(a.width+2*(e.padding??0),e?.width??0),l=Math.max(a.height+2*(e.padding??0),e?.height??0),c=-o/2,h=-l/2,u=e.cssStyles,d=FI.svg(i),p=AN(e,{}),g=[{x:c-5,y:h-5},{x:c-5,y:h+l},{x:c+o,y:h+l},{x:c+o,y:h-5}],f=`M${c-5},${h-5} L${c+o},${h-5} L${c+o},${h+l} L${c-5},${h+l} L${c-5},${h-5} + M${c-5},${h} L${c+o},${h} + M${c},${h-5} L${c},`+(h+l),m=("handDrawn"!==e.look&&(p.roughness=0,p.fillStyle="solid"),d.path(f,p)),y=i.insert(()=>m,":first-child");return y.attr("transform","translate(2.5, 2.5)"),y.attr("class","basic label-container"),u&&"handDrawn"!==e.look&&y.selectAll("path").attr("style",u),n&&"handDrawn"!==e.look&&y.selectAll("path").attr("style",n),s.attr("transform",`translate(${-a.width/2+2.5-(a.x-(a.left??0))}, ${-a.height/2+2.5-(a.y-(a.top??0))})`),aN(e,y),e.intersect=function(t){return V.polygon(e,g,t)},i}var yD=b(()=>{i(),MN(),zI(),RN(),me(mD,"windowPane")});async function vD(t,e){var r,n=e,i=(n.alias&&(e.label=n.alias),"handDrawn"===e.look&&(A=(A=ar().themeVariables).background,await vD(t,{...e,id:e.id+"-background",look:"default",cssStyles:["stroke: none","fill: "+A]})),ar());e.useHtmlLabels=i.htmlLabels;let o=i.er?.diagramPadding??10,l=i.er?.entityPadding??6,a=e.cssStyles,{labelStyles:s,nodeStyles:c}=Q(e);if(0===n.attributes.length&&e.label)return A={rx:0,ry:0,labelPaddingX:o,labelPaddingY:1.5*o,classes:""},EC(e.label,i)+2*A.labelPaddingXt+(e?.rowHeight??0),0)),Math.max(_.width+2*o,e?.width||0,A)),R=Math.max((z??0)+d.height,e?.height||0),M=-I/2,D=-R/2,G=(u.selectAll("g:not(:first-child)").each((t,e,r)=>{let n=H(r[e]),i=n.attr("transform"),a=0,s=0;i&&(r=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(i))&&(a=parseFloat(r[1]),s=parseFloat(r[2]),n.attr("class").includes("attribute-name")?a+=m:n.attr("class").includes("attribute-keys")?a+=m+y:n.attr("class").includes("attribute-comment")&&(a+=m+y+v)),n.attr("transform",`translate(${M+o/2+a}, ${s+D+d.height+l/2})`)}),u.select(".name").attr("transform","translate("+-d.width/2+", "+(D+l/2)+")"),L.rectangle(M,D,I,R,N)),U=u.insert(()=>G,":first-child").attr("style",a.join("")),q=ar().themeVariables,{rowEven:j,rowOdd:W,nodeBorder:Y}=q;g.push(0);for([F,C]of f.entries()){let t=(F+1)%2==0&&0!==C.yOffset,e=L.rectangle(M,d.height+D+C?.yOffset,I,C?.rowHeight,{...N,fill:t?j:W,stroke:Y});u.insert(()=>e,"g.label").attr("style",a.join("")).attr("class","row-rect-"+(t?"even":"odd"))}let O=L.line(M,d.height+D,I+M,d.height+D,N);u.insert(()=>O).attr("class","divider"),O=L.line(m+M,d.height+D,m+M,R+D,N),u.insert(()=>O).attr("class","divider"),b&&(O=L.line(m+y+M,d.height+D,m+y+M,R+D,N),u.insert(()=>O).attr("class","divider")),w&&(O=L.line(m+y+v+M,d.height+D,m+y+v+M,R+D,N),u.insert(()=>O).attr("class","divider"));for(S of g)O=L.line(M,d.height+D+S,I+M,d.height+D+S,N),u.insert(()=>O).attr("class","divider");return aN(e,U),c&&"handDrawn"!==e.look&&(t=c.split(";")?.filter(t=>t.includes("stroke"))?.map(t=>""+t).join("; "),u.selectAll("path").attr("style",t??""),u.selectAll(".row-rect-even path").attr("style",c)),e.intersect=function(t){return V.rect(e,t)},u}async function xD(t,e,r,n=0,i=0,a=[],s=""){if(t=t.insert("g").attr("class","label "+a.join(" ")).attr("transform",`translate(${n}, ${i})`).attr("style",s),e!==vc(e)&&(e=(e=vc(e)).replaceAll("<","<").replaceAll(">",">")),a=t.node().appendChild(await QL(t,e,{width:EC(e,r)+100,style:s,useHtmlLabels:r.htmlLabels},r)),e.includes("<")||e.includes(">")){let t=a.children[0];for(t.textContent=t.textContent.replaceAll("<","<").replaceAll(">",">");t.childNodes[0];)(t=t.childNodes[0]).textContent=t.textContent.replaceAll("<","<").replaceAll(">",">")}let o=a.getBBox();return fc(r.htmlLabels)&&((n=a.children[0]).style.textAlign="start",i=H(a),o=n.getBoundingClientRect(),i.attr("width",o.width),i.attr("height",o.height)),o}var bD=b(()=>{i(),RN(),MN(),zI(),KR(),rn(),JL(),Oc(),i6(),iS(),me(vD,"erBox"),me(xD,"addText")});async function wD(t,e,r,n,i=r.class.padding??12){let a=n?0:3,s=t.insert("g").attr("class",sN(e)).attr("id",e.domId||e.id),o=null,l=null,c=null,h=null,u=0,d,p=0;var g,f;o=s.insert("g").attr("class","annotation-group text"),0").length,t.innerHTML.includes("")&&(h+=t.innerHTML.split("").length-1),t.getElementsByTagName("img"));if(u){let n=""===o.replace(/]*>/g,"").trim();await Promise.all([...u].map(r=>new Promise(e=>{function t(){var t;r.style.display="flex",r.style.flexDirection="column",n?(t=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,t=5*parseInt(t,10)+"px",r.style.minWidth=t,r.style.maxWidth=t):r.style.width="100%",e(r)}me(t,"setupImage"),setTimeout(()=>{r.complete&&t()}),r.addEventListener("error",t),r.addEventListener("load",t)})))}c=t.getBoundingClientRect(),e.attr("width",c.width),e.attr("height",c.height)}else n.includes("font-weight: bolder")&&H(l).selectAll("tspan").attr("font-weight",""),h=l.children.length,u=l.children[0],""!==l.textContent&&!l.textContent.includes(">")||(u.textContent=o[0]+o.substring(1).replaceAll(">",">").replaceAll("<","<").trim()," "!==o[1])||(u.textContent=u.textContent[0]+" "+u.textContent.substring(1)),"undefined"===u.textContent&&(u.textContent=""),c=l.getBBox();return i.attr("transform","translate(0,"+(-c.height/(2*h)+r)+")"),c.height}var TD=b(()=>{i6(),rn(),i(),iS(),Tu(),JL(),Oc(),me(wD,"textHelper"),me(kD,"addText")});async function ED(e,r){let t=O(),s=t.class.padding??12,n=s,o=r.useHtmlLabels??fc(t.htmlLabels)??!0,l=r,{shapeSvg:c,bbox:i}=(l.annotations=l.annotations??[],l.members=l.members??[],l.methods=l.methods??[],await wD(e,r,t,o,n)),{labelStyles:a,nodeStyles:h}=Q(r),u=(r.labelStyle=a,r.cssStyles=l.styles||"",e=l.styles?.join(";")||h||"",r.cssStyles||(r.cssStyles=e.replaceAll("!important","").split(";")),0===l.members.length&&0===l.methods.length&&!t.class?.hideEmptyMembersBox),d=FI.svg(c),p=AN(r,{}),g=("handDrawn"!==r.look&&(p.roughness=0,p.fillStyle="solid"),i.width),f=i.height,m=(0===l.members.length&&0===l.methods.length?f+=n:0v,":first-child");x.attr("class","basic label-container");var b=x.node().getBBox(),w=(c.selectAll(".text").each((t,e,r)=>{let n=(e=H(r[e])).attr("transform"),i=(n&&(r=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(n))?parseFloat(r[2]):0)+y+s-(u?s:0===l.members.length&&0===l.methods.length?-s/2:0),a=(o||(i-=4),m);(e.attr("class").includes("label-group")||e.attr("class").includes("annotation-group"))&&(a=-e.node()?.getBBox().width/2||0,c.selectAll("text").each(function(t,e,r){"middle"===window.getComputedStyle(r[e]).textAnchor&&(a=0)})),e.attr("transform",`translate(${a}, ${i})`)}),c.select(".annotation-group").node().getBBox().height-(u?s/2:0)||0),k=c.select(".label-group").node().getBBox().height-(u?s/2:0)||0,T=c.select(".members-group").node().getBBox().height-(u?s/2:0)||0;if(0t).attr("class","divider").attr("style",e)}if(u||0t).attr("class","divider").attr("style",e)}return"handDrawn"!==l.look&&c.selectAll("path").attr("style",e),x.select(":nth-child(2)").attr("style",e),c.selectAll(".divider").select("path").attr("style",e),r.labelStyle?c.selectAll("span").attr("style",r.labelStyle):c.selectAll("span").attr("style",e),o||((w=(b=RegExp(/color\s*:\s*([^;]*)/)).exec(e))?(k=w[0].replace("color","fill"),c.selectAll("tspan").attr("style",k)):a&&(T=b.exec(a))&&(e=T[0].replace("color","fill"),c.selectAll("tspan").attr("style",e))),aN(r,x),r.intersect=function(t){return V.rect(r,t)},c}var CD=b(()=>{i(),Tu(),i6(),zI(),MN(),RN(),TD(),Oc(),me(ED,"classBox")});async function SD(t,e){var{labelStyles:r,nodeStyles:n}=Q(e);e.labelStyle=r;let i=e,a=e,s="verifyMethod"in e,o=sN(e),l=t.insert("g").attr("class",o).attr("id",e.domId??e.id),c,h=c=s?await _D(l,`<<${i.type}>>`,0,e.labelStyle):await _D(l,"<<Element>>",0,e.labelStyle),u=await _D(l,i.name,h,e.labelStyle+"; font-weight: bold;"),d=(h+=u+20,s?(r=await _D(l,i.requirementId?"ID: "+i.requirementId:"",h,e.labelStyle),h+=r,t=await _D(l,i.text?"Text: "+i.text:"",h,e.labelStyle),h+=t,r=await _D(l,i.risk?"Risk: "+i.risk:"",h,e.labelStyle),h+=r,await _D(l,i.verifyMethod?"Verification: "+i.verifyMethod:"",h,e.labelStyle)):(t=await _D(l,a.type?"Type: "+a.type:"",h,e.labelStyle),h+=t,await _D(l,a.docRef?"Doc Ref: "+a.docRef:"",h,e.labelStyle)),(l.node()?.getBBox().width??200)+20),p=(l.node()?.getBBox().height??200)+20,g=-d/2,f=-p/2,m=FI.svg(l),y=AN(e,{}),v=("handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid"),m.rectangle(g,f,d,p,y)),x=l.insert(()=>v,":first-child");if(x.attr("class","basic label-container").attr("style",n),l.selectAll(".label").each((t,e,r)=>{let n=H(r[e]),i=n.attr("transform"),a=0,s=0,o=(i&&(r=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(i))&&(a=parseFloat(r[1]),s=parseFloat(r[2])),s-p/2),l=10+g;0!==e&&1!==e||(l=a),n.attr("transform",`translate(${l}, ${20+o})`)}),h>c+u+20){let t=m.line(g,f+c+u+20,g+d,f+c+u+20,y);l.insert(()=>t).attr("style",n)}return aN(e,x),e.intersect=function(t){return V.rect(e,t)},l}async function _D(t,e,r,n=""){if(""===e)return 0;let i=t.insert("g").attr("class","label").attr("style",n),a=O(),s=a.htmlLabels??!0,o=await QL(i,Sh(rS(e)),{width:EC(e,a)+50,classes:"markdown-node-label",useHtmlLabels:s,style:n},a),l;if(s)t=o.children[0],e=H(o),l=t.getBoundingClientRect(),e.attr("width",l.width),e.attr("height",l.height);else{var c;for(c of o.children[0].children)c.textContent=c.textContent.replaceAll(">",">").replaceAll("<","<"),n&&c.setAttribute("style",n);(l=o.getBBox()).height+=6}return i.attr("transform",`translate(${-l.width/2},${-l.height/2+r})`),l.height}var AD=b(()=>{i(),RN(),MN(),zI(),iS(),Tu(),JL(),i6(),me(SD,"requirementBox"),me(_D,"addText")});async function LD(t,n,{config:e}){var{labelStyles:i,nodeStyles:r}=Q(n),i=(n.labelStyle=i||"",n.width);n.width=(n.width??200)-10;let{shapeSvg:a,bbox:s,label:o}=await nN(t,n,sN(n)),l=n.padding||10,c,h,u=("ticket"in n&&n.ticket&&e?.kanban?.ticketBaseUrl&&(c=e?.kanban?.ticketBaseUrl.replace("#TICKET#",n.ticket),h=a.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",c).attr("target","_blank")),{useHtmlLabels:n.useHtmlLabels,labelStyle:n.labelStyle||"",width:n.width,img:n.img,padding:n.padding||8,centerLabel:!1}),d,p;h?{label:d,bbox:p}=await iN(h,"ticket"in n&&n.ticket||"",u):{label:d,bbox:p}=await iN(a,"ticket"in n&&n.ticket||"",u);var{label:t,bbox:e}=await iN(a,"assigned"in n&&n.assigned||"",u),i=(n.width=i,n?.width||0),g=Math.max(p.height,e.height)/2,f=Math.max(s.height+20,n?.height||0)+g,m=-i/2,y=-f/2;o.attr("transform","translate("+(l-i/2)+", "+(-g-s.height/2)+")"),d.attr("transform","translate("+(l-i/2)+", "+(-g+s.height/2)+")"),t.attr("transform","translate("+(l+i/2-e.width-20)+", "+(-g+s.height/2)+")");let v,{rx:x,ry:b}=n,w=n.cssStyles;if("handDrawn"===n.look){let t=FI.svg(a),e=AN(n,{}),r=x||b?t.path($R(m,y,i,f,x||0),e):t.rectangle(m,y,i,f,e);(v=a.insert(()=>r,":first-child")).attr("class","basic label-container").attr("style",w||null)}else(v=a.insert("rect",":first-child")).attr("class","basic label-container __APA__").attr("style",r).attr("rx",x??5).attr("ry",b??5).attr("x",m).attr("y",y).attr("width",i).attr("height",f),(t="priority"in n&&n.priority)&&(e=a.append("line"),g=2+m,r=y+Math.floor((x??0)/2),i=y+f-Math.floor((x??0)/2),e.attr("x1",g).attr("y1",r).attr("x2",g).attr("y2",i).attr("stroke-width","4").attr("stroke",ND(t)));return aN(n,v),n.height=f,n.intersect=function(t){return V.rect(n,t)},a}var ND,ID=b(()=>{i(),RN(),zR(),MN(),zI(),ND=me(t=>{switch(t){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority"),me(LD,"kanbanItem")});async function RD(t,n){var{labelStyles:i,nodeStyles:e}=Q(n),{shapeSvg:i,bbox:t,halfPadding:r,label:a}=(n.labelStyle=i,await nN(t,n,sN(n))),s=t.width+10*r,r=t.height+8*r,o=.15*s,l=n.cssStyles,c=t.height+20,s=Math.max(s,t.width+20),r=Math.max(r,c);a.attr("transform",`translate(${-t.width/2}, ${-t.height/2})`);let h,u=`M0 0 + a${o},${o} 1 0,0 ${.25*s},${-1*r*.1} + a${o},${o} 1 0,0 ${.25*s},0 + a${o},${o} 1 0,0 ${.25*s},0 + a${o},${o} 1 0,0 ${.25*s},${.1*r} + + a${o},${o} 1 0,0 ${.15*s},${.33*r} + a${.8*o},${.8*o} 1 0,0 0,${.34*r} + a${o},${o} 1 0,0 ${-1*s*.15},${.33*r} + + a${o},${o} 1 0,0 ${-1*s*.25},${.15*r} + a${o},${o} 1 0,0 ${-1*s*.25},0 + a${o},${o} 1 0,0 ${-1*s*.25},0 + a${o},${o} 1 0,0 ${-1*s*.25},${-1*r*.15} + + a${o},${o} 1 0,0 ${-1*s*.1},${-1*r*.33} + a${.8*o},${.8*o} 1 0,0 0,${-1*r*.34} + a${o},${o} 1 0,0 ${.1*s},${-1*r*.33} + H0 V0 Z`;if("handDrawn"===n.look){let t=FI.svg(i),e=AN(n,{}),r=t.path(u,e);(h=i.insert(()=>r,":first-child")).attr("class","basic label-container").attr("style",_C(l))}else h=i.insert("path",":first-child").attr("class","basic label-container").attr("style",e).attr("d",u);return h.attr("transform",`translate(${-s/2}, ${-r/2})`),aN(n,h),n.calcIntersect=function(t,e){return V.rect(t,e)},n.intersect=function(t){return D.info("Bang intersect",n,t),V.rect(n,t)},i}var MD=b(()=>{t(),i(),RN(),MN(),zI(),iS(),me(RD,"bang")});async function DD(t,n){var{labelStyles:e,nodeStyles:r}=Q(n);n.labelStyle=e;let{shapeSvg:i,bbox:a,halfPadding:s,label:o}=await nN(t,n,sN(n)),l=a.width+2*s,c=a.height+2*s,h=.15*l,u=.25*l,d=.35*l,p=.2*l,g=n.cssStyles,f,m=`M0 0 + a${h},${h} 0 0,1 ${.25*l},${-1*l*.1} + a${d},${d} 1 0,1 ${.4*l},${-1*l*.1} + a${u},${u} 1 0,1 ${.35*l},${.2*l} + + a${h},${h} 1 0,1 ${.15*l},${.35*c} + a${p},${p} 1 0,1 ${-1*l*.15},${.65*c} + + a${u},${h} 1 0,1 ${-1*l*.25},${.15*l} + a${d},${d} 1 0,1 ${-1*l*.5},0 + a${h},${h} 1 0,1 ${-1*l*.25},${-1*l*.15} + + a${h},${h} 1 0,1 ${-1*l*.1},${-1*c*.35} + a${p},${p} 1 0,1 ${.1*l},${-1*c*.65} + H0 V0 Z`;if("handDrawn"===n.look){let t=FI.svg(i),e=AN(n,{}),r=t.path(m,e);(f=i.insert(()=>r,":first-child")).attr("class","basic label-container").attr("style",_C(g))}else f=i.insert("path",":first-child").attr("class","basic label-container").attr("style",r).attr("d",m);return o.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),f.attr("transform",`translate(${-l/2}, ${-c/2})`),aN(n,f),n.calcIntersect=function(t,e){return V.rect(t,e)},n.intersect=function(t){return D.info("Cloud intersect",n,t),V.rect(n,t)},i}var OD=b(()=>{zI(),t(),iS(),RN(),MN(),i(),me(DD,"cloud")});async function PD(t,e){var{labelStyles:r,nodeStyles:n}=Q(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:o}=await nN(t,e,sN(e)),l=a.width+8*s,c=a.height+2*s,h=` + M${-l/2} ${c/2-5} + v${10-c} + q0,-5 5,-5 + h${l-10} + q5,0 5,5 + v${c-10} + q0,5 -5,5 + h${10-l} + q-5,0 -5,-5 + Z + `,u=i.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("style",n).attr("d",h);return i.append("line").attr("class","node-line-").attr("x1",-l/2).attr("y1",c/2).attr("x2",l/2).attr("y2",c/2),o.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),i.append(()=>o.node()),aN(e,u),e.calcIntersect=function(t,e){return V.rect(t,e)},e.intersect=function(t){return V.rect(e,t)},i}var BD=b(()=>{RN(),MN(),i(),me(PD,"defaultMindmapNode")});async function $D(t,e){return QI(t,e,{padding:e.padding??0})}var FD=b(()=>{JI(),me($D,"mindmapCircle")});function zD(t){return t in qD}var GD,UD,qD,jD,WD,YD,HD,VD,XD,KD,ZD,QD,JD,tO,eO,rO=b(()=>{UI(),WI(),XI(),ZI(),JI(),rR(),aR(),lR(),uR(),pR(),vR(),bR(),kR(),ER(),SR(),AR(),NR(),RR(),DR(),PR(),FR(),UR(),jR(),YR(),VR(),QR(),tM(),rM(),iM(),cM(),uM(),pM(),fM(),yM(),bM(),kM(),LM(),RM(),DM(),PM(),$M(),zM(),UM(),jM(),YM(),VM(),KM(),QM(),tD(),aD(),oD(),cD(),uD(),pD(),fD(),yD(),bD(),CD(),AD(),ID(),MD(),OD(),BD(),FD(),GD=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:BM},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:IM},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:FM},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:HM},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:gR},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:QI},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:RD},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:DD},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:vM},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:IR},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:eM},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:JR},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:sD},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:HR},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:wR},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:JM},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:VI},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:MM},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:WM},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:qM},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:_R},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:MR},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:iR},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:oR},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:hR},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:nM},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:dD},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:LR},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:eD},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:aM},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:dR},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:xR},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:hD},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:mD},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:TR},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:lD},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:CR},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:OM},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:gM},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:dM},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:jI},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:eR},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:ZM},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:XM},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:gD},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:wM},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:hM}],UD=me(()=>{var t=[...Object.entries({state:GM,choice:KI,note:mM,rectWithTitle:AM,labelRect:ZR,iconSquare:qR,iconCircle:BR,icon:OR,iconRounded:GR,imageSquare:WR,anchor:GI,kanbanItem:LD,mindmapCircle:$D,defaultMindmapNode:PD,classBox:ED,erBox:vD,requirementBox:SD}),...GD.flatMap(e=>[e.shortName,..."aliases"in e?e.aliases:[],..."internalAliases"in e?e.internalAliases:[]].map(t=>[t,e.handler]))];return Object.fromEntries(t)},"generateShapeMap"),qD=UD(),me(zD,"isValidShape")}),nO=b(()=>{i6(),F9(),Tu(),t(),rO(),iS(),Oc(),ku(),jD=class{constructor(){this.vertexCounter=0,this.config=O(),this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=mh,this.setAccDescription=vh,this.setDiagramTitle=bh,this.getAccTitle=yh,this.getAccDescription=xh,this.getDiagramTitle=wh,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{me(this,"FlowDB")}sanitizeText(t){return L.sanitizeText(t,this.config)}lookUpDomId(t){for(var e of this.vertices.values())if(e.id===t)return e.domId;return t}addVertex(n,i,a,s,o,l,c={},t){if(n&&0!==n.trim().length){let r;var e;if(void 0!==t&&(e=t.includes(` +`)?t+` +`:`{ +`+t+` +}`,r=$9(e,{schema:B9})),t=this.edges.find(t=>t.id===n))void 0!==(e=r)?.animate&&(t.animate=e.animate),void 0!==e?.animation&&(t.animation=e.animation),void 0!==e?.curve&&(t.interpolate=e.curve);else{let t,e=this.vertices.get(n);if(void 0===e&&(e={id:n,labelType:"text",domId:"flowchart-"+n+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(n,e)),this.vertexCounter++,void 0!==i?(this.config=O(),t=this.sanitizeText(i.text.trim()),e.labelType=i.type,t.startsWith('"')&&t.endsWith('"')&&(t=t.substring(1,t.length-1)),e.text=t):void 0===e.text&&(e.text=n),void 0!==a&&(e.type=a),s?.forEach(t=>{e.styles.push(t)}),o?.forEach(t=>{e.classes.push(t)}),void 0!==l&&(e.dir=l),void 0===e.props?e.props=c:void 0!==c&&Object.assign(e.props,c),void 0!==r){if(r.shape){if(r.shape!==r.shape.toLowerCase()||r.shape.includes("_"))throw new Error(`No such shape: ${r.shape}. Shape names should be lowercase.`);if(!zD(r.shape))throw new Error(`No such shape: ${r.shape}.`);e.type=r?.shape}r?.label&&(e.text=r?.label),r?.icon&&(e.icon=r?.icon,!r.label?.trim())&&e.text===n&&(e.text=""),r?.form&&(e.form=r?.form),r?.pos&&(e.pos=r?.pos),r?.img&&(e.img=r?.img,!r.label?.trim())&&e.text===n&&(e.text=""),r?.constraint&&(e.constraint=r.constraint),r.w&&(e.assetWidth=Number(r.w)),r.h&&(e.assetHeight=Number(r.h))}}}}addSingleLink(t,e,r,n){let i={start:t,end:e,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};if(D.info("abc78 Got edge...",i),void 0!==(t=r.text)&&(i.text=this.sanitizeText(t.text.trim()),i.text.startsWith('"')&&i.text.endsWith('"')&&(i.text=i.text.substring(1,i.text.length-1)),i.labelType=t.type),void 0!==r&&(i.type=r.type,i.stroke=r.stroke,i.length=10t.id===n)?(i.id=n,i.isUserDefinedId=!0):0===(e=this.edges.filter(t=>t.start===i.start&&t.end===i.end)).length?i.id=nS(i.start,i.end,{counter:0,prefix:"L"}):i.id=nS(i.start,i.end,{counter:e.length+1,prefix:"L"}),!(this.edges.length<(this.config.maxEdges??500)))throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}. + +Initialize mermaid with maxEdges set to a higher number to allow more edges. +You cannot set this config via configuration inside the diagram as it is a secure config. +You have to call mermaid.initialize.`);D.info("Pushing edge..."),this.edges.push(i)}isLinkData(t){return null!==t&&"object"==typeof t&&"id"in t&&"string"==typeof t.id}addLink(t,e,r){var n,i=this.isLinkData(r)?r.id.replace("@",""):void 0;D.info("addLink",t,e,i);for(n of t)for(var a of e){var s=n===t[t.length-1],o=a===e[0];s&&o?this.addSingleLink(n,a,r,i):this.addSingleLink(n,a,r,void 0)}}updateLinkInterpolate(t,e){t.forEach(t=>{"default"===t?this.edges.defaultInterpolate=e:this.edges[t].interpolate=e})}updateLink(t,e){t.forEach(t=>{if("number"==typeof t&&t>=this.edges.length)throw new Error(`The index ${t} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);"default"===t?this.edges.defaultStyle=e:(this.edges[t].style=e,0<(this.edges[t]?.style?.length??0)&&!this.edges[t]?.style?.some(t=>t?.startsWith("fill"))&&this.edges[t]?.style?.push("fill:none"))})}addClass(t,e){let n=e.join().replace(/\\,/g,"§§§").replace(/,/g,";").replace(/§§§/g,",").split(";");t.split(",").forEach(t=>{let r=this.classes.get(t);void 0===r&&(r={id:t,styles:[],textStyles:[]},this.classes.set(t,r)),n?.forEach(t=>{var e;/color/.exec(t)&&(e=t.replace("fill","bgFill"),r.textStyles.push(e)),r.styles.push(t)})})}setDirection(t){this.direction=t.trim(),/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),"TD"===this.direction&&(this.direction="TB")}setClass(t,r){for(let e of t.split(",")){var n=this.vertices.get(e);n&&n.classes.push(r),(n=this.edges.find(t=>t.id===e))&&n.classes.push(r),(n=this.subGraphLookup.get(e))&&n.classes.push(r)}}setTooltip(t,e){if(void 0!==e){e=this.sanitizeText(e);for(var r of t.split(","))this.tooltips.set("gen-1"===this.version?this.lookUpDomId(r):r,e)}}setClickFun(t,e,n){let i=this.lookUpDomId(t);if("loose"===O().securityLevel&&void 0!==e){let r=[];if("string"==typeof n){r=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let e=0;e{var t=document.querySelector(`[id="${i}"]`);null!==t&&t.addEventListener("click",()=>{tS.runFunc(e,...r)},!1)}))}}setLink(t,e,r){t.split(",").forEach(t=>{void 0!==(t=this.vertices.get(t))&&(t.link=tS.formatUrl(e,this.config),t.linkTarget=r)}),this.setClass(t,"clickable")}getTooltip(t){return this.tooltips.get(t)}setClickEvent(t,e,r){t.split(",").forEach(t=>{this.setClickFun(t,e,r)}),this.setClass(t,"clickable")}bindFunctions(e){this.funs.forEach(t=>{t(e)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(t){let r=H(".mermaidTooltip");null===(r._groups||r)[0][0]&&(r=H("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),H(t).select("svg").selectAll("g.node").on("mouseover",t=>{var e=H(t.currentTarget);null!==e.attr("title")&&(t=t.currentTarget?.getBoundingClientRect(),r.transition().duration(200).style("opacity",".9"),r.text(e.attr("title")).style("left",window.scrollX+t.left+(t.right-t.left)/2+"px").style("top",window.scrollY+t.bottom+"px"),r.html(r.html().replace(/<br\/>/g,"
")),e.classed("hover",!0))}).on("mouseout",t=>{r.transition().duration(500).style("opacity",0),H(t.currentTarget).classed("hover",!1)})}clear(t="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=t,this.config=O(),fh()}setGen(t){this.version=t||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(t,e,r){let n=t.text.trim(),i=r.text;t===r&&/\s/.exec(r.text)&&(n=void 0);var a=(t=me(t=>{let r={boolean:{},number:{},string:{}},n=[],i;return{nodeList:t.filter(function(t){var e=typeof t;return t.stmt&&"dir"===t.stmt?(i=t.value,!1):""!==t.trim()&&(e in r?!r[e].hasOwnProperty(t)&&(r[e][t]=!0):!n.includes(t)&&n.push(t))}),dir:i}},"uniq")(e.flat())).nodeList,e=t.dir,t=O().flowchart??{},e=e??(t.inheritDir?this.getDirection()??O().direction??void 0:void 0);if("gen-1"===this.version)for(let t=0;t":n="arrow_point",e.startsWith("<")&&(n="double_"+n,r=r.slice(1));break;case"o":n="arrow_circle",e.startsWith("o")&&(n="double_"+n,r=r.slice(1))}let i="normal",a=r.length-1;return r.startsWith("=")&&(i="thick"),r.startsWith("~")&&(i="invisible"),(t=this.countChar(".",r))&&(i="dotted",a=t),{type:n,stroke:i,length:a}}destructLink(t,e){if(t=this.destructEndLink(t),e){if((e=this.destructStartLink(e)).stroke!==t.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===e.type)e.type=t.type;else{if(e.type!==t.type)return{type:"INVALID",stroke:"INVALID"};e.type="double_"+e.type}return"double_arrow"===e.type&&(e.type="double_arrow_point"),e.length=t.length,e}return t}exists(t,e){for(var r of t)if(r.nodes.includes(e))return!0;return!1}makeUniq(r,n){let i=[];return r.nodes.forEach((t,e)=>{this.exists(n,t)||i.push(r.nodes[e])}),{nodes:i}}getTypeFromVertex(t){if(t.img)return"imageSquare";if(t.icon)return"circle"===t.form?"iconCircle":"square"===t.form?"iconSquare":"rounded"===t.form?"iconRounded":"icon";switch(t.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return t.type}}findNode(t,e){return t.find(t=>t.id===e)}destructEdgeType(t){let e="none",r="arrow_point";switch(t){case"arrow_point":case"arrow_circle":case"arrow_cross":r=t;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":e=t.replace("double_",""),r=e}return{arrowTypeStart:e,arrowTypeEnd:r}}addNodeFromVertex(t,e,r,n,i,a){var r=r.get(t.id),n=n.get(t.id)??!1,s=this.findNode(e,t.id);s?(s.cssStyles=t.styles,s.cssCompiledStyles=this.getCompiledStyles(t.classes),s.cssClasses=t.classes.join(" ")):(s={id:t.id,label:t.text,labelStyle:"",parentId:r,padding:i.flowchart?.padding||8,cssStyles:t.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...t.classes]),cssClasses:"default "+t.classes.join(" "),dir:t.dir,domId:t.domId,look:a,link:t.link,linkTarget:t.linkTarget,tooltip:this.getTooltip(t.id),icon:t.icon,pos:t.pos,img:t.img,assetWidth:t.assetWidth,assetHeight:t.assetHeight,constraint:t.constraint},n?e.push({...s,isGroup:!0,shape:"rect"}):e.push({...s,isGroup:!1,shape:this.getTypeFromVertex(t)}))}getCompiledStyles(t){let e=[];for(var r of t)(r=this.classes.get(r))?.styles&&(e=[...e,...r.styles??[]].map(t=>t.trim())),r?.textStyles&&(e=[...e,...r.textStyles??[]].map(t=>t.trim()));return e}getData(){let a=O(),e=[],s=[],r=this.getSubGraphs(),n=new Map,i=new Map;for(let t=r.length-1;0<=t;t--){var o,l=r[t];0{this.addNodeFromVertex(t,e,n,i,a,a.look||"classic")});let h=this.getEdges();return h.forEach((t,e)=>{var{arrowTypeStart:r,arrowTypeEnd:n}=this.destructEdgeType(t.type),i=[...h.defaultStyle??[]],e=(t.style&&i.push(...t.style),{id:nS(t.start,t.end,{counter:e,prefix:"L"},t.id),isUserDefinedId:t.isUserDefinedId,start:t.start,end:t.end,type:t.type??"normal",label:t.text,labelpos:"c",thickness:t.stroke,minlen:t.length,classes:"invisible"===t?.stroke?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:"invisible"===t?.stroke||"arrow_open"===t?.type?"none":r,arrowTypeEnd:"invisible"===t?.stroke||"arrow_open"===t?.type?"none":n,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(t.classes),labelStyle:i,style:i,pattern:t.stroke,look:a.look,animate:t.animate,animation:t.animation,curve:t.interpolate||this.edges.defaultInterpolate||a.flowchart?.curve});s.push(e)}),{nodes:e,edges:s,other:{},config:a}}defaultConfig(){return Ch.flowchart}}}),iO=b(()=>{i6(),WD=me((t,e)=>{let r;return"sandbox"===e&&(r=H("#i"+t)),H("sandbox"===e?r.nodes()[0].contentDocument.body:"body").select(`[id="${t}"]`)},"getDiagramElement")}),aO=b(()=>{YD=me(({flowchart:t})=>{var e=t?.subGraphTitleMargin?.top??0;return{subGraphTitleTopMargin:e,subGraphTitleBottomMargin:t=t?.subGraphTitleMargin?.bottom??0,subGraphTitleTotalMargin:e+t}},"getSubGraphTitleMargins")}),sO=b(()=>{Tu(),Oc(),t(),aO(),i6(),zI(),JL(),IN(),_M(),zR(),MN(),HD=me(async(n,i)=>{D.info("Creating subgraph rect for ",i.id,i);let t=O(),{themeVariables:e,handDrawnSeed:a}=t,{clusterBkg:s,clusterBorder:o}=e,{labelStyles:r,nodeStyles:l,borderStyles:c,backgroundStyles:h}=Q(i),u=n.insert("g").attr("class","cluster "+i.cssClasses).attr("id",i.id).attr("data-look",i.look),d=fc(t.flowchart.htmlLabels),p=u.insert("g").attr("class","cluster-label "),g=await QL(p,i.label,{style:i.labelStyle,useHtmlLabels:d,isNode:!0}),f=g.getBBox();fc(t.flowchart.htmlLabels)&&(n=g.children[0],m=H(g),f=n.getBoundingClientRect(),m.attr("width",f.width),m.attr("height",f.height));var n=i.width<=f.width+i.padding?f.width+i.padding:i.width,m=(i.width<=f.width+i.padding?i.diff=(n-i.width)/2-i.padding:i.diff=-i.padding,i.height),y=i.x-n/2,v=i.y-m/2;D.trace("Data ",i,JSON.stringify(i));let x;if("handDrawn"===i.look){let t=FI.svg(u),e=AN(i,{roughness:.7,fill:s,stroke:o,fillWeight:3,seed:a}),r=t.path($R(y,v,n,m,0),e);(x=u.insert(()=>(D.debug("Rough node insert CXC",r),r),":first-child")).select("path:nth-child(2)").attr("style",c.join(";")),x.select("path").attr("style",h.join(";").replace("fill","stroke"))}else(x=u.insert("rect",":first-child")).attr("style",l).attr("rx",i.rx).attr("ry",i.ry).attr("x",y).attr("y",v).attr("width",n).attr("height",m);return y=YD(t).subGraphTitleTopMargin,p.attr("transform",`translate(${i.x-f.width/2}, ${i.y-i.height/2+y})`),r&&(v=p.select("span"))&&v.attr("style",r),n=x.node().getBBox(),i.offsetX=0,i.width=n.width,i.height=n.height,i.offsetY=f.height-i.padding/2,i.intersect=function(t){return TN(i,t)},{cluster:u,labelBBox:f}},"rect"),VD=me((t,e)=>{var r=(t=t.insert("g").attr("class","note-cluster").attr("id",e.id)).insert("rect",":first-child"),n=0*e.padding,i=n/2,i=(r.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-i).attr("y",e.y-e.height/2-i).attr("width",e.width+n).attr("height",e.height+n).attr("fill","none"),r.node().getBBox());return e.width=i.width,e.height=i.height,e.intersect=function(t){return TN(e,t)},{cluster:t,labelBBox:{width:0,height:0}}},"noteGroup"),XD=me(async(i,a)=>{let t=O(),{themeVariables:e,handDrawnSeed:s}=t,{altBackground:o,compositeBackground:l,compositeTitleBackground:c,nodeBorder:h}=e,u=i.insert("g").attr("class",a.cssClasses).attr("id",a.id).attr("data-id",a.id).attr("data-look",a.look),r=u.insert("g",":first-child"),n=u.insert("g").attr("class","cluster-label"),d=u.append("rect"),p=n.node().appendChild(await SM(a.label,a.labelStyle,void 0,!0)),g=p.getBBox();fc(t.flowchart.htmlLabels)&&(i=p.children[0],f=H(p),g=i.getBoundingClientRect(),f.attr("width",g.width),f.attr("height",g.height));var f=(i=0*a.padding)/2,m=(a.width<=g.width+a.padding?g.width+a.padding:a.width)+i,y=(a.width<=g.width+a.padding?a.diff=(m-a.width)/2-a.padding:a.diff=-a.padding,a.height+i),i=a.height+i-g.height-6,v=a.x-m/2,x=a.y-y/2;a.width=m;let b=a.y-a.height/2-f+g.height+2,w;if("handDrawn"===a.look){let t=a.cssClasses.includes("statediagram-cluster-alt"),e=FI.svg(u),r=a.rx||a.ry?e.path($R(v,x,m,y,10),{roughness:.7,fill:c,fillStyle:"solid",stroke:h,seed:s}):e.rectangle(v,x,m,y,{seed:s}),n=(w=u.insert(()=>r,":first-child"),e.rectangle(v,b,m,i,{fill:t?o:l,fillStyle:t?"hachure":"solid",stroke:h,seed:s}));w=u.insert(()=>r,":first-child"),d=u.insert(()=>n)}else(w=r.insert("rect",":first-child")).attr("class","outer").attr("x",v).attr("y",x).attr("width",m).attr("height",y).attr("data-look",a.look),d.attr("class","inner").attr("x",v).attr("y",b).attr("width",m).attr("height",i);return n.attr("transform",`translate(${a.x-g.width/2}, ${1+x-(fc(t.flowchart.htmlLabels)?0:3)})`),f=w.node().getBBox(),a.height=f.height,a.offsetX=0,a.offsetY=g.height-a.padding/2,a.labelBBox=g,a.intersect=function(t){return TN(a,t)},{cluster:u,labelBBox:g}},"roundedWithTitle"),KD=me(async(n,i)=>{D.info("Creating subgraph rect for ",i.id,i);let t=O(),{themeVariables:e,handDrawnSeed:a}=t,{clusterBkg:s,clusterBorder:o}=e,{labelStyles:r,nodeStyles:l,borderStyles:c,backgroundStyles:h}=Q(i),u=n.insert("g").attr("class","cluster "+i.cssClasses).attr("id",i.id).attr("data-look",i.look),d=fc(t.flowchart.htmlLabels),p=u.insert("g").attr("class","cluster-label "),g=await QL(p,i.label,{style:i.labelStyle,useHtmlLabels:d,isNode:!0,width:i.width}),f=g.getBBox();fc(t.flowchart.htmlLabels)&&(n=g.children[0],m=H(g),f=n.getBoundingClientRect(),m.attr("width",f.width),m.attr("height",f.height));var n=i.width<=f.width+i.padding?f.width+i.padding:i.width,m=(i.width<=f.width+i.padding?i.diff=(n-i.width)/2-i.padding:i.diff=-i.padding,i.height),y=i.x-n/2,v=i.y-m/2;D.trace("Data ",i,JSON.stringify(i));let x;if("handDrawn"===i.look){let t=FI.svg(u),e=AN(i,{roughness:.7,fill:s,stroke:o,fillWeight:4,seed:a}),r=t.path($R(y,v,n,m,i.rx),e);(x=u.insert(()=>(D.debug("Rough node insert CXC",r),r),":first-child")).select("path:nth-child(2)").attr("style",c.join(";")),x.select("path").attr("style",h.join(";").replace("fill","stroke"))}else(x=u.insert("rect",":first-child")).attr("style",l).attr("rx",i.rx).attr("ry",i.ry).attr("x",y).attr("y",v).attr("width",n).attr("height",m);return y=YD(t).subGraphTitleTopMargin,p.attr("transform",`translate(${i.x-f.width/2}, ${i.y-i.height/2+y})`),r&&(v=p.select("span"))&&v.attr("style",r),n=x.node().getBBox(),i.offsetX=0,i.width=n.width,i.height=n.height,i.offsetY=f.height-i.padding/2,i.intersect=function(t){return TN(i,t)},{cluster:u,labelBBox:f}},"kanbanSection"),ZD=me((e,r)=>{var{themeVariables:n,handDrawnSeed:i}=O(),n=n.nodeBorder,t=(e=e.insert("g").attr("class",r.cssClasses).attr("id",r.id).attr("data-look",r.look)).insert("g",":first-child"),a=0*r.padding,s=r.width+a,a=(r.diff=-r.padding,r.height+a),o=r.x-s/2,l=r.y-a/2;r.width=s;let c;if("handDrawn"===r.look){let t=FI.svg(e).rectangle(o,l,s,a,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:n,seed:i});c=e.insert(()=>t,":first-child")}else(c=t.insert("rect",":first-child")).attr("class","divider").attr("x",o).attr("y",l).attr("width",s).attr("height",a).attr("data-look",r.look);return n=c.node().getBBox(),r.height=n.height,r.offsetX=0,r.offsetY=0,r.intersect=function(t){return TN(r,t)},{cluster:e,labelBBox:{}}},"divider"),QD={rect:HD,squareRect:HD,roundedWithTitle:XD,noteGroup:VD,divider:ZD,kanbanSection:KD},JD=new Map,tO=me(async(t,e)=>{var r=e.shape||"rect",r=await QD[r](t,e);return JD.set(e.id,r),r},"insertCluster"),eO=me(()=>{JD=new Map},"clear")});function oO(t,e){if(void 0===t||void 0===e)return{angle:0,deltaX:0,deltaY:0};t=cO(t),e=cO(e);var[t,r]=[t.x,t.y],[e,n]=[e.x,e.y],e=e-t,t=n-r;return{angle:Math.atan(t/e),deltaX:e,deltaY:t}}var lO,cO,hO,uO,dO,pO,gO=b(()=>{lO={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:4},me(oO,"calculateDeltaAndAngle"),cO=me(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),hO=me(c=>({x:me(function(t,e,r){let n=0,i=cO(r[0]).x{t(),uO=me((t,e,r,n,i,a)=>{e.arrowTypeStart&&pO(t,"start",e.arrowTypeStart,r,n,i,a),e.arrowTypeEnd&&pO(t,"end",e.arrowTypeEnd,r,n,i,a)},"addEdgeMarkers"),dO={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},pO=me((t,e,r,n,i,a,s)=>{let o=dO[r],l,c;o?(i=i+`_${a}-`+o.type+("start"===e?"Start":"End"),s&&""!==s.trim()?(a=i+"_"+s.replace(/[^\dA-Za-z]/g,"_"),document.getElementById(a)||(l=document.getElementById(i))&&((c=l.cloneNode(!0)).id=a,c.querySelectorAll("path, circle, line").forEach(t=>{t.setAttribute("stroke",s),o.fill&&t.setAttribute("fill",s)}),l.parentNode?.appendChild(c)),t.attr("marker-"+e,`url(${n}#${a})`)):t.attr("marker-"+e,`url(${n}#${i})`)):D.warn("Unknown arrow type: "+r)},"addEdgeMarker")});function mO(t,e){O().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}function yO(e){var r=[],n=[];for(let t=1;t{Tu(),Oc(),t(),JL(),iS(),gO(),aO(),i6(),zI(),_M(),fO(),MN(),vO=new Map,xO=new Map,bO=me(()=>{vO.clear(),xO.clear()},"clear"),wO=me(t=>t?t.reduce((t,e)=>t+";"+e,""):"","getLabelStyles"),kO=me(async(t,e)=>{var r,n=fc(O().flowchart.htmlLabels),i=await QL(t,e.label,{style:wO(e.labelStyle),useHtmlLabels:n,addSvgBackground:!0,isNode:!1}),a=(D.info("abc82",e,e.labelType),t.insert("g").attr("class","edgeLabel")),s=a.insert("g").attr("class","label");s.node().appendChild(i);let o=i.getBBox();n&&(n=i.children[0],r=H(i),o=n.getBoundingClientRect(),r.attr("width",o.width),r.attr("height",o.height)),s.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),vO.set(e.id,a),e.width=o.width,e.height=o.height;let l;return e.startLabelLeft&&(n=await SM(e.startLabelLeft,wO(e.labelStyle)),s=(r=t.insert("g").attr("class","edgeTerminals")).insert("g").attr("class","inner"),l=s.node().appendChild(n),a=n.getBBox(),s.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),xO.get(e.id)||xO.set(e.id,{}),xO.get(e.id).startLeft=r,mO(l,e.startLabelLeft)),e.startLabelRight&&(n=await SM(e.startLabelRight,wO(e.labelStyle)),a=(s=t.insert("g").attr("class","edgeTerminals")).insert("g").attr("class","inner"),l=s.node().appendChild(n),a.node().appendChild(n),r=n.getBBox(),a.attr("transform","translate("+-r.width/2+", "+-r.height/2+")"),xO.get(e.id)||xO.set(e.id,{}),xO.get(e.id).startRight=s,mO(l,e.startLabelRight)),e.endLabelLeft&&(n=await SM(e.endLabelLeft,wO(e.labelStyle)),r=(a=t.insert("g").attr("class","edgeTerminals")).insert("g").attr("class","inner"),l=r.node().appendChild(n),s=n.getBBox(),r.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),a.node().appendChild(n),xO.get(e.id)||xO.set(e.id,{}),xO.get(e.id).endLeft=a,mO(l,e.endLabelLeft)),e.endLabelRight&&(r=await SM(e.endLabelRight,wO(e.labelStyle)),n=(s=t.insert("g").attr("class","edgeTerminals")).insert("g").attr("class","inner"),l=n.node().appendChild(r),a=r.getBBox(),n.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),s.node().appendChild(r),xO.get(e.id)||xO.set(e.id,{}),xO.get(e.id).endRight=s,mO(l,e.endLabelRight)),i},"insertEdgeLabel"),me(mO,"setTerminalWidth"),TO=me((n,i)=>{D.debug("Moving label abc88 ",n.id,n.label,vO.get(n.id),i);var a,s=i.updatedPath||i.originalPath,o=O(),o=YD(o).subGraphTitleTotalMargin;if(n.label){let t=vO.get(n.id),e=n.x,r=n.y;s&&(a=tS.calcLabelPosition(s),D.debug("Moving label "+n.label+" from (",e,",",r,") to (",a.x,",",a.y,") abc88"),i.updatedPath)&&(e=a.x,r=a.y),t.attr("transform",`translate(${e}, ${r+o/2})`)}if(n.startLabelLeft){let t=xO.get(n.id).startLeft,e=n.x,r=n.y;s&&(i=tS.calcTerminalLabelPosition(n.arrowTypeStart?10:0,"start_left",s),e=i.x,r=i.y),t.attr("transform",`translate(${e}, ${r})`)}if(n.startLabelRight){let t=xO.get(n.id).startRight,e=n.x,r=n.y;s&&(a=tS.calcTerminalLabelPosition(n.arrowTypeStart?10:0,"start_right",s),e=a.x,r=a.y),t.attr("transform",`translate(${e}, ${r})`)}if(n.endLabelLeft){let t=xO.get(n.id).endLeft,e=n.x,r=n.y;s&&(o=tS.calcTerminalLabelPosition(n.arrowTypeEnd?10:0,"end_left",s),e=o.x,r=o.y),t.attr("transform",`translate(${e}, ${r})`)}if(n.endLabelRight){let t=xO.get(n.id).endRight,e=n.x,r=n.y;s&&(i=tS.calcTerminalLabelPosition(n.arrowTypeEnd?10:0,"end_right",s),e=i.x,r=i.y),t.attr("transform",`translate(${e}, ${r})`)}},"positionEdgeLabel"),EO=me((t,e)=>{var r=t.x,n=t.y,r=Math.abs(e.x-r),e=Math.abs(e.y-n);return t.width/2<=r||t.height/2<=e},"outsideNode"),CO=me((t,n,i)=>{D.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(n)} + insidePoint : ${JSON.stringify(i)} + node : x:${t.x} y:${t.y} w:${t.width} h:`+t.height);let a=t.x,e=t.y,r=Math.abs(a-i.x),s=t.width/2,o=i.xMath.abs(a-n.x)*l)return t=i.y{D.warn("abc88 cutPathAtIntersect",t,n);let i=[],a=t[0],s=!1;return t.forEach(t=>{if(D.info("abc88 checking point",t,n),EO(n,t)||s)D.warn("abc88 outside",t,a),a=t,s||i.push(t);else{let e=CO(n,a,t),r=(D.debug("abc88 inside",t,a,e),D.debug("abc88 intersection",e,n),!1);i.forEach(t=>{r=r||t.x===e.x&&t.y===e.y}),i.some(t=>t.x===e.x&&t.y===e.y)?D.warn("abc88 no intersect",e,i):i.push(e),s=!0}}),D.debug("returning points",i),i},"cutPathAtIntersect"),me(yO,"extractCornerPoints"),_O=me(function(t,e,r){var n=e.x-t.x,t=e.y-t.y,r=r/Math.sqrt(n*n+t*t);return{x:e.x-r*n,y:e.y-r*t}},"findAdjacentPoint"),AO=me(function(n){var t=yO(n).cornerPointPositions,i=[];for(let r=0;r!Number.isNaN(t.y)),r=AO(r);let g=v3;switch(g=Z5,i.curve){case"linear":g=Z5;break;case"basis":g=v3;break;case"cardinal":g=I3;break;case"bumpX":g=h3;break;case"bumpY":g=u3;break;case"catmullRom":g=G3;break;case"monotoneX":g=aw;break;case"monotoneY":g=sw;break;case"natural":g=hw;break;case"step":g=pw;break;case"stepAfter":g=fw;break;case"stepBefore":g=gw;break;default:g=v3}let{x:f,y:m}=hO(i),y=r3().x(f).y(m).curve(g),v;switch(i.thickness){case"normal":v="edge-thickness-normal";break;case"thick":v="edge-thickness-thick";break;case"invisible":v="edge-thickness-invisible";break;default:v="edge-thickness-normal"}switch(i.pattern){case"solid":v+=" edge-pattern-solid";break;case"dotted":v+=" edge-pattern-dotted";break;case"dashed":v+=" edge-pattern-dashed";break;default:v+=" edge-pattern-solid"}let x,b=y(r),w=Array.isArray(i.style)?i.style:i.style?[i.style]:[],k=w.find(t=>t?.startsWith("stroke:"));if("handDrawn"===i.look)a=FI.svg(n),Object.assign([],r),t=a.path(b,{roughness:.3,seed:o}),v+=" transition",r=(x=H(t).select("path").attr("id",i.id).attr("class"," "+v+(i.classes?" "+i.classes:"")).attr("style",w?w.reduce((t,e)=>t+";"+e,""):"")).attr("d"),x.attr("d",r),n.node().appendChild(x.node());else{let t=p.join(";"),e=w?w.reduce((t,e)=>t+e+";",""):"",r="";i.animate&&(r=" edge-animation-fast"),i.animation&&(r=" edge-animation-"+i.animation),a=t?t+";"+e+";":e,x=n.append("path").attr("d",b).attr("id",i.id).attr("class"," "+v+(i.classes?" "+i.classes:"")+(r??"")).attr("style",a),k=a.match(/stroke:([^;]+)/)?.[1]}let T="";return(O().flowchart.arrowMarkerAbsolute||O().state.arrowMarkerAbsolute)&&(T=gc(!0)),D.info("arrowTypeStart",i.arrowTypeStart),D.info("arrowTypeEnd",i.arrowTypeEnd),uO(x,i,T,s,e,k),t=Math.floor(l.length/2),r=l[t],n={},(c=!tS.isLabelCoordinateInPath(r,x.attr("d"))||c)&&(n.updatedPath=l),n.originalPath=i.points,n},"insertEdge")}),XO=b(()=>{t(),NO=me((e,t,r,n)=>{t.forEach(t=>{YO[t](e,r,n)})},"insertMarkers"),IO=me((t,e,r)=>{D.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),RO=me((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).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"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).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")},"composition"),MO=me((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).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"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).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"),DO=me((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).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"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).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")},"dependency"),OO=me((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),PO=me((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).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"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).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")},"point"),BO=me((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).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"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).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")},"circle"),$O=me((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).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"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).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")},"cross"),FO=me((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),zO=me((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneStart").attr("class","marker onlyOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneEnd").attr("class","marker onlyOne "+e).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),GO=me((t,e,r)=>{var n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneStart").attr("class","marker zeroOrOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("d","M9,0 L9,18"),(n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+e).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),UO=me((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreStart").attr("class","marker oneOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreEnd").attr("class","marker oneOrMore "+e).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),qO=me((t,e,r)=>{var n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),(n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+e).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),jO=me((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0 + L20,10 + M20,10 + L0,20`)},"requirement_arrow"),WO=me((t,e,r)=>{(t=t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g")).append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),t.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),t.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),YO={extension:IO,composition:RO,aggregation:MO,dependency:DO,lollipop:OO,point:PO,circle:BO,cross:$O,barb:FO,only_one:zO,zero_or_one:GO,one_or_more:UO,zero_or_more:qO,requirement_arrow:jO,requirement_contains:WO},HO=NO});async function KO(e,r,n){let i,a;"rect"===r.shape&&(r.rx&&r.ry?r.shape="roundedRect":r.shape="squareRect");var s=r.shape?qD[r.shape]:void 0;if(!s)throw new Error(`No such shape: ${r.shape}. Please check your syntax.`);if(r.link){let t;"sandbox"===n.config.securityLevel?t="_top":r.linkTarget&&(t=r.linkTarget||"_blank"),i=e.insert("svg:a").attr("xlink:href",r.link).attr("target",t??null),a=await s(i,r,n)}else a=await s(e,r,n),i=a;return r.tooltip&&a.attr("title",r.tooltip),ZO.set(r.id,i),r.haveCallback&&i.attr("class",i.attr("class")+" clickable"),i}var ZO,QO,JO,tP,eP,rP=b(()=>{t(),rO(),ZO=new Map,me(KO,"insertNode"),QO=me((t,e)=>{ZO.set(e.id,t)},"setNodeElem"),JO=me(()=>{ZO.clear()},"clear"),tP=me(t=>{var e=ZO.get(t.id),r=(D.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")"),t.diff||0);return t.clusterNode?e.attr("transform","translate("+(t.x+r-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),r},"positionNode")}),nP=b(()=>{rn(),Oc(),t(),sO(),VO(),XO(),rP(),i(),iS(),eP={common:L,getConfig:ar,insertCluster:tO,insertEdge:LO,insertEdgeLabel:kO,insertMarkers:HO,insertNode:KO,interpolateToCurve:fC,labelHelper:nN,log:D,positionEdgeLabel:TO}});function iP(t){return"symbol"==typeof t||V7(t)&&"[object Symbol]"==S6(t)}var aP,sP=b(()=>{_6(),X7(),me(iP,"isSymbol"),aP=iP});function oP(t,e){for(var r=-1,n=null==t?0:t.length,i=Array(n);++r{me(oP,"arrayMap"),lP=oP});function hP(t){var e;return"string"==typeof t?t:n8(t)?lP(t,hP)+"":aP(t)?pP?pP.call(t):"":"0"==(e=t+"")&&1/t==-uP?"-0":e}var uP,dP,pP,gP,fP=b(()=>{u6(),cP(),s8(),sP(),uP=1/0,dP=Jw?Jw.prototype:void 0,pP=dP?dP.toString:void 0,me(hP,"baseToString"),gP=hP});function mP(t){for(var e=t.length;e--&&yP.test(t.charAt(e)););return e}var yP,vP,xP=b(()=>{yP=/\s/,me(mP,"trimmedEndIndex"),vP=mP});function bP(t){return t&&t.slice(0,vP(t)+1).replace(wP,"")}var wP,kP,TP=b(()=>{xP(),wP=/^\s+/,me(bP,"baseTrim"),kP=bP});function EP(t){if("number"==typeof t)return t;if(aP(t))return CP;if(L6(t)&&(e="function"==typeof t.valueOf?t.valueOf():t,t=L6(e)?e+"":e),"string"!=typeof t)return 0===t?t:+t;t=kP(t);var e=_P.test(t);return e||AP.test(t)?LP(t.slice(2),e?2:8):SP.test(t)?CP:+t}var CP,SP,_P,AP,LP,NP,IP=b(()=>{TP(),N6(),sP(),CP=NaN,SP=/^[-+]0x[0-9a-f]+$/i,_P=/^0b[01]+$/i,AP=/^0o[0-7]+$/i,LP=parseInt,me(EP,"toNumber"),NP=EP});function RP(t){return t?(t=NP(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}var MP,DP=b(()=>{IP(),me(RP,"toFinite"),MP=RP});function OP(t){var e=(t=MP(t))%1;return t==t?e?t-e:t:0}var PP,BP,$P,FP=b(()=>{DP(),me(OP,"toInteger"),PP=OP}),zP=b(()=>{ok(),h6(),BP=ik(Zw,"WeakMap"),$P=BP});function GP(){}var UP,qP=b(()=>{me(GP,"noop"),UP=GP});function jP(t,e){for(var r=-1,n=null==t?0:t.length;++r{me(jP,"arrayEach"),WP=jP});function HP(t,e,r,n){for(var i=t.length,a=r+(n?1:-1);n?a--:++a{me(HP,"baseFindIndex"),VP=HP});function KP(t){return t!=t}var ZP,QP=b(()=>{me(KP,"baseIsNaN"),ZP=KP});function JP(t,e,r){for(var n=r-1,i=t.length;++n{me(JP,"strictIndexOf"),tB=JP});function rB(t,e,r){return e==e?tB(t,e,r):VP(t,ZP,r)}var nB,iB=b(()=>{XP(),QP(),eB(),me(rB,"baseIndexOf"),nB=rB});function aB(t,e){return!(null==t||!t.length)&&-1{iB(),me(aB,"arrayIncludes"),sB=aB}),hB=b(()=>{$7(),oB=O7(Object.keys,Object),lB=oB});function uB(t){if(!U7(t))return lB(t);var e,r=[];for(e in Object(t))pB.call(t,e)&&"constructor"!=e&&r.push(e);return r}var dB,pB,gB,fB=b(()=>{q7(),hB(),dB=Object.prototype,pB=dB.hasOwnProperty,me(uB,"baseKeys"),gB=uB});function mB(t){return(u8(t)?pE:gB)(t)}var yB,vB,xB,bB,wB=b(()=>{gE(),fB(),d8(),me(mB,"keys"),yB=mB}),kB=b(()=>{J8(),rE(),pC(),d8(),q7(),wB(),xB=Object.prototype,vB=xB.hasOwnProperty,xB=hC(function(t,e){if(U7(e)||u8(e))eE(e,yB(e),t);else for(var r in e)vB.call(e,r)&&Q8(t,r,e[r])}),bB=xB});function TB(t,e){var r;return!n8(t)&&(!("number"!=(r=typeof t)&&"symbol"!=r&&"boolean"!=r&&null!=t&&!aP(t))||CB.test(t)||!EB.test(t)||null!=e&&t in Object(e))}var EB,CB,SB,_B=b(()=>{s8(),sP(),EB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,CB=/^\w*$/,me(TB,"isKey"),SB=TB});function AB(t){var e=(t=RT(t,function(t){return 500===e.size&&e.clear(),t})).cache;return t}var LB,NB,IB,RB,MB,DB=b(()=>{MT(),me(AB,"memoizeCapped"),LB=AB}),OB=b(()=>{DB(),NB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,IB=/\\(\\)?/g,RB=LB(function(t){var i=[];return 46===t.charCodeAt(0)&&i.push(""),t.replace(NB,function(t,e,r,n){i.push(r?n.replace(IB,"$1"):e||t)}),i}),MB=RB});function PB(t){return null==t?"":gP(t)}var BB,$B=b(()=>{fP(),me(PB,"toString"),BB=PB});function FB(t,e){return n8(t)?t:SB(t,e)?[t]:MB(BB(t))}var zB,GB=b(()=>{s8(),_B(),OB(),$B(),me(FB,"castPath"),zB=FB});function UB(t){var e;return"string"==typeof t||aP(t)?t:"0"==(e=t+"")&&1/t==-1/0?"-0":e}var qB,jB=b(()=>{sP(),me(UB,"toKey"),qB=UB});function WB(t,e){for(var r=0,n=(e=zB(e,t)).length;null!=t&&r{GB(),jB(),me(WB,"baseGet"),YB=WB});function VB(t,e,r){return void 0===(t=null==t?void 0:YB(t,e))?r:t}var XB,KB=b(()=>{HB(),me(VB,"get"),XB=VB});function ZB(t,e){for(var r=-1,n=e.length,i=t.length;++r{me(ZB,"arrayPush"),QB=ZB});function t$(t){return n8(t)||e8(t)||!!(e$&&t&&t[e$])}var e$,r$,n$=b(()=>{u6(),a8(),s8(),e$=Jw?Jw.isConcatSpreadable:void 0,me(t$,"isFlattenable"),r$=t$});function i$(t,e,r,n,i){var a=-1,s=t.length;for(r=r||r$,i=i||[];++a{JB(),n$(),me(i$,"baseFlatten"),a$=i$});function o$(t){return null!=t&&t.length?a$(t,1):[]}var l$,c$=b(()=>{s$(),me(o$,"flatten"),l$=o$});function h$(t){return tC(qE(t,void 0,l$),t+"")}var u$,d$=b(()=>{c$(),jE(),rC(),me(h$,"flatRest"),u$=h$});function p$(t,e,r){var n=-1,i=t.length;(r=i>>0,e>>>=0;for(var a=Array(i);++n{me(p$,"baseSlice"),g$=p$});function m$(t){return y$.test(t)}var y$,v$,x$=b(()=>{y$=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),me(m$,"hasUnicode"),v$=m$});function b$(t,e,r,n){var i=-1,a=null==t?0:t.length;for(n&&a&&(r=t[++i]);++i{me(b$,"arrayReduce"),w$=b$});function T$(t,e){return t&&eE(e,yB(e),t)}var E$,C$=b(()=>{rE(),wB(),me(T$,"baseAssign"),E$=T$});function S$(t,e){return t&&eE(e,EE(e),t)}var _$,A$=b(()=>{rE(),CE(),me(S$,"baseAssignIn"),_$=S$});function L$(t,e){for(var r=-1,n=null==t?0:t.length,i=0,a=[];++r{me(L$,"arrayFilter"),N$=L$});function R$(){return[]}var M$,D$,O$,P$,B$,$$=b(()=>{me(R$,"stubArray"),M$=R$}),F$=b(()=>{I$(),$$(),D$=Object.prototype,O$=D$.propertyIsEnumerable,B$=(P$=Object.getOwnPropertySymbols)?function(e){return null==e?[]:(e=Object(e),N$(P$(e),function(t){return O$.call(e,t)}))}:M$});function z$(t,e){return eE(t,B$(t),e)}var G$,U$,q$,j$=b(()=>{rE(),F$(),me(z$,"copySymbols"),G$=z$}),W$=b(()=>{JB(),F7(),F$(),$$(),U$=Object.getOwnPropertySymbols,q$=U$?function(t){for(var e=[];t;)QB(e,B$(t)),t=B7(t);return e}:M$});function Y$(t,e){return eE(t,q$(t),e)}var H$,V$=b(()=>{rE(),W$(),me(Y$,"copySymbolsIn"),H$=Y$});function X$(t,e,r){return e=e(t),n8(t)?e:QB(e,r(t))}var K$,Z$=b(()=>{JB(),s8(),me(X$,"baseGetAllKeys"),K$=X$});function Q$(t){return K$(t,yB,B$)}var J$,tF=b(()=>{Z$(),F$(),wB(),me(Q$,"getAllKeys"),J$=Q$});function eF(t){return K$(t,EE,q$)}var rF,nF,iF,aF,sF,oF,lF,cF,hF,uF,dF,pF,gF,fF,mF,yF,vF,xF,bF,wF=b(()=>{Z$(),W$(),CE(),me(eF,"getAllKeysIn"),rF=eF}),kF=b(()=>{ok(),h6(),nF=ik(Zw,"DataView"),iF=nF}),TF=b(()=>{ok(),h6(),aF=ik(Zw,"Promise"),sF=aF}),EF=b(()=>{ok(),h6(),oF=ik(Zw,"Set"),lF=oF}),CF=b(()=>{kF(),aT(),TF(),EF(),zP(),_6(),W6(),cF="[object Map]",hF="[object Promise]",uF="[object Set]",dF="[object WeakMap]",pF="[object DataView]",gF=j6(iF),fF=j6(nT),mF=j6(sF),yF=j6(lF),vF=j6($P),xF=S6,(iF&&xF(new iF(new ArrayBuffer(1)))!=pF||nT&&xF(new nT)!=cF||sF&&xF(sF.resolve())!=hF||lF&&xF(new lF)!=uF||$P&&xF(new $P)!=dF)&&(xF=me(function(t){var e=S6(t);if(t=(t="[object Object]"==e?t.constructor:void 0)?j6(t):"")switch(t){case gF:return pF;case fF:return cF;case mF:return hF;case yF:return uF;case vF:return dF}return e},"getTag")),bF=xF});function SF(t){var e=t.length,r=new t.constructor(e);return e&&"string"==typeof t[0]&&AF.call(t,"index")&&(r.index=t.index,r.input=t.input),r}var _F,AF,LF,NF=b(()=>{_F=Object.prototype,AF=_F.hasOwnProperty,me(SF,"initCloneArray"),LF=SF});function IF(t,e){return e=e?T7(t.buffer):t.buffer,new t.constructor(e,t.byteOffset,t.byteLength)}var RF,MF=b(()=>{E7(),me(IF,"cloneDataView"),RF=IF});function DF(t){var e=new t.constructor(t.source,OF.exec(t));return e.lastIndex=t.lastIndex,e}var OF,PF,BF=b(()=>{OF=/\w*$/,me(DF,"cloneRegExp"),PF=DF});function $F(t){return zF?Object(zF.call(t)):{}}var FF,zF,GF,UF=b(()=>{u6(),FF=Jw?Jw.prototype:void 0,zF=FF?FF.valueOf:void 0,me($F,"cloneSymbol"),GF=$F});function qF(t,e,r){var n=t.constructor;switch(e){case"[object ArrayBuffer]":return T7(t);case"[object Boolean]":case"[object Date]":return new n(+t);case"[object DataView]":return RF(t,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return S7(t,r);case"[object Map]":return new n;case"[object Number]":case"[object String]":return new n(t);case"[object RegExp]":return PF(t);case"[object Set]":return new n;case"[object Symbol]":return GF(t)}}var jF,WF=b(()=>{E7(),MF(),BF(),UF(),_7(),me(qF,"initCloneByTag"),jF=qF});function YF(t){return V7(t)&&"[object Map]"==bF(t)}var HF,VF,XF,KF=b(()=>{CF(),X7(),me(YF,"baseIsMap"),HF=YF}),ZF=b(()=>{KF(),q8(),j8(),VF=(VF=z8&&z8.isMap)?P8(VF):HF,XF=VF});function QF(t){return V7(t)&&"[object Set]"==bF(t)}var JF,tz,ez,rz=b(()=>{CF(),X7(),me(QF,"baseIsSet"),JF=QF}),nz=b(()=>{rz(),q8(),j8(),tz=(tz=z8&&z8.isSet)?P8(tz):JF,ez=tz});function iz(r,n,i,t,e,a){var s,o=n&az,l=n&sz,c=n&oz;if(void 0===(s=i?e?i(r,t,e,a):i(r):s)){if(!L6(r))return r;if(t=n8(r)){if(s=LF(r),!o)return L7(r,s)}else{var h=bF(r),u=h==cz||h==hz;if(b8(r))return y7(r,o);if(h==uz||h==lz||u&&!e){if(s=l||u?{}:W7(r),!o)return l?H$(r,_$(s,r)):G$(r,E$(s,r))}else{if(!dz[h])return e?r:{};s=jF(r,h,o)}}if(u=(a=a||new KT).get(r))return u;a.set(r,s),ez(r)?r.forEach(function(t){s.add(iz(t,n,i,t,r,a))}):XF(r)&&r.forEach(function(t,e){s.set(e,iz(t,n,i,e,r,a))});var d=t?void 0:(c?l?rF:J$:l?EE:yB)(r);WP(d||r,function(t,e){d&&(t=r[e=t]),Q8(s,e,iz(t,n,i,e,r,a))})}return s}var az,sz,oz,lz,cz,hz,uz,dz,pz,gz=b(()=>{JT(),YP(),J8(),C$(),A$(),b7(),R7(),j$(),V$(),tF(),wF(),CF(),NF(),WF(),Y7(),s8(),k8(),ZF(),N6(),nz(),wB(),CE(),az=1,sz=2,oz=4,cz="[object Function]",hz="[object GeneratorFunction]",uz="[object Object]",(dz={})[lz="[object Arguments]"]=dz["[object Array]"]=dz["[object ArrayBuffer]"]=dz["[object DataView]"]=dz["[object Boolean]"]=dz["[object Date]"]=dz["[object Float32Array]"]=dz["[object Float64Array]"]=dz["[object Int8Array]"]=dz["[object Int16Array]"]=dz["[object Int32Array]"]=dz["[object Map]"]=dz["[object Number]"]=dz[uz]=dz["[object RegExp]"]=dz["[object Set]"]=dz["[object String]"]=dz["[object Symbol]"]=dz["[object Uint8Array]"]=dz["[object Uint8ClampedArray]"]=dz["[object Uint16Array]"]=dz["[object Uint32Array]"]=!0,dz["[object Error]"]=dz[cz]=dz["[object WeakMap]"]=!1,me(iz,"baseClone"),pz=iz});function fz(t){return pz(t,4)}var mz,yz=b(()=>{gz(),me(fz,"clone"),mz=fz});function vz(t){return pz(t,5)}var xz,bz=b(()=>{gz(),me(vz,"cloneDeep"),xz=vz});function wz(t){for(var e=-1,r=null==t?0:t.length,n=0,i=[];++e{me(wz,"compact"),kz=wz});function Ez(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}var Cz,Sz=b(()=>{me(Ez,"setCacheAdd"),Cz=Ez});function _z(t){return this.__data__.has(t)}var Az,Lz=b(()=>{me(_z,"setCacheHas"),Az=_z});function Nz(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new AT;++e{LT(),Sz(),Lz(),me(Nz,"SetCache"),Nz.prototype.add=Nz.prototype.push=Cz,Nz.prototype.has=Az,Iz=Nz});function Mz(t,e){for(var r=-1,n=null==t?0:t.length;++r{me(Mz,"arraySome"),Dz=Mz});function Pz(t,e){return t.has(e)}var Bz,$z=b(()=>{me(Pz,"cacheHas"),Bz=Pz});function Fz(t,e,r,n,i,a){var s=1&r,o=t.length;if(o!=(l=e.length)&&!(s&&o{Rz(),Oz(),$z(),me(Fz,"equalArrays"),zz=Fz});function Uz(t){var r=-1,n=Array(t.size);return t.forEach(function(t,e){n[++r]=[e,t]}),n}var qz,jz=b(()=>{me(Uz,"mapToArray"),qz=Uz});function Wz(t){var e=-1,r=Array(t.size);return t.forEach(function(t){r[++e]=t}),r}var Yz,Hz=b(()=>{me(Wz,"setToArray"),Yz=Wz});function Vz(t,e,r,n,i,a,s){switch(r){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!a(new x7(t),new x7(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return Ok(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var o=qz;case"[object Set]":var l,o=o||Yz;return!!(t.size==e.size||1&n)&&((l=s.get(t))?l==e:(n|=2,s.set(t,e),l=zz(o(t),o(e),n,i,a,s),s.delete(t),l));case"[object Symbol]":if(Kz)return Kz.call(t)==Kz.call(e)}return!1}var Xz,Kz,Zz,Qz=b(()=>{u6(),w7(),Pk(),Gz(),jz(),Hz(),Xz=Jw?Jw.prototype:void 0,Kz=Xz?Xz.valueOf:void 0,me(Vz,"equalByTag"),Zz=Vz});function Jz(t,e,r,n,i,a){var s=1&r,o=J$(t),l=o.length;if(l!=J$(e).length&&!s)return!1;for(var c=l;c--;){var h=o[c];if(!(s?h in e:eG.call(e,h)))return!1}var u=a.get(t),d=a.get(e);if(u&&d)return u==e&&d==t;var p=!0;a.set(t,e),a.set(e,t);for(var g=s;++c{tF(),tG=Object.prototype,eG=tG.hasOwnProperty,me(Jz,"equalObjects"),rG=Jz});function iG(t,e,r,n,i,a){var s=n8(t),o=n8(e),l=s?sG:bF(t),o=o?sG:bF(e),c=(l=l==aG?oG:l)==oG,h=(o=o==aG?oG:o)==oG;if((o=l==o)&&b8(t)){if(!b8(e))return!1;c=!(s=!0)}return o&&!c?(a=a||new KT,s||U8(t)?zz(t,e,r,n,i,a):Zz(t,e,l,r,n,i,a)):1&r||(s=c&&cG.call(t,"__wrapped__"),l=h&&cG.call(e,"__wrapped__"),!s&&!l)?o&&(a=a||new KT,rG(t,e,r,n,i,a)):i(s?t.value():t,l?e.value():e,r,n,a=a||new KT)}var aG,sG,oG,lG,cG,hG,uG=b(()=>{JT(),Gz(),Qz(),nG(),CF(),s8(),k8(),W8(),aG="[object Arguments]",sG="[object Array]",oG="[object Object]",lG=Object.prototype,cG=lG.hasOwnProperty,me(iG,"baseIsEqualDeep"),hG=iG});function dG(t,e,r,n,i){return t===e||(null==t||null==e||!V7(t)&&!V7(e)?t!=t&&e!=e:hG(t,e,r,n,dG,i))}var pG,gG=b(()=>{uG(),X7(),me(dG,"baseIsEqual"),pG=dG});function fG(t,e,r,n){var i=r.length,a=i,s=!n;if(null==t)return!a;for(t=Object(t);i--;){var o=r[i];if(s&&o[2]?o[1]!==t[o[0]]:!(o[0]in t))return!1}for(;++i{JT(),gG(),me(fG,"baseIsMatch"),mG=fG});function vG(t){return t==t&&!L6(t)}var xG,bG=b(()=>{N6(),me(vG,"isStrictComparable"),xG=vG});function wG(t){for(var e=yB(t),r=e.length;r--;){var n=e[r],i=t[n];e[r]=[n,i,xG(i)]}return e}var kG,TG=b(()=>{bG(),wB(),me(wG,"getMatchData"),kG=wG});function EG(e,r){return function(t){return null!=t&&t[e]===r&&(void 0!==r||e in Object(t))}}var CG,SG=b(()=>{me(EG,"matchesStrictComparable"),CG=EG});function _G(e){var r=kG(e);return 1==r.length&&r[0][2]?CG(r[0][0],r[0][1]):function(t){return t===e||mG(t,e,r)}}var AG,LG=b(()=>{yG(),TG(),SG(),me(_G,"baseMatches"),AG=_G});function NG(t,e){return null!=t&&e in Object(t)}var IG,RG=b(()=>{me(NG,"baseHasIn"),IG=NG});function MG(t,e,r){for(var n=-1,i=(e=zB(e,t)).length,a=!1;++n{GB(),a8(),s8(),cE(),c8(),jB(),me(MG,"hasPath"),DG=MG});function PG(t,e){return null!=t&&DG(t,e,IG)}var BG,$G=b(()=>{RG(),OG(),me(PG,"hasIn"),BG=PG});function FG(r,n){return SB(r)&&xG(n)?CG(qB(r),n):function(t){var e=XB(t,r);return void 0===e&&e===n?BG(t,r):pG(n,e,3)}}var zG,GG=b(()=>{gG(),KB(),$G(),_B(),bG(),SG(),jB(),me(FG,"baseMatchesProperty"),zG=FG});function UG(e){return function(t){return t?.[e]}}var qG,jG=b(()=>{me(UG,"baseProperty"),qG=UG});function WG(e){return function(t){return YB(t,e)}}var YG,HG=b(()=>{HB(),me(WG,"basePropertyDeep"),YG=WG});function VG(t){return SB(t)?qG(qB(t)):YG(t)}var XG,KG=b(()=>{jG(),HG(),_B(),jB(),me(VG,"property"),XG=VG});function ZG(t){return"function"==typeof t?t:null==t?PE:"object"==typeof t?n8(t)?zG(t[0],t[1]):AG(t):XG(t)}var QG,JG=b(()=>{LG(),GG(),BE(),s8(),KG(),me(ZG,"baseIteratee"),QG=ZG});function tU(t,e,r,n){for(var i=-1,a=null==t?0:t.length;++i{me(tU,"arrayAggregator"),eU=tU});function nU(t,e){return t&&h7(t,e,yB)}var iU,aU=b(()=>{d7(),wB(),me(nU,"baseForOwn"),iU=nU});function sU(a,s){return function(t,e){if(null!=t){if(!u8(t))return a(t,e);for(var r=t.length,n=s?r:-1,i=Object(t);(s?n--:++n{d8(),me(sU,"createBaseEach"),oU=sU}),uU=b(()=>{aU(),hU(),lU=oU(iU),cU=lU});function dU(t,n,i,a){return cU(t,function(t,e,r){n(a,t,i(t),r)}),a}var pU,gU=b(()=>{uU(),me(dU,"baseAggregator"),pU=dU});function fU(i,a){return function(t,e){var r=n8(t)?eU:pU,n=a?a():{};return r(t,i,QG(e,2),n)}}var mU,yU,vU,xU,bU,wU,kU,TU=b(()=>{rU(),gU(),JG(),s8(),me(fU,"createAggregator"),mU=fU}),EU=b(()=>{h6(),yU=me(function(){return Zw.Date.now()},"now"),vU=yU}),CU=b(()=>{aC(),Pk(),lC(),CE(),xU=Object.prototype,bU=xU.hasOwnProperty,wU=iC(function(t,e){t=Object(t);var r=-1,n=e.length,i=2{me(SU,"arrayIncludesWith"),_U=SU});function LU(t,e,r,n){var i=-1,a=sB,s=!0,o=t.length,l=[],c=e.length;if(o){r&&(e=lP(e,P8(r))),n?(a=_U,s=!1):200<=e.length&&(a=Bz,s=!1,e=new Iz(e));t:for(;++i{Rz(),cB(),AU(),cP(),q8(),$z(),me(LU,"baseDifference"),NU=LU}),DU=b(()=>{MU(),s$(),aC(),f8(),IU=iC(function(t,e){return g8(t)?NU(t,a$(e,1,g8,!0)):[]}),RU=IU});function OU(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}var PU,BU=b(()=>{me(OU,"last"),PU=OU});function $U(t,e,r){var n=null==t?0:t.length;return n?(e=r||void 0===e?1:PP(e),g$(t,e<0?0:e,n)):[]}var FU,zU=b(()=>{f$(),FP(),me($U,"drop"),FU=$U});function GU(t,e,r){var n=null==t?0:t.length;return n?(e=r||void 0===e?1:PP(e),g$(t,0,(e=n-e)<0?0:e)):[]}var UU,qU=b(()=>{f$(),FP(),me(GU,"dropRight"),UU=GU});function jU(t){return"function"==typeof t?t:PE}var WU,YU=b(()=>{BE(),me(jU,"castFunction"),WU=jU});function HU(t,e){return(n8(t)?WP:cU)(t,WU(e))}var v,VU=b(()=>{YP(),uU(),YU(),s8(),me(HU,"forEach"),v=HU}),XU=b(()=>{VU()});function KU(t,e){for(var r=-1,n=null==t?0:t.length;++r{me(KU,"arrayEvery"),ZU=KU});function JU(t,n){var i=!0;return cU(t,function(t,e,r){return i=!!n(t,e,r)}),i}var tq,eq=b(()=>{uU(),me(JU,"baseEvery"),tq=JU});function rq(t,e,r){var n=n8(t)?ZU:tq;return r&&oC(t,e,r)&&(e=void 0),n(t,QG(e,3))}var nq,iq=b(()=>{QU(),eq(),JG(),s8(),lC(),me(rq,"every"),nq=rq});function aq(t,n){var i=[];return cU(t,function(t,e,r){n(t,e,r)&&i.push(t)}),i}var sq,oq=b(()=>{uU(),me(aq,"baseFilter"),sq=aq});function lq(t,e){return(n8(t)?N$:sq)(t,QG(e,3))}var cq,hq=b(()=>{I$(),oq(),JG(),s8(),me(lq,"filter"),cq=lq});function uq(a){return function(t,e,r){var n,i=Object(t);return u8(t)||(n=QG(e,3),t=yB(t),e=me(function(t){return n(i[t],t,i)},"predicate")),-1<(e=a(t,e,r))?i[n?t[e]:e]:void 0}}var dq,pq=b(()=>{JG(),d8(),wB(),me(uq,"createFind"),dq=uq});function gq(t,e,r){var n=null==t?0:t.length;return n?((r=null==r?0:PP(r))<0&&(r=fq(n+r,0)),VP(t,QG(e,3),r)):-1}var fq,mq,yq,vq,xq=b(()=>{XP(),JG(),FP(),fq=Math.max,me(gq,"findIndex"),mq=gq}),bq=b(()=>{pq(),xq(),yq=dq(mq),vq=yq});function wq(t){return t&&t.length?t[0]:void 0}var kq,Tq=b(()=>{me(wq,"head"),kq=wq}),Eq=b(()=>{Tq()});function Cq(t,n){var i=-1,a=u8(t)?Array(t.length):[];return cU(t,function(t,e,r){a[++i]=n(t,e,r)}),a}var Sq,_q=b(()=>{uU(),d8(),me(Cq,"baseMap"),Sq=Cq});function Aq(t,e){return(n8(t)?lP:Sq)(t,QG(e,3))}var x,Lq=b(()=>{cP(),JG(),_q(),s8(),me(Aq,"map"),x=Aq});function Nq(t,e){return a$(x(t,e),1)}var Iq,Rq=b(()=>{s$(),Lq(),me(Nq,"flatMap"),Iq=Nq});function Mq(t,e){return null==t?t:h7(t,WU(e),EE)}var Dq,Oq=b(()=>{d7(),YU(),CE(),me(Mq,"forIn"),Dq=Mq});function Pq(t,e){return t&&iU(t,WU(e))}var Bq,$q,Fq,zq,Gq=b(()=>{aU(),YU(),me(Pq,"forOwn"),Bq=Pq}),Uq=b(()=>{n7(),TU(),Fq=Object.prototype,$q=Fq.hasOwnProperty,Fq=mU(function(t,e,r){$q.call(t,r)?t[r].push(e):r7(t,r,[e])}),zq=Fq});function qq(t,e){return e{me(qq,"baseGt"),jq=qq});function Yq(t,e){return null!=t&&Vq.call(t,e)}var Hq,Vq,Xq,Kq=b(()=>{Hq=Object.prototype,Vq=Hq.hasOwnProperty,me(Yq,"baseHas"),Xq=Yq});function Zq(t,e){return null!=t&&DG(t,e,Xq)}var Qq,Jq=b(()=>{Kq(),OG(),me(Zq,"has"),Qq=Zq});function tj(t){return"string"==typeof t||!n8(t)&&V7(t)&&"[object String]"==S6(t)}var ej,rj=b(()=>{_6(),s8(),X7(),me(tj,"isString"),ej=tj});function nj(e,t){return lP(t,function(t){return e[t]})}var ij,aj=b(()=>{cP(),me(nj,"baseValues"),ij=nj});function sj(t){return null==t?[]:ij(t,yB(t))}var oj,lj=b(()=>{aj(),wB(),me(sj,"values"),oj=sj});function cj(t,e,r,n){return t=u8(t)?t:oj(t),r=r&&!n?PP(r):0,n=t.length,r<0&&(r=hj(n+r,0)),ej(t)?r<=n&&-1{iB(),d8(),rj(),FP(),lj(),hj=Math.max,me(cj,"includes"),uj=cj});function pj(t,e,r){var n=null==t?0:t.length;return n?((r=null==r?0:PP(r))<0&&(r=gj(n+r,0)),nB(t,e,r)):-1}var gj,fj,mj=b(()=>{iB(),FP(),gj=Math.max,me(pj,"indexOf"),fj=pj});function yj(t){if(null!=t){if(u8(t)&&(n8(t)||"string"==typeof t||"function"==typeof t.splice||b8(t)||U8(t)||e8(t)))return!t.length;var e,r=bF(t);if("[object Map]"==r||"[object Set]"==r)return!t.size;if(U7(t))return!gB(t).length;for(e in t)if(xj.call(t,e))return!1}return!0}var vj,xj,bj,wj=b(()=>{fB(),CF(),a8(),s8(),d8(),k8(),q7(),W8(),vj=Object.prototype,xj=vj.hasOwnProperty,me(yj,"isEmpty"),bj=yj});function kj(t){return V7(t)&&"[object RegExp]"==S6(t)}var Tj,Ej,Cj,Sj=b(()=>{_6(),X7(),me(kj,"baseIsRegExp"),Tj=kj}),_j=b(()=>{Sj(),q8(),j8(),Ej=(Ej=z8&&z8.isRegExp)?P8(Ej):Tj,Cj=Ej});function Aj(t){return void 0===t}var Lj,Nj=b(()=>{me(Aj,"isUndefined"),Lj=Aj});function Ij(t,e){return t{me(Ij,"baseLt"),Rj=Ij});function Dj(t,n){var i={};return n=QG(n,3),iU(t,function(t,e,r){r7(i,e,n(t,e,r))}),i}var Oj,Pj=b(()=>{n7(),aU(),JG(),me(Dj,"mapValues"),Oj=Dj});function Bj(t,e,r){for(var n=-1,i=t.length;++n{sP(),me(Bj,"baseExtremum"),$j=Bj});function zj(t){return t&&t.length?$j(t,PE,jq):void 0}var Gj,Uj=b(()=>{Fj(),Wq(),BE(),me(zj,"max"),Gj=zj});function qj(t){return t&&t.length?$j(t,PE,Rj):void 0}var jj,Wj=b(()=>{Fj(),Mj(),BE(),me(qj,"min"),jj=qj});function Yj(t,e){return t&&t.length?$j(t,QG(e,2),Rj):void 0}var Hj,Vj=b(()=>{Fj(),JG(),Mj(),me(Yj,"minBy"),Hj=Yj});function Xj(e){if("function"!=typeof e)throw new TypeError("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}var Kj,Zj=b(()=>{me(Xj,"negate"),Kj=Xj});function Qj(t,e,r,n){if(L6(t))for(var i=-1,a=(e=zB(e,t)).length,s=a-1,o=t;null!=o&&++i{J8(),GB(),cE(),N6(),jB(),me(Qj,"baseSet"),Jj=Qj});function eW(t,e,r){for(var n=-1,i=e.length,a={};++n{HB(),tW(),GB(),me(eW,"basePickBy"),rW=eW});function iW(t,r){var e;return null==t?{}:(e=lP(rF(t),function(t){return[t]}),r=QG(r),rW(t,e,function(t,e){return r(t,e[0])}))}var aW,sW=b(()=>{cP(),JG(),nW(),wF(),me(iW,"pickBy"),aW=iW});function oW(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var lW,cW=b(()=>{me(oW,"baseSortBy"),lW=oW});function hW(t,e){if(t!==e){var r=void 0!==t,n=null===t,i=t==t,a=aP(t),s=void 0!==e,o=null===e,l=e==e,c=aP(e);if(!o&&!c&&!a&&e{sP(),me(hW,"compareAscending"),uW=hW});function pW(t,e,r){for(var n=-1,i=t.criteria,a=e.criteria,s=i.length,o=r.length;++n{dW(),me(pW,"compareMultiple"),gW=pW});function mW(t,n,r){n=n.length?lP(n,function(e){return n8(e)?function(t){return YB(t,1===e.length?e[0]:e)}:e}):[PE];var i=-1,t=(n=lP(n,P8(QG)),Sq(t,function(e,t,r){return{criteria:lP(n,function(t){return t(e)}),index:++i,value:e}}));return lW(t,function(t,e){return gW(t,e,r)})}var yW,vW,xW,bW=b(()=>{cP(),HB(),JG(),_q(),cW(),q8(),fW(),BE(),s8(),me(mW,"baseOrderBy"),yW=mW}),wW=b(()=>{jG(),vW=qG("length"),xW=vW});function kW(t){for(var e=NW.lastIndex=0;NW.test(t);)++e;return e}var TW,EW,CW,SW,_W,AW,LW,NW,IW,RW=b(()=>{TW="["+(SW="\\ud800-\\udfff")+"]",EW="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",CW="\\ud83c[\\udffb-\\udfff]",LW="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",AW="[\\ufe0e\\ufe0f]?",_W="(?:\\u200d(?:"+[SW="[^"+SW+"]","(?:\\ud83c[\\udde6-\\uddff]){2}","[\\ud800-\\udbff][\\udc00-\\udfff]"].join("|")+")"+AW+LW+")*",AW=AW+LW+_W,LW="(?:"+[SW+EW+"?",EW,"(?:\\ud83c[\\udde6-\\uddff]){2}","[\\ud800-\\udbff][\\udc00-\\udfff]",TW].join("|")+")",NW=RegExp(CW+"(?="+CW+")|"+LW+AW,"g"),me(kW,"unicodeSize"),IW=kW});function MW(t){return(v$(t)?IW:xW)(t)}var DW,OW=b(()=>{wW(),x$(),RW(),me(MW,"stringSize"),DW=MW});function PW(r,t){return rW(r,t,function(t,e){return BG(r,e)})}var BW,$W,FW,zW=b(()=>{nW(),$G(),me(PW,"basePick"),BW=PW}),GW=b(()=>{zW(),d$(),$W=u$(function(t,e){return null==t?{}:BW(t,e)}),FW=$W});function UW(t,e,r,n){for(var i=-1,a=jW(qW((e-t)/(r||1)),0),s=Array(a);a--;)s[n?a:++i]=t,t+=r;return s}var qW,jW,WW,YW=b(()=>{qW=Math.ceil,jW=Math.max,me(UW,"baseRange"),WW=UW});function HW(n){return function(t,e,r){return r&&"number"!=typeof r&&oC(t,e,r)&&(e=r=void 0),t=MP(t),void 0===e?(e=t,t=0):e=MP(e),r=void 0===r?t{YW(),lC(),DP(),me(HW,"createRange"),VW=HW}),QW=b(()=>{ZW(),XW=VW(),KW=XW});function JW(t,n,i,a,e){return e(t,function(t,e,r){i=a?(a=!1,t):n(i,t,e,r)}),i}var tY,eY=b(()=>{me(JW,"baseReduce"),tY=JW});function rY(t,e,r){var n=n8(t)?w$:tY,i=arguments.length<3;return n(t,QG(e,4),r,i,cU)}var nY,iY=b(()=>{k$(),uU(),JG(),eY(),s8(),me(rY,"reduce"),nY=rY});function aY(t,e){return(n8(t)?N$:sq)(t,Kj(QG(e,3)))}var sY,oY=b(()=>{I$(),oq(),JG(),s8(),Zj(),me(aY,"reject"),sY=aY});function lY(t){var e;return null==t?0:u8(t)?ej(t)?DW(t):t.length:"[object Map]"==(e=bF(t))||"[object Set]"==e?t.size:gB(t).length}var cY,hY=b(()=>{fB(),CF(),d8(),rj(),OW(),me(lY,"size"),cY=lY});function uY(t,n){var i;return cU(t,function(t,e,r){return!(i=n(t,e,r))}),!!i}var dY,pY=b(()=>{uU(),me(uY,"baseSome"),dY=uY});function gY(t,e,r){var n=n8(t)?Dz:dY;return r&&oC(t,e,r)&&(e=void 0),n(t,QG(e,3))}var fY,mY,yY,vY,xY,bY=b(()=>{Oz(),JG(),pY(),s8(),lC(),me(gY,"some"),fY=gY}),wY=b(()=>{s$(),bW(),aC(),lC(),mY=iC(function(t,e){var r;return null==t?[]:(1<(r=e.length)&&oC(t,e[0],e[1])?e=[]:2{EF(),qP(),Hz(),vY=lF&&1/Yz(new lF([,-0]))[1]==1/0?function(t){return new lF(t)}:UP,xY=vY});function TY(t,e,r){var n=-1,i=sB,a=t.length,s=!0,o=[],l=o;if(r)s=!1,i=_U;else if(200<=a){var c=e?null:xY(t);if(c)return Yz(c);s=!1,i=Bz,l=new Iz}else l=e?[]:o;t:for(;++n{Rz(),cB(),AU(),$z(),kY(),Hz(),me(TY,"baseUniq"),EY=TY}),AY=b(()=>{s$(),aC(),_Y(),f8(),CY=iC(function(t){return EY(a$(t,1,g8,!0))}),SY=CY});function LY(t){return t&&t.length?EY(t):[]}var NY,IY=b(()=>{_Y(),me(LY,"uniq"),NY=LY});function RY(t,e){return t&&t.length?EY(t,QG(e,2)):[]}var MY,DY=b(()=>{JG(),_Y(),me(RY,"uniqBy"),MY=RY});function OY(t){var e=++PY;return BB(t)+e}var PY,BY,$Y=b(()=>{$B(),PY=0,me(OY,"uniqueId"),BY=OY});function FY(t,e,r){for(var n=-1,i=t.length,a=e.length,s={};++n{me(FY,"baseZipObject"),zY=FY});function UY(t,e){return zY(t||[],e||[],Q8)}var qY,jY=b(()=>{J8(),GY(),me(UY,"zipObject"),qY=UY}),WY=b(()=>{kB(),yz(),bz(),Tz(),VE(),CU(),DU(),zU(),qU(),XU(),iq(),hq(),bq(),Eq(),Rq(),c$(),VU(),Oq(),Gq(),Uq(),Jq(),BE(),dj(),mj(),s8(),wj(),O6(),N6(),_j(),rj(),Nj(),wB(),BU(),Lq(),Pj(),Uj(),gC(),Wj(),Vj(),qP(),EU(),GW(),sW(),QW(),iY(),oY(),hY(),bY(),wY(),AY(),IY(),$Y(),lj(),jY()});function YY(t,e){t[e]?t[e]++:t[e]=1}function HY(t,e){--t[e]||delete t[e]}function VY(t,e,r,n){return e=""+e,r=""+r,!t&&r{WY(),ZY="\0",(QY=class{static{me(this,"Graph")}constructor(t={}){this._isDirected=!Object.prototype.hasOwnProperty.call(t,"directed")||t.directed,this._isMultigraph=!!Object.prototype.hasOwnProperty.call(t,"multigraph")&&t.multigraph,this._isCompound=!!Object.prototype.hasOwnProperty.call(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=YE(void 0),this._defaultEdgeLabelFn=YE(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[ZY]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return R6(t)||(t=YE(t)),this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return yB(this._nodes)}sources(){var e=this;return cq(this.nodes(),function(t){return bj(e._in[t])})}sinks(){var e=this;return cq(this.nodes(),function(t){return bj(e._out[t])})}setNodes(t,e){var r=arguments,n=this;return v(t,function(t){1this.removeEdge(this._edgeObjs[t]),"removeEdge"),delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],v(this.children(t),t=>{this.setParent(t)}),delete this._children[t]),v(yB(this._in[t]),e),delete this._in[t],delete this._preds[t],v(yB(this._out[t]),e),delete this._out[t],delete this._sucs[t],--this._nodeCount),this}setParent(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(Lj(e))e=ZY;else{for(var r=e+="";!Lj(r);r=this.parent(r))if(r===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound&&(t=this._parent[t])!==ZY)return t}children(t){var e;return Lj(t)&&(t=ZY),this._isCompound?(e=this._children[t])?yB(e):void 0:t===ZY?this.nodes():this.hasNode(t)?[]:void 0}predecessors(t){if(t=this._preds[t])return yB(t)}successors(t){if(t=this._sucs[t])return yB(t)}neighbors(t){var e=this.predecessors(t);if(e)return SY(e,this.successors(t))}isLeaf(t){return 0===(t=this.isDirected()?this.successors(t):this.neighbors(t)).length}filterNodes(r){var n=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound}),i=(n.setGraph(this.graph()),this),a=(v(this._nodes,function(t,e){r(e)&&n.setNode(e,t)}),v(this._edgeObjs,function(t){n.hasNode(t.v)&&n.hasNode(t.w)&&n.setEdge(t,i.edge(t))}),{});function s(t){var e=i.parent(t);return void 0===e||n.hasNode(e)?a[t]=e:e in a?a[e]:s(e)}return me(s,"findParent"),this._isCompound&&v(n.nodes(),function(t){n.setParent(t,s(t))}),n}setDefaultEdgeLabel(t){return R6(t)||(t=YE(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return oj(this._edgeObjs)}setPath(t,r){var n=this,i=arguments;return nY(t,function(t,e){return 1{JY()});function eH(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function rH(t,e){if("_next"!==t&&"_prev"!==t)return e}var nH,iH=b(()=>{nH=class{static{me(this,"List")}constructor(){var t={};t._next=t._prev=t,this._sentinel=t}dequeue(){var t=this._sentinel,e=t._prev;if(e!==t)return eH(e),e}enqueue(t){var e=this._sentinel;t._prev&&t._next&&eH(t),t._next=e._next,e._next._prev=t,(e._next=t)._prev=e}toString(){for(var t=[],e=this._sentinel,r=e._prev;r!==e;)t.push(JSON.stringify(r,rH)),r=r._prev;return"["+t.join(", ")+"]"}},me(eH,"unlink"),me(rH,"filterOutLinks")});function aH(e,t){return e.nodeCount()<=1?[]:(t=sH((t=lH(e,t||hH)).graph,t.buckets,t.zeroIdx),l$(x(t,function(t){return e.outEdges(t.v,t.w)})))}function sH(t,e,r){for(var n,i=[],a=e[e.length-1],s=e[0];t.nodeCount();){for(;n=s.dequeue();)oH(t,e,r,n);for(;n=a.dequeue();)oH(t,e,r,n);if(t.nodeCount())for(var o=e.length-2;0{WY(),tH(),iH(),hH=YE(1),me(aH,"greedyFAS"),me(sH,"doGreedyFAS"),me(oH,"removeNode"),me(lH,"buildState"),me(cH,"assignBucket")});function dH(r){var t="greedy"===r.graph().acyclicer?aH(r,e(r)):pH(r);function e(e){return function(t){return e.edge(t).weight}}v(t,function(t){var e=r.edge(t);r.removeEdge(t),e.forwardName=t.name,e.reversed=!0,r.setEdge(t.w,t.v,e,BY("rev"))}),me(e,"weightFn")}function pH(e){var r=[],n={},i={};function a(t){Object.prototype.hasOwnProperty.call(i,t)||(i[t]=!0,n[t]=!0,v(e.outEdges(t),function(t){Object.prototype.hasOwnProperty.call(n,t.w)?r.push(t):a(t.w)}),delete n[t])}return me(a,"dfs"),v(e.nodes(),a),r}function gH(n){v(n.edges(),function(t){var e,r=n.edge(t);r.reversed&&(n.removeEdge(t),e=r.forwardName,delete r.reversed,delete r.forwardName,n.setEdge(t.w,t.v,r,e))})}var fH=b(()=>{WY(),uH(),me(dH,"run"),me(pH,"dfsFAS"),me(gH,"undo")});function mH(t,e,r,n){for(var i;i=BY(n),t.hasNode(i););return r.dummy=e,t.setNode(i,r),i}function yH(n){var i=(new QY).setGraph(n.graph());return v(n.nodes(),function(t){i.setNode(t,n.node(t))}),v(n.edges(),function(t){var e=i.edge(t.v,t.w)||{weight:0,minlen:1},r=n.edge(t);i.setEdge(t.v,t.w,{weight:e.weight+r.weight,minlen:Math.max(e.minlen,r.minlen)})}),i}function vH(e){var r=new QY({multigraph:e.isMultigraph()}).setGraph(e.graph());return v(e.nodes(),function(t){e.children(t).length||r.setNode(t,e.node(t))}),v(e.edges(),function(t){r.setEdge(t,e.edge(t))}),r}function xH(t,e){var r,n=t.x,i=t.y,a=e.x-n,e=e.y-i,s=t.width/2,t=t.height/2;if(a||e)return t=Math.abs(e)*s>Math.abs(a)*t?(r=(t=e<0?-t:t)*a/e,t):(r=a<0?-s:s)*e/a,{x:n+r,y:i+t};throw new Error("Not possible to find intersection inside of the rectangle")}function bH(n){var i=x(KW(EH(n)+1),function(){return[]});return v(n.nodes(),function(t){var e=n.node(t),r=e.rank;Lj(r)||(i[r][e.order]=t)}),i}function wH(e){var r=jj(x(e.nodes(),function(t){return e.node(t).rank}));v(e.nodes(),function(t){t=e.node(t),Qq(t,"rank")&&(t.rank-=r)})}function kH(r){var n=jj(x(r.nodes(),function(t){return r.node(t).rank})),i=[],a=(v(r.nodes(),function(t){var e=r.node(t).rank-n;i[e]||(i[e]=[]),i[e].push(t)}),0),s=r.graph().nodeRankFactor;v(i,function(t,e){Lj(t)&&e%s!=0?--a:a&&v(t,function(t){r.node(t).rank+=a})})}function TH(t,e,r,n){var i={width:0,height:0};return 4<=arguments.length&&(i.rank=r,i.order=n),mH(t,"border",i,e)}function EH(e){return Gj(x(e.nodes(),function(t){if(t=e.node(t).rank,!Lj(t))return t}))}function CH(t,e){var r={lhs:[],rhs:[]};return v(t,function(t){(e(t)?r.lhs:r.rhs).push(t)}),r}function SH(t,e){var r=vU();try{return e()}finally{console.log(t+" time: "+(vU()-r)+"ms")}}function _H(t,e){return e()}var AH=b(()=>{WY(),tH(),me(mH,"addDummyNode"),me(yH,"simplify"),me(vH,"asNonCompoundGraph"),me(xH,"intersectRect"),me(bH,"buildLayerMatrix"),me(wH,"normalizeRanks"),me(kH,"removeEmptyRanks"),me(TH,"addBorderNode"),me(EH,"maxRank"),me(CH,"partition"),me(SH,"time"),me(_H,"notime")});function LH(a){function s(t){var e=a.children(t),r=a.node(t);if(e.length&&v(e,s),Object.prototype.hasOwnProperty.call(r,"minRank")){r.borderLeft=[],r.borderRight=[];for(var n=r.minRank,i=r.maxRank+1;n{WY(),AH(),me(LH,"addBorderSegments"),me(NH,"addBorderNode")});function RH(t){var e=t.graph().rankdir.toLowerCase();"lr"!==e&&"rl"!==e||DH(t)}function MH(t){var e=t.graph().rankdir.toLowerCase();"bt"!==e&&"rl"!==e||PH(t),"lr"!==e&&"rl"!==e||($H(t),DH(t))}function DH(e){v(e.nodes(),function(t){OH(e.node(t))}),v(e.edges(),function(t){OH(e.edge(t))})}function OH(t){var e=t.width;t.width=t.height,t.height=e}function PH(e){v(e.nodes(),function(t){BH(e.node(t))}),v(e.edges(),function(t){t=e.edge(t),v(t.points,BH),Object.prototype.hasOwnProperty.call(t,"y")&&BH(t)})}function BH(t){t.y=-t.y}function $H(e){v(e.nodes(),function(t){FH(e.node(t))}),v(e.edges(),function(t){t=e.edge(t),v(t.points,FH),Object.prototype.hasOwnProperty.call(t,"x")&&FH(t)})}function FH(t){var e=t.x;t.x=t.y,t.y=e}var zH=b(()=>{WY(),me(RH,"adjust"),me(MH,"undo"),me(DH,"swapWidthHeight"),me(OH,"swapWidthHeightOne"),me(PH,"reverseY"),me(BH,"reverseYOne"),me($H,"swapXY"),me(FH,"swapXYOne")});function GH(e){e.graph().dummyChains=[],v(e.edges(),function(t){UH(e,t)})}function UH(t,e){var r=e.v,n=t.node(r).rank,i=e.w,a=t.node(i).rank,s=e.name,o=t.edge(e),l=o.labelRank;if(a!==n+1){t.removeEdge(e);var c,h=void 0,u=0;for(++n;n{WY(),AH(),me(GH,"run"),me(UH,"normalizeEdge"),me(qH,"undo")});function WH(r){var n={};function i(t){var e=r.node(t);return Object.prototype.hasOwnProperty.call(n,t)?e.rank:(n[t]=!0,(t=jj(x(r.outEdges(t),function(t){return i(t.w)-r.edge(t).minlen})))!==Number.POSITIVE_INFINITY&&null!=t||(t=0),e.rank=t)}me(i,"dfs"),v(r.sources(),i)}function YH(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}var HH=b(()=>{WY(),me(WH,"longestPath"),me(YH,"slack")});function VH(t){var e,r=new QY({directed:!1}),n=t.nodes()[0],i=t.nodeCount();for(r.setNode(n,{});XH(r,t){WY(),tH(),HH(),me(VH,"feasibleTree"),me(XH,"tightTree"),me(KH,"findMinSlackEdge"),me(ZH,"shiftRanks")}),JH=b(()=>{}),tV=b(()=>{}),eV=b(()=>{WY(),tV(),YE(1)}),rV=b(()=>{eV()}),nV=b(()=>{}),iV=b(()=>{nV()}),aV=b(()=>{WY(),YE(1)});function sV(e){var r={},n={},i=[];function a(t){if(Object.prototype.hasOwnProperty.call(n,t))throw new oV;Object.prototype.hasOwnProperty.call(r,t)||(n[t]=!0,r[t]=!0,v(e.predecessors(t),a),delete n[t],i.push(t))}if(me(a,"visit"),v(e.sinks(),a),cY(r)!==e.nodeCount())throw new oV;return i}function oV(){}var lV=b(()=>{WY(),sV.CycleException=oV,me(sV,"topsort"),me(oV,"CycleException"),oV.prototype=new Error}),cV=b(()=>{lV()});function hV(e,t,r){n8(t)||(t=[t]);var n=(e.isDirected()?e.successors:e.neighbors).bind(e),i=[],a={};return v(t,function(t){if(!e.hasNode(t))throw new Error("Graph does not have node: "+t);uV(e,t,"post"===r,a,n,i)}),i}function uV(e,t,r,n,i,a){Object.prototype.hasOwnProperty.call(n,t)||(n[t]=!0,r||a.push(t),v(i(t),function(t){uV(e,t,r,n,i,a)}),r&&a.push(t))}var dV=b(()=>{WY(),me(hV,"dfs"),me(uV,"doDfs")});function pV(t,e){return hV(t,e,"post")}var gV=b(()=>{dV(),me(pV,"postorder")});function fV(t,e){return hV(t,e,"pre")}var mV=b(()=>{dV(),me(fV,"preorder")}),yV=b(()=>{tV(),JY()}),vV=b(()=>{JH(),eV(),rV(),iV(),aV(),cV(),gV(),mV(),yV(),nV(),lV()});function xV(t){WH(t=yH(t));var e,r=VH(t);for(TV(r),bV(r,t);e=CV(r);)_V(r,t,e,SV(r,t,e))}function bV(e,r){var t=(t=pV(e,e.nodes())).slice(0,t.length-1);v(t,function(t){wV(e,r,t)})}function wV(t,e,r){var n=t.node(r).parent;t.edge(r,n).cutvalue=kV(t,e,r)}function kV(n,i,a){var s=n.node(a).parent,o=!0,t=i.edge(a,s),l=0;return t||(o=!1,t=i.edge(s,a)),l=t.weight,v(i.nodeEdges(a),function(t){var e=t.v===a,r=e?t.w:t.v;r!==s&&(e=e===o,t=i.edge(t).weight,l+=e?t:-t,LV(n,a,r))&&(t=n.edge(a,r).cutvalue,l+=e?-t:t)}),l}function TV(t,e){arguments.length<2&&(e=t.nodes()[0]),EV(t,{},1,e)}function EV(e,r,n,i,t){var a=n,s=e.node(i);return r[i]=!0,v(e.neighbors(i),function(t){Object.prototype.hasOwnProperty.call(r,t)||(n=EV(e,r,n,t,i))}),s.low=a,s.lim=n++,t?s.parent=t:delete s.parent,n}function CV(e){return vq(e.edges(),function(t){return e.edge(t).cutvalue<0})}function SV(e,r,t){var n=t.v,i=t.w,t=(r.hasEdge(n,i)||(n=t.w,i=t.v),e.node(n)),n=e.node(i),a=t,s=!1,i=(t.lim>n.lim&&(a=n,s=!0),cq(r.edges(),function(t){return s===NV(0,e.node(t.v),a)&&s!==NV(0,e.node(t.w),a)}));return Hj(i,function(t){return YH(r,t)})}function _V(t,e,r,n){var i=r.v;t.removeEdge(i,r.w),t.setEdge(n.v,n.w,{}),TV(t),bV(t,e),AV(t,e)}function AV(i,a){var t=vq(i.nodes(),function(t){return!a.node(t).parent}),t=(t=fV(i,t)).slice(1);v(t,function(t){var e=i.node(t).parent,r=a.edge(t,e),n=!1;r||(r=a.edge(e,t),n=!0),a.node(t).rank=a.node(e).rank+(n?r.minlen:-r.minlen)})}function LV(t,e,r){return t.hasEdge(e,r)}function NV(t,e,r){return r.low<=e.lim&&e.lim<=r.lim}var IV=b(()=>{WY(),vV(),AH(),QH(),HH(),xV.initLowLimValues=TV,xV.initCutValues=bV,xV.calcCutValue=kV,xV.leaveEdge=CV,xV.enterEdge=SV,xV.exchangeEdges=_V,me(xV,"networkSimplex"),me(bV,"initCutValues"),me(wV,"assignCutValue"),me(kV,"calcCutValue"),me(TV,"initLowLimValues"),me(EV,"dfsAssignLowLim"),me(CV,"leaveEdge"),me(SV,"enterEdge"),me(_V,"exchangeEdges"),me(AV,"updateRanks"),me(LV,"isTreeEdge"),me(NV,"isDescendant")});function RV(t){switch(t.graph().ranker){case"network-simplex":DV(t);break;case"tight-tree":MV(t);break;case"longest-path":OV(t);break;default:DV(t)}}function MV(t){WH(t),VH(t)}function DV(t){xV(t)}var OV,PV=b(()=>{QH(),IV(),HH(),me(RV,"rank"),OV=WH,me(MV,"tightTreeRanker"),me(DV,"networkSimplexRanker")});function BV(e){var r=mH(e,"root",{},"_root"),n=FV(e),i=Gj(oj(n))-1,a=2*i+1,s=(e.graph().nestingRoot=r,v(e.edges(),function(t){e.edge(t).minlen*=a}),zV(e)+1);v(e.children(),function(t){$V(e,r,a,s,i,n,t)}),e.graph().nodeRankFactor=a}function $V(i,a,s,o,l,c,h){var u,d,t,e=i.children(h);e.length?(u=TH(i,"_bt"),d=TH(i,"_bb"),t=i.node(h),i.setParent(u,h),t.borderTop=u,i.setParent(d,h),t.borderBottom=d,v(e,function(t){$V(i,a,s,o,l,c,t);var e=i.node(t),r=e.borderTop||t,n=r!==(t=e.borderBottom||t)?1:l-c[h]+1;i.setEdge(u,r,{weight:e=e.borderTop?o:2*o,minlen:n,nestingEdge:!0}),i.setEdge(t,d,{weight:e,minlen:n,nestingEdge:!0})}),i.parent(h)||i.setEdge(a,u,{weight:0,minlen:l+c[h]})):h!==a&&i.setEdge(a,h,{weight:0,minlen:s})}function FV(n){var i={};function a(t,e){var r=n.children(t);r&&r.length&&v(r,function(t){a(t,e+1)}),i[t]=e}return me(a,"dfs"),v(n.children(),function(t){a(t,1)}),i}function zV(r){return nY(r.edges(),function(t,e){return t+r.edge(e).weight},0)}function GV(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,v(e.edges(),function(t){e.edge(t).nestingEdge&&e.removeEdge(t)})}var UV=b(()=>{WY(),AH(),me(BV,"run"),me($V,"dfs"),me(FV,"treeDepths"),me(zV,"sumWeights"),me(GV,"cleanup")});function qV(i,a,t){var s,o={};v(t,function(t){for(var e,r,n=i.parent(t);n;){if((e=i.parent(n))?(r=o[e],o[e]=n):(r=s,s=n),r&&r!==n)return void a.setEdge(r,n);n=e}})}var jV=b(()=>{WY(),me(qV,"addSubgraphConstraints")});function WV(i,r,a){var s=YV(i),o=new QY({compound:!0}).setGraph({root:s}).setDefaultNodeLabel(function(t){return i.node(t)});return v(i.nodes(),function(n){var t=i.node(n),e=i.parent(n);(t.rank===r||t.minRank<=r&&r<=t.maxRank)&&(o.setNode(n),o.setParent(n,e||s),v(i[a](n),function(t){var e=t.v===n?t.w:t.v,r=o.edge(e,n),r=Lj(r)?0:r.weight;o.setEdge(e,n,{weight:i.edge(t).weight+r})}),Object.prototype.hasOwnProperty.call(t,"minRank"))&&o.setNode(n,{borderLeft:t.borderLeft[r],borderRight:t.borderRight[r]})}),o}function YV(t){for(var e;t.hasNode(e=BY("_root")););return e}var HV=b(()=>{WY(),tH(),me(WV,"buildLayerGraph"),me(YV,"createRootNode")});function VV(t,e){for(var r=0,n=1;n>1]+=t.weight;o+=t.weight*r})),o}var KV=b(()=>{WY(),me(VV,"crossCount"),me(XV,"twoLayerCrossCount")});function ZV(r){var n={},t=cq(r.nodes(),function(t){return!r.children(t).length}),e=Gj(x(t,function(t){return r.node(t).rank})),i=x(KW(e+1),function(){return[]});function a(t){var e;Qq(n,t)||(n[t]=!0,e=r.node(t),i[e.rank].push(t),v(r.successors(t),a))}return me(a,"dfs"),e=yY(t,function(t){return r.node(t).rank}),v(e,a),i}var QV=b(()=>{WY(),me(ZV,"initOrder")});function JV(n,t){return x(t,function(t){var e=n.inEdges(t);return e.length?{v:t,barycenter:(e=nY(e,function(t,e){var r=n.edge(e),e=n.node(e.v);return{sum:t.sum+r.weight*e.order,weight:t.weight+r.weight}},{sum:0,weight:0})).sum/e.weight,weight:e.weight}:{v:t}})}var tX=b(()=>{WY(),me(JV,"barycenter")});function eX(t,e){var n={};return v(t,function(t,e){e=n[t.v]={indegree:0,in:[],out:[],vs:[t.v],i:e},Lj(t.barycenter)||(e.barycenter=t.barycenter,e.weight=t.weight)}),v(e.edges(),function(t){var e=n[t.v],r=n[t.w];Lj(e)||Lj(r)||(r.indegree++,e.out.push(n[t.w]))}),rX(cq(n,function(t){return!t.indegree}))}function rX(r){var t=[];function e(e){return function(t){t.merged||(Lj(t.barycenter)||Lj(e.barycenter)||t.barycenter>=e.barycenter)&&nX(e,t)}}function n(e){return function(t){t.in.push(e),0==--t.indegree&&r.push(t)}}for(me(e,"handleIn"),me(n,"handleOut");r.length;){var i=r.pop();t.push(i),v(i.in.reverse(),e(i)),v(i.out,n(i))}return x(cq(t,function(t){return!t.merged}),function(t){return FW(t,["vs","i","barycenter","weight"])})}function nX(t,e){var r=0,n=0;t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.vs=e.vs.concat(t.vs),t.barycenter=r/n,t.weight=n,t.i=Math.min(e.i,t.i),e.merged=!0}var iX=b(()=>{WY(),me(eX,"resolveConflicts"),me(rX,"doResolveConflicts"),me(nX,"mergeEntries")});function aX(t,e){var r=(t=CH(t,function(t){return Object.prototype.hasOwnProperty.call(t,"barycenter")})).lhs,n=yY(t.rhs,function(t){return-t.i}),i=[],a=0,s=0,o=0,t=(r.sort(oX(!!e)),o=sX(i,n,o),v(r,function(t){o+=t.vs.length,i.push(t.vs),a+=t.barycenter*t.weight,s+=t.weight,o=sX(i,n,o)}),{vs:l$(i)});return s&&(t.barycenter=a/s,t.weight=s),t}function sX(t,e,r){for(var n;e.length&&(n=PU(e)).i<=r;)e.pop(),t.push(n.vs),r++;return r}function oX(r){return function(t,e){return t.barycentere.barycenter?1:r?e.i-t.i:t.i-e.i}}var lX=b(()=>{WY(),AH(),me(aX,"sort"),me(sX,"consumeUnsortable"),me(oX,"compareWithBias")});function cX(r,t,n,i){var e,a=r.children(t),s=(t=r.node(t))?t.borderLeft:void 0,o=t?t.borderRight:void 0,l={},t=(s&&(a=cq(a,function(t){return t!==s&&t!==o})),JV(r,a));return v(t,function(t){var e;r.children(t.v).length&&(e=cX(r,t.v,n,i),l[t.v]=e,Object.prototype.hasOwnProperty.call(e,"barycenter"))&&uX(t,e)}),hX(a=eX(t,n),l),t=aX(a,i),s&&(t.vs=l$([s,t.vs,o]),r.predecessors(s).length)&&(a=r.node(r.predecessors(s)[0]),e=r.node(r.predecessors(o)[0]),Object.prototype.hasOwnProperty.call(t,"barycenter")||(t.barycenter=0,t.weight=0),t.barycenter=(t.barycenter*t.weight+a.order+e.order)/(t.weight+2),t.weight+=2),t}function hX(t,e){v(t,function(t){t.vs=l$(t.vs.map(function(t){return e[t]?e[t].vs:t}))})}function uX(t,e){Lj(t.barycenter)?(t.barycenter=e.barycenter,t.weight=e.weight):(t.barycenter=(t.barycenter*t.weight+e.barycenter*e.weight)/(t.weight+e.weight),t.weight+=e.weight)}var dX=b(()=>{WY(),tX(),iX(),lX(),me(cX,"sortSubgraph"),me(hX,"expandSubgraphs"),me(uX,"mergeBarycenters")});function pX(t){var e=EH(t),r=gX(t,KW(1,e+1),"inEdges"),n=gX(t,KW(e-1,-1,-1),"outEdges");mX(t,ZV(t));for(var i,a=Number.POSITIVE_INFINITY,s=0,o=0;o<4;++s,++o){fX(s%2?r:n,2<=s%4);var l,c=VV(t,l=bH(t));c{WY(),tH(),AH(),jV(),HV(),KV(),QV(),dX(),me(pX,"order"),me(gX,"buildLayerGraphs"),me(fX,"sweepLayerGraphs"),me(mX,"assignOrder")});function vX(c){var h=bX(c);v(c.graph().dummyChains,function(t){for(var e,r=c.node(t).edgeObj,n=xX(c,h,r.v,r.w),i=n.path,a=n.lca,s=0,o=i[s],l=!0;t!==r.w;){if(e=c.node(t),l){for(;(o=i[s])!==a&&c.node(o).maxRanko||l>e[c].lim););for(i=c,c=n;(c=t.parent(c))!==i;)s.push(c);return{path:a.concat(s.reverse()),lca:i}}function bX(r){var n={},i=0;function a(t){var e=i;v(r.children(t),a),n[t]={low:e,lim:i++}}return me(a,"dfs"),v(r.children(),a),n}var wX=b(()=>{WY(),me(vX,"parentDummyChains"),me(xX,"findPath"),me(bX,"postorder")});function kX(c,t){var h={};function e(t,n){var a=0,s=0,o=t.length,l=PU(n);return v(n,function(t,e){var r=EX(c,t),i=r?c.node(r).order:o;!r&&t!==l||(v(n.slice(s,e+1),function(n){v(c.predecessors(n),function(t){var e=c.node(t),r=e.order;!(ri)&&CX(s,t,a)})})}function e(r,n){var i,a=-1,s=0;return v(n,function(t,e){"border"===o.node(t).dummy&&(t=o.predecessors(t)).length&&(i=o.node(t[0]).order,l(n,s,e,a,i),s=e,a=i),l(n,s,n.length,i,r.length)}),n}return me(l,"scan"),me(e,"visitLayer"),nY(t,e),s}function EX(e,t){if(e.node(t).dummy)return vq(e.predecessors(t),function(t){return e.node(t).dummy})}function CX(t,e,r){r{WY(),tH(),AH(),me(kX,"findType1Conflicts"),me(TX,"findType2Conflicts"),me(EX,"findOtherInnerSegmentNode"),me(CX,"addConflict"),me(SX,"hasConflict"),me(_X,"verticalAlignment"),me(AX,"horizontalCompaction"),me(LX,"buildBlockGraph"),me(NX,"findSmallestWidthAlignment"),me(IX,"alignCoordinates"),me(RX,"balance"),me(MX,"positionX"),me(DX,"sep"),me(OX,"width")});function BX(r){$X(r=vH(r)),Bq(MX(r),function(t,e){r.node(e).x=t})}function $X(r){var t=bH(r),n=r.graph().ranksep,i=0;v(t,function(t){var e=Gj(x(t,function(t){return r.node(t).height}));v(t,function(t){r.node(t).y=i+e/2}),i+=e+n})}var FX=b(()=>{WY(),AH(),PX(),me(BX,"position"),me($X,"positionY")});function zX(e,t){var r=t&&t.debugTiming?SH:_H;r("layout",()=>{var t=r(" buildLayoutGraph",()=>qX(e));r(" runLayout",()=>GX(t,r)),r(" updateInputGraph",()=>UX(e,t))})}function GX(t,e){e(" makeSpaceForEdgeLabels",()=>jX(t)),e(" removeSelfEdges",()=>JX(t)),e(" acyclic",()=>dH(t)),e(" nestingGraph.run",()=>BV(t)),e(" rank",()=>RV(vH(t))),e(" injectEdgeLabelProxies",()=>WX(t)),e(" removeEmptyRanks",()=>kH(t)),e(" nestingGraph.cleanup",()=>GV(t)),e(" normalizeRanks",()=>wH(t)),e(" assignRankMinMax",()=>YX(t)),e(" removeEdgeLabelProxies",()=>HX(t)),e(" normalize.run",()=>GH(t)),e(" parentDummyChains",()=>vX(t)),e(" addBorderSegments",()=>LH(t)),e(" order",()=>pX(t)),e(" insertSelfEdges",()=>tK(t)),e(" adjustCoordinateSystem",()=>RH(t)),e(" position",()=>BX(t)),e(" positionSelfEdges",()=>eK(t)),e(" removeBorderNodes",()=>QX(t)),e(" normalize.undo",()=>qH(t)),e(" fixupEdgeLabelCoords",()=>KX(t)),e(" undoCoordinateSystem",()=>MH(t)),e(" translateGraph",()=>VX(t)),e(" assignNodeIntersects",()=>XX(t)),e(" reversePoints",()=>ZX(t)),e(" acyclic.undo",()=>gH(t))}function UX(n,i){v(n.nodes(),function(t){var e=n.node(t),r=i.node(t);e&&(e.x=r.x,e.y=r.y,i.children(t).length)&&(e.width=r.width,e.height=r.height)}),v(n.edges(),function(t){var e=n.edge(t),t=i.edge(t);e.points=t.points,Object.prototype.hasOwnProperty.call(t,"x")&&(e.x=t.x,e.y=t.y)}),n.graph().width=i.graph().width,n.graph().height=i.graph().height}function qX(r){var n=new QY({multigraph:!0,compound:!0}),t=nK(r.graph());return n.setGraph(dC({},aK,rK(t,iK),FW(t,sK))),v(r.nodes(),function(t){var e=nK(r.node(t));n.setNode(t,kU(rK(e,oK),lK)),n.setParent(t,r.parent(t))}),v(r.edges(),function(t){var e=nK(r.edge(t));n.setEdge(t,dC({},hK,rK(e,cK),FW(e,uK)))}),n}function jX(e){var r=e.graph();r.ranksep/=2,v(e.edges(),function(t){(t=e.edge(t)).minlen*=2,"c"!==t.labelpos.toLowerCase()&&("TB"===r.rankdir||"BT"===r.rankdir?t.width+=t.labeloffset:t.height+=t.labeloffset)})}function WX(r){v(r.edges(),function(t){var e=r.edge(t);e.width&&e.height&&(e=r.node(t.v),e={rank:(r.node(t.w).rank-e.rank)/2+e.rank,e:t},mH(r,"edge-proxy",e,"_ep"))})}function YX(e){var r=0;v(e.nodes(),function(t){(t=e.node(t)).borderTop&&(t.minRank=e.node(t.borderTop).rank,t.maxRank=e.node(t.borderBottom).rank,r=Gj(r,t.maxRank))}),e.graph().maxRank=r}function HX(r){v(r.nodes(),function(t){var e=r.node(t);"edge-proxy"===e.dummy&&(r.edge(e.e).labelRank=e.rank,r.removeNode(t))})}function VX(e){var i=Number.POSITIVE_INFINITY,a=0,s=Number.POSITIVE_INFINITY,o=0,t=e.graph(),r=t.marginx||0,n=t.marginy||0;function l(t){var e=t.x,r=t.y,n=t.width,t=t.height;i=Math.min(i,e-n/2),a=Math.max(a,e+n/2),s=Math.min(s,r-t/2),o=Math.max(o,r+t/2)}me(l,"getExtremes"),v(e.nodes(),function(t){l(e.node(t))}),v(e.edges(),function(t){t=e.edge(t),Object.prototype.hasOwnProperty.call(t,"x")&&l(t)}),i-=r,s-=n,v(e.nodes(),function(t){(t=e.node(t)).x-=i,t.y-=s}),v(e.edges(),function(t){t=e.edge(t),v(t.points,function(t){t.x-=i,t.y-=s}),Object.prototype.hasOwnProperty.call(t,"x")&&(t.x-=i),Object.prototype.hasOwnProperty.call(t,"y")&&(t.y-=s)}),t.width=a-i+r,t.height=o-s+n}function XX(a){v(a.edges(),function(t){var e,r=a.edge(t),n=a.node(t.v),t=a.node(t.w),i=r.points?(e=r.points[0],r.points[r.points.length-1]):(r.points=[],e=t,n);r.points.unshift(xH(n,e)),r.points.push(xH(t,i))})}function KX(r){v(r.edges(),function(t){var e=r.edge(t);if(Object.prototype.hasOwnProperty.call(e,"x"))switch("l"!==e.labelpos&&"r"!==e.labelpos||(e.width-=e.labeloffset),e.labelpos){case"l":e.x-=e.width/2+e.labeloffset;break;case"r":e.x+=e.width/2+e.labeloffset}})}function ZX(e){v(e.edges(),function(t){(t=e.edge(t)).reversed&&t.points.reverse()})}function QX(a){v(a.nodes(),function(t){var e,r,n,i;a.children(t).length&&(t=a.node(t),e=a.node(t.borderTop),r=a.node(t.borderBottom),n=a.node(PU(t.borderLeft)),i=a.node(PU(t.borderRight)),t.width=Math.abs(i.x-n.x),t.height=Math.abs(r.y-e.y),t.x=n.x+t.width/2,t.y=e.y+t.height/2)}),v(a.nodes(),function(t){"border"===a.node(t).dummy&&a.removeNode(t)})}function JX(r){v(r.edges(),function(t){var e;t.v===t.w&&((e=r.node(t.v)).selfEdges||(e.selfEdges=[]),e.selfEdges.push({e:t,label:r.edge(t)}),r.removeEdge(t))})}function tK(i){var t=bH(i);v(t,function(t){var n=0;v(t,function(t,e){var r=i.node(t);r.order=e+n,v(r.selfEdges,function(t){mH(i,"selfedge",{width:t.label.width,height:t.label.height,rank:r.rank,order:e+ ++n,e:t.e,label:t.label},"_se")}),delete r.selfEdges})})}function eK(s){v(s.nodes(),function(t){var e,r,n,i,a=s.node(t);"selfedge"===a.dummy&&(e=(i=s.node(a.e.v)).x+i.width/2,r=i.y,n=a.x-e,i=i.height/2,s.setEdge(a.e,a.label),s.removeNode(t),a.label.points=[{x:e+2*n/3,y:r-i},{x:e+5*n/6,y:r-i},{x:e+n,y:r},{x:e+5*n/6,y:r+i},{x:e+2*n/3,y:r+i}],a.label.x=a.x,a.label.y=a.y)})}function rK(t,e){return Oj(FW(t,e),Number)}function nK(t){var r={};return v(t,function(t,e){r[e.toLowerCase()]=t}),r}var iK,aK,sK,oK,lK,cK,hK,uK,dK=b(()=>{WY(),tH(),IH(),zH(),fH(),jH(),PV(),UV(),yX(),wX(),FX(),AH(),me(zX,"layout"),me(GX,"runLayout"),me(UX,"updateInputGraph"),iK=["nodesep","edgesep","ranksep","marginx","marginy"],aK={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},sK=["acyclicer","ranker","rankdir","align"],oK=["width","height"],lK={width:0,height:0},cK=["minlen","weight","width","height","labeloffset"],hK={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},uK=["labelpos"],me(qX,"buildLayoutGraph"),me(jX,"makeSpaceForEdgeLabels"),me(WX,"injectEdgeLabelProxies"),me(YX,"assignRankMinMax"),me(HX,"removeEdgeLabelProxies"),me(VX,"translateGraph"),me(XX,"assignNodeIntersects"),me(KX,"fixupEdgeLabelCoords"),me(ZX,"reversePointsForReversedEdges"),me(QX,"removeBorderNodes"),me(JX,"removeSelfEdges"),me(tK,"insertSelfEdges"),me(eK,"positionSelfEdges"),me(rK,"selectNumberAttrs"),me(nK,"canonicalize")}),pK=b(()=>{fH(),dK(),jH(),PV()});function gK(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:fK(t),edges:mK(t)};return Lj(t.graph())||(e.value=mz(t.graph())),e}function fK(n){return x(n.nodes(),function(t){var e=n.node(t),r=n.parent(t),t={v:t};return Lj(e)||(t.value=e),Lj(r)||(t.parent=r),t})}function mK(n){return x(n.edges(),function(t){var e=n.edge(t),r={v:t.v,w:t.w};return Lj(t.name)||(r.name=t.name),Lj(e)||(r.value=e),r})}var yK,vK,xK,bK,wK,kK,TK,EK,CK,SK,_K,AK,LK,NK,IK,RK=b(()=>{WY(),JY(),me(gK,"write"),me(fK,"writeNodes"),me(mK,"writeEdges")}),MK=b(()=>{t(),tH(),RK(),yK=new Map,vK=new Map,xK=new Map,bK=me(()=>{vK.clear(),xK.clear(),yK.clear()},"clear"),wK=me((t,e)=>{var r=vK.get(e)||[];return D.trace("In isDescendant",e," ",t," = ",r.includes(t)),r.includes(t)},"isDescendant"),kK=me((t,e)=>{var r=vK.get(e)||[];return D.info("Descendants of ",e," is ",r),D.info("Edge is ",t),t.v!==e&&t.w!==e&&(r?r.includes(t.v)||wK(t.v,e)||wK(t.w,e)||r.includes(t.w):(D.debug("Tilt, ",e,",not in descendants"),!1))},"edgeInCluster"),TK=me((r,n,i,a)=>{D.warn("Copying children of ",r,"root",a,"data",n.node(r),a);var t=n.children(r)||[];r!==a&&t.push(r),D.warn("Copying (nodes) clusterId",r,"nodes",t),t.forEach(t=>{var e;0{D.info("Edge",t);var e=n.edge(t.v,t.w,t.name);D.info("Edge data",e,a);try{kK(t,a)?(D.info("Copying as ",t.v,t.w,e,t.name),i.setEdge(t.v,t.w,e,t.name),D.info("newGraph edges ",i.edges(),i.edge(i.edges()[0]))):D.info("Skipping copy of edge ",t.v,"--\x3e",t.w," rootId: ",a," clusterId:",r)}catch(t){D.error(t)}})),D.debug("Removing node",t),n.removeNode(t)})},"copy"),EK=me((t,e)=>{let r=e.children(t),n=[...r];for(var i of r)xK.set(i,t),n=[...n,...EK(i,e)];return n},"extractDescendants"),CK=me((t,e,r)=>{let n=t.edges().filter(t=>t.v===e||t.w===e),i=t.edges().filter(t=>t.v===r||t.w===r),a=n.map(t=>({v:t.v===e?r:t.v,w:t.w===e?e:t.w})),s=i.map(t=>({v:t.v,w:t.w}));return a.filter(e=>s.some(t=>e.v===t.v&&e.w===t.w))},"findCommonEdges"),SK=me((t,e,r)=>{var n,i=e.children(t);if(D.trace("Searching children of id ",t,i),i.length<1)return t;let a;for(n of i){var s=SK(n,e,r),o=CK(e,r,s);if(s){if(!(0yK.has(t)&&yK.get(t).externalConnections&&yK.has(t)?yK.get(t).id:t,"getAnchorId"),AK=me((a,t)=>{if(!a||10{wK(t.v,e)^wK(t.w,e)&&(D.warn("Edge: ",t," leaves cluster ",e),D.warn("Descendants of XXX ",e,": ",vK.get(e)),yK.get(e).externalConnections=!0)})):D.debug("Not a cluster ",e,vK)});for(var e of yK.keys()){var r=yK.get(e).id;(r=a.parent(r))!==e&&yK.has(r)&&!yK.get(r).externalConnections&&(yK.get(e).id=r)}a.edges().forEach(function(t){var e,r,n,i=a.edge(t);D.warn("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),D.warn("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(a.edge(t))),t.v,D.warn("Fix XXX",yK,"ids:",t.v,t.w,"Translating: ",yK.get(t.v)," --- ",yK.get(t.w)),(yK.get(t.v)||yK.get(t.w))&&(D.warn("Fixing and trying - removing XXX",t.v,t.w,t.name),e=_K(t.v),r=_K(t.w),a.removeEdge(t.v,t.w,t.name),e!==t.v&&(n=a.parent(e),yK.get(n).externalConnections=!0,i.fromCluster=t.v),r!==t.w&&(n=a.parent(r),yK.get(n).externalConnections=!0,i.toCluster=t.w),D.warn("Fix Replacing with XXX",e,r,t.name),a.setEdge(e,r,i,t.name))}),D.warn("Adjusted Graph",gK(a)),LK(a,0),D.trace(yK)}},"adjustClustersAndEdges"),LK=me((r,n)=>{if(D.warn("extractor - ",n,gK(r),r.children("D")),10{if(0===t.length)return[];let r=Object.assign([],t);return t.forEach(t=>{t=e.children(t),t=NK(e,t),r=[...r,...t]}),r},"sorter"),IK=me(t=>NK(t,t.children()),"sortNodesByHierarchy")}),DK={};KBt(DK,{render:()=>PK});var OK,PK,BK=b(()=>{pK(),RK(),tH(),XO(),i(),MK(),rP(),sO(),VO(),t(),aO(),Tu(),OK=me(async(t,i,a,s,o,l)=>{D.warn("Graph in recursive render:XAX",gK(i),o);let c=i.graph().rankdir,n=(D.trace("Dir in recursive render - dir:",c),t=t.insert("g").attr("class","root"),i.nodes()?D.info("Recursive render XXX",i.nodes()):D.info("No nodes found for",i),0{var t=i.edges().map(async function(t){var e=i.edge(t.v,t.w,t.name);D.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),D.info("Edge "+t.v+" -> "+t.w+": ",t," ",JSON.stringify(i.edge(t))),D.info("Fix",yK,"ids:",t.v,t.w,"Translating: ",yK.get(t.v),yK.get(t.w)),await kO(r,e)});await Promise.all(t)},"processEdges")(),D.info("Graph before layout:",JSON.stringify(gK(i))),D.info("############################################# XXX"),D.info("### Layout ### XXX"),D.info("############################################# XXX"),zX(i),D.info("Graph after layout:",JSON.stringify(gK(i))),0),p=YD(l).subGraphTitleTotalMargin;return await Promise.all(IK(i).map(async function(t){var e,r=i.node(t);D.info("Position XBX => "+t+": ("+r.x,","+r.y,") width: ",r.width," height: ",r.height),r?.clusterNode?(r.y+=p,D.info("A tainted cluster node XBX1",t,r.id,r.width,r.height,r.x,r.y,i.parent(t)),yK.get(r.id).node=r,tP(r)):0 "+t.w+": "+JSON.stringify(e),e),e.points.forEach(t=>t.y+=p/2),i.node(t.v)),t=i.node(t.w),r=LO(h,e,yK,a,r,t,s);TO(e,r)}),i.nodes().forEach(function(t){var e=i.node(t);D.info(t,e.type,e.diff),e.isGroup&&(d=e.diff)}),D.warn("Returning from recursive render XAX",t,d),{elem:t,diff:d}},"recursiveRender"),PK=me(async(t,e)=>{let l=new QY({multigraph:!0,compound:!0}).setGraph({rankdir:t.direction,nodesep:t.config?.nodeSpacing||t.config?.flowchart?.nodeSpacing||t.nodeSpacing,ranksep:t.config?.rankSpacing||t.config?.flowchart?.rankSpacing||t.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),r=e.select("g");HO(r,t.markers,t.type,t.diagramId),JO(),bO(),eO(),bK(),t.nodes.forEach(t=>{l.setNode(t.id,{...t}),t.parentId&&l.setParent(t.id,t.parentId)}),D.debug("Edges:",t.edges),t.edges.forEach(t=>{var e,r,n,i,a,s,o;t.start===t.end?(r=(e=t.start)+"---"+e+"---1",n=e+"---"+e+"---2",i=l.node(e),l.setNode(r,{domId:r,id:r,parentId:i.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),l.setParent(r,i.parentId),l.setNode(n,{domId:n,id:n,parentId:i.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),l.setParent(n,i.parentId),a=structuredClone(t),s=structuredClone(t),o=structuredClone(t),a.label="",a.arrowTypeEnd="none",a.id=e+"-cyclic-special-1",s.arrowTypeStart="none",s.arrowTypeEnd="none",s.id=e+"-cyclic-special-mid",o.label="",i.isGroup&&(a.fromCluster=e,o.toCluster=e),o.id=e+"-cyclic-special-2",o.arrowTypeStart="none",l.setEdge(e,r,a,e+"-cyclic-special-0"),l.setEdge(r,n,s,e+"-cyclic-special-1"),l.setEdge(n,e,o,e+"-cyct.length)&&(e=t.length);for(var r=0,n=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[a++]}},"n"),e:me(function(t){throw t},"e"),f:e};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function tZ(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function eZ(t,e){return t(e={exports:{}},e.exports),e.exports}function rZ(t){for(var e=t.length;e--&&Itt.test(t.charAt(e)););return e}function nZ(t){return t&&t.slice(0,Rtt(t)+1).replace(Mtt,"")}function iZ(t){var e=Ott.call(t,Btt),r=t[Btt];try{var n=!(t[Btt]=void 0)}catch{}var i=Ptt.call(t);return n&&(e?t[Btt]=r:delete t[Btt]),i}function aZ(t){return Ftt.call(t)}function sZ(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":(Gtt&&Gtt in Object(t)?$tt:ztt)(t)}function oZ(t){return null!=t&&"object"==typeof t}function lZ(t){return"symbol"==typeof t||qtt(t)&&"[object Symbol]"==Utt(t)}function cZ(t){if("number"==typeof t)return t;if(jtt(t))return Wtt;if(_tt(t)&&(e="function"==typeof t.valueOf?t.valueOf():t,t=_tt(e)?e+"":e),"string"!=typeof t)return 0===t?t:+t;t=Dtt(t);var e=Htt.test(t);return e||Vtt.test(t)?Xtt(t.slice(2),e?2:8):Ytt.test(t)?Wtt:+t}function hZ(n,r,t){var i,a,s,o,l,c,h=0,e=!1,u=!1,d=!0;if("function"!=typeof n)throw new TypeError("Expected a function");function p(t){var e=i,r=a;return i=a=void 0,h=t,o=n.apply(r,e)}function g(t){return h=t,l=setTimeout(y,r),e?p(t):o}function f(t){var e=r-(t-c);return u?Qtt(e,s-(t-h)):e}function m(t){var e=t-c;return void 0===c||r<=e||e<0||u&&s<=t-h}function y(){var t=Ntt();if(m(t))return v(t);l=setTimeout(y,f(t))}function v(t){return l=void 0,d&&i?p(t):(i=a=void 0,o)}function x(){void 0!==l&&clearTimeout(l),i=c=a=l=void(h=0)}function b(){return void 0===l?o:v(Ntt())}function w(){var t=Ntt(),e=m(t);if(i=arguments,a=this,c=t,e){if(void 0===l)return g(c);if(u)return clearTimeout(l),l=setTimeout(y,r),p(c)}return void 0===l&&(l=setTimeout(y,r)),o}return r=Ktt(r)||0,_tt(t)&&(e=!!t.leading,u="maxWait"in t,s=u?Ztt(Ktt(t.maxWait)||0,r):s,d="trailing"in t?!!t.trailing:d),me(p,"invokeFunc"),me(g,"leadingEdge"),me(f,"remainingWait"),me(m,"shouldInvoke"),me(y,"timerExpired"),me(v,"trailingEdge"),me(x,"cancel"),me(b,"flush"),me(w,"debounced"),w.cancel=x,w.flush=b,w}function uZ(t,e,r,n,i,a){var s=HJ(t)?t:_nt[t]||_nt.euclidean;return 0===e&&HJ(t)?s(i,a):s(e,r,n,i,a)}function dZ(t,e){var r;return!pit(t)&&(!("number"!=(r=typeof t)&&"symbol"!=r&&"boolean"!=r&&null!=t&&!jtt(t))||fit.test(t)||!git.test(t)||null!=e&&t in Object(e))}function pZ(t){return!!_tt(t)&&("[object Function]"==(t=Utt(t))||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t)}function gZ(t){return!!vit&&vit in t}function fZ(t){if(null!=t){try{return bit.call(t)}catch{}try{return t+""}catch{}}return""}function mZ(t){return!(!_tt(t)||xit(t))&&(yit(t)?Tit:kit).test(wit(t))}function yZ(t,e){return t?.[e]}function vZ(t,e){return t=Cit(t,e),Eit(t)?t:void 0}function xZ(){this.__data__=_it?_it(null):{},this.size=0}function bZ(t){return t=this.has(t)&&delete this.__data__[t],this.size-=t?1:0,t}function wZ(t){var e,r=this.__data__;return _it?"__lodash_hash_undefined__"===(e=r[t])?void 0:e:Ait.call(r,t)?r[t]:void 0}function kZ(t){var e=this.__data__;return _it?void 0!==e[t]:Lit.call(e,t)}function TZ(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=_it&&void 0===e?"__lodash_hash_undefined__":e,this}function EZ(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e>0&255)/255,e[1]=(t>>8&255)/255,e[2]=(t>>16&255)/255,e[3]=(t>>24&255)/255,e}function rJ(t){return t[0]+(t[1]<<8)+(t[2]<<16)+(t[3]<<24)}function nJ(e,t){var r=e.createTexture();return r.buffer=function(t){e.bindTexture(e.TEXTURE_2D,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR_MIPMAP_NEAREST),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t),e.generateMipmap(e.TEXTURE_2D),e.bindTexture(e.TEXTURE_2D,null)},r.deleteTexture=function(){e.deleteTexture(r)},r}function iJ(t,e){switch(e){case"float":return[1,t.FLOAT,4];case"vec2":return[2,t.FLOAT,4];case"vec3":return[3,t.FLOAT,4];case"vec4":return[4,t.FLOAT,4];case"int":return[1,t.INT,4];case"ivec2":return[2,t.INT,4]}}function aJ(t,e,r){switch(e){case t.FLOAT:return new Float32Array(r);case t.INT:return new Int32Array(r)}}function sJ(t,e,r,n,i,a){switch(e){case t.FLOAT:return new Float32Array(r.buffer,a*n,i);case t.INT:return new Int32Array(r.buffer,a*n,i)}}function oJ(t,e,r,n){var i=(e=qK(iJ(t,e),2))[0],n=aJ(t,e=e[1],n),a=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,a),t.bufferData(t.ARRAY_BUFFER,n,t.STATIC_DRAW),e===t.FLOAT?t.vertexAttribPointer(r,i,e,!1,0,0):e===t.INT&&t.vertexAttribIPointer(r,i,e,0,0),t.enableVertexAttribArray(r),t.bindBuffer(t.ARRAY_BUFFER,null),a}function lJ(e,t,r,n){var i=(r=qK(iJ(e,r),3))[0],a=r[1],r=r[2],s=aJ(e,a,t*i),o=i*r,l=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,l),e.bufferData(e.ARRAY_BUFFER,t*o,e.DYNAMIC_DRAW),e.enableVertexAttribArray(n),a===e.FLOAT?e.vertexAttribPointer(n,i,a,!1,o,0):a===e.INT&&e.vertexAttribIPointer(n,i,a,o,0),e.vertexAttribDivisor(n,1),e.bindBuffer(e.ARRAY_BUFFER,null);for(var c=new Array(t),h=0;h{function n(t){if(FK(this,n),this._obj=Object.create(null),this.size=0,null!=t)for(var e=null!=t.instanceString&&t.instanceString()===this.instanceString()?t.toArray():t,r=0;r{if(FJ){if(FJ.requestAnimationFrame)return function(t){FJ.requestAnimationFrame(t)};if(FJ.mozRequestAnimationFrame)return function(t){FJ.mozRequestAnimationFrame(t)};if(FJ.webkitRequestAnimationFrame)return function(t){FJ.webkitRequestAnimationFrame(t)};if(FJ.msRequestAnimationFrame)return function(t){FJ.msRequestAnimationFrame(t)}}return function(t){t&&setTimeout(function(){t(eet())},1e3/60)}})(),net=me(function(t){return ret(t)},"requestAnimationFrame"),iet=eet,aet=me(function(t){for(var e,r=1>1])<0;)t[r]=a,r=s;return t[r]=i},"_siftdown"),u=me(function(t,e,r){var n,i,a,s,o;for(null==r&&(r=d),i=t.length,a=t[o=e],n=2*e+1;ny&&(u[v]=y,g[v]=w,f[v]=x),r||(v=w*o+b,!r&&u[v]>y&&(u[v]=y,g[v]=b,f[v]=x)))}for(var k=0;k=t.x1&&t.y2>=t.y1?{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2,w:t.x2-t.x1,h:t.y2-t.y1}:null!=t.w&&null!=t.h&&0<=t.w&&0<=t.h?{x1:t.x1,y1:t.y1,x2:t.x1+t.w,y2:t.y1+t.h,w:t.w,h:t.h}:void 0:void 0},"makeBoundingBox"),yrt=me(function(t){return{x1:t.x1,x2:t.x2,w:t.w,y1:t.y1,y2:t.y2,h:t.h}},"copyBoundingBox"),vrt=me(function(t){t.x1=1/0,t.y1=1/0,t.x2=-1/0,t.y2=-1/0,t.w=0,t.h=0},"clearBoundingBox"),xrt=me(function(t,e,r){return{x1:t.x1+e,x2:t.x2+e,y1:t.y1+r,y2:t.y2+r,w:t.w,h:t.h}},"shiftBoundingBox"),brt=me(function(t,e){t.x1=Math.min(t.x1,e.x1),t.x2=Math.max(t.x2,e.x2),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,e.y1),t.y2=Math.max(t.y2,e.y2),t.h=t.y2-t.y1},"updateBoundingBox"),wrt=me(function(t,e,r){t.x1=Math.min(t.x1,e),t.x2=Math.max(t.x2,e),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,r),t.y2=Math.max(t.y2,r),t.h=t.y2-t.y1},"expandBoundingBoxByPoint"),krt=me(function(t){var e=1e.x2||e.x1>t.x2||t.x2e.y2||e.y1>t.y2)},"boundingBoxesIntersect"),Srt=me(function(t,e,r){return t.x1<=e&&e<=t.x2&&t.y1<=r&&r<=t.y2},"inBoundingBox"),_rt=me(function(t,e){return Srt(t,e.x,e.y)},"pointInBoundingBox"),Art=me(function(t,e){return Srt(t,e.x1,e.y1)&&Srt(t,e.x2,e.y2)},"boundingBoxInBoundingBox"),Lrt=me(function(t,e,r,n,i,a,s){var o,l="auto"===(l=7=u&&c[1]<=o||0<(c=qrt(t,e,r,n,h=r+i-l,u=n+a-l,l+s)).length&&c[0]>=h&&c[1]>=u||0<(c=qrt(t,e,r,n,o=r-i+l,h=n+a-l,l+s)).length&&c[0]<=o&&c[1]>=h?[c[0],c[1]]:[]},"roundRectangleIntersectLine"),Nrt=me(function(t,e,r,n,i,a,s){var o=Math.min(r,i),r=Math.max(r,i),i=Math.min(n,a),n=Math.max(n,a);return o-s<=t&&t<=r+s&&i-s<=e&&e<=n+s},"inLineVicinity"),Irt=me(function(t,e,r,n,i,a,s,o,l){var c=Math.min(r,s,i)-l,r=Math.max(r,s,i)+l,s=Math.min(n,o,a)-l,i=Math.max(n,o,a)+l;return!(to&&(o=e[s][c],l=c);i[l].push(t[s])}for(var h=0;h=i.threshold||"dendrogram"===i.mode&&1===t.length)return!1;var p=e[s],g=e[n[s]],f="dendrogram"===i.mode?{left:p,right:g,key:p.key}:{value:p.value.concat(g.value),key:p.key};t[p.index]=f,t.splice(g.index,1),e[p.key]=f;for(var m=0;mr[g.key][y.key]&&(a=r[g.key][y.key])):"max"===i.linkage?(a=r[p.key][y.key],r[p.key][y.key]s&&(s=e[i*t+(a=l)])}0=e.minIterations-1||v==e.maxIterations-1)){for(var q=0,R=0;R{var t=o[e];null!=t&&null!=t.then?t.then(function(t){s(e,t)},function(t){n(t)}):s(e,t)})(t)})},ait.resolve=function(r){return new ait(function(t,e){t(r)})},ait.reject=function(r){return new ait(function(t,e){e(r)})},uit=typeof Promise<"u"?Promise:ait,dit=me(function(t,e,r){var n=rtt(t),i=!n;(e=this._private=vtt({duration:1e3},e,r)).target=t,e.style=e.style||e.css,e.started=!1,e.playing=!1,e.hooked=!1,e.applying=!1,e.progress=0,e.completes=[],e.frames=[],e.complete&&HJ(e.complete)&&e.completes.push(e.complete),i&&(r=t.position(),e.startPosition=e.startPosition||{x:r.x,y:r.y},e.startStyle=e.startStyle||t.cy().style().getAnimationStartStyle(t,e.style)),n&&(i=t.pan(),e.startPan={x:i.x,y:i.y},e.startZoom=t.zoom()),this.length=1,this[0]=this},"Animation"),mlt=dit.prototype,vtt(mlt,{instanceString:me(function(){return"animation"},"instanceString"),hook:me(function(){var t,e=this._private;return e.hooked||(t=e.target._private.animation,(e.queue?t.queue:t.current).push(this),JJ(e.target)&&e.target.cy().addToAnimationPool(e.target),e.hooked=!0),this},"hook"),play:me(function(){var t=this._private;return 1===t.progress&&(t.progress=0),t.playing=!0,t.started=!1,t.stopped=!1,this.hook(),this},"play"),playing:me(function(){return this._private.playing},"playing"),apply:me(function(){var t=this._private;return t.applying=!0,t.started=!1,t.stopped=!1,this.hook(),this},"apply"),applying:me(function(){return this._private.applying},"applying"),pause:me(function(){var t=this._private;return t.playing=!1,t.started=!1,this},"pause"),stop:me(function(){var t=this._private;return t.playing=!1,t.started=!1,t.stopped=!0,this},"stop"),rewind:me(function(){return this.progress(0)},"rewind"),fastforward:me(function(){return this.progress(1)},"fastforward"),time:me(function(t){var e=this._private;return void 0===t?e.progress*e.duration:this.progress(t/e.duration)},"time"),progress:me(function(t){var e=this._private,r=e.playing;return void 0===t?e.progress:(r&&this.pause(),e.progress=t,e.started=!1,r&&this.play(),this)},"progress"),completed:me(function(){return 1===this._private.progress},"completed"),reverse:me(function(){var n=this._private,t=n.playing,e=(t&&this.pause(),n.progress=1-n.progress,n.started=!1,me(function(t,e){var r=n[t];null!=r&&(n[t]=n[e],n[e]=r)},"swap"));if(e("zoom","startZoom"),e("pan","startPan"),e("position","startPosition"),n.style)for(var r=0;r{try{var t=Sit(Object,"defineProperty");return t({},"",{}),t}catch{}})(),Jit=Bot,me(KZ,"baseAssignValue"),tat=KZ,slt=Object.prototype,eat=slt.hasOwnProperty,me(ZZ,"assignValue"),rat=ZZ,nat=/^(?:0|[1-9]\d*)$/,me(QZ,"isIndex"),iat=QZ,me(JZ,"baseSet"),aat=JZ,me(tQ,"set"),sat=tQ,me(eQ,"copyArray"),oat=eQ,me(rQ,"toPath"),lat=rQ,xlt={data:me(function(b){var t={field:"data",bindingEvent:"data",allowBinding:!1,allowSetting:!1,allowGetting:!1,settingEvent:"data",settingTriggersEvent:!1,triggerFnName:"trigger",immutableKeys:{},updateStyle:!1,beforeGet:me(function(t){},"beforeGet"),beforeSet:me(function(t,e){},"beforeSet"),onSet:me(function(t){},"onSet"),canSet:me(function(t){return!0},"canSet")};return b=vtt({},t,b),me(function(t,e){var r,n=b,i=this,a=void 0!==i.length,s=a?i:[i],o=a?i[0]:i;if(YJ(t)){var l,c=-1!==t.indexOf(".")&&lat(t);if(n.allowGetting&&void 0===e)return o&&(n.beforeGet(o),l=c&&void 0===o._private[n.field][t]?Qit(o._private[n.field],c):o._private[n.field][t]),l;if(n.allowSetting&&void 0!==e&&!n.immutableKeys[t]){a=UK({},t,e),n.beforeSet(i,a);for(var h=0,u=s.length;h\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:ftt,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"}).variable="(?:[\\w-.]|(?:\\\\"+hat.metaChar+"))+",hat.className="(?:[\\w-]|(?:\\\\"+hat.metaChar+"))+",hat.value=hat.string+"|"+hat.number,hat.id=hat.variable;for(var e,r=hat.comparatorOp.split("|"),i=0;i{for(var t,e={},r=0;r")+h(t.child,e);case J.ANCESTOR:case J.DESCENDANT:return h(t.ancestor,e)+" "+h(t.descendant,e);case J.COMPOUND_SPLIT:var a=h(t.left,e),i=h(t.subject,e),s=h(t.right,e);return a+(0":u=!0,n=r=":u=!0,n=r<=t;break;case"<":u=!0,n=ta.length?e.substr(a.length):""}function n(){c=c.length>u.length?c.substr(u.length):""}for(e=e.replace(/[/][*](\s|.)+?[*][/]/g,""),me(r,"removeSelAndBlockFromRemaining"),me(n,"removePropAndValFromRem");!e.match(/^\s*$/);){var i=e.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!i){_et("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+e);break}var a=i[0],s=i[1];if("core"!==s&&new _at(s).invalid)_et("Skipping parsing of block: Invalid selector found in string stylesheet: "+s);else{for(var o=i[2],l=!1,c=o,h=[];!c.match(/^\s*$/);){if(!(p=c.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/))){_et("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+o),l=!0;break}var u=p[0],d=p[1],p=p[2];this.properties[d]?this.parse(d,p)?h.push({name:d,val:p}):_et("Skipping property: Invalid property definition in: "+u):_et("Skipping property: Invalid property name in: "+u),n()}if(l){r();break}this.selector(s);for(var g=0;gl.max||l.strictMax&&r===l.max)?null:(s={name:e,value:r,strValue:""+r+(x||""),units:x,bypass:n},l.unitless||"px"!==x&&"em"!==x?s.pfValue=r:s.pfValue="px"!==x&&x?this.getEmSizeInPixels()*r:r,"ms"!==x&&"s"!==x||(s.pfValue="ms"===x?r:1e3*r),"deg"!==x&&"rad"!==x||(s.pfValue="rad"===x?r:art(r)),"%"===x&&(s.pfValue=r/100),s);if(l.propList){var w,k=[];if("none"!=(w=""+r)){for(var T=w.split(/\s*,\s*|\s+/),E=0;Ethis._private.maxZoom?this._private.maxZoom:e)=n.minZoom&&(n.maxZoom=e),this},"zoomRange"),minZoom:me(function(t){return void 0===t?this._private.minZoom:this.zoomRange({min:t})},"minZoom"),maxZoom:me(function(t){return void 0===t?this._private.maxZoom:this.zoomRange({max:t})},"maxZoom"),getZoomedViewport:me(function(t){var e,r,n=this._private,i=n.pan,a=n.zoom,s=!n.zoomingEnabled;return at(t)?r=t:XJ(t)&&(r=t.level,null!=t.position?e=Qet(t.position,a,i):null!=t.renderedPosition&&(e=t.renderedPosition),null!=e)&&!n.panningEnabled&&(s=!0),r=(r=r>n.maxZoom?n.maxZoom:r)e.maxZoom||!e.zoomingEnabled?a=!0:(e.zoom=r,i.push("zoom"))),!n||a&&t.cancelOnFailedZoom||!e.panningEnabled||(r=t.pan,at(r.x)&&(e.pan.x=r.x,s=!1),at(r.y)&&(e.pan.y=r.y,s=!1),s)||i.push("pan"),0=r.numIter||(Bst(i,r),i.temperature=i.temperature*r.coolingFactor,i.temperature=r.animationThreshold&&s(),net(t)):(Xst(i,r),l())},"frame")();else{for(;h;)h=o(c),c++;Xst(i,r),l()}return this},MQ.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},MQ.prototype.destroy=function(){return this.thread&&this.thread.stop(),this},Ist=me(function(t,e,r){for(var n=r.eles.edges(),i=r.eles.nodes(),a=mrt(r.boundingBox||{x1:0,y1:0,w:t.width(),h:t.height()}),s={isCompound:t.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:n.size(),temperature:r.initialTemp,clientWidth:a.w,clientHeight:a.h,boundingBox:a},o=r.eles.components(),l={},c=0;cn.maxX)&&(n.maxX=e.maxX+n.padRight,i=!0),(null==n.minX||e.minX-n.padLeftn.maxY)&&(n.maxY=e.maxY+n.padBottom,i=!0),(null==n.minY||e.minY-n.padTop(e=Ort(y,v,h[u],h[u+1],h[u+2],h[u+3])))return E(t,e),!0}else if("bezier"===n.edgeType||"multibezier"===n.edgeType||"self"===n.edgeType||"compound"===n.edgeType)for(h=n.allpts,u=0;u+5(e=Drt(y,v,h[u],h[u+1],h[u+2],h[u+3],h[u+4],h[u+5])))return E(t,e),!0;for(var l=l||r.source,c=c||r.target,d=x.getArrowWidth(i,a),p=[{name:"source",x:n.arrowStartX,y:n.arrowStartY,angle:n.srcArrowAngle},{name:"target",x:n.arrowEndX,y:n.arrowEndY,angle:n.tgtArrowAngle},{name:"mid-source",x:n.midX,y:n.midY,angle:n.midsrcArrowAngle},{name:"mid-target",x:n.midX,y:n.midY,angle:n.midtgtArrowAngle}],u=0;uMath.abs(b)?i:n:"upward"===u||"downward"===u?(h=n,y=!0):"leftward"!==u&&"rightward"!==u||(h=i,y=!0),(i=h===n)?b:m),n=lrt(h=i?x:v),b=!1;y&&(p||g)||!("downward"===u&&h<0||"upward"===u&&0=Math.abs(w)},"getIsTooClose"))(m),u=y(Math.abs(w)-Math.abs(m)),!g&&!u||b?i?(h=a.y1+m+(c?o/2*n:0),x=a.x1,e=a.x2,r.segpts=[x,h,e,h]):(p=a.x1+m+(c?s/2*n:0),u=a.y1,d=a.y2,r.segpts=[p,u,p,d]):i?(p=Math.abs(h)<=o/2,d=Math.abs(v)<=l/2,p?(y=(a.x1+a.x2)/2,g=a.y1,u=a.y2,r.segpts=[y,g,y,u]):d?(b=(a.y1+a.y2)/2,v=a.x1,l=a.x2,r.segpts=[v,b,l,b]):r.segpts=[a.x1,a.y2]):(p=Math.abs(h)<=s/2,g=Math.abs(x)<=e/2,p?(y=(a.y1+a.y2)/2,u=a.x1,d=a.x2,r.segpts=[u,y,d,y]):g?(v=(a.x1+a.x2)/2,l=a.y1,b=a.y2,r.segpts=[v,l,v,b]):r.segpts=[a.x2,a.y1]),r.isRound&&(y=t.pstyle("taxi-radius").value,g="arc-radius"===t.pstyle("radius-type").value[0],r.radii=new Array(r.segpts.length/2).fill(y),r.isArcRadius=new Array(r.segpts.length/2).fill(g))},tryToCorrectInvalidPoints:function(t,e){var r,n,i,a,s,o,l,c,h,u,d,p,g,f,m,y,v,x,b,w,k,T,E=t._private.rscratch;"bezier"===E.edgeType&&(m=e.srcPos,r=e.tgtPos,n=e.srcW,i=e.srcH,a=e.tgtW,s=e.tgtH,T=e.srcShape,o=e.tgtShape,v=e.srcCornerRadius,l=e.tgtCornerRadius,x=e.srcRs,e=e.tgtRs,y=!at(E.startX)||!at(E.startY),f=!at(E.arrowStartX)||!at(E.arrowStartY),c=!at(E.endX)||!at(E.endY),h=!at(E.arrowEndX)||!at(E.arrowEndY),u=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth*3,b=(w=crt({x:E.ctrlpts[0],y:E.ctrlpts[1]},{x:E.startX,y:E.startY}))i.poolIndex()&&(t=n,n=i,i=t),e.srcPos=n.position()),s=e.tgtPos=i.position(),o=e.srcW=n.outerWidth(),l=e.srcH=n.outerHeight(),c=e.tgtW=i.outerWidth(),h=e.tgtH=i.outerHeight(),u=e.srcShape=D.nodeShapes[M.getNodeShape(n)],d=e.tgtShape=D.nodeShapes[M.getNodeShape(i)],p=e.srcCornerRadius="auto"===n.pstyle("corner-radius").value?"auto":n.pstyle("corner-radius").pfValue,g=e.tgtCornerRadius="auto"===i.pstyle("corner-radius").value?"auto":i.pstyle("corner-radius").pfValue,f=e.tgtRs=i._private.rscratch,m=e.srcRs=n._private.rscratch;e.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var y=0;y=N.desktopTapThreshold2),v(t)),o=(e&&(N.hoverData.tapholdCancelled=!0),me(function(){var t=N.hoverData.dragDelta=N.hoverData.dragDelta||[];0===t.length?(t.push(f[0]),t.push(f[1])):(t[0]+=f[0],t[1]+=f[1])},"updateDragDelta")),y=(i=!0,I(d,["mousemove","vmousemove","tapdrag"],t,{x:l[0],y:l[1]}),me(function(){N.data.bgActivePosistion=void 0,N.hoverData.selecting||a.emit({originalEvent:t,type:"boxstart",position:{x:l[0],y:l[1]}}),u[4]=1,N.hoverData.selecting=!0,N.redrawHint("select",!0),N.redraw()},"goIntoBoxMode"));if(3===N.hoverData.which?e&&(r={originalEvent:t,type:"cxtdrag",position:{x:l[0],y:l[1]}},(g||a).emit(r),N.hoverData.cxtDragged=!0,!N.hoverData.cxtOver||d!==N.hoverData.cxtOver)&&(N.hoverData.cxtOver&&N.hoverData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:l[0],y:l[1]}}),N.hoverData.cxtOver=d)&&d.emit({originalEvent:t,type:"cxtdragover",position:{x:l[0],y:l[1]}}):N.hoverData.dragging?(i=!0,a.panningEnabled()&&a.userPanningEnabled()&&(N.hoverData.justStartedPan?(r=N.hoverData.mdownPos,n={x:(l[0]-r[0])*s,y:(l[1]-r[1])*s},N.hoverData.justStartedPan=!1):n={x:f[0]*s,y:f[1]*s},a.panBy(n),a.emit("dragpan"),N.hoverData.dragged=!0),l=N.projectIntoViewport(t.clientX,t.clientY)):1!=u[4]||null!=g&&!g.pannable()?(g&&g.pannable()&&g.active()&&g.unactivate(),g&&g.grabbed()||d==p||(p&&I(p,["mouseout","tapdragout"],t,{x:l[0],y:l[1]}),d&&I(d,["mouseover","tapdragover"],t,{x:l[0],y:l[1]}),N.hoverData.last=d),g&&(e?a.boxSelectionEnabled()&&h?(g&&g.grabbed()&&(D(m),g.emit("freeon"),m.emit("free"),N.dragData.didDrag)&&(g.emit("dragfreeon"),m.emit("dragfree")),y()):g&&g.grabbed()&&N.nodeIsDraggable(g)&&((r=!N.dragData.didDrag)&&N.redrawHint("eles",!0),N.dragData.didDrag=!0,N.hoverData.draggingEles||M(m,{inDragLayer:!0}),s={x:0,y:0},at(f[0])&&at(f[1])&&(s.x+=f[0],s.y+=f[1],r)&&((n=N.hoverData.dragDelta)&&at(n[0])&&at(n[1])&&(s.x+=n[0],s.y+=n[1])),N.hoverData.draggingEles=!0,m.silentShift(s).emit("position drag"),N.redrawHint("drag",!0),N.redraw()):o()),i=!0):e&&(N.hoverData.dragging||!a.boxSelectionEnabled()||!h&&a.panningEnabled()&&a.userPanningEnabled()?!N.hoverData.selecting&&a.panningEnabled()&&a.userPanningEnabled()&&R(g,N.hoverData.downs)&&(N.hoverData.dragging=!0,N.hoverData.justStartedPan=!0,u[4]=0,N.data.bgActivePosistion=trt(c),N.redrawHint("select",!0),N.redraw()):y(),g)&&g.pannable()&&g.active()&&g.unactivate(),u[2]=l[0],u[3]=l[1],i)return t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),!1}},"mousemoveHandler"),!1),N.registerBinding(t,"mouseup",me(function(t){var e,r,n,i,a,s,o,l;1===N.hoverData.which&&1!==t.which&&N.hoverData.capture||N.hoverData.capture&&(N.hoverData.capture=!1,e=N.cy,r=N.projectIntoViewport(t.clientX,t.clientY),n=N.selection,o=N.findNearestElement(r[0],r[1],!0,!1),i=N.dragData.possibleDragElements,a=N.hoverData.down,l=v(t),N.data.bgActivePosistion&&(N.redrawHint("select",!0),N.redraw()),N.hoverData.tapholdCancelled=!0,N.data.bgActivePosistion=void 0,a&&a.unactivate(),3===N.hoverData.which?(s={originalEvent:t,type:"cxttapend",position:{x:r[0],y:r[1]}},(a||e).emit(s),N.hoverData.cxtDragged||(s={originalEvent:t,type:"cxttap",position:{x:r[0],y:r[1]}},(a||e).emit(s)),N.hoverData.cxtDragged=!1,N.hoverData.which=null):1===N.hoverData.which&&(I(o,["mouseup","tapend","vmouseup"],t,{x:r[0],y:r[1]}),N.dragData.didDrag||N.hoverData.dragged||N.hoverData.selecting||N.hoverData.isOverThresholdDrag||(I(a,["click","tap","vclick"],t,{x:r[0],y:r[1]}),h=!1,t.timeStamp-u<=e.multiClickDebounceTime()?(c&&clearTimeout(c),h=!0,u=null,I(a,["dblclick","dbltap","vdblclick"],t,{x:r[0],y:r[1]})):(c=setTimeout(function(){h||I(a,["oneclick","onetap","voneclick"],t,{x:r[0],y:r[1]})},e.multiClickDebounceTime()),u=t.timeStamp)),null!=a||N.dragData.didDrag||N.hoverData.selecting||N.hoverData.dragged||v(t)||(e.$(d).unselect(["tapunselect"]),0=N.touchTapThreshold2}if(e&&N.touchData.cxt&&(t.preventDefault(),x=t.touches[0].clientX-q,b=t.touches[0].clientY-j,w=t.touches[1].clientX-q,k=t.touches[1].clientY-j,2.25<=(o=it(x,b,w,k))/G||22500<=o)&&(N.touchData.cxt=!1,N.data.bgActivePosistion=void 0,N.redrawHint("select",!0),p={originalEvent:t,type:"cxttapend",position:{x:i[0],y:i[1]}},N.touchData.start?(N.touchData.start.unactivate().emit(p),N.touchData.start=null):n.emit(p)),e&&N.touchData.cxt){var p={originalEvent:t,type:"cxtdrag",position:{x:i[0],y:i[1]}},g=(N.data.bgActivePosistion=void 0,N.redrawHint("select",!0),(N.touchData.start||n).emit(p),N.touchData.start&&(N.touchData.start._private.grabbed=!1),N.touchData.cxtDragged=!0,N.findNearestElement(i[0],i[1],!0,!0));(!N.touchData.cxtOver||g!==N.touchData.cxtOver)&&(N.touchData.cxtOver&&N.touchData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:i[0],y:i[1]}}),N.touchData.cxtOver=g)&&g.emit({originalEvent:t,type:"cxtdragover",position:{x:i[0],y:i[1]}})}else if(e&&t.touches[2]&&n.boxSelectionEnabled())t.preventDefault(),N.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,N.touchData.selecting||n.emit({originalEvent:t,type:"boxstart",position:{x:i[0],y:i[1]}}),N.touchData.selecting=!0,N.touchData.didSelect=!0,r[4]=1,r&&0!==r.length&&void 0!==r[0]?(r[2]=(i[0]+i[2]+i[4])/3,r[3]=(i[1]+i[3]+i[5])/3):(r[0]=(i[0]+i[2]+i[4])/3,r[1]=(i[1]+i[3]+i[5])/3,r[2]=(i[0]+i[2]+i[4])/3+1,r[3]=(i[1]+i[3]+i[5])/3+1),N.redrawHint("select",!0),N.redraw();else if(e&&t.touches[1]&&!N.touchData.didSelect&&n.zoomingEnabled()&&n.panningEnabled()&&n.userZoomingEnabled()&&n.userPanningEnabled()){if(t.preventDefault(),N.data.bgActivePosistion=void 0,N.redrawHint("select",!0),T=N.dragData.touchDragEles){N.redrawHint("drag",!0);for(var f=0;f=f.deqFastCost*(1e3/60-(t?n:0)))break}else if(t){if(l>=f.deqCost*i||l>=f.deqAvgCost*n)break}else if(c>=f.deqNoDrawCost*(1e3/60))break;var h=f.deq(p,o,s);if(!(0=.2*t.width&&this.retireTexture(t)},xlt.checkTextureFullness=function(t){var e=this.getTextureQueue(t.height);.8=e)return a.retired=!1,a.usedWidth=0,a.invalidatedWidth=0,a.fullnessChecks=0,Pet(a.eleCaches),a.context.setTransform(1,0,0,1,0,0),a.context.clearRect(0,0,a.width,a.height),Oet(n,a),r.push(a),a}},xlt.queueElement=function(t,e){var r=this.getElementQueue(),n=this.getElementKeyToQueue(),i=this.getKey(t),a=n[i];a?(a.level=Math.max(a.level,e),a.eles.merge(t),a.reqs++,r.updateItem(a)):(a={eles:t.spawn().merge(t),level:e,reqs:1,key:i},r.push(a),n[i]=a)},xlt.dequeue=function(t){for(var e=this.getElementQueue(),r=this.getElementKeyToQueue(),n=[],i=this.lookup,a=0;a<1&&0=f||!Art(g.bb,v.boundingBox()))&&!(g=p({insert:!0,after:g})))return null;l||m?s.queueLayer(g,v):s.drawEleInLayer(g,v,a,t),g.eles.push(v),x[a]=g}}return l||(m?null:u)},Tlt.getEleLevelForLayerLevel=function(t,e){return t},Tlt.drawEleInLayer=function(t,e,r,n){var i=this.renderer,t=t.context,a=e.boundingBox();0!==a.w&&0!==a.h&&e.visible()&&(r=this.getEleLevelForLayerLevel(r,n),i.setImgSmoothing(t,!1),i.drawCachedElement(t,e,null,null,r,!0),i.setImgSmoothing(t,!0))},Tlt.levelIsComplete=function(t,e){var r=this.layersByLevel[t];if(!r||0===r.length)return!1;for(var n=0,i=0;is.minMbLowQualFrames)&&(s.motionBlurPxRatio=s.mbPxRBlurry),s.clearingMotionBlur&&(s.motionBlurPxRatio=1),s.textureDrawLastFrame&&!a&&(i[s.NODE]=!0,i[s.SELECT_BOX]=!0),e.style()),v=e.zoom(),x=void 0!==c?c:v,b=e.pan(),w={x:b.x,y:b.y},k={zoom:v,pan:{x:b.x,y:b.y}},T=(void 0===(T=s.prevViewport)||k.zoom!==T.zoom||k.pan.x!==T.pan.x||k.pan.y!==T.pan.y||f&&!g||(s.motionBlurPxRatio=1),x*=n,(w=h||w).x*=n,w.y*=n,s.getCachedZSortedEles());function E(t,e,r,n,i){var a=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",s.colorFillStyle(t,255,255,255,s.motionBlurTransparency),t.fillRect(e,r,n,i),t.globalCompositeOperation=a}function C(t,e){var r,n,i,a=s.clearingMotionBlur||t!==u.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]&&t!==u.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]?(r=w,n=x,i=s.canvasWidth,s.canvasHeight):(r={x:b.x*p,y:b.y*p},n=v*p,i=s.canvasWidth*p,s.canvasHeight*p);t.setTransform(1,0,0,1,0,0),"motionBlur"===e?E(t,0,0,i,a):o||void 0!==e&&!e||t.clearRect(0,0,i,a),l||(t.translate(r.x,r.y),t.scale(n,n)),h&&t.translate(h.x,h.y),c&&t.scale(c,c)}me(E,"mbclear"),me(C,"setContextTransform"),a||(s.textureDrawLastFrame=!1),a?(s.textureDrawLastFrame=!0,s.textureCache||(s.textureCache={},s.textureCache.bb=e.mutableElements().boundingBox(),s.textureCache.texture=s.data.bufferCanvases[s.TEXTURE_BUFFER],(f=s.data.bufferContexts[s.TEXTURE_BUFFER]).setTransform(1,0,0,1,0,0),f.clearRect(0,0,s.canvasWidth*s.textureMult,s.canvasHeight*s.textureMult),s.render({forcedContext:f,drawOnlyNodeLayer:!0,forcedPxRatio:n*s.textureMult}),(k=s.textureCache.viewport={zoom:e.zoom(),pan:e.pan(),width:s.canvasWidth,height:s.canvasHeight}).mpan={x:(0-k.pan.x)/k.zoom,y:(0-k.pan.y)/k.zoom}),i[s.DRAG]=!1,i[s.NODE]=!1,S=u.contexts[s.NODE],g=s.textureCache.texture,k=s.textureCache.viewport,S.setTransform(1,0,0,1,0,0),d?E(S,0,0,k.width,k.height):S.clearRect(0,0,k.width,k.height),f=m.core("outside-texture-bg-color").value,m=m.core("outside-texture-bg-opacity").value,s.colorFillStyle(S,f[0],f[1],f[2],m),S.fillRect(0,0,k.width,k.height),v=e.zoom(),C(S,!1),S.clearRect(k.mpan.x,k.mpan.y,k.width/k.zoom/n,k.height/k.zoom/n),S.drawImage(g,k.mpan.x,k.mpan.y,k.width/k.zoom/n,k.height/k.zoom/n)):s.textureOnViewport&&!o&&(s.textureCache=null);var S,_,f=e.extent(),m=s.pinching||s.hoverData.dragging||s.swipePanning||s.data.wheelZooming||s.hoverData.draggingEles||s.cy.animated(),g=s.hideEdgesOnViewport&&m;(m=[])[s.NODE]=!i[s.NODE]&&d&&!s.clearedForMotionBlur[s.NODE]||s.clearingMotionBlur,m[s.NODE]&&(s.clearedForMotionBlur[s.NODE]=!0),m[s.DRAG]=!i[s.DRAG]&&d&&!s.clearedForMotionBlur[s.DRAG]||s.clearingMotionBlur,m[s.DRAG]&&(s.clearedForMotionBlur[s.DRAG]=!0),(i[s.NODE]||l||r||m[s.NODE])&&(_=d&&!m[s.NODE]&&1!==p,C(S=o||(_?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]:u.contexts[s.NODE]),d&&!_?"motionBlur":void 0),g?s.drawCachedNodes(S,T.nondrag,n,f):s.drawLayeredElements(S,T.nondrag,n,f),s.debug&&s.drawDebugPoints(S,T.nondrag),l||d||(i[s.NODE]=!1)),!r&&(i[s.DRAG]||l||m[s.DRAG])&&(_=d&&!m[s.DRAG]&&1!==p,C(S=o||(_?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]:u.contexts[s.DRAG]),d&&!_?"motionBlur":void 0),g?s.drawCachedNodes(S,T.drag,n,f):s.drawCachedElements(S,T.drag,n,f),s.debug&&s.drawDebugPoints(S,T.drag),l||d||(i[s.DRAG]=!1)),this.drawSelectionRectangle(t,C),d&&1!==p&&(r=u.contexts[s.NODE],_=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_NODE],g=u.contexts[s.DRAG],n=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_DRAG],f=me(function(t,e,r){t.setTransform(1,0,0,1,0,0),r||!y?t.clearRect(0,0,s.canvasWidth,s.canvasHeight):E(t,0,0,s.canvasWidth,s.canvasHeight),r=p,t.drawImage(e,0,0,s.canvasWidth*r,s.canvasHeight*r,0,0,s.canvasWidth,s.canvasHeight)},"drawMotionBlur"),(i[s.NODE]||m[s.NODE])&&(f(r,_,m[s.NODE]),i[s.NODE]=!1),i[s.DRAG]||m[s.DRAG])&&(f(g,n,m[s.DRAG]),i[s.DRAG]=!1),s.prevViewport=k,s.clearingMotionBlur&&(s.clearingMotionBlur=!1,s.motionBlurCleared=!0,s.motionBlur=!0),d&&(s.motionBlurTimeout=setTimeout(function(){s.motionBlurTimeout=null,s.clearedForMotionBlur[s.NODE]=!1,s.clearedForMotionBlur[s.DRAG]=!1,s.motionBlur=!1,s.clearingMotionBlur=!a,s.mbFrames=0,i[s.NODE]=!0,i[s.DRAG]=!0,s.redraw()},100)),o||e.emit("render")},drawSelectionRectangle:function(t,e){var r,n=this,i=n.cy,a=n.data,i=i.style(),s=t.drawOnlyNodeLayer,o=t.drawAllLayers,l=a.canvasNeedsRedraw;(n.showFps||!s&&l[n.SELECT_BOX]&&!o)&&(e(s=t.forcedContext||a.contexts[n.SELECT_BOX]),1==n.selection[4]&&(n.hoverData.selecting||n.touchData.selecting)&&(r=n.cy.zoom(),e=i.core("selection-box-border-width").value/r,s.lineWidth=e,s.fillStyle="rgba("+i.core("selection-box-color").value[0]+","+i.core("selection-box-color").value[1]+","+i.core("selection-box-color").value[2]+","+i.core("selection-box-opacity").value+")",s.fillRect(n.selection[0],n.selection[1],n.selection[2]-n.selection[0],n.selection[3]-n.selection[1]),0=e-1)return!1;(this.freePointer.x!==c&&this.enableWrapping?s:(o(),r))()}return this.keyToLocation.set(t,p),this.needsBuffer=!0,p},"draw")},{key:"getOffsets",value:me(function(t){return this.keyToLocation.get(t)},"getOffsets")},{key:"isEmpty",value:me(function(){return 0===this.freePointer.x&&0===this.freePointer.row},"isEmpty")},{key:"canFit",value:me(function(t){var e=this.atlasSize,r=this.rows,t=this.getScale(t).texW;return!(this.freePointer.x+t>e)||this.freePointer.row p1. + vec2 p01Norm = normalize(vec2(-p01.y, p01.x)); + + // Determine the bend direction. + float sigma = sign(dot(p01 + p21, normal)); + float width = aLineWidth; + + if(sign(pos.y) == -sigma) { + // This is an intersecting vertex. Adjust the position so that there's no overlap. + vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } else { + // This is a non-intersecting vertex. Treat it like a mitre join. + vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } + + vEdgeColor = aEdgeColor; + } + else if(aVertType == `).concat(3,` && vid < 3) { + // massage the first triangle into an edge arrow + if(vid == 0) + position = vec2(-0.15, -0.3); + if(vid == 1) + position = vec2( 0.0, 0.0); + if(vid == 2) + position = vec2( 0.15, -0.3); + + mat3 transform = mat3( + vec3(aScaleRotate1.xy, 0.0), + vec3(aScaleRotate1.zw, 0.0), + vec3(aTranslate1, 1.0) + ); + gl_Position = vec4(uPanZoomMatrix * transform * vec3(position, 1.0), 1.0); + vEdgeColor = aEdgeColor; + } else { + gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space + } + + vAtlasId = aAtlasId; + vIndex = aIndex; + vVertType = aVertType; + } + `),n=this.atlasManager.getIndexArray(),i=KQ(e,r,`#version 300 es + precision highp float; + + // define texture unit for each node in the batch + `.concat(n.map(function(t){return"uniform sampler2D uTexture".concat(t,";")}).join(` + `),` + + uniform vec4 uBGColor; + + in vec2 vTexCoord; + in vec4 vEdgeColor; + flat in int vAtlasId; + flat in vec4 vIndex; + flat in int vVertType; + + out vec4 outColor; + + void main(void) { + if(vVertType == `).concat(0,`) { + `).concat(n.map(function(t){return"if(vAtlasId == ".concat(t,") outColor = texture(uTexture").concat(t,", vTexCoord);")}).join(` + else `),` + } else if(vVertType == `).concat(3,`) { + // blend arrow color with background (using premultiplied alpha) + outColor.rgb = vEdgeColor.rgb + (uBGColor.rgb * (1.0 - vEdgeColor.a)); + outColor.a = 1.0; // make opaque, masks out line under arrow + } else { + outColor = vEdgeColor; + } + + `).concat(t.picking?`if(outColor.a == 0.0) discard; + else outColor = vIndex;`:"",` + } + `));i.aPosition=e.getAttribLocation(i,"aPosition"),i.aIndex=e.getAttribLocation(i,"aIndex"),i.aVertType=e.getAttribLocation(i,"aVertType"),i.aAtlasId=e.getAttribLocation(i,"aAtlasId"),i.aTex1=e.getAttribLocation(i,"aTex1"),i.aTex2=e.getAttribLocation(i,"aTex2"),i.aScaleRotate1=e.getAttribLocation(i,"aScaleRotate1"),i.aTranslate1=e.getAttribLocation(i,"aTranslate1"),i.aScaleRotate2=e.getAttribLocation(i,"aScaleRotate2"),i.aTranslate2=e.getAttribLocation(i,"aTranslate2"),i.aPointAPointB=e.getAttribLocation(i,"aPointAPointB"),i.aPointCPointD=e.getAttribLocation(i,"aPointCPointD"),i.aLineWidth=e.getAttribLocation(i,"aLineWidth"),i.aEdgeColor=e.getAttribLocation(i,"aEdgeColor"),i.uPanZoomMatrix=e.getUniformLocation(i,"uPanZoomMatrix"),i.uAtlasSize=e.getUniformLocation(i,"uAtlasSize"),i.uBGColor=e.getUniformLocation(i,"uBGColor"),i.uTextures=[];for(var a=0;a=this.maxInstances&&this.endBatch()}},"drawTexture")},{key:"drawEdgeArrow",value:me(function(t,e,r){var n,i,a,s,o=t._private.rscratch,o="source"===r?(i=o.arrowStartX,a=o.arrowStartY,o.srcArrowAngle):(i=o.arrowEndX,a=o.arrowEndY,o.tgtArrowAngle);isNaN(i)||null==i||isNaN(a)||null==a||isNaN(o)||null==o||"none"!==t.pstyle(r+"-arrow-shape").value&&(r=t.pstyle(r+"-arrow-color").value,n=t.pstyle("opacity").value*t.pstyle("line-opacity").value,s=t.pstyle("width").pfValue,t=t.pstyle("arrow-scale").value,s=this.r.getArrowWidth(s,t),uJ(t=this.getTempMatrix()),pJ(t,t,[i,a]),fJ(t,t,[s,s]),gJ(t,t,o),i=this.instanceCount,this.vertTypeBuffer.getView(i)[0]=3,eJ(e,this.indexBuffer.getView(i)),tJ(r,n,this.edgeColorBuffer.getView(i)),(a=this.scaleRotate1Buffer.getView(i))[0]=t[0],a[1]=t[1],a[2]=t[3],a[3]=t[4],(s=this.translate1Buffer.getView(i))[0]=t[6],s[1]=t[7],this.instanceCount++,this.instanceCount>=this.maxInstances)&&this.endBatch()},"drawEdgeArrow")},{key:"drawEdgeLine",value:me(function(t,e){var r=t.pstyle("opacity").value,n=t.pstyle("line-opacity").value,i=t.pstyle("width").pfValue,a=t.pstyle("line-color").value,s=r*n,o=this.getEdgePoints(t);if(o.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),4==o.length)r=this.instanceCount,this.vertTypeBuffer.getView(r)[0]=1,eJ(e,this.indexBuffer.getView(r)),tJ(a,s,this.edgeColorBuffer.getView(r)),this.lineWidthBuffer.getView(r)[0]=i,(n=this.pointAPointBBuffer.getView(r))[0]=o[0],n[1]=o[1],n[2]=o[2],n[3]=o[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch();else for(var l=0;l=this.maxInstances&&this.endBatch()}},"drawEdgeLine")},{key:"getEdgePoints",value:me(function(t){var e=t._private.rscratch.allpts;return 4==e.length?e:(t=this.getNumSegments(t),this.getCurveSegmentPoints(e,t))},"getEdgePoints")},{key:"getNumSegments",value:me(function(t){return Math.min(Math.max(15,5),this.maxInstances)},"getNumSegments")},{key:"getCurveSegmentPoints",value:me(function(t,e){if(4==t.length)return t;for(var r=Array(2*(e+1)),n=0;n<=e;n++)0==n?(r[0]=t[0],r[1]=t[1]):n==e?(r[2*n]=t[t.length-2],r[2*n+1]=t[t.length-1]):this.setCurvePoint(t,n/e,r,2*n);return r},"getCurveSegmentPoints")},{key:"setCurvePoint",value:me(function(t,e,r,n){if(!(t.length<=2)){for(var i=Array(t.length-2),a=0;a{me(function(t,e){"object"==typeof r&&"object"==typeof n?n.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof r?r.layoutBase=e():t.layoutBase=e()},"webpackUniversalModuleDefinition")(r,function(){return r=[function(t,e,r){function n(){}me(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_HALF_SIZE=(n.SIMPLE_NODE_SIZE=40)/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.INITIAL_WORLD_BOUNDARY=(n.WORLD_BOUNDARY=1e6)/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,r){var n,i=r(2),a=r(8),s=r(9);function o(t,e,r){i.call(this,r),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=r,this.bendpoints=[],this.source=t,this.target=e}for(n in me(o,"LEdge"),o.prototype=Object.create(i.prototype),i)o[n]=i[n];o.prototype.getSource=function(){return this.source},o.prototype.getTarget=function(){return this.target},o.prototype.isInterGraph=function(){return this.isInterGraph},o.prototype.getLength=function(){return this.length},o.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},o.prototype.getBendpoints=function(){return this.bendpoints},o.prototype.getLca=function(){return this.lca},o.prototype.getSourceInLca=function(){return this.sourceInLca},o.prototype.getTargetInLca=function(){return this.targetInLca},o.prototype.getOtherEnd=function(t){if(this.source===t)return this.target;if(this.target===t)return this.source;throw"Node is not incident with this edge"},o.prototype.getOtherEndInGraph=function(t,e){for(var r=this.getOtherEnd(t),n=e.getGraphManager().getRoot();;){if(r.getOwner()==e)return r;if(r.getOwner()==n)break;r=r.getOwner().getParent()}return null},o.prototype.updateLength=function(){var t=new Array(4);this.isOverlapingSourceAndTarget=a.getIntersection(this.target.getRect(),this.source.getRect(),t),this.isOverlapingSourceAndTarget||(this.lengthX=t[0]-t[2],this.lengthY=t[1]-t[3],Math.abs(this.lengthX)<1&&(this.lengthX=s.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=s.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},o.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=s.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=s.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=o},function(t,e,r){function n(t){this.vGraphObject=t}me(n,"LGraphObject"),t.exports=n},function(t,e,r){var n,i=r(2),a=r(10),s=r(13),o=r(0),l=r(16),c=r(4);function h(t,e,r,n){i.call(this,n=null==r&&null==n?e:n),null!=t.graphManager&&(t=t.graphManager),this.estimatedSize=a.MIN_VALUE,this.inclusionTreeDepth=a.MAX_VALUE,this.vGraphObject=n,this.edges=[],this.graphManager=t,this.rect=null!=r&&null!=e?new s(e.x,e.y,r.width,r.height):new s}for(n in me(h,"LNode"),h.prototype=Object.create(i.prototype),i)h[n]=i[n];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(t){this.rect.width=t},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(t){this.rect.height=t},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new c(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new c(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(t,e){this.rect.x=t.x,this.rect.y=t.y,this.rect.width=e.width,this.rect.height=e.height},h.prototype.setCenter=function(t,e){this.rect.x=t-this.rect.width/2,this.rect.y=e-this.rect.height/2},h.prototype.setLocation=function(t,e){this.rect.x=t,this.rect.y=e},h.prototype.moveBy=function(t,e){this.rect.x+=t,this.rect.y+=e},h.prototype.getEdgeListToNode=function(e){var r=[],n=this;return n.edges.forEach(function(t){if(t.target==e){if(t.source!=n)throw"Incorrect edge source!";r.push(t)}}),r},h.prototype.getEdgesBetween=function(e){var r=[],n=this;return n.edges.forEach(function(t){if(t.source!=n&&t.target!=n)throw"Incorrect edge source and/or target";t.target!=e&&t.source!=e||r.push(t)}),r},h.prototype.getNeighborsList=function(){var e=new Set,r=this;return r.edges.forEach(function(t){if(t.source==r)e.add(t.target);else{if(t.target!=r)throw"Incorrect incidency!";e.add(t.source)}}),e},h.prototype.withChildren=function(){var e=new Set;if(e.add(this),null!=this.child)for(var t=this.child.getNodes(),r=0;rt&&(this.rect.x-=(this.labelWidth-t)/2,this.setWidth(this.labelWidth)),this.labelHeight>e)&&("center"==this.labelPos?this.rect.y-=(this.labelHeight-e)/2:"top"==this.labelPos&&(this.rect.y-=this.labelHeight-e),this.setHeight(this.labelHeight))},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==a.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(t){(e=this.rect.x)>o.WORLD_BOUNDARY?e=o.WORLD_BOUNDARY:e<-o.WORLD_BOUNDARY&&(e=-o.WORLD_BOUNDARY),(r=this.rect.y)>o.WORLD_BOUNDARY?r=o.WORLD_BOUNDARY:r<-o.WORLD_BOUNDARY&&(r=-o.WORLD_BOUNDARY);var e=new c(e,r),r=t.inverseTransformPoint(e);this.setLocation(r.x,r.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=h},function(t,e,r){function n(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}me(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(t){this.x=t},n.prototype.setY=function(t){this.y=t},n.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=n},function(t,e,r){var n,i=r(2),d=r(10),a=r(0),s=r(6),o=r(3),l=r(1),p=r(13),c=r(12),h=r(11);function u(t,e,r){i.call(this,r),this.estimatedSize=d.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof s?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(n in me(u,"LGraph"),u.prototype=Object.create(i.prototype),i)u[n]=i[n];u.prototype.getNodes=function(){return this.nodes},u.prototype.getEdges=function(){return this.edges},u.prototype.getGraphManager=function(){return this.graphManager},u.prototype.getParent=function(){return this.parent},u.prototype.getLeft=function(){return this.left},u.prototype.getRight=function(){return this.right},u.prototype.getTop=function(){return this.top},u.prototype.getBottom=function(){return this.bottom},u.prototype.isConnected=function(){return this.isConnected},u.prototype.add=function(t,e,r){if(null==e&&null==r){var n=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(-1=this.nodes.length&&(r=0,i.forEach(function(t){t.owner==e&&r++}),r==this.nodes.length)&&(this.isConnected=!0)}},t.exports=u},function(t,e,r){var c,h=r(1);function n(t){c=r(5),this.layout=t,this.graphs=[],this.edges=[]}me(n,"LGraphManager"),n.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),t=this.add(t,e);return this.setRootGraph(t),this.rootGraph},n.prototype.add=function(t,e,r,n,i){if(null==r&&null==n&&null==i){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(-1=e.getRight()?r[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(r[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?r[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(r[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom())),Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()))),e=(a=e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()?1:a)*r[0],t=r[1]/a;r[0]p.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*p.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-p.ADAPTATION_LOWER_NODE_LIMIT)/(p.ADAPTATION_UPPER_NODE_LIMIT-p.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-p.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=p.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>p.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(p.COOLING_ADAPTATION_FACTOR,1-(t-p.ADAPTATION_LOWER_NODE_LIMIT)/(p.ADAPTATION_UPPER_NODE_LIMIT-p.ADAPTATION_LOWER_NODE_LIMIT)*(1-p.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=p.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},a.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),r=0;rthis.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement=a.length||o>=a[0].length))for(var l=0;l{me(function(t,e){"object"==typeof r&&"object"==typeof n?n.exports=e(_lt()):"function"==typeof define&&define.amd?define(["layout-base"],e):"object"==typeof r?r.coseBase=e(_lt()):t.coseBase=e(t.layoutBase)},"webpackUniversalModuleDefinition")(r,function(r){return i=[function(t,e){t.exports=r},function(t,e,r){var n,i=r(0).FDLayoutConstants;function a(){}for(n in me(a,"CoSEConstants"),i)a[n]=i[n];a.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,a.DEFAULT_RADIAL_SEPARATION=i.DEFAULT_EDGE_LENGTH,a.DEFAULT_COMPONENT_SEPERATION=60,a.TILE=!0,a.TILING_PADDING_VERTICAL=10,a.TILING_PADDING_HORIZONTAL=10,a.TREE_REDUCTION_ON_INCREMENTAL=!1,t.exports=a},function(t,e,r){var n,i=r(0).FDLayoutEdge;function a(t,e,r){i.call(this,t,e,r)}for(n in me(a,"CoSEEdge"),a.prototype=Object.create(i.prototype),i)a[n]=i[n];t.exports=a},function(t,e,r){var n,i=r(0).LGraph;function a(t,e,r){i.call(this,t,e,r)}for(n in me(a,"CoSEGraph"),a.prototype=Object.create(i.prototype),i)a[n]=i[n];t.exports=a},function(t,e,r){var n,i=r(0).LGraphManager;function a(t){i.call(this,t)}for(n in me(a,"CoSEGraphManager"),a.prototype=Object.create(i.prototype),i)a[n]=i[n];t.exports=a},function(t,e,r){var n,i=r(0).FDLayoutNode,a=r(0).IMath;function s(t,e,r,n){i.call(this,t,e,r,n)}for(n in me(s,"CoSENode"),s.prototype=Object.create(i.prototype),i)s[n]=i[n];s.prototype.move=function(){var t=this.graphManager.getLayout();this.displacementX=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*a.sign(this.displacementY)),null==this.child||0==this.child.getNodes().length?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),t.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(t,e){for(var r,n=this.getChild().getNodes(),i=0;in&&(n=Math.floor(s.y)),a=Math.floor(s.x+u.DEFAULT_COMPONENT_SEPERATION)}this.transform(new f(d.WORLD_CENTER_X-s.x/2,d.WORLD_CENTER_Y-s.y/2))},x.radialLayout=function(t,e,r){var n=Math.max(this.maxDiagonalInTree(t),u.DEFAULT_RADIAL_SEPARATION),e=(x.branchRadialLayout(e,null,0,359,0,n),l.calculateBounds(t)),i=new c;i.setDeviceOrgX(e.getMinX()),i.setDeviceOrgY(e.getMinY()),i.setWorldOrgX(r.x),i.setWorldOrgY(r.y);for(var a=0;al&&(l=h.rect.height)}r+=l+t.verticalPadding}},x.prototype.tileCompoundMembers=function(r,n){var i=this;this.tiledMemberPack=[],Object.keys(r).forEach(function(t){var e=n[t];i.tiledMemberPack[t]=i.tileNodes(r[t],e.paddingLeft+e.paddingRight),e.rect.width=i.tiledMemberPack[t].width,e.rect.height=i.tiledMemberPack[t].height})},x.prototype.tileNodes=function(t,e){var r={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:u.TILING_PADDING_VERTICAL,horizontalPadding:u.TILING_PADDING_HORIZONTAL};t.sort(function(t,e){return t.rect.width*t.rect.height>e.rect.width*e.rect.height?-1:t.rect.width*t.rect.heightt.rowHeight[r]&&(i=t.rowHeight[r],t.rowHeight[r]=n,i=t.rowHeight[r]-i),t.height+=i,t.rows[r].push(e)},x.prototype.getShortestRowIndex=function(t){for(var e=-1,r=Number.MAX_VALUE,n=0;nr&&(e=n,r=t.rowWidth[n]);return e},x.prototype.canAddHorizontal=function(t,e,r){var n,i,a=this.getShortestRowIndex(t);return a<0||(i=t.rowWidth[a])+t.horizontalPadding+e<=t.width||(n=0,t.rowHeight[a]a&&e!=r){n.splice(-1,1),t.rows[r].push(i),t.rowWidth[e]=t.rowWidth[e]-a,t.rowWidth[r]=t.rowWidth[r]+a,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,o=0;os&&(s=n[o].height);0{me(function(t,e){"object"==typeof r&&"object"==typeof n?n.exports=e(Alt()):"function"==typeof define&&define.amd?define(["cose-base"],e):"object"==typeof r?r.cytoscapeCoseBilkent=e(Alt()):t.cytoscapeCoseBilkent=e(t.coseBase)},"webpackUniversalModuleDefinition")(r,function(r){return i=[function(t,e){t.exports=r},function(t,e,r){var n=r(0).layoutBase.LayoutConstants,i=r(0).layoutBase.FDLayoutConstants,a=r(0).CoSEConstants,g=r(0).CoSELayout,u=r(0).CoSENode,d=r(0).layoutBase.PointD,p=r(0).layoutBase.DimensionD,s={ready:me(function(){},"ready"),stop:me(function(){},"stop"),quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function o(t,e){var r,n={};for(r in t)n[r]=t[r];for(r in e)n[r]=e[r];return n}function l(t){this.options=o(s,t),c(this.options)}me(o,"extend"),me(l,"_CoSELayout");var c=me(function(t){null!=t.nodeRepulsion&&(a.DEFAULT_REPULSION_STRENGTH=i.DEFAULT_REPULSION_STRENGTH=t.nodeRepulsion),null!=t.idealEdgeLength&&(a.DEFAULT_EDGE_LENGTH=i.DEFAULT_EDGE_LENGTH=t.idealEdgeLength),null!=t.edgeElasticity&&(a.DEFAULT_SPRING_STRENGTH=i.DEFAULT_SPRING_STRENGTH=t.edgeElasticity),null!=t.nestingFactor&&(a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=t.nestingFactor),null!=t.gravity&&(a.DEFAULT_GRAVITY_STRENGTH=i.DEFAULT_GRAVITY_STRENGTH=t.gravity),null!=t.numIter&&(a.MAX_ITERATIONS=i.MAX_ITERATIONS=t.numIter),null!=t.gravityRange&&(a.DEFAULT_GRAVITY_RANGE_FACTOR=i.DEFAULT_GRAVITY_RANGE_FACTOR=t.gravityRange),null!=t.gravityCompound&&(a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=t.gravityCompound),null!=t.gravityRangeCompound&&(a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=t.gravityRangeCompound),null!=t.initialEnergyOnIncremental&&(a.DEFAULT_COOLING_FACTOR_INCREMENTAL=i.DEFAULT_COOLING_FACTOR_INCREMENTAL=t.initialEnergyOnIncremental),"draft"==t.quality?n.QUALITY=0:"proof"==t.quality?n.QUALITY=2:n.QUALITY=1,a.NODE_DIMENSIONS_INCLUDE_LABELS=i.NODE_DIMENSIONS_INCLUDE_LABELS=n.NODE_DIMENSIONS_INCLUDE_LABELS=t.nodeDimensionsIncludeLabels,a.DEFAULT_INCREMENTAL=i.DEFAULT_INCREMENTAL=n.DEFAULT_INCREMENTAL=!t.randomize,a.ANIMATE=i.ANIMATE=n.ANIMATE=t.animate,a.TILE=t.tile,a.TILING_PADDING_VERTICAL="function"==typeof t.tilingPaddingVertical?t.tilingPaddingVertical.call():t.tilingPaddingVertical,a.TILING_PADDING_HORIZONTAL="function"==typeof t.tilingPaddingHorizontal?t.tilingPaddingHorizontal.call():t.tilingPaddingHorizontal},"getUserOptions"),r=(l.prototype.run=function(){var s,o,l=this.options,c=(this.idToLNode={},this.layout=new g),h=this,t=(h.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this}),c.newGraphManager()),e=(this.gm=t,this.options.eles.nodes()),r=this.options.eles.edges();this.root=t.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(e),c);for(var n=0;n{let r={id:e.id,labelText:e.label,height:e.height,width:e.width,padding:e.padding??0};Object.keys(e).forEach(t=>{["id","label","height","width","padding","x","y"].includes(t)||(r[t]=e[t])}),n.add({group:"nodes",data:r,position:{x:e.x??0,y:e.y??0}})})}function Ilt(t,n){t.forEach(e=>{let r={id:e.id,source:e.start,target:e.end};Object.keys(e).forEach(t=>{["id","start","end"].includes(t)||(r[t]=e[t])}),n.add({group:"edges",data:r})})}function Rlt(n){return new Promise(e=>{let t=H("body").append("div").attr("id","cy").attr("style","display:none"),r=Clt({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});t.remove(),Nlt(n.nodes,r),Ilt(n.edges,r),r.nodes().forEach(function(e){e.layoutDimensions=()=>{var t=e.data();return{w:t.width,h:t.height}}}),r.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),r.ready(t=>{D.info("Cytoscape ready",t),e(r)})})}function Mlt(t){return t.nodes().map(t=>{let e=t.data(),r=t.position(),n={id:e.id,x:r.x,y:r.y};return Object.keys(e).forEach(t=>{"id"!==t&&(n[t]=e[t])}),n})}function Dlt(t){return t.edges().map(t=>{let e=t.data(),r=t._private.rscratch,n={id:e.id,source:e.source,target:e.target,startX:r.startX,startY:r.startY,midX:r.midX,midY:r.midY,endX:r.endX,endY:r.endY};return Object.keys(e).forEach(t=>{["id","source","target"].includes(t)||(n[t]=e[t])}),n})}var Olt,Plt=b(()=>{Slt(),Olt=q(Llt(),1),i6(),t(),Clt.use(Olt.default),me(Nlt,"addNodes"),me(Ilt,"addEdges"),me(Rlt,"createCytoscapeInstance"),me(Mlt,"extractPositionedNodes"),me(Dlt,"extractPositionedEdges")});async function Blt(t,e){D.debug("Starting cose-bilkent layout algorithm");try{$lt(t);var r=await Rlt(t),n=Mlt(r),i=Dlt(r);return D.debug(`Layout completed: ${n.length} nodes, ${i.length} edges`),{nodes:n,edges:i}}catch(t){throw D.error("Error in cose-bilkent layout algorithm:",t),t}}function $lt(t){if(!t)throw new Error("Layout data is required");if(!t.config)throw new Error("Configuration is required in layout data");if(!t.rootNode)throw new Error("Root node is required");if(!t.nodes||!Array.isArray(t.nodes))throw new Error("No nodes found in layout data");if(Array.isArray(t.edges))return!0;throw new Error("Edges array is required in layout data")}var Flt,zlt=b(()=>{t(),Plt(),me(Blt,"executeCoseBilkentLayout"),me($lt,"validateLayoutData")}),Glt=b(()=>{zlt(),Flt=me(async(i,t,{insertCluster:a,insertEdge:s,insertEdgeLabel:o,insertMarkers:e,insertNode:l,log:c,positionEdgeLabel:h},{})=>{let u={},d={},r=t.select("g"),p=(e(r,i.markers,i.type,i.diagramId),r.insert("g").attr("class","subgraphs")),g=r.insert("g").attr("class","edgePaths"),f=r.insert("g").attr("class","edgeLabels"),m=r.insert("g").attr("class","nodes"),n=(c.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(i.nodes.map(async t=>{var e,r,n;t.isGroup?(e={...t},d[t.id]=e,u[t.id]=e,await a(p,t)):(e={...t},u[t.id]=e,n=(r=await l(m,t,{config:i.config,dir:i.direction||"TB"})).node().getBBox(),e.width=n.width,e.height=n.height,e.domId=r,c.debug(`Node ${t.id} dimensions: ${n.width}x`+n.height))})),c.debug("Running cose-bilkent layout algorithm"),{...i,nodes:i.nodes.map(t=>{var e=u[t.id];return{...t,width:e.width,height:e.height}})}),y=await Blt(n,i.config);c.debug("Positioning nodes based on layout results"),y.nodes.forEach(t=>{var e=u[t.id];e?.domId&&(e.domId.attr("transform",`translate(${t.x}, ${t.y})`),e.x=t.x,e.y=t.y,c.debug(`Positioned node ${e.id} at center (${t.x}, ${t.y})`))}),y.edges.forEach(e=>{var t=i.edges.find(t=>t.id===e.id);t&&(t.points=[{x:e.startX,y:e.startY},{x:e.midX,y:e.midY},{x:e.endX,y:e.endY}])}),c.debug("Inserting and positioning edges"),await Promise.all(i.edges.map(async e=>{await o(f,e);var t,r=u[e.start??""],n=u[e.end??""];r&&n&&(t=(t=y.edges.find(t=>t.id===e.id))?(c.debug("APA01 positionedEdge",t),{...e}):{...e,points:[{x:r.x||0,y:r.y||0},{x:n.x||0,y:n.y||0}]},r=s(g,t,d,i.type,r,n,i.diagramId),h(t,r))})),c.debug("Cose-bilkent rendering completed")},"render")}),Ult={};KBt(Ult,{render:()=>qlt});var qlt,jlt,Wlt,Ylt,Hlt,Vlt,Xlt,Klt,Zlt,Qlt,Jlt,tct,ect,rct,nct,ict,act,sct,oct,lct=b(()=>{Glt(),qlt=Flt}),cct=b(()=>{nP(),t(),jlt={},Wlt=me(t=>{for(var e of t)jlt[e.name]=e},"registerLayoutLoaders"),me(()=>{Wlt([{name:"dagre",loader:me(async()=>Promise.resolve().then(()=>(BK(),DK)),"loader")},{name:"cose-bilkent",loader:me(async()=>Promise.resolve().then(()=>(lct(),Ult)),"loader")}])},"registerDefaultLayoutLoaders")(),Ylt=me(async(t,e)=>{var r;if(t.layoutAlgorithm in jlt)return(await(r=jlt[t.layoutAlgorithm]).loader()).render(t,e,eP,{algorithm:r.algorithm});throw new Error("Unknown layout algorithm: "+t.layoutAlgorithm)},"render"),Hlt=me((t="",{fallback:e="dagre"}={})=>{if(t in jlt)return t;if(e in jlt)return D.warn(`Layout algorithm ${t} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${t} and ${e} are not registered.`)},"getRegisteredLayoutAlgorithm")}),hct=b(()=>{lh(),t(),Vlt=me((t,e,r,n)=>{t.attr("class",r);var{width:r,height:i,x:a,y:s}=Xlt(t,e),n=(Zc(t,i,r,n),Klt(a,s,r,i,e));t.attr("viewBox",n),D.debug(`viewBox configured: ${n} with padding: `+e)},"setupViewPortForSVG"),Xlt=me((t,e)=>({width:(t=t.node()?.getBBox()||{width:0,height:0,x:0,y:0}).width+2*e,height:t.height+2*e,x:t.x,y:t.y}),"calculateDimensionsWithPadding"),Klt=me((t,e,r,n,i)=>t-i+` ${e-i} ${r} `+n,"createViewBox")}),uct=b(()=>{i6(),Tu(),t(),iO(),cct(),hct(),iS(),Zlt=me(function(t,e){return e.db.getClasses()},"getClasses"),Qlt=me(async function(t,e,r,n){D.info("REF0:"),D.info("Drawing state diagram (v2)",e);let{securityLevel:i,flowchart:a,layout:s}=O(),o;"sandbox"===i&&(o=H("#i"+e));var l,c="sandbox"===i?o.nodes()[0].contentDocument:document,h=(D.debug("Before getData: "),n.db.getData()),u=(D.debug("Data: ",h),WD(e,i)),d=n.db.getDirection(),d=(h.type=n.type,h.layoutAlgorithm=Hlt(s),"dagre"===h.layoutAlgorithm&&"elk"===s&&D.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),h.direction=d,h.nodeSpacing=a?.nodeSpacing||50,h.rankSpacing=a?.rankSpacing||50,h.markers=["point","circle","cross"],h.diagramId=e,D.debug("REF1:",h),await Ylt(h,u),h.config.flowchart?.diagramPadding??8);tS.insertTitle(u,"flowchartTitleText",a?.titleTopMargin||0,n.db.getDiagramTitle()),Vlt(u,d,"flowchart",a?.useMaxWidth||!1);for(l of h.nodes){var p=H(`#${e} [id="${l.id}"]`);if(p&&l.link){let t=c.createElementNS("http://www.w3.org/2000/svg","a"),e=(t.setAttributeNS("http://www.w3.org/2000/svg","class",l.cssClasses),t.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),"sandbox"===i?t.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):l.linkTarget&&t.setAttributeNS("http://www.w3.org/2000/svg","target",l.linkTarget),p.insert(function(){return t},":first-child")),r=p.select(".label-container"),n=(r&&e.append(function(){return r.node()}),p.select(".label"));n&&e.append(function(){return n.node()})}}},"draw"),Jlt={getClasses:Zlt,draw:Qlt}}),dct=b(()=>{function P(){this.yy={}}var t=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),B=[1,4],$=[1,3],F=[1,5],z=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],G=[2,2],U=[1,13],q=[1,14],j=[1,15],W=[1,16],Y=[1,23],H=[1,25],V=[1,26],X=[1,27],e=[1,49],r=[1,48],K=[1,29],Z=[1,30],Q=[1,31],J=[1,32],tt=[1,33],n=[1,44],i=[1,46],a=[1,42],s=[1,47],o=[1,43],l=[1,50],c=[1,45],h=[1,51],u=[1,52],et=[1,34],rt=[1,35],nt=[1,36],it=[1,37],at=[1,57],d=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],p=[1,61],g=[1,60],f=[1,62],st=[8,9,11,75,77,78],ot=[1,78],lt=[1,91],ct=[1,96],ht=[1,95],ut=[1,92],dt=[1,88],pt=[1,94],gt=[1,90],ft=[1,97],mt=[1,93],yt=[1,98],vt=[1,89],xt=[8,9,10,11,40,75,77,78],m=[8,9,10,11,40,46,75,77,78],y=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],bt=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],wt=[44,60,89,102,105,106,109,111,114,115,116],kt=[1,121],Tt=[1,122],Et=[1,124],Ct=[1,123],St=[44,60,62,74,89,102,105,106,109,111,114,115,116],_t=[1,133],At=[1,147],Lt=[1,148],Nt=[1,149],It=[1,150],Rt=[1,135],Mt=[1,137],Dt=[1,141],Ot=[1,142],Pt=[1,143],Bt=[1,144],$t=[1,145],Ft=[1,146],zt=[1,151],Gt=[1,152],Ut=[1,131],qt=[1,132],jt=[1,139],Wt=[1,134],Yt=[1,138],Ht=[1,136],Vt=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],Xt=[1,154],Kt=[1,156],v=[8,9,11],x=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],b=[1,176],w=[1,172],k=[1,173],T=[1,177],E=[1,174],C=[1,175],Zt=[77,116,119],S=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],Qt=[10,106],Jt=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],_=[1,247],A=[1,245],L=[1,249],N=[1,243],I=[1,244],R=[1,246],M=[1,248],D=[1,250],te=[1,268],ee=[8,9,11,106],O=[8,9,10,11,60,84,105,106,109,110,111,112],B={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 2:this.$=[];break;case 3:(!Array.isArray(a[o])||0e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0"),40;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 17:this.popState();break;case 18:return 96;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 88;case 35:case 36:case 37:return t.lex.firstGraph()&&this.begin("dir"),12;case 38:return 27;case 39:return 32;case 40:case 41:case 42:case 43:return 98;case 44:return this.popState(),13;case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:return this.popState(),14;case 55:return 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 78;case 60:return 105;case 61:return 111;case 62:return 46;case 63:return 60;case 64:return 44;case 65:return 8;case 66:return 106;case 67:return 115;case 68:return this.popState(),77;case 69:return this.pushState("edgeText"),75;case 70:return 119;case 71:return this.popState(),77;case 72:return this.pushState("thickEdgeText"),75;case 73:return 119;case 74:return this.popState(),77;case 75:return this.pushState("dottedEdgeText"),75;case 76:return 119;case 77:return 77;case 78:return this.popState(),53;case 79:return"TEXT";case 80:return this.pushState("ellipseText"),52;case 81:return this.popState(),55;case 82:return this.pushState("text"),54;case 83:return this.popState(),57;case 84:return this.pushState("text"),56;case 85:return 58;case 86:return this.pushState("text"),67;case 87:return this.popState(),64;case 88:return this.pushState("text"),63;case 89:return this.popState(),49;case 90:return this.pushState("text"),48;case 91:return this.popState(),69;case 92:return this.popState(),71;case 93:return 117;case 94:return this.pushState("trapText"),68;case 95:return this.pushState("trapText"),70;case 96:return 118;case 97:return 67;case 98:return 90;case 99:return"SEP";case 100:return 89;case 101:return 115;case 102:return 111;case 103:return 44;case 104:return 109;case 105:return 114;case 106:return 116;case 107:return this.popState(),62;case 108:return this.pushState("text"),62;case 109:return this.popState(),51;case 110:return this.pushState("text"),50;case 111:return this.popState(),31;case 112:return this.pushState("text"),29;case 113:return this.popState(),66;case 114:return this.pushState("text"),65;case 115:return"TEXT";case 116:return"QUOTE";case 117:return 9;case 118:return 10;case 119:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\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]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-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])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeData:{rules:[8,11,12,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackargs:{rules:[17,18,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackname:{rules:[14,15,16,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},href:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},click:{rules:[21,24,33,34,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dottedEdgeText:{rules:[21,24,74,76,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},thickEdgeText:{rules:[21,24,71,73,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},edgeText:{rules:[21,24,68,70,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},trapText:{rules:[21,24,77,80,82,84,88,90,91,92,93,94,95,108,110,112,114],inclusive:!1},ellipseText:{rules:[21,24,77,78,79,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},text:{rules:[21,24,77,80,81,82,83,84,87,88,89,90,94,95,107,108,109,110,111,112,113,114,115],inclusive:!1},vertex:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr:{rules:[3,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_title:{rules:[1,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},md_string:{rules:[19,20,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},string:{rules:[21,22,23,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,71,72,74,75,77,80,82,84,85,86,88,90,94,95,96,97,98,99,100,101,102,103,104,105,106,108,110,112,114,116,117,118,119],inclusive:!0}}};B.lexer=$,me(P,"Parser"),(tct=new((P.prototype=B).Parser=P)).parser=tct,ect=tct}),pct=b(()=>{dct(),(rct=Object.assign({},ect)).parse=t=>(t=t.replace(/}\s*\n/g,`} +`),ect.parse(t)),nct=rct}),gct=b(()=>{ict=me(()=>` + /* Font Awesome icon styling - consolidated */ + .label-icon { + display: inline-block; + height: 1em; + overflow: visible; + vertical-align: -0.125em; + } + + .node .label-icon path { + fill: currentColor; + stroke: revert; + stroke-width: revert; + } +`,"getIconStyles")}),fct=b(()=>{jr(),gct(),act=me((t,e)=>{var r=(i=ce)(t,"r"),n=i(t,"g"),i=i(t,"b");return oe(r,n,i,e)},"fade"),sct=me(t=>`.label { + font-family: ${t.fontFamily}; + color: ${t.nodeTextColor||t.textColor}; + } + .cluster-label text { + fill: ${t.titleColor}; + } + .cluster-label span { + color: ${t.titleColor}; + } + .cluster-label span p { + background-color: transparent; + } + + .label text,span { + fill: ${t.nodeTextColor||t.textColor}; + color: ${t.nodeTextColor||t.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .katex path { + fill: #000; + stroke: #000; + stroke-width: 1px; + } + + .rough-node .label,.node .label, .image-shape .label, .icon-shape .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + + .root .anchor path { + fill: ${t.lineColor} !important; + stroke-width: 0; + stroke: ${t.lineColor}; + } + + .arrowheadPath { + fill: ${t.arrowheadColor}; + } + + .edgePath .path { + stroke: ${t.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${t.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${t.edgeLabelBackground}; + p { + background-color: ${t.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${t.edgeLabelBackground}; + fill: ${t.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${act(t.edgeLabelBackground,.5)}; + // background-color: + } + + .cluster rect { + fill: ${t.clusterBkg}; + stroke: ${t.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${t.titleColor}; + } + + .cluster span { + color: ${t.titleColor}; + } + /* .cluster div { + color: ${t.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${t.fontFamily}; + font-size: 12px; + background: ${t.tertiaryColor}; + border: 1px solid ${t.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; + } + + rect.text { + fill: none; + stroke-width: 0; + } + + .icon-shape, .image-shape { + background-color: ${t.edgeLabelBackground}; + p { + background-color: ${t.edgeLabelBackground}; + padding: 2px; + } + rect { + opacity: 0.5; + background-color: ${t.edgeLabelBackground}; + fill: ${t.edgeLabelBackground}; + } + text-align: center; + } + ${ict()} +`,"getStyles"),oct=sct}),mct={};KBt(mct,{diagram:()=>yct});var yct,vct,xct,bct,wct=b(()=>{Tu(),nO(),uct(),pct(),fct(),yct={parser:nct,get db(){return new jD},renderer:Jlt,styles:oct,init:me(t=>{t.flowchart||(t.flowchart={}),t.layout&&Eh({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Eh({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}})},"init")}}),kct=b(()=>{function t(){this.yy={}}var e=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),r=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,50],n=[1,10],i=[1,11],a=[1,12],s=[1,13],o=[1,20],l=[1,21],c=[1,22],h=[1,23],u=[1,24],d=[1,19],p=[1,25],P=[1,26],g=[1,18],f=[1,33],m=[1,34],y=[1,35],v=[1,36],x=[1,37],B=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,50,63,64,65,66,67],b=[1,42],w=[1,43],k=[1,52],T=[40,50,68,69],E=[1,63],C=[1,61],S=[1,58],_=[1,62],A=[1,64],L=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,63,64,65,66,67],$=[63,64,65,66,67],F=[1,81],z=[1,80],G=[1,78],U=[1,79],q=[6,10,42,47],N=[6,10,13,41,42,47,48,49],I=[1,89],R=[1,88],M=[1,87],D=[19,56],j=[1,98],W=[1,97],O=[19,56,58,60],n={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,attribute:51,attributeType:52,attributeName:53,attributeKeyTypeList:54,attributeComment:55,ATTRIBUTE_WORD:56,attributeKeyType:57,",":58,ATTRIBUTE_KEY:59,COMMENT:60,cardinality:61,relType:62,ZERO_OR_ONE:63,ZERO_OR_MORE:64,ONE_OR_MORE:65,ONLY_ONE:66,MD_PARENT:67,NON_IDENTIFYING:68,IDENTIFYING:69,WORD:70,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",56:"ATTRIBUTE_WORD",58:",",59:"ATTRIBUTE_KEY",60:"COMMENT",63:"ZERO_OR_ONE",64:"ZERO_OR_MORE",65:"ONE_OR_MORE",66:"ONLY_ONE",67:"MD_PARENT",68:"NON_IDENTIFYING",69:"IDENTIFYING",70:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[18,1],[18,2],[51,2],[51,3],[51,3],[51,4],[52,1],[53,1],[54,1],[54,3],[57,1],[55,1],[12,3],[61,1],[61,1],[61,1],[61,1],[61,1],[62,1],[62,1],[14,1],[14,1],[14,1]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 1:break;case 2:this.$=[];break;case 3:a[o-1].push(a[o]),this.$=a[o-1];break;case 4:case 5:this.$=a[o];break;case 6:case 7:this.$=[];break;case 8:n.addEntity(a[o-4]),n.addEntity(a[o-2]),n.addRelationship(a[o-4],a[o],a[o-2],a[o-3]);break;case 9:n.addEntity(a[o-8]),n.addEntity(a[o-4]),n.addRelationship(a[o-8],a[o],a[o-4],a[o-5]),n.setClass([a[o-8]],a[o-6]),n.setClass([a[o-4]],a[o-2]);break;case 10:n.addEntity(a[o-6]),n.addEntity(a[o-2]),n.addRelationship(a[o-6],a[o],a[o-2],a[o-3]),n.setClass([a[o-6]],a[o-4]);break;case 11:n.addEntity(a[o-6]),n.addEntity(a[o-4]),n.addRelationship(a[o-6],a[o],a[o-4],a[o-5]),n.setClass([a[o-4]],a[o-2]);break;case 12:n.addEntity(a[o-3]),n.addAttributes(a[o-3],a[o-1]);break;case 13:n.addEntity(a[o-5]),n.addAttributes(a[o-5],a[o-1]),n.setClass([a[o-5]],a[o-3]);break;case 14:n.addEntity(a[o-2]);break;case 15:n.addEntity(a[o-4]),n.setClass([a[o-4]],a[o-2]);break;case 16:n.addEntity(a[o]);break;case 17:n.addEntity(a[o-2]),n.setClass([a[o-2]],a[o]);break;case 18:n.addEntity(a[o-6],a[o-4]),n.addAttributes(a[o-6],a[o-1]);break;case 19:n.addEntity(a[o-8],a[o-6]),n.addAttributes(a[o-8],a[o-1]),n.setClass([a[o-8]],a[o-3]);break;case 20:n.addEntity(a[o-5],a[o-3]);break;case 21:n.addEntity(a[o-7],a[o-5]),n.setClass([a[o-7]],a[o-2]);break;case 22:n.addEntity(a[o-3],a[o-1]);break;case 23:n.addEntity(a[o-5],a[o-3]),n.setClass([a[o-5]],a[o]);break;case 24:case 25:this.$=a[o].trim(),n.setAccTitle(this.$);break;case 26:case 27:this.$=a[o].trim(),n.setAccDescription(this.$);break;case 32:n.setDirection("TB");break;case 33:n.setDirection("BT");break;case 34:n.setDirection("RL");break;case 35:n.setDirection("LR");break;case 36:this.$=a[o-3],n.addClass(a[o-2],a[o-1]);break;case 37:case 38:case 56:case 64:this.$=[a[o]];break;case 39:case 40:this.$=a[o-2].concat([a[o]]);break;case 41:this.$=a[o-2],n.setClass(a[o-1],a[o]);break;case 42:this.$=a[o-3],n.addCssStyles(a[o-2],a[o-1]);break;case 43:this.$=[a[o]];break;case 44:a[o-2].push(a[o]),this.$=a[o-2];break;case 46:this.$=a[o-1]+a[o];break;case 54:case 76:case 77:this.$=a[o].replace(/"/g,"");break;case 55:case 78:this.$=a[o];break;case 57:a[o].push(a[o-1]),this.$=a[o];break;case 58:this.$={type:a[o-1],name:a[o]};break;case 59:this.$={type:a[o-2],name:a[o-1],keys:a[o]};break;case 60:this.$={type:a[o-2],name:a[o-1],comment:a[o]};break;case 61:this.$={type:a[o-3],name:a[o-2],keys:a[o-1],comment:a[o]};break;case 62:case 63:case 66:this.$=a[o];break;case 65:a[o-2].push(a[o]),this.$=a[o-2];break;case 67:this.$=a[o].replace(/"/g,"");break;case 68:this.$={cardA:a[o],relType:a[o-1],cardB:a[o-2]};break;case 69:this.$=n.Cardinality.ZERO_OR_ONE;break;case 70:this.$=n.Cardinality.ZERO_OR_MORE;break;case 71:this.$=n.Cardinality.ONE_OR_MORE;break;case 72:this.$=n.Cardinality.ONLY_ONE;break;case 73:this.$=n.Cardinality.MD_PARENT;break;case 74:this.$=n.Identification.NON_IDENTIFYING;break;case 75:this.$=n.Identification.IDENTIFYING}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(r,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:n,24:i,26:a,28:s,29:14,30:15,31:16,32:17,33:o,34:l,35:c,36:h,37:u,40:d,43:p,44:P,50:g},e(r,[2,7],{1:[2,1]}),e(r,[2,3]),{9:27,11:9,22:n,24:i,26:a,28:s,29:14,30:15,31:16,32:17,33:o,34:l,35:c,36:h,37:u,40:d,43:p,44:P,50:g},e(r,[2,5]),e(r,[2,6]),e(r,[2,16],{12:28,61:32,15:[1,29],17:[1,30],20:[1,31],63:f,64:m,65:y,66:v,67:x}),{23:[1,38]},{25:[1,39]},{27:[1,40]},e(r,[2,27]),e(r,[2,28]),e(r,[2,29]),e(r,[2,30]),e(r,[2,31]),e(B,[2,54]),e(B,[2,55]),e(r,[2,32]),e(r,[2,33]),e(r,[2,34]),e(r,[2,35]),{16:41,40:b,41:w},{16:44,40:b,41:w},{16:45,40:b,41:w},e(r,[2,4]),{11:46,40:d,50:g},{16:47,40:b,41:w},{18:48,19:[1,49],51:50,52:51,56:k},{11:53,40:d,50:g},{62:54,68:[1,55],69:[1,56]},e(T,[2,69]),e(T,[2,70]),e(T,[2,71]),e(T,[2,72]),e(T,[2,73]),e(r,[2,24]),e(r,[2,25]),e(r,[2,26]),{13:E,38:57,41:C,42:S,45:59,46:60,48:_,49:A},e(L,[2,37]),e(L,[2,38]),{16:65,40:b,41:w,42:S},{13:E,38:66,41:C,42:S,45:59,46:60,48:_,49:A},{13:[1,67],15:[1,68]},e(r,[2,17],{61:32,12:69,17:[1,70],42:S,63:f,64:m,65:y,66:v,67:x}),{19:[1,71]},e(r,[2,14]),{18:72,19:[2,56],51:50,52:51,56:k},{53:73,56:[1,74]},{56:[2,62]},{21:[1,75]},{61:76,63:f,64:m,65:y,66:v,67:x},e($,[2,74]),e($,[2,75]),{6:F,10:z,39:77,42:G,47:U},{40:[1,82],41:[1,83]},e(q,[2,43],{46:84,13:E,41:C,48:_,49:A}),e(N,[2,45]),e(N,[2,50]),e(N,[2,51]),e(N,[2,52]),e(N,[2,53]),e(r,[2,41],{42:S}),{6:F,10:z,39:85,42:G,47:U},{14:86,40:I,50:R,70:M},{16:90,40:b,41:w},{11:91,40:d,50:g},{18:92,19:[1,93],51:50,52:51,56:k},e(r,[2,12]),{19:[2,57]},e(D,[2,58],{54:94,55:95,57:96,59:j,60:W}),e([19,56,59,60],[2,63]),e(r,[2,22],{15:[1,100],17:[1,99]}),e([40,50],[2,68]),e(r,[2,36]),{13:E,41:C,45:101,46:60,48:_,49:A},e(r,[2,47]),e(r,[2,48]),e(r,[2,49]),e(L,[2,39]),e(L,[2,40]),e(N,[2,46]),e(r,[2,42]),e(r,[2,8]),e(r,[2,76]),e(r,[2,77]),e(r,[2,78]),{13:[1,102],42:S},{13:[1,104],15:[1,103]},{19:[1,105]},e(r,[2,15]),e(D,[2,59],{55:106,58:[1,107],60:W}),e(D,[2,60]),e(O,[2,64]),e(D,[2,67]),e(O,[2,66]),{18:108,19:[1,109],51:50,52:51,56:k},{16:110,40:b,41:w},e(q,[2,44],{46:84,13:E,41:C,48:_,49:A}),{14:111,40:I,50:R,70:M},{16:112,40:b,41:w},{14:113,40:I,50:R,70:M},e(r,[2,13]),e(D,[2,61]),{57:114,59:j},{19:[1,115]},e(r,[2,20]),e(r,[2,23],{17:[1,116],42:S}),e(r,[2,11]),{13:[1,117],42:S},e(r,[2,10]),e(O,[2,65]),e(r,[2,18]),{18:118,19:[1,119],51:50,52:51,56:k},{14:120,40:I,50:R,70:M},{19:[1,121]},e(r,[2,21]),e(r,[2,9]),e(r,[2,19])],defaultActions:{52:[2,62],72:[2,57]},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0{t(),Tu(),ku(),iS(),bct=class{constructor(){this.entities=new Map,this.relationships=[],this.classes=new Map,this.direction="TB",this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},this.setAccTitle=mh,this.getAccTitle=yh,this.setAccDescription=vh,this.getAccDescription=xh,this.setDiagramTitle=bh,this.getDiagramTitle=wh,this.getConfig=me(()=>O().er,"getConfig"),this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{me(this,"ErDB")}addEntity(t,e=""){return this.entities.has(t)?!this.entities.get(t)?.alias&&e&&(this.entities.get(t).alias=e,D.info(`Add alias '${e}' to entity '${t}'`)):(this.entities.set(t,{id:`entity-${t}-`+this.entities.size,label:t,attributes:[],alias:e,shape:"erBox",look:O().look??"default",cssClasses:"default",cssStyles:[]}),D.info("Added new entity :",t)),this.entities.get(t)}getEntity(t){return this.entities.get(t)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(t,e){let r=this.addEntity(t),n;for(n=e.length-1;0<=n;n--)e[n].keys||(e[n].keys=[]),e[n].comment||(e[n].comment=""),r.attributes.push(e[n]),D.debug("Added attribute ",e[n].name)}addRelationship(t,e,r,n){t=this.entities.get(t),r=this.entities.get(r),t&&r&&(t={entityA:t.id,roleA:e,entityB:r.id,relSpec:n},this.relationships.push(t),D.debug("Added new relationship :",t))}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(t){this.direction=t}getCompiledStyles(t){let e=[];for(var r of t)(r=this.classes.get(r))?.styles&&(e=[...e,...r.styles??[]].map(t=>t.trim())),r?.textStyles&&(e=[...e,...r.textStyles??[]].map(t=>t.trim()));return e}addCssStyles(t,e){for(var r of t){var n,i=this.entities.get(r);if(!e||!i)return;for(n of e)i.cssStyles.push(n)}}addClass(t,e){t.forEach(t=>{let r=this.classes.get(t);void 0===r&&(r={id:t,styles:[],textStyles:[]},this.classes.set(t,r)),e&&e.forEach(function(t){var e;/color/.exec(t)&&(e=t.replace("fill","bgFill"),r.textStyles.push(e)),r.styles.push(t)})})}setClass(t,e){for(var r of t){var n=this.entities.get(r);if(n)for(var i of e)n.cssClasses+=" "+i}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],fh()}getData(){var t,e,r=[],n=[],i=O();for(t of this.entities.keys()){var a=this.entities.get(t);a&&(a.cssCompiledStyles=this.getCompiledStyles(a.cssClasses.split(" ")),r.push(a))}let s=0;for(e of this.relationships){var o={id:nS(e.entityA,e.entityB,{prefix:"id",counter:s++}),type:"normal",curve:"basis",start:e.entityA,end:e.entityB,label:e.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:e.relSpec.cardB.toLowerCase(),arrowTypeEnd:e.relSpec.cardA.toLowerCase(),pattern:"IDENTIFYING"==e.relSpec.relType?"solid":"dashed",look:i.look};n.push(o)}return{nodes:r,edges:n,other:{},config:i,direction:"TB"}}}}),Ect={};KBt(Ect,{draw:()=>Cct});var Cct,Sct,_ct,Act,Lct=b(()=>{Tu(),t(),iO(),cct(),hct(),iS(),i6(),Cct=me(async function(t,e,r,n){D.info("REF0:"),D.info("Drawing er diagram (unified)",e);let{securityLevel:i,er:a,layout:s}=O(),o=n.db.getData(),l=WD(e,i);o.type=n.type,o.layoutAlgorithm=Hlt(s),o.config.flowchart.nodeSpacing=a?.nodeSpacing||140,o.config.flowchart.rankSpacing=a?.rankSpacing||80,o.direction=n.db.getDirection(),o.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],o.diagramId=e,await Ylt(o,l),"elk"===o.layoutAlgorithm&&l.select(".edges").lower(),e=l.selectAll('[id*="-background"]'),0{jr(),Sct=me((t,e)=>{var r=(i=ce)(t,"r"),n=i(t,"g"),i=i(t,"b");return oe(r,n,i,e)},"fade"),_ct=me(t=>` + .entityBox { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + } + + .relationshipLabelBox { + fill: ${t.tertiaryColor}; + opacity: 0.7; + background-color: ${t.tertiaryColor}; + rect { + opacity: 0.5; + } + } + + .labelBkg { + background-color: ${Sct(t.tertiaryColor,.5)}; + } + + .edgeLabel .label { + fill: ${t.nodeBorder}; + font-size: 14px; + } + + .label { + font-family: ${t.fontFamily}; + color: ${t.nodeTextColor||t.textColor}; + } + + .edge-pattern-dashed { + stroke-dasharray: 8,8; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon + { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + + .relationshipLine { + stroke: ${t.lineColor}; + stroke-width: 1; + fill: none; + } + + .marker { + fill: none !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; + } +`,"getStyles"),Act=_ct}),Ict={};KBt(Ict,{diagram:()=>Rct});var Rct,Mct=b(()=>{kct(),Tct(),Lct(),Nct(),Rct={parser:xct,get db(){return new bct},renderer:Ect,styles:Act}});function Dct(t){return"object"==typeof t&&null!==t&&"string"==typeof t.$type}function Oct(t){return"object"==typeof t&&null!==t&&"string"==typeof t.$refText}function Pct(t){return"object"==typeof t&&null!==t&&"string"==typeof t.name&&"string"==typeof t.type&&"string"==typeof t.path}function Bct(t){return"object"==typeof t&&null!==t&&Dct(t.container)&&Oct(t.reference)&&"string"==typeof t.message}function $ct(t){return"object"==typeof t&&null!==t&&Array.isArray(t.content)}function Fct(t){return"object"==typeof t&&null!==t&&"object"==typeof t.tokenType}function zct(t){return $ct(t)&&"string"==typeof t.fullText}var Gct,Uct=b(()=>{me(Dct,"isAstNode"),me(Oct,"isReference"),me(Pct,"isAstNodeDescription"),me(Bct,"isLinkingError"),Gct=class{static{me(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}isInstance(t,e){return Dct(t)&&this.isSubtype(t.$type,e)}isSubtype(t,e){var r,n;return t===e||(void 0!==(n=(r=(r=this.subtypes[t])||(this.subtypes[t]={}))[e])?n:(n=this.computeIsSubtype(t,e),r[e]=n))}getAllSubTypes(t){var e=this.allSubtypes[t];if(e)return e;var r,n=[];for(r of this.getAllTypes())this.isSubtype(r,t)&&n.push(r);return this.allSubtypes[t]=n}},me($ct,"isCompositeCstNode"),me(Fct,"isLeafCstNode"),me(zct,"isRootCstNode")});function qct(t){return"string"==typeof t?t:"u"e[Symbol.iterator](),t=>t.next());if("number"==typeof e.length)return new Yct(()=>({index:0}),t=>t.index({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){var e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}if(t.array){if(t.arrIndex{function t(t){return t.reduce((t,e)=>t+e,0)}function e(t){return t.reduce((t,e)=>t*e,0)}function r(t){return t.reduce((t,e)=>Math.min(t,e))}function n(t){return t.reduce((t,e)=>Math.max(t,e))}var i;Yct=class a{static{me(this,"StreamImpl")}constructor(t,e){this.startFn=t,this.nextFn=e}iterator(){let t={state:this.startFn(),next:me(()=>this.nextFn(t.state),"next"),[Symbol.iterator]:()=>t};return t}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let t=this.iterator(),e=0,r=t.next();for(;!r.done;)e++,r=t.next();return e}toArray(){for(var t,e=[],r=this.iterator();void 0!==(t=r.next()).value&&e.push(t.value),!t.done;);return e}toSet(){return new Set(this)}toMap(e,r){var t=this.map(t=>[e?e(t):t,r?r(t):t]);return new Map(t)}toString(){return this.join()}concat(t){return new a(()=>({first:this.startFn(),firstDone:!1,iterator:t[Symbol.iterator]()}),t=>{let e;if(!t.firstDone){do{if(!(e=this.nextFn(t.first)).done)return e}while(!e.done);t.firstDone=!0}do{if(!(e=t.iterator.next()).done)return e}while(!e.done);return Vct})}join(t=","){let e=this.iterator(),r="",n,i=!1;for(;(n=e.next()).done||(i&&(r+=t),r+=qct(n.value)),i=!0,!n.done;);return r}indexOf(t,e=0){let r=this.iterator(),n=0,i=r.next();for(;!i.done;){if(n>=e&&i.value===t)return n;i=r.next(),n++}return-1}every(t){let e=this.iterator(),r=e.next();for(;!r.done;){if(!t(r.value))return!1;r=e.next()}return!0}some(t){let e=this.iterator(),r=e.next();for(;!r.done;){if(t(r.value))return!0;r=e.next()}return!1}forEach(t){let e=this.iterator(),r=0,n=e.next();for(;!n.done;)t(n.value,r),n=e.next(),r++}map(r){return new a(this.startFn,t=>{var{done:t,value:e}=this.nextFn(t);return t?Vct:{done:!1,value:r(e)}})}filter(r){return new a(this.startFn,t=>{var e;do{if(!(e=this.nextFn(t)).done&&r(e.value))return e}while(!e.done);return Vct})}nonNullable(){return this.filter(t=>null!=t)}reduce(t,e){let r=this.iterator(),n=e,i=r.next();for(;!i.done;)n=void 0===n?i.value:t(n,i.value),i=r.next();return n}reduceRight(t,e){return this.recursiveReduce(this.iterator(),t,e)}recursiveReduce(t,e,r){var n=t.next();return n.done?r:void 0===(t=this.recursiveReduce(t,e,r))?n.value:e(t,n.value)}find(t){let e=this.iterator(),r=e.next();for(;!r.done;){if(t(r.value))return r.value;r=e.next()}}findIndex(t){let e=this.iterator(),r=0,n=e.next();for(;!n.done;){if(t(n.value))return r;n=e.next(),r++}return-1}includes(t){let e=this.iterator(),r=e.next();for(;!r.done;){if(r.value===t)return!0;r=e.next()}return!1}flatMap(n){return new a(()=>({this:this.startFn()}),t=>{do{if(t.iterator){if(!(e=t.iterator.next()).done)return e;t.iterator=void 0}var{done:e,value:r}=this.nextFn(t.this);if(!e){if(!jct(r=n(r)))return{done:!1,value:r};t.iterator=r[Symbol.iterator]()}}while(t.iterator);return Vct})}flat(t){if((t=void 0===t?1:t)<=0)return this;let n=1({this:n.startFn()}),t=>{do{if(t.iterator){if(!(e=t.iterator.next()).done)return e;t.iterator=void 0}var{done:e,value:r}=n.nextFn(t.this);if(!e){if(!jct(r))return{done:!1,value:r};t.iterator=r[Symbol.iterator]()}}while(t.iterator);return Vct})}head(){var t=this.iterator().next();if(!t.done)return t.value}tail(r=1){return new a(()=>{var e=this.startFn();for(let t=0;t({size:0,state:this.startFn()}),t=>(t.size++,e({set:new Set,internalState:this.startFn()}),t=>{var e;do{if(!(e=this.nextFn(t.internalState)).done){var r=n?n(e.value):e.value;if(!t.set.has(r))return t.set.add(r),e}}while(!e.done);return Vct})}exclude(t,e){let r=new Set;for(var n of t)n=e?e(n):n,r.add(n);return this.filter(t=>(t=e?e(t):t,!r.has(t)))}},me(qct,"toString"),me(jct,"isIterable"),Hct=new Yct(()=>{},()=>Vct),Vct=Object.freeze({done:!0,value:void 0}),me(Wct,"stream"),Xct=class extends Yct{static{me(this,"TreeStreamImpl")}constructor(t,r,e){super(()=>({iterators:e?.includeRoot?[[t][Symbol.iterator]()]:[r(t)[Symbol.iterator]()],pruned:!1}),t=>{for(t.pruned&&(t.iterators.pop(),t.pruned=!1);0this.nextFn(t.state),"next"),prune:me(()=>{t.state.pruned=!0},"prune"),[Symbol.iterator]:()=>t};return t}},i=Kct=Kct||{},me(t,"sum"),i.sum=t,me(e,"product"),i.product=e,me(r,"min"),i.min=r,me(n,"max"),i.max=n}),Qct={};function Jct(t){return new Xct(t,t=>$ct(t)?t.content:[],{includeRoot:!0})}function tht(t){return Jct(t).filter(Fct)}function eht(t,e){for(;t.container;)if((t=t.container)===e)return!0;return!1}function rht(t){return{start:{character:t.startColumn-1,line:t.startLine-1},end:{character:t.endColumn,line:t.endLine-1}}}function nht(t){var e,r;if(t)return{offset:t,end:e,range:r}=t,{range:r,offset:t,end:e,length:e-t}}function iht(t,e){var r;return t.end.linee.end.line||t.start.line===e.end.line&&t.start.character>=e.end.character?vht.After:(r=t.start.line>e.start.line||t.start.line===e.start.line&&t.start.character>=e.start.character,t=t.end.linevht.After}function sht(t,e,r=xht){var n;if(t)return 0!t.hidden)-1;0<=t;t--){var n=e.content[t];if(lht(n,r))return n}}}function lht(t,e){return Fct(t)&&e.includes(t.tokenType.name)}function cht(t,e){return Fct(t)?t:$ct(t)&&(t=uht(t,e,!1))?cht(t,e):void 0}function hht(t,e){return Fct(t)?t:$ct(t)&&(t=uht(t,e,!0))?hht(t,e):void 0}function uht(t,e,r){let n=0,i=t.content.length-1,a;for(;n<=i;){var s=Math.floor((n+i)/2),o=t.content[s];if(o.offset<=e&&o.end>e)return o;o.end<=e?(a=r?o:void 0,n=s+1):i=s-1}return a}function dht(r,n=!0){for(;r.container;){let t=r.container,e=t.content.indexOf(r);for(;0xht,RangeComparison:()=>vht,compareRange:()=>iht,findCommentNode:()=>oht,findDeclarationNodeAtOffset:()=>sht,findLeafNodeAtOffset:()=>cht,findLeafNodeBeforeOffset:()=>hht,flattenCst:()=>tht,getInteriorNodes:()=>fht,getNextNode:()=>pht,getPreviousNode:()=>dht,getStartlineNode:()=>ght,inRange:()=>aht,isChildNode:()=>eht,isCommentNode:()=>lht,streamCst:()=>Jct,toDocumentSegment:()=>nht,tokenToRange:()=>rht});var vht,xht,bht=b(()=>{var t;Uct(),Zct(),me(Jct,"streamCst"),me(tht,"flattenCst"),me(eht,"isChildNode"),me(rht,"tokenToRange"),me(nht,"toDocumentSegment"),(t=vht=vht||{})[t.Before=0]="Before",t[t.After=1]="After",t[t.OverlapFront=2]="OverlapFront",t[t.OverlapBack=3]="OverlapBack",t[t.Inside=4]="Inside",t[t.Outside=5]="Outside",me(iht,"compareRange"),me(aht,"inRange"),xht=/^[\w\p{L}]$/u,me(sht,"findDeclarationNodeAtOffset"),me(oht,"findCommentNode"),me(lht,"isCommentNode"),me(cht,"findLeafNodeAtOffset"),me(hht,"findLeafNodeBeforeOffset"),me(uht,"binarySearch"),me(dht,"getPreviousNode"),me(pht,"getNextNode"),me(ght,"getStartlineNode"),me(fht,"getInteriorNodes"),me(mht,"getCommonParent"),me(yht,"getParentChain")});function wht(t){throw new Error("Error! The input value was not handled.")}var kht,Tht=b(()=>{kht=class extends Error{static{me(this,"ErrorWithLocation")}constructor(t,e){super(t?`${e} at ${t.range.start.line}:`+t.range.start.character:e)}},me(wht,"assertUnreachable")}),Eht={};function Cht(t){return pdt.isInstance(t,but)}function Sht(t){return pdt.isInstance(t,wut)}function _ht(t){return pdt.isInstance(t,kut)}function Aht(t){return Lht(t)||"current"===t||"entry"===t||"extends"===t||"false"===t||"fragment"===t||"grammar"===t||"hidden"===t||"import"===t||"interface"===t||"returns"===t||"terminal"===t||"true"===t||"type"===t||"infer"===t||"infers"===t||"with"===t||"string"==typeof t&&/\^?[_a-zA-Z][\w_]*/.test(t)}function Lht(t){return"string"===t||"number"===t||"boolean"===t||"Date"===t||"bigint"===t}function Nht(t){return pdt.isInstance(t,Tut)}function Iht(t){return pdt.isInstance(t,Eut)}function Rht(t){return pdt.isInstance(t,Cut)}function Mht(t){return pdt.isInstance(t,Sut)}function Dht(t){return pdt.isInstance(t,_ut)}function Oht(t){return pdt.isInstance(t,Aut)}function Pht(t){return pdt.isInstance(t,Lut)}function Bht(t){return pdt.isInstance(t,Nut)}function $ht(t){return pdt.isInstance(t,Iut)}function Fht(t){return pdt.isInstance(t,Rut)}function zht(t){return pdt.isInstance(t,Mut)}function Ght(t){return pdt.isInstance(t,Dut)}function Uht(t){return pdt.isInstance(t,Out)}function qht(t){return pdt.isInstance(t,Put)}function jht(t){return pdt.isInstance(t,But)}function Wht(t){return pdt.isInstance(t,$ut)}function Yht(t){return pdt.isInstance(t,Fut)}function Hht(t){return pdt.isInstance(t,zut)}function Vht(t){return pdt.isInstance(t,Gut)}function Xht(t){return pdt.isInstance(t,Uut)}function Kht(t){return pdt.isInstance(t,qut)}function Zht(t){return pdt.isInstance(t,jut)}function Qht(t){return pdt.isInstance(t,Wut)}function Jht(t){return pdt.isInstance(t,Yut)}function tut(t){return pdt.isInstance(t,Hut)}function eut(t){return pdt.isInstance(t,Vut)}function rut(t){return pdt.isInstance(t,Xut)}function nut(t){return pdt.isInstance(t,Kut)}function iut(t){return pdt.isInstance(t,Zut)}function aut(t){return pdt.isInstance(t,Qut)}function sut(t){return pdt.isInstance(t,Jut)}function out(t){return pdt.isInstance(t,tdt)}function lut(t){return pdt.isInstance(t,edt)}function cut(t){return pdt.isInstance(t,rdt)}function hut(t){return pdt.isInstance(t,ndt)}function uut(t){return pdt.isInstance(t,idt)}function dut(t){return pdt.isInstance(t,adt)}function put(t){return pdt.isInstance(t,sdt)}function gut(t){return pdt.isInstance(t,odt)}function fut(t){return pdt.isInstance(t,ldt)}function mut(t){return pdt.isInstance(t,cdt)}function yut(t){return pdt.isInstance(t,hdt)}function vut(t){return pdt.isInstance(t,udt)}KBt(Eht,{AbstractElement:()=>Cut,AbstractRule:()=>but,AbstractType:()=>wut,Action:()=>Xut,Alternatives:()=>Kut,ArrayLiteral:()=>Sut,ArrayType:()=>_ut,Assignment:()=>Zut,BooleanLiteral:()=>Aut,CharacterRange:()=>Qut,Condition:()=>kut,Conjunction:()=>Lut,CrossReference:()=>Jut,Disjunction:()=>Nut,EndOfFile:()=>tdt,Grammar:()=>Iut,GrammarImport:()=>Rut,Group:()=>edt,InferredType:()=>Mut,Interface:()=>Dut,Keyword:()=>rdt,LangiumGrammarAstReflection:()=>ddt,LangiumGrammarTerminals:()=>xut,NamedArgument:()=>Out,NegatedToken:()=>ndt,Negation:()=>Put,NumberLiteral:()=>But,Parameter:()=>$ut,ParameterReference:()=>Fut,ParserRule:()=>zut,ReferenceType:()=>Gut,RegexToken:()=>idt,ReturnType:()=>Uut,RuleCall:()=>adt,SimpleType:()=>qut,StringLiteral:()=>jut,TerminalAlternatives:()=>sdt,TerminalGroup:()=>odt,TerminalRule:()=>Wut,TerminalRuleCall:()=>ldt,Type:()=>Yut,TypeAttribute:()=>Hut,TypeDefinition:()=>Tut,UnionType:()=>Vut,UnorderedGroup:()=>cdt,UntilToken:()=>hdt,ValueLiteral:()=>Eut,Wildcard:()=>udt,isAbstractElement:()=>Rht,isAbstractRule:()=>Cht,isAbstractType:()=>Sht,isAction:()=>rut,isAlternatives:()=>nut,isArrayLiteral:()=>Mht,isArrayType:()=>Dht,isAssignment:()=>iut,isBooleanLiteral:()=>Oht,isCharacterRange:()=>aut,isCondition:()=>_ht,isConjunction:()=>Pht,isCrossReference:()=>sut,isDisjunction:()=>Bht,isEndOfFile:()=>out,isFeatureName:()=>Aht,isGrammar:()=>$ht,isGrammarImport:()=>Fht,isGroup:()=>lut,isInferredType:()=>zht,isInterface:()=>Ght,isKeyword:()=>cut,isNamedArgument:()=>Uht,isNegatedToken:()=>hut,isNegation:()=>qht,isNumberLiteral:()=>jht,isParameter:()=>Wht,isParameterReference:()=>Yht,isParserRule:()=>Hht,isPrimitiveType:()=>Lht,isReferenceType:()=>Vht,isRegexToken:()=>uut,isReturnType:()=>Xht,isRuleCall:()=>dut,isSimpleType:()=>Kht,isStringLiteral:()=>Zht,isTerminalAlternatives:()=>put,isTerminalGroup:()=>gut,isTerminalRule:()=>Qht,isTerminalRuleCall:()=>fut,isType:()=>Jht,isTypeAttribute:()=>tut,isTypeDefinition:()=>Nht,isUnionType:()=>eut,isUnorderedGroup:()=>mut,isUntilToken:()=>yut,isValueLiteral:()=>Iht,isWildcard:()=>vut,reflection:()=>pdt});var xut,but,wut,kut,Tut,Eut,Cut,Sut,_ut,Aut,Lut,Nut,Iut,Rut,Mut,Dut,Out,Put,But,$ut,Fut,zut,Gut,Uut,qut,jut,Wut,Yut,Hut,Vut,Xut,Kut,Zut,Qut,Jut,tdt,edt,rdt,ndt,idt,adt,sdt,odt,ldt,cdt,hdt,udt,ddt,pdt,gdt=b(()=>{Uct(),xut={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},but="AbstractRule",me(Cht,"isAbstractRule"),wut="AbstractType",me(Sht,"isAbstractType"),kut="Condition",me(_ht,"isCondition"),me(Aht,"isFeatureName"),me(Lht,"isPrimitiveType"),Tut="TypeDefinition",me(Nht,"isTypeDefinition"),Eut="ValueLiteral",me(Iht,"isValueLiteral"),Cut="AbstractElement",me(Rht,"isAbstractElement"),Sut="ArrayLiteral",me(Mht,"isArrayLiteral"),_ut="ArrayType",me(Dht,"isArrayType"),Aut="BooleanLiteral",me(Oht,"isBooleanLiteral"),Lut="Conjunction",me(Pht,"isConjunction"),Nut="Disjunction",me(Bht,"isDisjunction"),Iut="Grammar",me($ht,"isGrammar"),Rut="GrammarImport",me(Fht,"isGrammarImport"),Mut="InferredType",me(zht,"isInferredType"),Dut="Interface",me(Ght,"isInterface"),Out="NamedArgument",me(Uht,"isNamedArgument"),Put="Negation",me(qht,"isNegation"),But="NumberLiteral",me(jht,"isNumberLiteral"),$ut="Parameter",me(Wht,"isParameter"),Fut="ParameterReference",me(Yht,"isParameterReference"),zut="ParserRule",me(Hht,"isParserRule"),Gut="ReferenceType",me(Vht,"isReferenceType"),Uut="ReturnType",me(Xht,"isReturnType"),qut="SimpleType",me(Kht,"isSimpleType"),jut="StringLiteral",me(Zht,"isStringLiteral"),Wut="TerminalRule",me(Qht,"isTerminalRule"),Yut="Type",me(Jht,"isType"),Hut="TypeAttribute",me(tut,"isTypeAttribute"),Vut="UnionType",me(eut,"isUnionType"),Xut="Action",me(rut,"isAction"),Kut="Alternatives",me(nut,"isAlternatives"),Zut="Assignment",me(iut,"isAssignment"),Qut="CharacterRange",me(aut,"isCharacterRange"),Jut="CrossReference",me(sut,"isCrossReference"),tdt="EndOfFile",me(out,"isEndOfFile"),edt="Group",me(lut,"isGroup"),rdt="Keyword",me(cut,"isKeyword"),ndt="NegatedToken",me(hut,"isNegatedToken"),idt="RegexToken",me(uut,"isRegexToken"),adt="RuleCall",me(dut,"isRuleCall"),sdt="TerminalAlternatives",me(put,"isTerminalAlternatives"),odt="TerminalGroup",me(gut,"isTerminalGroup"),ldt="TerminalRuleCall",me(fut,"isTerminalRuleCall"),cdt="UnorderedGroup",me(mut,"isUnorderedGroup"),hdt="UntilToken",me(yut,"isUntilToken"),udt="Wildcard",me(vut,"isWildcard"),ddt=class extends Gct{static{me(this,"LangiumGrammarAstReflection")}getAllTypes(){return[Cut,but,wut,Xut,Kut,Sut,_ut,Zut,Aut,Qut,kut,Lut,Jut,Nut,tdt,Iut,Rut,edt,Mut,Dut,rdt,Out,ndt,Put,But,$ut,Fut,zut,Gut,idt,Uut,adt,qut,jut,sdt,odt,Wut,ldt,Yut,Hut,Tut,Vut,cdt,hdt,Eut,udt]}computeIsSubtype(t,e){switch(t){case Xut:case Kut:case Zut:case Qut:case Jut:case tdt:case edt:case rdt:case ndt:case idt:case adt:case sdt:case odt:case ldt:case cdt:case hdt:case udt:return this.isSubtype(Cut,e);case Sut:case But:case jut:return this.isSubtype(Eut,e);case _ut:case Gut:case qut:case Vut:return this.isSubtype(Tut,e);case Aut:return this.isSubtype(kut,e)||this.isSubtype(Eut,e);case Lut:case Nut:case Put:case Fut:return this.isSubtype(kut,e);case Mut:case Dut:case Yut:return this.isSubtype(wut,e);case zut:return this.isSubtype(but,e)||this.isSubtype(wut,e);case Wut:return this.isSubtype(but,e);default:return!1}}getReferenceType(t){var e=t.container.$type+":"+t.property;switch(e){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return wut;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return but;case"Grammar:usedGrammars":return Iut;case"NamedArgument:parameter":case"ParameterReference:parameter":return $ut;case"TerminalRuleCall:rule":return Wut;default:throw new Error(e+" is not a valid reference id.")}}getTypeMetaData(t){switch(t){case Cut:return{name:Cut,properties:[{name:"cardinality"},{name:"lookahead"}]};case Sut:return{name:Sut,properties:[{name:"elements",defaultValue:[]}]};case _ut:return{name:_ut,properties:[{name:"elementType"}]};case Aut:return{name:Aut,properties:[{name:"true",defaultValue:!1}]};case Lut:return{name:Lut,properties:[{name:"left"},{name:"right"}]};case Nut:return{name:Nut,properties:[{name:"left"},{name:"right"}]};case Iut:return{name:Iut,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case Rut:return{name:Rut,properties:[{name:"path"}]};case Mut:return{name:Mut,properties:[{name:"name"}]};case Dut:return{name:Dut,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case Out:return{name:Out,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case Put:return{name:Put,properties:[{name:"value"}]};case But:return{name:But,properties:[{name:"value"}]};case $ut:return{name:$ut,properties:[{name:"name"}]};case Fut:return{name:Fut,properties:[{name:"parameter"}]};case zut:return{name:zut,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case Gut:return{name:Gut,properties:[{name:"referenceType"}]};case Uut:return{name:Uut,properties:[{name:"name"}]};case qut:return{name:qut,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case jut:return{name:jut,properties:[{name:"value"}]};case Wut:return{name:Wut,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case Yut:return{name:Yut,properties:[{name:"name"},{name:"type"}]};case Hut:return{name:Hut,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case Vut:return{name:Vut,properties:[{name:"types",defaultValue:[]}]};case Xut:return{name:Xut,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case Kut:return{name:Kut,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Zut:return{name:Zut,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case Qut:return{name:Qut,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case Jut:return{name:Jut,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case tdt:return{name:tdt,properties:[{name:"cardinality"},{name:"lookahead"}]};case edt:return{name:edt,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case rdt:return{name:rdt,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case ndt:return{name:ndt,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case idt:return{name:idt,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case adt:return{name:adt,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case sdt:return{name:sdt,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case odt:return{name:odt,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case ldt:return{name:ldt,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case cdt:return{name:cdt,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case hdt:return{name:hdt,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case udt:return{name:udt,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:t,properties:[]}}}},pdt=new ddt}),fdt={};function mdt(n){for(let[r,t]of Object.entries(n))r.startsWith("$")||(Array.isArray(t)?t.forEach((t,e)=>{Dct(t)&&(t.$container=n,t.$containerProperty=r,t.$containerIndex=e)}):Dct(t)&&(t.$container=n,t.$containerProperty=r))}function ydt(t,e){let r=t;for(;r;){if(e(r))return r;r=r.$container}}function vdt(t,e){let r=t;for(;r;){if(e(r))return!0;r=r.$container}return!1}function xdt(t){if(t=bdt(t).$document)return t;throw new Error("AST node has no document.")}function bdt(t){for(;t.$container;)t=t.$container;return t}function wdt(i,t){if(!i)throw new Error("Node must be an AstNode.");let a=t?.range;return new Yct(()=>({keys:Object.keys(i),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndexwdt(t,e));throw new Error("Root node must be an AstNode.")}function Tdt(t,e){if(t)return e?.range&&!Edt(t,e.range)?new Xct(t,()=>[]):new Xct(t,t=>wdt(t,e),{includeRoot:!0});throw new Error("Root node must be an AstNode.")}function Edt(t,e){return!e||!!(t=null==(t=t.$cstNode)?void 0:t.range)&&aht(t,e)}function Cdt(a){return new Yct(()=>({keys:Object.keys(a),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex{Cdt(t).forEach(t=>{t.reference.ref===e&&r.push(t.reference)})}),Wct(r)}function _dt(t,e){var r,n=e;for(r of t.getTypeMetaData(e.$type).properties)void 0!==r.defaultValue&&void 0===n[r.name]&&(n[r.name]=Adt(r.defaultValue))}function Adt(t){return Array.isArray(t)?[...t.map(Adt)]:t}function Ldt(t,e){var r,n,i={$type:t.$type};for([r,n]of Object.entries(t))if(!r.startsWith("$"))if(Dct(n))i[r]=Ldt(n,e);else if(Oct(n))i[r]=e(i,r,n.$refNode,n.$refText);else if(Array.isArray(n)){var a,s=[];for(a of n)Dct(a)?s.push(Ldt(a,e)):Oct(a)?s.push(e(i,r,a.$refNode,a.$refText)):s.push(a);i[r]=s}else i[r]=n;return mdt(i),i}KBt(fdt,{assignMandatoryProperties:()=>_dt,copyAstNode:()=>Ldt,findLocalReferences:()=>Sdt,findRootNode:()=>bdt,getContainerOfType:()=>ydt,getDocument:()=>xdt,hasContainerOfType:()=>vdt,linkContentToContainer:()=>mdt,streamAllContents:()=>kdt,streamAst:()=>Tdt,streamContents:()=>wdt,streamReferences:()=>Cdt});var Ndt=b(()=>{Uct(),Zct(),bht(),me(mdt,"linkContentToContainer"),me(ydt,"getContainerOfType"),me(vdt,"hasContainerOfType"),me(xdt,"getDocument"),me(bdt,"findRootNode"),me(wdt,"streamContents"),me(kdt,"streamAllContents"),me(Tdt,"streamAst"),me(Edt,"isAstNodeInRange"),me(Cdt,"streamReferences"),me(Sdt,"findLocalReferences"),me(_dt,"assignMandatoryProperties"),me(Adt,"copyDefaultValue"),me(Ldt,"copyAstNode")});function Idt(t){return t.charCodeAt(0)}function Rdt(t,e){Array.isArray(t)?t.forEach(function(t){e.push(t)}):e.push(t)}function Mdt(t,e){if(!0===t[e])throw"duplicate flag "+e;t[e]=!0}function Ddt(t){if(void 0===t)throw Error("Internal Error - Should never get here!");return!0}function Odt(){throw Error("Internal Error - Should never get here!")}function Pdt(t){return"Character"===t.type}var Bdt,$dt,Fdt,zdt,Gdt,Udt,qdt,jdt,Wdt=b(()=>{me(Idt,"cc"),me(Rdt,"insertToSet"),me(Mdt,"addFlag"),me(Ddt,"ASSERT_EXISTS"),me(Odt,"ASSERT_NEVER_REACH_HERE"),me(Pdt,"isCharacter")}),Ydt=b(()=>{Wdt(),Bdt=[];for(let t=Idt("0");t<=Idt("9");t++)Bdt.push(t);$dt=[Idt("_")].concat(Bdt);for(let t=Idt("a");t<=Idt("z");t++)$dt.push(t);for(let t=Idt("A");t<=Idt("Z");t++)$dt.push(t);Fdt=[Idt(" "),Idt("\f"),Idt(` +`),Idt("\r"),Idt("\t"),Idt("\v"),Idt("\t"),Idt(" "),Idt(" "),Idt(" "),Idt(" "),Idt(" "),Idt(" "),Idt(" "),Idt(" "),Idt(" "),Idt(" "),Idt(" "),Idt(" "),Idt(" "),Idt("\u2028"),Idt("\u2029"),Idt(" "),Idt(" "),Idt(" "),Idt("\ufeff")]}),Hdt=b(()=>{Wdt(),Ydt(),zdt=/[0-9a-fA-F]/,Gdt=/[0-9]/,Udt=/[1-9]/,qdt=class{static{me(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(t){this.idx=t.idx,this.input=t.input,this.groupIdx=t.groupIdx}pattern(t){this.idx=0,this.input=t,this.groupIdx=0,this.consumeChar("/");for(var e=this.disjunction(),r=(this.consumeChar("/"),{type:"Flags",loc:{begin:this.idx,end:t.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1});this.isRegExpFlag();)switch(this.popChar()){case"g":Mdt(r,"global");break;case"i":Mdt(r,"ignoreCase");break;case"m":Mdt(r,"multiLine");break;case"u":Mdt(r,"unicode");break;case"y":Mdt(r,"sticky")}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:r,value:e,loc:this.loc(0)}}disjunction(){var t=[],e=this.idx;for(t.push(this.alternative());"|"===this.peekChar();)this.consumeChar("|"),t.push(this.alternative());return{type:"Disjunction",value:t,loc:this.loc(e)}}alternative(){for(var t=[],e=this.idx;this.isTerm();)t.push(this.term());return{type:"Alternative",value:t,loc:this.loc(e)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){var e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let t;switch(this.popChar()){case"=":t="Lookahead";break;case"!":t="NegativeLookahead"}Ddt(t);var r=this.disjunction();return this.consumeChar(")"),{type:t,value:r,loc:this.loc(e)}}return Odt()}quantifier(t=!1){let e,r=this.idx;switch(this.popChar()){case"*":e={atLeast:0,atMost:1/0};break;case"+":e={atLeast:1,atMost:1/0};break;case"?":e={atLeast:0,atMost:1};break;case"{":var n=this.integerIncludingZero();switch(this.popChar()){case"}":e={atLeast:n,atMost:n};break;case",":e=this.isDigit()?{atLeast:n,atMost:this.integerIncludingZero()}:{atLeast:n,atMost:1/0},this.consumeChar("}")}if(!0===t&&void 0===e)return;Ddt(e)}if((!0!==t||void 0!==e)&&Ddt(e))return"?"===this.peekChar(0)?(this.consumeChar("?"),e.greedy=!1):e.greedy=!0,e.type="Quantifier",e.loc=this.loc(r),e}atom(){let t,e=this.idx;switch(this.peekChar()){case".":t=this.dotAll();break;case"\\":t=this.atomEscape();break;case"[":t=this.characterClass();break;case"(":t=this.group()}return Ddt(t=void 0===t&&this.isPatternCharacter()?this.patternCharacter():t)?(t.loc=this.loc(e),this.isQuantifier()&&(t.quantifier=this.quantifier()),t):Odt()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[Idt(` +`),Idt("\r"),Idt("\u2028"),Idt("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let t,e=!1;switch(this.popChar()){case"d":t=Bdt;break;case"D":t=Bdt,e=!0;break;case"s":t=Fdt;break;case"S":t=Fdt,e=!0;break;case"w":t=$dt;break;case"W":t=$dt,e=!0}return Ddt(t)?{type:"Set",value:t,complement:e}:Odt()}controlEscapeAtom(){let t;switch(this.popChar()){case"f":t=Idt("\f");break;case"n":t=Idt(` +`);break;case"r":t=Idt("\r");break;case"t":t=Idt("\t");break;case"v":t=Idt("\v")}return Ddt(t)?{type:"Character",value:t}:Odt()}controlLetterEscapeAtom(){this.consumeChar("c");var t=this.popChar();if(!1===/[a-zA-Z]/.test(t))throw Error("Invalid ");return{type:"Character",value:t.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:Idt("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){return{type:"Character",value:Idt(this.popChar())}}classPatternCharacterAtom(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:return{type:"Character",value:Idt(this.popChar())}}}characterClass(){let t=[],e=!1;for(this.consumeChar("["),"^"===this.peekChar(0)&&(this.consumeChar("^"),e=!0);this.isClassAtom();){var r=this.classAtom();if(r.type,Pdt(r)&&this.isRangeDash()){this.consumeChar("-");var n=this.classAtom();if(n.type,Pdt(n)){if(n.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(t){return{begin:t,end:this.idx}}}}),Vdt=b(()=>{jdt=class{static{me(this,"BaseRegExpVisitor")}visitChildren(t){for(var e in t){var r=t[e];t.hasOwnProperty(e)&&(void 0!==r.type?this.visit(r):Array.isArray(r)&&r.forEach(t=>{this.visit(t)},this))}}visit(t){switch(t.type){case"Pattern":this.visitPattern(t);break;case"Flags":this.visitFlags(t);break;case"Disjunction":this.visitDisjunction(t);break;case"Alternative":this.visitAlternative(t);break;case"StartAnchor":this.visitStartAnchor(t);break;case"EndAnchor":this.visitEndAnchor(t);break;case"WordBoundary":this.visitWordBoundary(t);break;case"NonWordBoundary":this.visitNonWordBoundary(t);break;case"Lookahead":this.visitLookahead(t);break;case"NegativeLookahead":this.visitNegativeLookahead(t);break;case"Character":this.visitCharacter(t);break;case"Set":this.visitSet(t);break;case"Group":this.visitGroup(t);break;case"GroupBackReference":this.visitGroupBackReference(t);break;case"Quantifier":this.visitQuantifier(t)}this.visitChildren(t)}visitPattern(t){}visitFlags(t){}visitDisjunction(t){}visitAlternative(t){}visitStartAnchor(t){}visitEndAnchor(t){}visitWordBoundary(t){}visitNonWordBoundary(t){}visitLookahead(t){}visitNegativeLookahead(t){}visitCharacter(t){}visitSet(t){}visitGroup(t){}visitGroupBackReference(t){}visitQuantifier(t){}}}),Xdt=b(()=>{Hdt(),Vdt()}),Kdt={};function Zdt(t){try{t=`/${t="string"!=typeof t?t.source:t}/`;var e,r=apt.pattern(t),n=[];for(e of r.value.value)opt.reset(t),opt.visit(e),n.push({start:opt.startRegexp,end:opt.endRegex});return n}catch{return[]}}function Qdt(t){try{return t=(t="string"==typeof t?new RegExp(t):t).toString(),opt.reset(t),opt.visit(apt.pattern(t)),opt.multiline}catch{return!1}}function Jdt(t){let e="string"==typeof t?new RegExp(t):t;return lpt.some(t=>e.test(t))}function tpt(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ept(t){return Array.prototype.map.call(t,t=>/\w/.test(t)?`[${t.toLowerCase()}${t.toUpperCase()}]`:tpt(t)).join("")}function rpt(t,e){return t=npt(t),!!(e=e.match(t))&&0",s)-s+1);break;default:n(2)}break;case"[":(t=/\[(?:\\.|.)*?\]/g).lastIndex=s,n((t=t.exec(a)||[])[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":r(1);break;case"{":(t=/\{\d+,?\d*\}/g).lastIndex=s,(t=t.exec(a))?r(t[0].length):n(1);break;case"(":if("?"===a[s+1])switch(a[s+2]){case":":e+="(?:",s+=3,e+=o()+"|$)";break;case"=":e+="(?=",s+=3,e+=o()+")";break;case"!":t=s,s+=3,o(),e+=a.substr(t,s-t);break;case"<":switch(a[s+3]){case"=":case"!":t=s,s+=4,o(),e+=a.substr(t,s-t);break;default:r(a.indexOf(">",s)-s+1),e+=o()+"|$)"}}else r(1),e+=o()+"|$)";break;case")":return++s,e;default:n(1)}return e}return me(o,"process"),new RegExp(o(),t.flags)}KBt(Kdt,{NEWLINE_REGEXP:()=>ipt,escapeRegExp:()=>tpt,getCaseInsensitivePattern:()=>ept,getTerminalParts:()=>Zdt,isMultilineComment:()=>Qdt,isWhitespace:()=>Jdt,partialMatches:()=>rpt,partialRegExp:()=>npt,whitespaceCharacters:()=>lpt});var ipt,apt,spt,opt,lpt,cpt=b(()=>{Xdt(),ipt=/\r?\n/gm,apt=new qdt,spt=class extends jdt{static{me(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(t){this.multiline=!1,this.regex=t,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(t){t.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(t){var e=String.fromCharCode(t.value);this.multiline||e!==` +`||(this.multiline=!0),t.quantifier?(this.isStarting=!1,this.endRegexpStack=[]):(t=tpt(e),this.endRegexpStack.push(t),this.isStarting&&(this.startRegexp+=t))}visitSet(t){var e;this.multiline||(e=this.regex.substring(t.loc.begin,t.loc.end),e=new RegExp(e),this.multiline=!!` +`.match(e)),t.quantifier?(this.isStarting=!1,this.endRegexpStack=[]):(e=this.regex.substring(t.loc.begin,t.loc.end),this.endRegexpStack.push(e),this.isStarting&&(this.startRegexp+=e))}visitChildren(t){"Group"===t.type&&t.quantifier||super.visitChildren(t)}},opt=new spt,me(Zdt,"getTerminalParts"),me(Qdt,"isMultilineComment"),lpt=` +\r              

   `.split(""),me(Jdt,"isWhitespace"),me(tpt,"escapeRegExp"),me(ept,"getCaseInsensitivePattern"),me(rpt,"partialMatches"),me(npt,"partialRegExp")}),hpt={};function upt(t){return t.rules.find(t=>Hht(t)&&t.entry)}function dpt(t){return t.rules.filter(t=>Qht(t)&&t.hidden)}function ppt(t,e){var r,n=new Set,i=upt(t);if(!i)return new Set(t.rules);for(r of[i].concat(dpt(t)))gpt(r,n,e);var a,s=new Set;for(a of t.rules)(n.has(a.name)||Qht(a)&&a.hidden)&&s.add(a);return s}function gpt(t,e,r){e.add(t.name),kdt(t).forEach(t=>{(dut(t)||r&&fut(t))&&(t=t.rule.ref)&&!e.has(t.name)&&gpt(t,e,r)})}function fpt(t){return t.terminal||(t.type.ref?Ept(t.type.ref)?.terminal:void 0)}function mpt(t){return t.hidden&&!Jdt(Fpt(t))}function ypt(t,e){return t&&e?xpt(t,e,t.astNode,!0):[]}function vpt(t,e,r){return t&&e&&0!==(e=xpt(t,e,t.astNode,!0)).length?e[r=void 0!==r?Math.max(0,Math.min(r,e.length-1)):0]:void 0}function xpt(t,e,r,n){return!n&&(n=ydt(t.grammarSource,iut))&&n.feature===e?[t]:$ct(t)&&t.astNode===r?t.content.flatMap(t=>xpt(t,e,r,!1)):[]}function bpt(t,e){return t?kpt(t,e,t?.astNode):[]}function wpt(t,e,r){return t&&0!==(e=kpt(t,e,t?.astNode)).length?e[r=void 0!==r?Math.max(0,Math.min(r,e.length-1)):0]:void 0}function kpt(t,e,r){if(t.astNode!==r)return[];if(cut(t.grammarSource)&&t.grammarSource.value===e)return[t];for(var n,i,a=Jct(t).iterator(),s=[];(i=a.next()).done||((n=i.value).astNode===r?cut(n.grammarSource)&&n.grammarSource.value===e&&s.push(n):a.prune()),!i.done;);return s}function Tpt(t){for(var e=t.astNode;e===(null==(r=t.container)?void 0:r.astNode);){var r=ydt(t.grammarSource,iut);if(r)return r;t=t.container}}function Ept(t){let e=t;return zht(e)&&(rut(e.$container)?e=e.$container.$container:Hht(e.$container)?e=e.$container:wht(e.$container)),Cpt(t,e,new Map)}function Cpt(n,t,i){var e,r;function a(t,e){let r;return ydt(t,iut)||(r=Cpt(e,e,i)),i.set(n,r),r}if(me(a,"go"),i.has(n))return i.get(n);i.set(n,void 0);for(r of kdt(t)){if(iut(r)&&"name"===r.feature.toLowerCase())return i.set(n,r),r;if(dut(r)&&Hht(r.rule.ref))return a(r,r.rule.ref);if(Kht(r)&&null!=(e=r.typeRef)&&e.ref)return a(r,r.typeRef.ref)}}function Spt(e){var t=e.$container;if(lut(t)){var r=t.elements;for(let t=r.indexOf(e)-1;0<=t;t--){var n=r[t];if(rut(n))return n;if(n=kdt(r[t]).find(rut))return n}}if(Rht(t))return Spt(t)}function _pt(t,e){return"?"===t||"*"===t||lut(e)&&!!e.guardCondition}function Apt(t){return"*"===t||"+"===t}function Lpt(t){return"+="===t}function Npt(t){return Ipt(t,new Set)}function Ipt(t,e){if(e.has(t))return!0;e.add(t);for(var r of kdt(t))if(dut(r)){if(!r.rule.ref||Hht(r.rule.ref)&&!Ipt(r.rule.ref,e))return!1}else{if(iut(r))return!1;if(rut(r))return!1}return!!t.definition}function Rpt(t){return Mpt(t.type,new Set)}function Mpt(t,e){return!!e.has(t)||(e.add(t),!Dht(t)&&!Vht(t)&&(eut(t)?t.types.every(t=>Mpt(t,e)):!!Kht(t)&&(void 0!==t.primitiveType||void 0!==t.stringType||void 0!==t.typeRef&&!!Jht(t=t.typeRef.ref)&&Mpt(t.type,e))))}function Dpt(t){return t.inferredType?t.inferredType.name:t.dataType||(t.returnType&&(t=t.returnType.ref)&&(Hht(t)||Ght(t)||Jht(t))?t.name:void 0)}function Opt(t){if(Hht(t))return Npt(t)||null==(e=Dpt(t))?t.name:e;if(Ght(t)||Jht(t)||Xht(t))return t.name;if(rut(t)){var e=Ppt(t);if(e)return e}else if(zht(t))return t.name;throw new Error("Cannot get name of Unknown Type")}function Ppt(t){var e;return t.inferredType?t.inferredType.name:null!=(e=t.type)&&e.ref?Opt(t.type.ref):void 0}function Bpt(t){var e;return Qht(t)?null!=(e=null==(e=t.type)?void 0:e.name)?e:"string":Npt(t)||null==(e=Dpt(t))?t.name:e}function $pt(t){var e;return Qht(t)?null!=(e=null==(e=t.type)?void 0:e.name)?e:"string":null!=(e=Dpt(t))?e:t.name}function Fpt(t){var t=zpt(t.definition,e={s:!1,i:!1,u:!1}),e=Object.entries(e).filter(([,t])=>t).map(([t])=>t).join("");return new RegExp(t,e)}function zpt(t,e){if(put(t))return Gpt(t);if(gut(t))return Upt(t);if(aut(t))return Wpt(t);if(fut(t)){var r=t.rule.ref;if(r)return Hpt(zpt(r.definition),{cardinality:t.cardinality,lookahead:t.lookahead});throw new Error("Missing rule reference.")}if(hut(t))return jpt(t);if(yut(t))return qpt(t);var n;if(uut(t))return r=t.regex.lastIndexOf("/"),n=t.regex.substring(1,r),r=t.regex.substring(r+1),e&&(e.i=r.includes("i"),e.s=r.includes("s"),e.u=r.includes("u")),Hpt(n,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1});if(vut(t))return Hpt(Vpt,{cardinality:t.cardinality,lookahead:t.lookahead});throw new Error("Invalid terminal element: "+t?.$type)}function Gpt(t){return Hpt(t.elements.map(t=>zpt(t)).join("|"),{cardinality:t.cardinality,lookahead:t.lookahead})}function Upt(t){return Hpt(t.elements.map(t=>zpt(t)).join(""),{cardinality:t.cardinality,lookahead:t.lookahead})}function qpt(t){return Hpt(Vpt+"*?"+zpt(t.terminal),{cardinality:t.cardinality,lookahead:t.lookahead})}function jpt(t){return Hpt(`(?!${zpt(t.terminal)})${Vpt}*?`,{cardinality:t.cardinality,lookahead:t.lookahead})}function Wpt(t){return t.right?Hpt(`[${Ypt(t.left)}-${Ypt(t.right)}]`,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1}):Hpt(Ypt(t.left),{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}function Ypt(t){return tpt(t.value)}function Hpt(t,e){var r;return!1===e.wrap&&!e.lookahead||(t=`(${null!=(r=e.lookahead)?r:""}${t})`),e.cardinality?""+t+e.cardinality:t}KBt(hpt,{findAssignment:()=>Tpt,findNameAssignment:()=>Ept,findNodeForKeyword:()=>wpt,findNodeForProperty:()=>vpt,findNodesForKeyword:()=>bpt,findNodesForKeywordInternal:()=>kpt,findNodesForProperty:()=>ypt,getActionAtElement:()=>Spt,getActionType:()=>Ppt,getAllReachableRules:()=>ppt,getCrossReferenceTerminal:()=>fpt,getEntryRule:()=>upt,getExplicitRuleType:()=>Dpt,getHiddenRules:()=>dpt,getRuleType:()=>$pt,getRuleTypeName:()=>Bpt,getTypeName:()=>Opt,isArrayCardinality:()=>Apt,isArrayOperator:()=>Lpt,isCommentTerminal:()=>mpt,isDataType:()=>Rpt,isDataTypeRule:()=>Npt,isOptionalCardinality:()=>_pt,terminalRegex:()=>Fpt});var Vpt,Xpt=b(()=>{Tht(),gdt(),Uct(),Ndt(),bht(),cpt(),me(upt,"getEntryRule"),me(dpt,"getHiddenRules"),me(ppt,"getAllReachableRules"),me(gpt,"ruleDfs"),me(fpt,"getCrossReferenceTerminal"),me(mpt,"isCommentTerminal"),me(ypt,"findNodesForProperty"),me(vpt,"findNodeForProperty"),me(xpt,"findNodesForPropertyInternal"),me(bpt,"findNodesForKeyword"),me(wpt,"findNodeForKeyword"),me(kpt,"findNodesForKeywordInternal"),me(Tpt,"findAssignment"),me(Ept,"findNameAssignment"),me(Cpt,"findNameAssignmentInternal"),me(Spt,"getActionAtElement"),me(_pt,"isOptionalCardinality"),me(Apt,"isArrayCardinality"),me(Lpt,"isArrayOperator"),me(Npt,"isDataTypeRule"),me(Ipt,"isDataTypeRuleInternal"),me(Rpt,"isDataType"),me(Mpt,"isDataTypeInternal"),me(Dpt,"getExplicitRuleType"),me(Opt,"getTypeName"),me(Ppt,"getActionType"),me(Bpt,"getRuleTypeName"),me($pt,"getRuleType"),me(Fpt,"terminalRegex"),Vpt=/[\s\S]/.source,me(zpt,"abstractElementToRegex"),me(Gpt,"terminalAlternativesToRegex"),me(Upt,"terminalGroupToRegex"),me(qpt,"untilTokenToRegex"),me(jpt,"negateTokenToRegex"),me(Wpt,"characterRangeToRegex"),me(Ypt,"keywordToRegex"),me(Hpt,"withCardinality")});function Kpt(t){var e,r=[];for(e of t.Grammar.rules)Qht(e)&&mpt(e)&&Qdt(Fpt(e))&&r.push(e.name);return{multilineCommentRules:r,nameRegexp:xht}}var Zpt=b(()=>{bht(),Xpt(),cpt(),gdt(),me(Kpt,"createGrammarConfig")}),Qpt=b(()=>{});function Jpt(t){console&&console.error&&console.error("Error: "+t)}function t0t(t){console&&console.warn&&console.warn("Warning: "+t)}var e0t=b(()=>{me(Jpt,"PRINT_ERROR"),me(t0t,"PRINT_WARNING")});function r0t(t){var e=(new Date).getTime(),t=t();return{time:(new Date).getTime()-e,value:t}}var n0t=b(()=>{me(r0t,"timer")});function i0t(t){function e(){}me(e,"FakeConstructor"),e.prototype=t;let r=new e;function n(){return typeof r.bar}return me(n,"fakeAccess"),n(),n(),t}var a0t=b(()=>{me(i0t,"toFastProperties")}),s0t=b(()=>{e0t(),n0t(),a0t()});function o0t(t){return l0t(t)?t.LABEL:t.name}function l0t(t){return ej(t.LABEL)&&""!==t.LABEL}function c0t(t){return x(t,h0t)}function h0t(t){function e(t){return x(t,h0t)}var r,n;if(me(e,"convertDefinition"),t instanceof d0t)return r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx},ej(t.label)&&(r.label=t.label),r;if(t instanceof g0t)return{type:"Alternative",definition:e(t.definition)};if(t instanceof f0t)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof m0t)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof y0t)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:h0t(new w0t({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof x0t)return{type:"RepetitionWithSeparator",idx:t.idx,separator:h0t(new w0t({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof v0t)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof b0t)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof w0t)return r={type:"Terminal",name:t.terminalType.name,label:o0t(t.terminalType),idx:t.idx},ej(t.label)&&(r.terminalLabel=t.label),n=t.terminalType.PATTERN,t.terminalType.PATTERN&&(r.pattern=Cj(n)?n.source:n),r;if(t instanceof p0t)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}var u0t,d0t,p0t,g0t,f0t,m0t,y0t,v0t,x0t,b0t,w0t,k0t,T0t=b(()=>{WY(),me(o0t,"tokenLabel"),me(l0t,"hasTokenLabel"),u0t=class{static{me(this,"AbstractProduction")}get definition(){return this._definition}set definition(t){this._definition=t}constructor(t){this._definition=t}accept(e){e.visit(this),v(this.definition,t=>{t.accept(e)})}},d0t=class extends u0t{static{me(this,"NonTerminal")}constructor(t){super([]),this.idx=1,bB(this,aW(t,t=>void 0!==t))}set definition(t){}get definition(){return void 0!==this.referencedRule?this.referencedRule.definition:[]}accept(t){t.visit(this)}},p0t=class extends u0t{static{me(this,"Rule")}constructor(t){super(t.definition),this.orgText="",bB(this,aW(t,t=>void 0!==t))}},g0t=class extends u0t{static{me(this,"Alternative")}constructor(t){super(t.definition),this.ignoreAmbiguities=!1,bB(this,aW(t,t=>void 0!==t))}},f0t=class extends u0t{static{me(this,"Option")}constructor(t){super(t.definition),this.idx=1,bB(this,aW(t,t=>void 0!==t))}},m0t=class extends u0t{static{me(this,"RepetitionMandatory")}constructor(t){super(t.definition),this.idx=1,bB(this,aW(t,t=>void 0!==t))}},y0t=class extends u0t{static{me(this,"RepetitionMandatoryWithSeparator")}constructor(t){super(t.definition),this.idx=1,bB(this,aW(t,t=>void 0!==t))}},v0t=class extends u0t{static{me(this,"Repetition")}constructor(t){super(t.definition),this.idx=1,bB(this,aW(t,t=>void 0!==t))}},x0t=class extends u0t{static{me(this,"RepetitionWithSeparator")}constructor(t){super(t.definition),this.idx=1,bB(this,aW(t,t=>void 0!==t))}},b0t=class extends u0t{static{me(this,"Alternation")}get definition(){return this._definition}set definition(t){this._definition=t}constructor(t){super(t.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,bB(this,aW(t,t=>void 0!==t))}},w0t=class{static{me(this,"Terminal")}constructor(t){this.idx=1,bB(this,aW(t,t=>void 0!==t))}accept(t){t.visit(this)}},me(c0t,"serializeGrammar"),me(h0t,"serializeProduction")}),E0t=b(()=>{T0t(),k0t=class{static{me(this,"GAstVisitor")}visit(t){var e=t;switch(e.constructor){case d0t:return this.visitNonTerminal(e);case g0t:return this.visitAlternative(e);case f0t:return this.visitOption(e);case m0t:return this.visitRepetitionMandatory(e);case y0t:return this.visitRepetitionMandatoryWithSeparator(e);case x0t:return this.visitRepetitionWithSeparator(e);case v0t:return this.visitRepetition(e);case b0t:return this.visitAlternation(e);case w0t:return this.visitTerminal(e);case p0t:return this.visitRule(e);default:throw Error("non exhaustive match")}}visitNonTerminal(t){}visitAlternative(t){}visitOption(t){}visitRepetition(t){}visitRepetitionMandatory(t){}visitRepetitionMandatoryWithSeparator(t){}visitRepetitionWithSeparator(t){}visitAlternation(t){}visitTerminal(t){}visitRule(t){}}});function C0t(t){return t instanceof g0t||t instanceof f0t||t instanceof v0t||t instanceof m0t||t instanceof y0t||t instanceof x0t||t instanceof w0t||t instanceof p0t}function S0t(t,e=[]){return t instanceof f0t||t instanceof v0t||t instanceof x0t||(t instanceof b0t?fY(t.definition,t=>S0t(t,e)):!(t instanceof d0t&&uj(e,t))&&t instanceof u0t&&(t instanceof d0t&&e.push(t),nq(t.definition,t=>S0t(t,e))))}function _0t(t){return t instanceof b0t}function A0t(t){if(t instanceof d0t)return"SUBRULE";if(t instanceof f0t)return"OPTION";if(t instanceof b0t)return"OR";if(t instanceof m0t)return"AT_LEAST_ONE";if(t instanceof y0t)return"AT_LEAST_ONE_SEP";if(t instanceof x0t)return"MANY_SEP";if(t instanceof v0t)return"MANY";if(t instanceof w0t)return"CONSUME";throw Error("non exhaustive match")}var L0t=b(()=>{WY(),T0t(),me(C0t,"isSequenceProd"),me(S0t,"isOptionalProd"),me(_0t,"isBranchingProd"),me(A0t,"getProductionDslName")}),N0t=b(()=>{T0t(),E0t(),L0t()});function I0t(t,e,r){return[new f0t({definition:[new w0t({terminalType:t.separator})].concat(t.definition)})].concat(e,r)}var R0t,M0t=b(()=>{WY(),N0t(),R0t=class{static{me(this,"RestWalker")}walk(r,n=[]){v(r.definition,(t,e)=>{if(e=FU(r.definition,e+1),t instanceof d0t)this.walkProdRef(t,e,n);else if(t instanceof w0t)this.walkTerminal(t,e,n);else if(t instanceof g0t)this.walkFlat(t,e,n);else if(t instanceof f0t)this.walkOption(t,e,n);else if(t instanceof m0t)this.walkAtLeastOne(t,e,n);else if(t instanceof y0t)this.walkAtLeastOneSep(t,e,n);else if(t instanceof x0t)this.walkManySep(t,e,n);else if(t instanceof v0t)this.walkMany(t,e,n);else{if(!(t instanceof b0t))throw Error("non exhaustive match");this.walkOr(t,e,n)}})}walkTerminal(t,e,r){}walkProdRef(t,e,r){}walkFlat(t,e,r){e=e.concat(r),this.walk(t,e)}walkOption(t,e,r){e=e.concat(r),this.walk(t,e)}walkAtLeastOne(t,e,r){e=[new f0t({definition:t.definition})].concat(e,r),this.walk(t,e)}walkAtLeastOneSep(t,e,r){e=I0t(t,e,r),this.walk(t,e)}walkMany(t,e,r){e=[new f0t({definition:t.definition})].concat(e,r),this.walk(t,e)}walkManySep(t,e,r){e=I0t(t,e,r),this.walk(t,e)}walkOr(t,e,r){let n=e.concat(r);v(t.definition,t=>{t=new g0t({definition:[t]}),this.walk(t,n)})}},me(I0t,"restForRepetitionWithSeparator")});function D0t(t){if(t instanceof d0t)return D0t(t.referencedRule);if(t instanceof w0t)return B0t(t);if(C0t(t))return O0t(t);if(_0t(t))return P0t(t);throw Error("non exhaustive match")}function O0t(t){let e=[],r=t.definition,n=0,i=r.length>n,a,s=!0;for(;i&&s;)a=r[n],s=S0t(a),e=e.concat(D0t(a)),n+=1,i=r.length>n;return NY(e)}function P0t(t){return t=x(t.definition,t=>D0t(t)),NY(l$(t))}function B0t(t){return[t.terminalType]}var $0t,F0t=b(()=>{WY(),N0t(),me(D0t,"first"),me(O0t,"firstForSequence"),me(P0t,"firstForBranching"),me(B0t,"firstForTerminal")}),z0t=b(()=>{$0t="_~IN~_"});function G0t(t){let e={};return v(t,t=>{t=new q0t(t).startWalking(),bB(e,t)}),e}function U0t(t,e){return t.name+e+$0t}var q0t,j0t=b(()=>{M0t(),F0t(),WY(),z0t(),N0t(),q0t=class extends R0t{static{me(this,"ResyncFollowsWalker")}constructor(t){super(),this.topProd=t,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(t,e,r){}walkProdRef(t,e,r){t=U0t(t.referencedRule,t.idx)+this.topProd.name,e=e.concat(r),r=D0t(new g0t({definition:e})),this.follows[t]=r}},me(G0t,"computeAllProdsFollows"),me(U0t,"buildBetweenProdsFollowPrefix")});function W0t(t){var e,t=t.toString();return H0t.hasOwnProperty(t)?H0t[t]:(e=V0t.pattern(t),H0t[t]=e)}function Y0t(){H0t={}}var H0t,V0t,X0t=b(()=>{Xdt(),H0t={},V0t=new qdt,me(W0t,"getRegExpAst"),me(Y0t,"clearRegExpParserCache")});function K0t(t,e=!1){try{var r=W0t(t);return Z0t(r.value,{},r.flags.ignoreCase)}catch(r){r.message===ngt?e&&t0t(`${igt} Unable to optimize: < ${t.toString()} > + Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`):(e=e?` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`:"",Jpt(`${igt} + Failed parsing: < ${t.toString()} > + Using the @chevrotain/regexp-to-ast library + Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+e))}return[]}function Z0t(e,i,a){switch(e.type){case"Disjunction":for(let t=0;t{if("number"==typeof e)Q0t(e,i,a);else{var r=e;if(!0===a)for(let t=r.from;t<=r.to;t++)Q0t(t,i,a);else{for(let t=r.from;t<=r.to&&t=Ugt){var e=r.from>=Ugt?r.from:Ugt,t=r.to,e=Mgt(e),n=Mgt(t);for(let t=e;t<=n;t++)i[t]=t}}}});break;case"Group":Z0t(s.value,i,a);break;default:throw Error("Non Exhaustive Match")}if(n=void 0!==s.quantifier&&0===s.quantifier.atLeast,"Group"===s.type&&!1===egt(s)||"Group"!==s.type&&0==n)break}break;default:throw Error("non exhaustive match!")}return oj(i)}function Q0t(t,e,r){var n=Mgt(t);e[n]=n,!0===r&&J0t(t,e)}function J0t(t,e){var r=(t=String.fromCharCode(t)).toUpperCase();r!==t?e[r=Mgt(r.charCodeAt(0))]=r:(r=t.toLowerCase())!==t&&(e[t=Mgt(r.charCodeAt(0))]=t)}function tgt(t,r){return vq(t.value,t=>{if("number"==typeof t)return uj(r,t);{let e=t;return void 0!==vq(r,t=>e.from<=t&&t<=e.to)}})}function egt(t){var e=t.quantifier;return!(!e||0!==e.atLeast)||!!t.value&&(n8(t.value)?nq(t.value,egt):egt(t.value))}function rgt(e,t){var r,n;return t instanceof RegExp?(r=W0t(t),(n=new agt(e)).visit(r),n.found):void 0!==vq(t,t=>uj(e,t.charCodeAt(0)))}var ngt,igt,agt,sgt=b(()=>{Xdt(),WY(),s0t(),X0t(),jgt(),ngt="Complement Sets are not supported for first char optimization",igt=`Unable to use "first char" lexer optimizations: +`,me(K0t,"getOptimizedStartCodesIndices"),me(Z0t,"firstCharOptimizedIndices"),me(Q0t,"addOptimizedIdxToResult"),me(J0t,"handleIgnoreCase"),me(tgt,"findCode"),me(egt,"isWholeOptional"),agt=class extends jdt{static{me(this,"CharCodeFinder")}constructor(t){super(),this.targetCharCodes=t,this.found=!1}visitChildren(t){if(!0!==this.found){switch(t.type){case"Lookahead":return void this.visitLookahead(t);case"NegativeLookahead":return void this.visitNegativeLookahead(t)}super.visitChildren(t)}}visitCharacter(t){uj(this.targetCharCodes,t.value)&&(this.found=!0)}visitSet(t){t.complement?void 0===tgt(t,this.targetCharCodes)&&(this.found=!0):void 0!==tgt(t,this.targetCharCodes)&&(this.found=!0)}},me(rgt,"canMatchCharCode")});function ogt(t,i){var e=(i=kU(i,{useSticky:$gt,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:me((t,e)=>e(),"tracer")})).tracer;e("initCharCodeToOptimizedIndexMap",()=>{Dgt()});let r,n=(e("Reject Lexer.NA",()=>{r=sY(t,t=>t[Ogt]===c1t.NA)}),!1),a;e("Transform Patterns",()=>{n=!1,a=x(r,t=>{var e,t=t[Ogt];if(Cj(t))return 1!==(e=t.source).length||"^"===e||"$"===e||"."===e||t.ignoreCase?2!==e.length||"\\"!==e[0]||uj(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],e[1])?(i.useSticky?Tgt:kgt)(t):e[1]:e;if(R6(t))return n=!0,{exec:t};if("object"==typeof t)return n=!0,t;if("string"==typeof t)return 1===t.length?t:(e=t.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),t=new RegExp(e),(i.useSticky?Tgt:kgt)(t));throw Error("non exhaustive match")})});let s,o,l,c,h;e("misc mapping",()=>{s=x(r,t=>t.tokenTypeIdx),o=x(r,t=>{if((t=t.GROUP)!==c1t.SKIPPED){if(ej(t))return t;if(Lj(t))return!1;throw Error("non exhaustive match")}}),l=x(r,t=>{if(t=t.LONGER_ALT)return n8(t)?x(t,t=>fj(r,t)):[fj(r,t)]}),c=x(r,t=>t.PUSH_MODE),h=x(r,t=>Qq(t,"POP_MODE"))});let u;e("Line Terminator Handling",()=>{let e=Igt(i.lineTerminatorCharacters);u=x(r,t=>!1),"onlyOffset"!==i.positionTracking&&(u=x(r,t=>Qq(t,"LINE_BREAKS")?!!t.LINE_BREAKS:!1===Lgt(t,e)&&rgt(e,t.PATTERN)))});let d,p,g,f,m=(e("Misc Mapping #2",()=>{d=x(r,_gt),p=x(a,Agt),g=nY(r,(t,e)=>(e=e.GROUP,ej(e)&&e!==c1t.SKIPPED&&(t[e]=[]),t),{}),f=x(a,(t,e)=>({pattern:a[e],longerAlt:l[e],canLineTerminator:u[e],isCustom:d[e],short:p[e],group:o[e],push:c[e],pop:h[e],tokenTypeIdx:s[e],tokenType:r[e]}))}),!0),y=[];return i.safeMode||e("First Char Optimization",()=>{y=nY(r,(r,t,n)=>{if("string"==typeof t.PATTERN){var e=Mgt(t.PATTERN.charCodeAt(0));Rgt(r,e,f[n])}else if(n8(t.START_CHARS_HINT)){let e;v(t.START_CHARS_HINT,t=>{t=Mgt("string"==typeof t?t.charCodeAt(0):t),e!==t&&(e=t,Rgt(r,t,f[n]))})}else Cj(t.PATTERN)?t.PATTERN.unicode?(m=!1,i.ensureOptimizations&&Jpt(`${igt} Unable to analyze < ${t.PATTERN.toString()} > pattern. + The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`)):(e=K0t(t.PATTERN,i.ensureOptimizations),bj(e)&&(m=!1),v(e,t=>{Rgt(r,t,f[n])})):(i.ensureOptimizations&&Jpt(`${igt} TokenType: <${t.name}> is using a custom token pattern without providing parameter. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),m=!1);return r},[])}),{emptyGroups:g,patternIdxToConfig:f,charCodeToPatternIdxToConfig:y,hasCustom:n,canBeOptimized:m}}function lgt(t,e){let r=[],n=hgt(t);r=r.concat(n.errors);var i=(t=ugt(n.valid)).valid;return r=(r=(r=(r=(r=r.concat(t.errors)).concat(cgt(i))).concat(ygt(i))).concat(vgt(i,e))).concat(xgt(i))}function cgt(t){let e=[],r=cq(t,t=>Cj(t[Ogt]));return e=(e=(e=(e=(e=e.concat(dgt(r))).concat(ggt(r))).concat(fgt(r))).concat(mgt(r))).concat(pgt(r))}function hgt(t){var e=cq(t,t=>!Qq(t,Ogt));return{errors:x(e,t=>({message:"Token Type: ->"+t.name+"<- missing static 'PATTERN' property",type:o1t.MISSING_PATTERN,tokenTypes:[t]})),valid:RU(t,e)}}function ugt(t){var e=cq(t,t=>(t=t[Ogt],!(Cj(t)||R6(t)||Qq(t,"exec")||ej(t))));return{errors:x(e,t=>({message:"Token Type: ->"+t.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:o1t.INVALID_PATTERN,tokenTypes:[t]})),valid:RU(t,e)}}function dgt(t){class n extends jdt{static{me(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(t){this.found=!0}}return t=cq(t,t=>{t=t.PATTERN;try{var e=W0t(t),r=new n;return r.visit(e),r.found}catch{return Fgt.test(t.source)}}),x(t,t=>({message:`Unexpected RegExp Anchor Error: + Token Type: ->`+t.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:o1t.EOI_ANCHOR_FOUND,tokenTypes:[t]}))}function pgt(t){return t=cq(t,t=>t.PATTERN.test("")),x(t,t=>({message:"Token Type: ->"+t.name+"<- static 'PATTERN' must not match an empty string",type:o1t.EMPTY_MATCH_PATTERN,tokenTypes:[t]}))}function ggt(t){class n extends jdt{static{me(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(t){this.found=!0}}return t=cq(t,t=>{t=t.PATTERN;try{var e=W0t(t),r=new n;return r.visit(e),r.found}catch{return zgt.test(t.source)}}),x(t,t=>({message:`Unexpected RegExp Anchor Error: + Token Type: ->`+t.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:o1t.SOI_ANCHOR_FOUND,tokenTypes:[t]}))}function fgt(t){return t=cq(t,t=>(t=t[Ogt])instanceof RegExp&&(t.multiline||t.global)),x(t,t=>({message:"Token Type: ->"+t.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:o1t.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[t]}))}function mgt(t){let n=[],e=x(t,r=>nY(t,(t,e)=>(r.PATTERN.source!==e.PATTERN.source||uj(n,e)||e.PATTERN===c1t.NA||(n.push(e),t.push(e)),t),[]));e=kz(e);var r=cq(e,t=>1{var e=x(t,t=>t.name);return{message:`The same RegExp pattern ->${kq(t).PATTERN}<-has been used in all of the following Token Types: ${e.join(", ")} <-`,type:o1t.DUPLICATE_PATTERNS_FOUND,tokenTypes:t}})}function ygt(t){return t=cq(t,t=>!!Qq(t,"GROUP")&&(t=t.GROUP)!==c1t.SKIPPED&&t!==c1t.NA&&!ej(t)),x(t,t=>({message:"Token Type: ->"+t.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:o1t.INVALID_GROUP_TYPE_FOUND,tokenTypes:[t]}))}function vgt(t,e){return t=cq(t,t=>void 0!==t.PUSH_MODE&&!uj(e,t.PUSH_MODE)),x(t,t=>({message:`Token Type: ->${t.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${t.PUSH_MODE}<-which does not exist`,type:o1t.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[t]}))}function xgt(t){let a=[],e=nY(t,(t,e,r)=>{var n=e.PATTERN;return n!==c1t.NA&&(ej(n)?t.push({str:n,idx:r,tokenType:e}):Cj(n)&&wgt(n)&&t.push({str:n.source,idx:r,tokenType:e})),t},[]);return v(t,(n,i)=>{v(e,({str:t,idx:e,tokenType:r})=>{i${r.name}<- can never be matched. +Because it appears AFTER the Token Type ->${n.name}<-in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`,a.push({message:e,type:o1t.UNREACHABLE_PATTERN,tokenTypes:[n,r]}))})}),a}function bgt(t,e){var r;if(Cj(e))return null!==(r=e.exec(t))&&0===r.index;if(R6(e))return e(t,0,[],{});if(Qq(e,"exec"))return e.exec(t,0,[],{});if("string"==typeof e)return e===t;throw Error("non exhaustive match")}function wgt(e){return void 0===vq([".","\\","[","]","|","^","$","(",")","?","*","+","{"],t=>-1!==e.source.indexOf(t))}function kgt(t){var e=t.ignoreCase?"i":"";return new RegExp(`^(?:${t.source})`,e)}function Tgt(t){var e=t.ignoreCase?"iy":"y";return new RegExp(""+t.source,e)}function Egt(t,e,r){let i=[];return Qq(t,Pgt)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Pgt+`> property in its definition +`,type:o1t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),Qq(t,Bgt)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Bgt+`> property in its definition +`,type:o1t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),Qq(t,Bgt)&&Qq(t,Pgt)&&!Qq(t.modes,t.defaultMode)&&i.push({message:`A MultiMode Lexer cannot be initialized with a ${Pgt}: <${t.defaultMode}>which does not exist +`,type:o1t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),Qq(t,Bgt)&&v(t.modes,(r,n)=>{v(r,(e,t)=>{Lj(e)?i.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${n}> at index: <${t}> +`,type:o1t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED}):Qq(e,"LONGER_ALT")&&(t=n8(e.LONGER_ALT)?e.LONGER_ALT:[e.LONGER_ALT],v(t,t=>{Lj(t)||uj(r,t)||i.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${t.name}> on token <${e.name}> outside of mode <${n}> +`,type:o1t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})}))})}),i}function Cgt(t,e,r){let n=[],i=!1,a=kz(l$(oj(t.modes))),s=sY(a,t=>t[Ogt]===c1t.NA),o=Igt(r);return e&&v(s,t=>{var e=Lgt(t,o);!1!==e?(e={message:Ngt(t,e),type:e.issue,tokenType:t},n.push(e)):Qq(t,"LINE_BREAKS")?!0===t.LINE_BREAKS&&(i=!0):rgt(o,t.PATTERN)&&(i=!0)}),e&&!i&&n.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:o1t.NO_LINE_BREAKS_FLAGS}),n}function Sgt(r){let n={},t=yB(r);return v(t,t=>{var e=r[t];if(!n8(e))throw Error("non exhaustive match");n[t]=[]}),n}function _gt(t){if(t=t.PATTERN,Cj(t))return!1;if(R6(t))return!0;if(Qq(t,"exec"))return!0;if(ej(t))return!1;throw Error("non exhaustive match")}function Agt(t){return!(!ej(t)||1!==t.length)&&t.charCodeAt(0)}function Lgt(t,e){if(Qq(t,"LINE_BREAKS"))return!1;if(Cj(t.PATTERN)){try{rgt(e,t.PATTERN)}catch(t){return{issue:o1t.IDENTIFY_TERMINATOR,errMsg:t.message}}return!1}if(ej(t.PATTERN))return!1;if(_gt(t))return{issue:o1t.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}function Ngt(t,e){if(e.issue===o1t.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern. + The problem is in the <${t.name}> Token Type + Root cause: ${e.errMsg}. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(e.issue===o1t.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. + The problem is in the <${t.name}> Token Type + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function Igt(t){return x(t,t=>ej(t)?t.charCodeAt(0):t)}function Rgt(t,e,r){void 0===t[e]?t[e]=[r]:t[e].push(r)}function Mgt(t){return t{Xdt(),d1t(),WY(),s0t(),sgt(),X0t(),Ogt="PATTERN",Pgt="defaultMode",Bgt="modes",$gt="boolean"==typeof new RegExp("(?:)").sticky,me(ogt,"analyzeTokenTypes"),me(lgt,"validatePatterns"),me(cgt,"validateRegExpPattern"),me(hgt,"findMissingPatterns"),me(ugt,"findInvalidPatterns"),Fgt=/[^\\][$]/,me(dgt,"findEndOfInputAnchor"),me(pgt,"findEmptyMatchRegExps"),zgt=/[^\\[][\^]|^\^/,me(ggt,"findStartOfInputAnchor"),me(fgt,"findUnsupportedFlags"),me(mgt,"findDuplicatePatterns"),me(ygt,"findInvalidGroupType"),me(vgt,"findModesThatDoNotExist"),me(xgt,"findUnreachablePatterns"),me(bgt,"testTokenType"),me(wgt,"noMetaChar"),me(kgt,"addStartOfInput"),me(Tgt,"addStickyFlag"),me(Egt,"performRuntimeChecks"),me(Cgt,"performWarningRuntimeChecks"),me(Sgt,"cloneEmptyGroups"),me(_gt,"isCustomPattern"),me(Agt,"isShortPattern"),Ggt={test:me(function(e){var r=e.length;for(let t=this.lastIndex;t{t.isParent=0t.CATEGORIES)));var i=RU(r,e);e=e.concat(i),bj(i)?n=!1:r=i}return e}function Xgt(t){v(t,t=>{Jgt(t)||((a1t[i1t]=t).tokenTypeIdx=i1t++),t1t(t)&&!n8(t.CATEGORIES)&&(t.CATEGORIES=[t.CATEGORIES]),t1t(t)||(t.CATEGORIES=[]),e1t(t)||(t.categoryMatches=[]),r1t(t)||(t.categoryMatchesMap={})})}function Kgt(t){v(t,r=>{r.categoryMatches=[],v(r.categoryMatchesMap,(t,e)=>{r.categoryMatches.push(a1t[e].tokenTypeIdx)})})}function Zgt(t){v(t,t=>{Qgt([],t)})}function Qgt(r,n){v(r,t=>{n.categoryMatchesMap[t.tokenTypeIdx]=!0}),v(n.CATEGORIES,t=>{var e=r.concat(n);uj(e,t)||Qgt(e,t)})}function Jgt(t){return Qq(t,"tokenTypeIdx")}function t1t(t){return Qq(t,"CATEGORIES")}function e1t(t){return Qq(t,"categoryMatches")}function r1t(t){return Qq(t,"categoryMatchesMap")}function n1t(t){return Qq(t,"tokenTypeIdx")}var i1t,a1t,s1t,o1t,l1t,c1t,h1t=b(()=>{WY(),me(Wgt,"tokenStructuredMatcher"),me(Ygt,"tokenStructuredMatcherNoCategories"),i1t=1,a1t={},me(Hgt,"augmentTokenTypes"),me(Vgt,"expandCategories"),me(Xgt,"assignTokenDefaultProps"),me(Kgt,"assignCategoriesTokensProp"),me(Zgt,"assignCategoriesMapProp"),me(Qgt,"singleAssignCategoriesToksMap"),me(Jgt,"hasShortKeyProperty"),me(t1t,"hasCategoriesProperty"),me(e1t,"hasExtendingTokensTypesProperty"),me(r1t,"hasExtendingTokensTypesMapProperty"),me(n1t,"isTokenType")}),u1t=b(()=>{s1t={buildUnableToPopLexerModeMessage(t){return`Unable to pop Lexer Mode after encountering Token ->${t.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(t,e,r,n,i){return`unexpected character: ->${t.charAt(e)}<- at offset: ${e}, skipped ${r} characters.`}}}),d1t=b(()=>{var t;jgt(),WY(),s0t(),h1t(),u1t(),X0t(),(t=o1t=o1t||{})[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",t[t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE",l1t={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:s1t,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0},Object.freeze(l1t),(c1t=class{static{me(this,"Lexer")}constructor(i,a=l1t){if(this.lexerDefinition=i,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(t,e)=>{var r,n,i,a;return!0===this.traceInitPerf?(this.traceInitIndent++,r=new Array(this.traceInitIndent+1).join("\t"),{time:n,value:i}=(this.traceInitIndent <${t}>`),r0t(e)),a=10 time: ${n}ms`),this.traceInitIndent--,i):e()},"boolean"==typeof a)throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=bB({},l1t,a);var t=this.config.traceInitPerf;!0===t?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):"number"==typeof t&&(this.traceInitMaxIdent=t,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let r,t=!0,n=(this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===l1t.lineTerminatorsPattern)this.config.lineTerminatorsPattern=Ggt;else if(this.config.lineTerminatorCharacters===l1t.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(a.safeMode&&a.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),r=n8(i)?{modes:{defaultMode:mz(i)},defaultMode:Pgt}:(t=!1,mz(i))}),!1===this.config.skipValidations&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Egt(r,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(Cgt(r,this.trackStartLines,this.config.lineTerminatorCharacters))})),r.modes=r.modes||{},v(r.modes,(t,e)=>{r.modes[e]=sY(t,t=>Lj(t))}),yB(r.modes)),e;if(v(r.modes,(e,r)=>{this.TRACE_INIT(`Mode: <${r}> processing`,()=>{if(this.modes.push(r),!1===this.config.skipValidations&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(lgt(e,n))}),bj(this.lexerDefinitionErrors)){Hgt(e);let t;this.TRACE_INIT("analyzeTokenTypes",()=>{t=ogt(e,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:a.positionTracking,ensureOptimizations:a.ensureOptimizations,safeMode:a.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[r]=t.patternIdxToConfig,this.charCodeToPatternIdxToConfig[r]=t.charCodeToPatternIdxToConfig,this.emptyGroups=bB({},this.emptyGroups,t.emptyGroups),this.hasCustom=t.hasCustom||this.hasCustom,this.canModeBeOptimized[r]=t.canBeOptimized}})}),this.defaultMode=r.defaultMode,!bj(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling)throw e=x(this.lexerDefinitionErrors,t=>t.message).join(`----------------------- +`),new Error(`Errors detected in definition of Lexer: +`+e);v(this.lexerDefinitionWarning,t=>{t0t(t.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if($gt?(this.chopInput=PE,this.match=this.matchWithTest):(this.updateLastIndex=UP,this.match=this.matchWithExec),t&&(this.handleModes=UP),!1===this.trackStartLines&&(this.computeNewColumn=PE),!1===this.trackEndLines&&(this.updateTokenEndLineColumnLocation=UP),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else{if(!/onlyOffset/i.test(this.config.positionTracking))throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.createTokenInstance=this.createOffsetOnlyToken}this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{var t=nY(this.canModeBeOptimized,(t,e,r)=>(!1===e&&t.push(r),t),[]);if(a.ensureOptimizations&&!bj(t))throw Error(`Lexer Modes: < ${t.join(", ")} > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{Y0t()}),this.TRACE_INIT("toFastProperties",()=>{i0t(this)})})}tokenize(t,e=this.defaultMode){if(bj(this.lexerDefinitionErrors))return this.tokenizeInternal(t,e);throw t=x(this.lexerDefinitionErrors,t=>t.message).join(`----------------------- +`),new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+t)}tokenizeInternal(i,P){let t,a,e,r,n,s,o,l,c,h,B,u,d,$,p,g=i,F=g.length,f=0,m=0,z=this.hasCustom?0:Math.floor(i.length/10),y=new Array(z),v=[],x=this.trackStartLines?1:void 0,b=this.trackStartLines?1:void 0,w=Sgt(this.emptyGroups),G=this.trackStartLines,k=this.config.lineTerminatorsPattern,T=0,E=[],C=[],S=[],U=[];Object.freeze(U);let _;function A(){return E}function L(t){return t=Mgt(t),void 0===(t=C[t])?U:t}me(A,"getPossiblePatternsSlow"),me(L,"getPossiblePatternsOptimized");var q=me(t=>{var e;1===S.length&&void 0===t.tokenType.PUSH_MODE?(e=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(t),v.push({offset:t.startOffset,line:t.startLine,column:t.startColumn,length:t.image.length,message:e})):(S.pop(),t=PU(S),E=this.patternIdxToConfig[t],C=this.charCodeToPatternIdxToConfig[t],T=E.length,e=this.canModeBeOptimized[t]&&!1===this.config.safeMode,_=C&&e?L:A)},"pop_mode");function N(t){S.push(t),C=this.charCodeToPatternIdxToConfig[t],E=this.patternIdxToConfig[t],T=E.length,T=E.length,t=this.canModeBeOptimized[t]&&!1===this.config.safeMode,_=C&&t?L:A}me(N,"push_mode"),N.call(this,P);let I,j=this.config.recoveryEnabled;for(;fs.length){s=r,o=l,I=M;break}}}break}}if(null!==s){if(c=s.length,void 0!==(h=I.group)&&(B=I.tokenTypeIdx,u=this.createTokenInstance(s,f,B,I.tokenType,x,b,c),this.handlePayload(u,o),!1===h?m=this.addToken(y,m,u):w[h].push(u)),i=this.chopInput(i,c),f+=c,b=this.computeNewColumn(b,c),!0===G&&!0===I.canLineTerminator){let t=0,e,r;for(k.lastIndex=0;!0===(e=k.test(s))&&(r=k.lastIndex-1,t++),!0===e;);0!==t&&(x+=t,b=c-r,this.updateTokenEndLineColumnLocation(u,h,r,t,x,b,c))}this.handleModes(I,q,N,u)}else{let t=f,e=x,r=b,n=!1===j;for(;!1===n&&f{WY(),d1t(),h1t(),me(p1t,"tokenLabel"),me(g1t,"hasTokenLabel"),x1t="parent",b1t="categories",w1t="label",k1t="group",T1t="push_mode",E1t="pop_mode",C1t="longer_alt",S1t="line_breaks",_1t="start_chars_hint",me(f1t,"createToken"),me(m1t,"createTokenInternal"),Hgt([A1t=f1t({name:"EOF",pattern:c1t.NA})]),me(y1t,"createTokenInstance"),me(v1t,"tokenMatcher")}),M1t=b(()=>{R1t(),WY(),N0t(),L1t={buildMismatchTokenMessage({expected:t,actual:e}){return`Expecting ${g1t(t)?`--> ${p1t(t)} <--`:`token of type --> ${t.name} <--`} but found --> '${e.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:t}){return"Redundant input, expecting EOF but found: "+t.image},buildNoViableAltMessage({expectedPathsPerAlt:t,actual:e,customUserDescription:r}){var n="Expecting: ",e=` +but found: '`+kq(e).image+"'";return r?n+r+e:(r=nY(t,(t,e)=>t.concat(e),[]),t=x(r,t=>`[${x(t,t=>p1t(t)).join(", ")}]`),n+`one of these possible Token sequences: +`+x(t,(t,e)=>` ${e+1}. `+t).join(` +`)+e)},buildEarlyExitMessage({expectedIterationPaths:t,actual:e,customUserDescription:r}){var n="Expecting: ",e=` +but found: '`+kq(e).image+"'";return r?n+r+e:n+`expecting at least one iteration which starts with one of these possible Token sequences:: + <${x(t,t=>`[${x(t,t=>p1t(t)).join(",")}]`).join(" ,")}>`+e}},Object.freeze(L1t),N1t={buildRuleNotFoundError(t,e){return"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+t.name+"<-"}},I1t={buildDuplicateFoundError(t,e){function r(t){return t instanceof w0t?t.terminalType.name:t instanceof d0t?t.nonTerminalName:""}me(r,"getExtraProductionArgument");let n=t.name,i=kq(e),a=i.idx,s=A0t(i),o=r(i),l=0${s}${l?a:""}<- ${o?`with argument: ->${o}<-`:""} + appears more than once (${e.length} times) in the top level rule: ->${n}<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return c=(c=c.replace(/[ \t]+/g," ")).replace(/\s\s+/g,` +`)},buildNamespaceConflictError(t){return`Namespace conflict found in grammar. +The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${t.name}>. +To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(t){var e=x(t.prefixPath,t=>p1t(t)).join(", "),r=0===t.alternation.idx?"":t.alternation.idx;return`Ambiguous alternatives: <${t.ambiguityIndices.join(" ,")}> due to common lookahead prefix +in inside <${t.topLevelRule.name}> Rule, +<${e}> may appears as a prefix path in all these alternatives. +See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`},buildAlternationAmbiguityError(t){var e=x(t.prefixPath,t=>p1t(t)).join(", "),r=0===t.alternation.idx?"":t.alternation.idx;return`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(" ,")}> in inside <${t.topLevelRule.name}> Rule, +<${e}> may appears as a prefix path in all these alternatives. +`+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`},buildEmptyRepetitionError(t){let e=A0t(t.repetition);return 0!==t.repetition.idx&&(e+=t.repetition.idx),`The repetition <${e}> within Rule <${t.topLevelRule.name}> can never consume any tokens. +This could lead to an infinite loop.`},buildTokenNameError(t){return"deprecated"},buildEmptyAlternationError(t){return`Ambiguous empty alternative: <${t.emptyChoiceIdx+1}> in inside <${t.topLevelRule.name}> Rule. +Only the last alternative may be an empty alternative.`},buildTooManyAlternativesError(t){return`An Alternation cannot have more than 256 alternatives: + inside <${t.topLevelRule.name}> Rule. + has ${t.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(t){var e=t.topLevelRule.name;return`Left Recursion found in grammar. +rule: <${e}> can be invoked from itself (directly or indirectly) +without consuming any Tokens. The grammar path that causes this is: + ${e+" --\x3e "+x(t.leftRecursionPath,t=>t.name).concat([e]).join(" --\x3e ")} + To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(t){return"deprecated"},buildDuplicateRuleNameError(t){return`Duplicate definition, rule: ->${t.topLevelRule instanceof p0t?t.topLevelRule.name:t.topLevelRule}<- is already defined in the grammar: ->${t.grammarName}<-`}}});function D1t(t,e){return(t=new O1t(t,e)).resolveRefs(),t.errors}var O1t,P1t=b(()=>{Jmt(),WY(),N0t(),me(D1t,"resolveGrammar"),O1t=class extends k0t{static{me(this,"GastRefResolverVisitor")}constructor(t,e){super(),this.nameToTopRule=t,this.errMsgProvider=e,this.errors=[]}resolveRefs(){v(oj(this.nameToTopRule),t=>{(this.currTopLevel=t).accept(this)})}visitNonTerminal(t){var e=this.nameToTopRule[t.nonTerminalName];e?t.referencedRule=e:(e=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t),this.errors.push({message:e,type:Kmt.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName}))}}});function B1t(e,r,n=[]){n=mz(n);let i=[],a=0;function s(t){return t.concat(FU(e,a+1))}function o(t){return t=B1t(s(t),r,n),i.concat(t)}for(me(s,"remainingPathWith"),me(o,"getAlternativesForProd");n.length{!1===bj(t.definition)&&(i=o(t.definition))}),i;if(!(t instanceof w0t))throw Error("non exhaustive match");n.push(t.terminalType)}}a++}return i.push({partialPath:n,suffixDef:FU(e,a)}),i}function $1t(t,e,r,n){let i="EXIT_NONE_TERMINAL",a=[i],s="EXIT_ALTERNATIVE",o=!1,l=e.length,c=l-n-1,h=[],u=[];for(u.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!bj(u);)if((v=u.pop())===s)o&&PU(u).idx<=c&&u.pop();else{var d=v.def,p=v.idx,g=v.ruleStack,f=v.occurrenceStack;if(!bj(d)){var m=d[0];if(m===i)v={idx:p,def:FU(d),ruleStack:UU(g),occurrenceStack:UU(f)},u.push(v);else if(m instanceof w0t)if(p{WY(),F0t(),M0t(),N0t(),G1t=class extends R0t{static{me(this,"AbstractNextPossibleTokensWalker")}constructor(t,e){super(),this.topProd=t,this.path=e,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=mz(this.path.ruleStack).reverse(),this.occurrenceStack=mz(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(t,e=[]){this.found||super.walk(t,e)}walkProdRef(t,e,r){t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence&&(e=e.concat(r),this.updateExpectedNext(),this.walk(t.referencedRule,e))}updateExpectedNext(){bj(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},z1t=class extends G1t{static{me(this,"NextAfterTokenWalker")}constructor(t,e){super(t,e),this.path=e,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(t,e,r){this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found&&(t=e.concat(r),e=new g0t({definition:t}),this.possibleTokTypes=D0t(e),this.found=!0)}},G1t=class extends R0t{static{me(this,"AbstractNextTerminalAfterProductionWalker")}constructor(t,e){super(),this.topRule=t,this.occurrence=e,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},U1t=class extends G1t{static{me(this,"NextTerminalAfterManyWalker")}walkMany(t,e,r){var n;t.idx===this.occurrence?(n=kq(e.concat(r)),this.result.isEndOfRule=void 0===n,n instanceof w0t&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)):super.walkMany(t,e,r)}},q1t=class extends G1t{static{me(this,"NextTerminalAfterManySepWalker")}walkManySep(t,e,r){var n;t.idx===this.occurrence?(n=kq(e.concat(r)),this.result.isEndOfRule=void 0===n,n instanceof w0t&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)):super.walkManySep(t,e,r)}},j1t=class extends G1t{static{me(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(t,e,r){var n;t.idx===this.occurrence?(n=kq(e.concat(r)),this.result.isEndOfRule=void 0===n,n instanceof w0t&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)):super.walkAtLeastOne(t,e,r)}},W1t=class extends G1t{static{me(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(t,e,r){var n;t.idx===this.occurrence?(n=kq(e.concat(r)),this.result.isEndOfRule=void 0===n,n instanceof w0t&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)):super.walkAtLeastOneSep(t,e,r)}},me(B1t,"possiblePathsFrom"),me($1t,"nextPossibleTokensAfter"),me(F1t,"expandTopLevelRule")});function H1t(t){if(t instanceof f0t||"Option"===t)return lft.OPTION;if(t instanceof v0t||"Repetition"===t)return lft.REPETITION;if(t instanceof m0t||"RepetitionMandatory"===t)return lft.REPETITION_MANDATORY;if(t instanceof y0t||"RepetitionMandatoryWithSeparator"===t)return lft.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof x0t||"RepetitionWithSeparator"===t)return lft.REPETITION_WITH_SEPARATOR;if(t instanceof b0t||"Alternation"===t)return lft.ALTERNATION;throw Error("non exhaustive match")}function V1t(t){var{occurrence:t,rule:e,prodType:r,maxLookahead:n}=t;return(r=H1t(r))===lft.ALTERNATION?nft(t,e,n):ift(t,e,r,n)}function X1t(t,e,r,n,i,a){return a(t=nft(t,e,r),n,oft(t)?Ygt:Wgt,i)}function K1t(t,e,r,n,i,a){return e=oft(t=ift(t,e,i,r))?Ygt:Wgt,a(t[0],e,n)}function Z1t(c,t,h,e){let u=c.length,r=nq(c,t=>nq(t,t=>1===t.length));if(t)return function(t){var r=x(t,t=>t.GATE);for(let e=0;el$(t)),e=nY(t,(e,t,r)=>(v(t,t=>{Qq(e,t.tokenTypeIdx)||(e[t.tokenTypeIdx]=r),v(t.categoryMatches,t=>{Qq(e,t)||(e[t]=r)})}),e),{});return function(){var t=this.LA(1);return e[t.tokenTypeIdx]}}}function Q1t(i,a,r){let t=nq(i,t=>1===t.length),s=i.length;if(!t||r)return function(){t:for(let t=0;t(e[t.tokenTypeIdx]=!0,v(t.categoryMatches,t=>{e[t]=!0}),e),[]);return function(){var t=this.LA(1);return!0===e[t.tokenTypeIdx]}}}function J1t(e){var r=new Array(e);for(let t=0;tB1t([t],1)),i=J1t(e.length),a=x(e,t=>{let e={};return v(t,t=>{t=tft(t.partialPath),v(t,t=>{e[t]=!0})}),e}),s=e;for(let r=1;r<=n;r++){var o=s;s=J1t(o.length);for(let e=0;e{t=tft(t.partialPath),v(t,t=>{a[e][t]=!0})})}}}return i}function nft(t,e,r,n){return t=new hft(t,lft.ALTERNATION,n),e.accept(t),rft(t.result,r)}function ift(t,e,r,n){var i=new hft(t,r),i=(e.accept(i),i.result),e=new cft(e,t,r).startWalking();return rft([new g0t({definition:i}),new g0t({definition:e})],n)}function aft(e,r){t:for(let t=0;tt===(e=r[e])||e.categoryMatchesMap[t.tokenTypeIdx])}function oft(t){return nq(t,t=>nq(t,t=>nq(t,t=>bj(t.categoryMatches))))}var lft,cft,hft,uft=b(()=>{var t;WY(),Y1t(),M0t(),h1t(),N0t(),(t=lft=lft||{})[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION",me(H1t,"getProdType"),me(V1t,"getLookaheadPaths"),me(X1t,"buildLookaheadFuncForOr"),me(K1t,"buildLookaheadFuncForOptionalProd"),me(Z1t,"buildAlternativesLookAheadFunc"),me(Q1t,"buildSingleAlternativeLookaheadFunction"),cft=class extends R0t{static{me(this,"RestDefinitionFinderWalker")}constructor(t,e,r){super(),this.topProd=t,this.targetOccurrence=e,this.targetProdType=r}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(t,e,r,n){return t.idx===this.targetOccurrence&&this.targetProdType===e&&(this.restDef=r.concat(n),!0)}walkOption(t,e,r){this.checkIsTarget(t,lft.OPTION,e,r)||super.walkOption(t,e,r)}walkAtLeastOne(t,e,r){this.checkIsTarget(t,lft.REPETITION_MANDATORY,e,r)||super.walkOption(t,e,r)}walkAtLeastOneSep(t,e,r){this.checkIsTarget(t,lft.REPETITION_MANDATORY_WITH_SEPARATOR,e,r)||super.walkOption(t,e,r)}walkMany(t,e,r){this.checkIsTarget(t,lft.REPETITION,e,r)||super.walkOption(t,e,r)}walkManySep(t,e,r){this.checkIsTarget(t,lft.REPETITION_WITH_SEPARATOR,e,r)||super.walkOption(t,e,r)}},hft=class extends k0t{static{me(this,"InsideDefinitionFinderVisitor")}constructor(t,e,r){super(),this.targetOccurrence=t,this.targetProdType=e,this.targetRef=r,this.result=[]}checkIsTarget(t,e){t.idx!==this.targetOccurrence||this.targetProdType!==e||void 0!==this.targetRef&&t!==this.targetRef||(this.result=t.definition)}visitOption(t){this.checkIsTarget(t,lft.OPTION)}visitRepetition(t){this.checkIsTarget(t,lft.REPETITION)}visitRepetitionMandatory(t){this.checkIsTarget(t,lft.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(t){this.checkIsTarget(t,lft.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(t){this.checkIsTarget(t,lft.REPETITION_WITH_SEPARATOR)}visitAlternation(t){this.checkIsTarget(t,lft.ALTERNATION)}},me(J1t,"initializeArrayOfArrays"),me(tft,"pathToHashKeys"),me(eft,"isUniquePrefixHash"),me(rft,"lookAheadSequenceFromAlternatives"),me(nft,"getLookaheadPathsForOr"),me(ift,"getLookaheadPathsForOptionalProd"),me(aft,"containsPath"),me(sft,"isStrictPrefixOfPath"),me(oft,"areTokenCategoriesNotUsed")});function dft(t){return t=t.lookaheadStrategy.validate({rules:t.rules,tokenTypes:t.tokenTypes,grammarName:t.grammarName}),x(t,t=>Object.assign({type:Kmt.CUSTOM_LOOKAHEAD_VALIDATION},t))}function pft(e,t,r,n){var i=Iq(e,t=>gft(t,r)),t=_ft(e,t,r),a=Iq(e,t=>Tft(t,r)),s=Iq(e,t=>yft(t,e,n,r));return i.concat(t,a,s)}function gft(n,i){var t=new Aft,t=(n.accept(t),t.allProductions),t=zq(t,fft),t=aW(t,t=>1{var e=kq(t),t=i.buildDuplicateFoundError(n,t),r=A0t(e),t={message:t,type:Kmt.DUPLICATE_PRODUCTIONS,ruleName:n.name,dslName:r,occurrence:e.idx};return(r=mft(e))&&(t.parameter=r),t})}function fft(t){return`${A0t(t)}_#_${t.idx}_#_`+mft(t)}function mft(t){return t instanceof w0t?t.terminalType.name:t instanceof d0t?t.nonTerminalName:""}function yft(r,t,e,n){var i=[];return 1e.name===r.name?t+1:t,0)&&(t=n.buildDuplicateRuleNameError({topLevelRule:r,grammarName:e}),i.push({message:t,type:Kmt.DUPLICATE_RULE_NAME,ruleName:r.name})),i}function vft(t,e,r){var n=[];return uj(e,t)||n.push({message:`Invalid rule override, rule: ->${t}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,type:Kmt.INVALID_RULE_OVERRIDE,ruleName:t}),n}function xft(r,t,n,i=[]){var e,a=[],t=bft(t.definition);return bj(t)?[]:(e=r.name,uj(t,r)&&a.push({message:n.buildLeftRecursionError({topLevelRule:r,leftRecursionPath:i}),type:Kmt.LEFT_RECURSION,ruleName:e}),e=RU(t,i.concat([r])),t=Iq(e,t=>{var e=mz(i);return e.push(t),xft(r,t,n,e)}),a.concat(t))}function bft(t){let e=[];if(bj(t))return e;if((r=kq(t))instanceof d0t)e.push(r.referencedRule);else if(r instanceof g0t||r instanceof f0t||r instanceof m0t||r instanceof y0t||r instanceof x0t||r instanceof v0t)e=e.concat(bft(r.definition));else if(r instanceof b0t)e=l$(x(r.definition,t=>bft(t.definition)));else if(!(r instanceof w0t))throw Error("non exhaustive match");var r=S0t(r),n=1{var t=UU(r.definition);return Iq(t,(t,e)=>(t=$1t([t],[],Wgt,1),bj(t)?[{message:i.buildEmptyAlternationError({topLevelRule:n,alternation:r,emptyChoiceIdx:e}),type:Kmt.NONE_LAST_EMPTY_ALT,ruleName:n.name,occurrence:r.idx,alternative:e+1}]:[]))})}function kft(n,i,a){var t=new Lft,t=(n.accept(t),t.alternations),t=sY(t,t=>!0===t.ignoreAmbiguities);return Iq(t,t=>{var e=Cft(r=nft(t.idx,n,t.maxLookahead||i,t),t,n,a),r=Sft(r,t,n,a);return e.concat(r)})}function Tft(e,r){var t=new Lft,t=(e.accept(t),t.alternations);return Iq(t,t=>255{var t=new Nft,t=(n.accept(t),t.allProductions);v(t,t=>{var e=H1t(t),r=t.maxLookahead||i,e=ift(t.idx,n,e,r)[0];bj(l$(e))&&(r=a.buildEmptyRepetitionError({topLevelRule:n,repetition:t}),s.push({message:r,type:Kmt.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name}))})}),s}function Cft(a,s,r,n){let o=[],t=nY(a,(t,e,i)=>(!0!==s.definition[i].ignoreAmbiguities&&v(e,r=>{let n=[i];v(a,(t,e)=>{i!==e&&aft(t,r)&&!0!==s.definition[e].ignoreAmbiguities&&n.push(e)}),1{var e=x(t.alts,t=>t+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:s,ambiguityIndices:e,prefixPath:t.path}),type:Kmt.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:s.idx,alternatives:t.alts}})}function Sft(t,i,a,s){let o=nY(t,(t,e,r)=>(e=x(e,t=>({idx:r,path:t})),t.concat(e)),[]);return kz(Iq(o,t=>{if(!0===i.definition[t.idx].ignoreAmbiguities)return[];let n=t.idx,e=t.path,r=cq(o,t=>!0!==i.definition[t.idx].ignoreAmbiguities&&t.idx{var e=[t.idx+1,n+1],r=0===i.idx?"":i.idx;return{message:s.buildAlternationPrefixAmbiguityError({topLevelRule:a,alternation:i,ambiguityIndices:e,prefixPath:t.path}),type:Kmt.AMBIGUOUS_PREFIX_ALTS,ruleName:a.name,occurrence:r,alternatives:e}})}))}function _ft(t,e,r){let n=[],i=x(e,t=>t.name);return v(t,t=>{var e=t.name;uj(i,e)&&(t=r.buildNamespaceConflictError(t),n.push({message:t,type:Kmt.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:e}))}),n}var Aft,Lft,Nft,Ift=b(()=>{WY(),Jmt(),N0t(),uft(),Y1t(),h1t(),me(dft,"validateLookahead"),me(pft,"validateGrammar"),me(gft,"validateDuplicateProductions"),me(fft,"identifyProductionForDuplicates"),me(mft,"getExtraProductionArgument"),Aft=class extends k0t{static{me(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(t){this.allProductions.push(t)}visitOption(t){this.allProductions.push(t)}visitRepetitionWithSeparator(t){this.allProductions.push(t)}visitRepetitionMandatory(t){this.allProductions.push(t)}visitRepetitionMandatoryWithSeparator(t){this.allProductions.push(t)}visitRepetition(t){this.allProductions.push(t)}visitAlternation(t){this.allProductions.push(t)}visitTerminal(t){this.allProductions.push(t)}},me(yft,"validateRuleDoesNotAlreadyExist"),me(vft,"validateRuleIsOverridden"),me(xft,"validateNoLeftRecursion"),me(bft,"getFirstNoneTerminal"),Lft=class extends k0t{static{me(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(t){this.alternations.push(t)}},me(wft,"validateEmptyOrAlternative"),me(kft,"validateAmbiguousAlternationAlternatives"),Nft=class extends k0t{static{me(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(t){this.allProductions.push(t)}visitRepetitionMandatory(t){this.allProductions.push(t)}visitRepetitionMandatoryWithSeparator(t){this.allProductions.push(t)}visitRepetition(t){this.allProductions.push(t)}},me(Tft,"validateTooManyAlts"),me(Eft,"validateSomeNonEmptyLookaheadPath"),me(Cft,"checkAlternativesAmbiguities"),me(Sft,"checkPrefixAlternativesAmbiguities"),me(_ft,"checkTerminalAndNoneTerminalsNameSpace")});function Rft(t){let e=kU(t,{errMsgProvider:N1t}),r={};return v(t.rules,t=>{r[t.name]=t}),D1t(r,e.errMsgProvider)}function Mft(t){return pft((t=kU(t,{errMsgProvider:I1t})).rules,t.tokenTypes,t.errMsgProvider,t.grammarName)}var Dft=b(()=>{WY(),P1t(),Ift(),M1t(),me(Rft,"resolveGrammar"),me(Mft,"validateGrammar")});function Oft(t){return uj(Pft,t.name)}var Pft,Bft,$ft,Fft,zft,Gft,Uft=b(()=>{WY(),Pft=["MismatchedTokenException","NoViableAltException","EarlyExitException","NotAllInputParsedException"],Object.freeze(Pft),me(Oft,"isRecognitionException"),Bft=class extends Error{static{me(this,"RecognitionException")}constructor(t,e){super(t),this.token=e,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},$ft=class extends Bft{static{me(this,"MismatchedTokenException")}constructor(t,e,r){super(t,e),this.previousToken=r,this.name="MismatchedTokenException"}},Fft=class extends Bft{static{me(this,"NoViableAltException")}constructor(t,e,r){super(t,e),this.previousToken=r,this.name="NoViableAltException"}},zft=class extends Bft{static{me(this,"NotAllInputParsedException")}constructor(t,e){super(t,e),this.name="NotAllInputParsedException"}},Gft=class extends Bft{static{me(this,"EarlyExitException")}constructor(t,e,r){super(t,e),this.previousToken=r,this.name="EarlyExitException"}}});function qft(t,e,r,n,i,a,s){let o=this.getKeyForAutomaticLookahead(n,i),l=this.firstAfterRepMap[o],c=(void 0===l&&(n=this.getCurrRuleFullName(),n=this.getGAstProductions()[n],l=new a(n,i).startWalking(),this.firstAfterRepMap[o]=l),l.token),h=l.occurrence,u=l.isEndOfRule;1===this.RULE_STACK.length&&u&&void 0===c&&(c=A1t,h=1),void 0!==c&&void 0!==h&&this.shouldInRepetitionRecoveryBeTried(c,h,s)&&this.tryInRepetitionRecovery(t,e,r,c)}var jft,Wft,Yft,Hft,Vft=b(()=>{R1t(),WY(),Uft(),z0t(),Jmt(),jft={},Wft="InRuleRecoveryException",Yft=class extends Error{static{me(this,"InRuleRecoveryException")}constructor(t){super(t),this.name=Wft}},Hft=class{static{me(this,"Recoverable")}initRecoverable(t){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(Qq(t,"recoveryEnabled")?t:Vmt).recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=qft)}getTokenToInsert(t){return(t=y1t(t,"",NaN,NaN,NaN,NaN,NaN,NaN)).isInsertedInRecovery=!0,t}canTokenTypeBeInsertedInRecovery(t){return!0}canTokenTypeBeDeletedInRecovery(t){return!0}tryInRepetitionRecovery(t,e,r,n){let i=this.findReSyncTokenType(),a=this.exportLexerState(),s=[],o=!1,l=this.LA(1),c=this.LA(1),h=me(()=>{var t=this.LA(0),t=this.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:l,previous:t,ruleName:this.getCurrRuleFullName()});(t=new $ft(t,l,this.LA(0))).resyncedTokens=UU(s),this.SAVE_ERROR(t)},"generateErrorMessage");for(;!o;){if(this.tokenMatcher(c,n))return void h();if(r.call(this))return h(),void t.apply(this,e);this.tokenMatcher(c,i)?o=!0:(c=this.SKIP_TOKEN(),this.addToResyncTokens(c,s))}this.importLexerState(a)}shouldInRepetitionRecoveryBeTried(t,e,r){return!(!1===r||this.tokenMatcher(this.LA(1),t)||this.isBackTracking()||this.canPerformInRuleRecovery(t,this.getFollowsForInRuleRecovery(t,e)))}getFollowsForInRuleRecovery(t,e){return t=this.getCurrentGrammarPath(t,e),this.getNextPossibleTokenTypes(t)}tryInRuleRecovery(t,e){if(this.canRecoverWithSingleTokenInsertion(t,e))return this.getTokenToInsert(t);if(this.canRecoverWithSingleTokenDeletion(t))return e=this.SKIP_TOKEN(),this.consumeToken(),e;throw new Yft("sad sad panda")}canPerformInRuleRecovery(t,e){return this.canRecoverWithSingleTokenInsertion(t,e)||this.canRecoverWithSingleTokenDeletion(t)}canRecoverWithSingleTokenInsertion(t,e){if(!this.canTokenTypeBeInsertedInRecovery(t)||bj(e))return!1;let r=this.LA(1);return void 0!==vq(e,t=>this.tokenMatcher(r,t))}canRecoverWithSingleTokenDeletion(t){return!!this.canTokenTypeBeDeletedInRecovery(t)&&this.tokenMatcher(this.LA(2),t)}isInCurrentRuleReSyncSet(t){var e=this.getCurrFollowKey(),e=this.getFollowSetFromFollowKey(e);return uj(e,t)}findReSyncTokenType(){let t=this.flattenFollowSet(),e=this.LA(1),r=2;for(;;){var n=vq(t,t=>v1t(e,t));if(void 0!==n)return n;e=this.LA(r),r++}}getCurrFollowKey(){var t,e,r;return 1===this.RULE_STACK.length?jft:(t=this.getLastExplicitRuleShortName(),e=this.getLastExplicitRuleOccurrenceIndex(),r=this.getPreviousExplicitRuleShortName(),{ruleName:this.shortRuleNameToFullName(t),idxInCallingRule:e,inRule:this.shortRuleNameToFullName(r)})}buildFullFollowKeyStack(){let r=this.RULE_STACK,n=this.RULE_OCCURRENCE_STACK;return x(r,(t,e)=>0===e?jft:{ruleName:this.shortRuleNameToFullName(t),idxInCallingRule:n[e],inRule:this.shortRuleNameToFullName(r[e-1])})}flattenFollowSet(){var t=x(this.buildFullFollowKeyStack(),t=>this.getFollowSetFromFollowKey(t));return l$(t)}getFollowSetFromFollowKey(t){return t===jft?[A1t]:(t=t.ruleName+t.idxInCallingRule+$0t+t.inRule,this.resyncFollows[t])}addToResyncTokens(t,e){return this.tokenMatcher(t,A1t)||e.push(t),e}reSyncTo(t){let e=[],r=this.LA(1);for(;!1===this.tokenMatcher(r,t);)r=this.SKIP_TOKEN(),this.addToResyncTokens(r,e);return UU(e)}attemptInRepetitionRecovery(t,e,r,n,i,a,s){}getCurrentGrammarPath(t,e){return{ruleStack:this.getHumanReadableRuleStack(),occurrenceStack:mz(this.RULE_OCCURRENCE_STACK),lastTok:t,lastTokOccurrence:e}}getHumanReadableRuleStack(){return x(this.RULE_STACK,t=>this.shortRuleNameToFullName(t))}},me(qft,"attemptInRepetitionRecovery")});function Xft(t,e,r){return r|e|t}var Kft,Zft=b(()=>{me(Xft,"getKeyForAutomaticLookahead")}),Qft=b(()=>{WY(),M1t(),Jmt(),Ift(),uft(),Kft=class{static{me(this,"LLkLookaheadStrategy")}constructor(t){this.maxLookahead=null!=(t=t?.maxLookahead)?t:Vmt.maxLookahead}validate(t){var e,r,n=this.validateNoLeftRecursion(t.rules);return bj(n)?(e=this.validateEmptyOrAlternatives(t.rules),r=this.validateAmbiguousAlternationAlternatives(t.rules,this.maxLookahead),t=this.validateSomeNonEmptyLookaheadPath(t.rules,this.maxLookahead),[...n,...e,...r,...t]):n}validateNoLeftRecursion(t){return Iq(t,t=>xft(t,t,I1t))}validateEmptyOrAlternatives(t){return Iq(t,t=>wft(t,I1t))}validateAmbiguousAlternationAlternatives(t,e){return Iq(t,t=>kft(t,e,I1t))}validateSomeNonEmptyLookaheadPath(t,e){return Eft(t,e,I1t)}buildLookaheadForAlternation(t){return X1t(t.prodOccurrence,t.rule,t.maxLookahead,t.hasPredicates,t.dynamicTokensEnabled,Z1t)}buildLookaheadForOptional(t){return K1t(t.prodOccurrence,t.rule,t.maxLookahead,t.dynamicTokensEnabled,H1t(t.prodType),Q1t)}}});function Jft(t){return rmt.reset(),t.accept(rmt),t=rmt.dslMethods,rmt.reset(),t}var tmt,emt,rmt,nmt=b(()=>{WY(),Jmt(),Zft(),N0t(),Qft(),tmt=class{static{me(this,"LooksAhead")}initLooksAhead(t){this.dynamicTokensEnabled=(Qq(t,"dynamicTokensEnabled")?t:Vmt).dynamicTokensEnabled,this.maxLookahead=(Qq(t,"maxLookahead")?t:Vmt).maxLookahead,this.lookaheadStrategy=Qq(t,"lookaheadStrategy")?t.lookaheadStrategy:new Kft({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(t){v(t,s=>{this.TRACE_INIT(s.name+" Rule Lookahead",()=>{var{alternation:t,repetition:e,option:r,repetitionMandatory:n,repetitionMandatoryWithSeparator:i,repetitionWithSeparator:a}=Jft(s);v(t,r=>{var t=0===r.idx?"":r.idx;this.TRACE_INIT(""+A0t(r)+t,()=>{var t=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:r.idx,rule:s,maxLookahead:r.maxLookahead||this.maxLookahead,hasPredicates:r.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),e=Xft(this.fullRuleNameToShort[s.name],256,r.idx);this.setLaFuncCache(e,t)})}),v(e,t=>{this.computeLookaheadFunc(s,t.idx,768,"Repetition",t.maxLookahead,A0t(t))}),v(r,t=>{this.computeLookaheadFunc(s,t.idx,512,"Option",t.maxLookahead,A0t(t))}),v(n,t=>{this.computeLookaheadFunc(s,t.idx,1024,"RepetitionMandatory",t.maxLookahead,A0t(t))}),v(i,t=>{this.computeLookaheadFunc(s,t.idx,1536,"RepetitionMandatoryWithSeparator",t.maxLookahead,A0t(t))}),v(a,t=>{this.computeLookaheadFunc(s,t.idx,1280,"RepetitionWithSeparator",t.maxLookahead,A0t(t))})})})}computeLookaheadFunc(r,n,i,a,s,t){this.TRACE_INIT(""+t+(0===n?"":n),()=>{var t=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:n,rule:r,maxLookahead:s||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:a}),e=Xft(this.fullRuleNameToShort[r.name],i,n);this.setLaFuncCache(e,t)})}getKeyForAutomaticLookahead(t,e){return e|t|this.getLastExplicitRuleShortName()}getLaFuncFromCache(t){return this.lookAheadFuncsCache.get(t)}setLaFuncCache(t,e){this.lookAheadFuncsCache.set(t,e)}},emt=class extends k0t{static{me(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(t){this.dslMethods.option.push(t)}visitRepetitionWithSeparator(t){this.dslMethods.repetitionWithSeparator.push(t)}visitRepetitionMandatory(t){this.dslMethods.repetitionMandatory.push(t)}visitRepetitionMandatoryWithSeparator(t){this.dslMethods.repetitionMandatoryWithSeparator.push(t)}visitRepetition(t){this.dslMethods.repetition.push(t)}visitAlternation(t){this.dslMethods.alternation.push(t)}},rmt=new emt,me(Jft,"collectMethods")});function imt(t,e){!0===isNaN(t.startOffset)?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{me(imt,"setNodeLocationOnlyOffset"),me(amt,"setNodeLocationFull"),me(smt,"addTerminalToCst"),me(omt,"addNoneTerminalToCst")});function cmt(t,e){Object.defineProperty(t,hmt,{enumerable:!1,configurable:!0,writable:!1,value:e})}var hmt,umt=b(()=>{hmt="name",me(cmt,"defineNameProp")});function dmt(e,r){var n=yB(e),i=n.length;for(let t=0;tt.msg),Error(`Errors Detected in CST Visitor <${this.constructor.name}>: + `+t.join(` + +`).replace(/\n/g,` + `))},"validateVisitor")});return r.prototype=t,(r.prototype.constructor=r)._RULE_NAMES=e,r}function gmt(t,e,r){var n=me(function(){},"derivedConstructor");cmt(n,t+"BaseSemanticsWithDefaults");let i=Object.create(r.prototype);return v(e,t=>{i[t]=dmt}),n.prototype=i,n.prototype.constructor=n}function fmt(t,e){return mmt(t,e)}function mmt(e,t){return t=cq(t,t=>!1===R6(e[t])),t=x(t,t=>({msg:`Missing visitor method: <${t}> on ${e.constructor.name} CST Visitor.`,type:ymt.MISSING_METHOD,methodName:t})),kz(t)}var ymt,vmt,xmt,bmt,wmt,kmt,Tmt,Emt=b(()=>{var t;WY(),umt(),me(dmt,"defaultVisit"),me(pmt,"createBaseSemanticVisitorConstructor"),me(gmt,"createBaseVisitorConstructorWithDefaults"),(t=ymt=ymt||{})[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD",me(fmt,"validateVisitor"),me(mmt,"validateMissingCstMethods")}),Cmt=b(()=>{lmt(),WY(),Emt(),Jmt(),vmt=class{static{me(this,"TreeBuilder")}initTreeBuilder(t){if(this.CST_STACK=[],this.outputCst=t.outputCst,this.nodeLocationTracking=(Qq(t,"nodeLocationTracking")?t:Vmt).nodeLocationTracking,this.outputCst)if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=amt,this.setNodeLocationFromNode=amt,this.cstPostRule=UP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=UP,this.setNodeLocationFromNode=UP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=imt,this.setNodeLocationFromNode=imt,this.cstPostRule=UP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=UP,this.setNodeLocationFromNode=UP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else{if(!/none/i.test(this.nodeLocationTracking))throw Error(`Invalid config option: "${t.nodeLocationTracking}"`);this.setNodeLocationFromToken=UP,this.setNodeLocationFromNode=UP,this.cstPostRule=UP,this.setInitialNodeLocation=UP}else this.cstInvocationStateUpdate=UP,this.cstFinallyStateUpdate=UP,this.cstPostTerminal=UP,this.cstPostNonTerminal=UP,this.cstPostRule=UP}setInitialNodeLocationOnlyOffsetRecovery(t){t.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(t){t.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(t){t.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(t){var e=this.LA(1);t.location={startOffset:e.startOffset,startLine:e.startLine,startColumn:e.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(t){t={name:t,children:Object.create(null)},this.setInitialNodeLocation(t),this.CST_STACK.push(t)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(t){var e=this.LA(0);(t=t.location).startOffset<=e.startOffset?(t.endOffset=e.endOffset,t.endLine=e.endLine,t.endColumn=e.endColumn):(t.startOffset=NaN,t.startLine=NaN,t.startColumn=NaN)}cstPostRuleOnlyOffset(t){var e=this.LA(0);(t=t.location).startOffset<=e.startOffset?t.endOffset=e.endOffset:t.startOffset=NaN}cstPostTerminal(t,e){var r=this.CST_STACK[this.CST_STACK.length-1];smt(r,e,t),this.setNodeLocationFromToken(r.location,e)}cstPostNonTerminal(t,e){var r=this.CST_STACK[this.CST_STACK.length-1];omt(r,e,t),this.setNodeLocationFromNode(r.location,t.location)}getBaseCstVisitorConstructor(){var t;return Lj(this.baseCstVisitorConstructor)?(t=pmt(this.className,yB(this.gastProductionsCache)),this.baseCstVisitorConstructor=t):this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){var t;return Lj(this.baseCstVisitorWithDefaultsConstructor)?(t=gmt(this.className,yB(this.gastProductionsCache),this.getBaseCstVisitorConstructor()),this.baseCstVisitorWithDefaultsConstructor=t):this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){var t=this.RULE_STACK;return t[t.length-1]}getPreviousExplicitRuleShortName(){var t=this.RULE_STACK;return t[t.length-2]}getLastExplicitRuleOccurrenceIndex(){var t=this.RULE_OCCURRENCE_STACK;return t[t.length-1]}}}),Smt=b(()=>{Jmt(),xmt=class{static{me(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(t){if(!0!==this.selfAnalysisDone)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=t,this.tokVectorLength=t.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Hmt}LA(t){return(t=this.currIdx+t)<0||this.tokVectorLength<=t?Hmt:this.tokVector[t]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(t){this.currIdx=t}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}}}),_mt=b(()=>{WY(),Uft(),Jmt(),M1t(),Ift(),N0t(),bmt=class{static{me(this,"RecognizerApi")}ACTION(t){return t.call(this)}consume(t,e,r){return this.consumeInternal(e,t,r)}subrule(t,e,r){return this.subruleInternal(e,t,r)}option(t,e){return this.optionInternal(e,t)}or(t,e){return this.orInternal(e,t)}many(t,e){return this.manyInternal(t,e)}atLeastOne(t,e){return this.atLeastOneInternal(t,e)}CONSUME(t,e){return this.consumeInternal(t,0,e)}CONSUME1(t,e){return this.consumeInternal(t,1,e)}CONSUME2(t,e){return this.consumeInternal(t,2,e)}CONSUME3(t,e){return this.consumeInternal(t,3,e)}CONSUME4(t,e){return this.consumeInternal(t,4,e)}CONSUME5(t,e){return this.consumeInternal(t,5,e)}CONSUME6(t,e){return this.consumeInternal(t,6,e)}CONSUME7(t,e){return this.consumeInternal(t,7,e)}CONSUME8(t,e){return this.consumeInternal(t,8,e)}CONSUME9(t,e){return this.consumeInternal(t,9,e)}SUBRULE(t,e){return this.subruleInternal(t,0,e)}SUBRULE1(t,e){return this.subruleInternal(t,1,e)}SUBRULE2(t,e){return this.subruleInternal(t,2,e)}SUBRULE3(t,e){return this.subruleInternal(t,3,e)}SUBRULE4(t,e){return this.subruleInternal(t,4,e)}SUBRULE5(t,e){return this.subruleInternal(t,5,e)}SUBRULE6(t,e){return this.subruleInternal(t,6,e)}SUBRULE7(t,e){return this.subruleInternal(t,7,e)}SUBRULE8(t,e){return this.subruleInternal(t,8,e)}SUBRULE9(t,e){return this.subruleInternal(t,9,e)}OPTION(t){return this.optionInternal(t,0)}OPTION1(t){return this.optionInternal(t,1)}OPTION2(t){return this.optionInternal(t,2)}OPTION3(t){return this.optionInternal(t,3)}OPTION4(t){return this.optionInternal(t,4)}OPTION5(t){return this.optionInternal(t,5)}OPTION6(t){return this.optionInternal(t,6)}OPTION7(t){return this.optionInternal(t,7)}OPTION8(t){return this.optionInternal(t,8)}OPTION9(t){return this.optionInternal(t,9)}OR(t){return this.orInternal(t,0)}OR1(t){return this.orInternal(t,1)}OR2(t){return this.orInternal(t,2)}OR3(t){return this.orInternal(t,3)}OR4(t){return this.orInternal(t,4)}OR5(t){return this.orInternal(t,5)}OR6(t){return this.orInternal(t,6)}OR7(t){return this.orInternal(t,7)}OR8(t){return this.orInternal(t,8)}OR9(t){return this.orInternal(t,9)}MANY(t){this.manyInternal(0,t)}MANY1(t){this.manyInternal(1,t)}MANY2(t){this.manyInternal(2,t)}MANY3(t){this.manyInternal(3,t)}MANY4(t){this.manyInternal(4,t)}MANY5(t){this.manyInternal(5,t)}MANY6(t){this.manyInternal(6,t)}MANY7(t){this.manyInternal(7,t)}MANY8(t){this.manyInternal(8,t)}MANY9(t){this.manyInternal(9,t)}MANY_SEP(t){this.manySepFirstInternal(0,t)}MANY_SEP1(t){this.manySepFirstInternal(1,t)}MANY_SEP2(t){this.manySepFirstInternal(2,t)}MANY_SEP3(t){this.manySepFirstInternal(3,t)}MANY_SEP4(t){this.manySepFirstInternal(4,t)}MANY_SEP5(t){this.manySepFirstInternal(5,t)}MANY_SEP6(t){this.manySepFirstInternal(6,t)}MANY_SEP7(t){this.manySepFirstInternal(7,t)}MANY_SEP8(t){this.manySepFirstInternal(8,t)}MANY_SEP9(t){this.manySepFirstInternal(9,t)}AT_LEAST_ONE(t){this.atLeastOneInternal(0,t)}AT_LEAST_ONE1(t){return this.atLeastOneInternal(1,t)}AT_LEAST_ONE2(t){this.atLeastOneInternal(2,t)}AT_LEAST_ONE3(t){this.atLeastOneInternal(3,t)}AT_LEAST_ONE4(t){this.atLeastOneInternal(4,t)}AT_LEAST_ONE5(t){this.atLeastOneInternal(5,t)}AT_LEAST_ONE6(t){this.atLeastOneInternal(6,t)}AT_LEAST_ONE7(t){this.atLeastOneInternal(7,t)}AT_LEAST_ONE8(t){this.atLeastOneInternal(8,t)}AT_LEAST_ONE9(t){this.atLeastOneInternal(9,t)}AT_LEAST_ONE_SEP(t){this.atLeastOneSepFirstInternal(0,t)}AT_LEAST_ONE_SEP1(t){this.atLeastOneSepFirstInternal(1,t)}AT_LEAST_ONE_SEP2(t){this.atLeastOneSepFirstInternal(2,t)}AT_LEAST_ONE_SEP3(t){this.atLeastOneSepFirstInternal(3,t)}AT_LEAST_ONE_SEP4(t){this.atLeastOneSepFirstInternal(4,t)}AT_LEAST_ONE_SEP5(t){this.atLeastOneSepFirstInternal(5,t)}AT_LEAST_ONE_SEP6(t){this.atLeastOneSepFirstInternal(6,t)}AT_LEAST_ONE_SEP7(t){this.atLeastOneSepFirstInternal(7,t)}AT_LEAST_ONE_SEP8(t){this.atLeastOneSepFirstInternal(8,t)}AT_LEAST_ONE_SEP9(t){this.atLeastOneSepFirstInternal(9,t)}RULE(t,e,r=Xmt){uj(this.definedRulesNames,t)&&(n={message:I1t.buildDuplicateRuleNameError({topLevelRule:t,grammarName:this.className}),type:Kmt.DUPLICATE_RULE_NAME,ruleName:t},this.definitionErrors.push(n)),this.definedRulesNames.push(t);var n=this.defineRule(t,e,r);return this[t]=n}OVERRIDE_RULE(t,e,r=Xmt){var n=vft(t,this.definedRulesNames,this.className),n=(this.definitionErrors=this.definitionErrors.concat(n),this.defineRule(t,e,r));return this[t]=n}BACKTRACK(e,r){return function(){this.isBackTrackingStack.push(1);var t=this.saveRecogState();try{return e.apply(this,r),!0}catch(t){if(Oft(t))return!1;throw t}finally{this.reloadRecogState(t),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return c0t(oj(this.gastProductionsCache))}}}),Amt=b(()=>{WY(),Zft(),Uft(),uft(),Y1t(),Jmt(),Vft(),R1t(),h1t(),wmt=class{static{me(this,"RecognizerEngine")}initRecognizerEngine(t,e){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Ygt,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},Qq(e,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if(n8(t)){if(bj(t))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if("number"==typeof t[0].startOffset)throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if(n8(t))this.tokensMap=nY(t,(t,e)=>(t[e.name]=e,t),{});else if(Qq(t,"modes")&&nq(l$(oj(t.modes)),n1t))e=l$(oj(t.modes)),e=NY(e),this.tokensMap=nY(e,(t,e)=>(t[e.name]=e,t),{});else{if(!L6(t))throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap=mz(t)}this.tokensMap.EOF=A1t,e=Qq(t,"modes")?l$(oj(t.modes)):oj(t),t=nq(e,t=>bj(t.categoryMatches)),this.tokenMatcher=t?Ygt:Wgt,Hgt(oj(this.tokensMap))}defineRule(r,n,t){if(this.selfAnalysisDone)throw Error(`Grammar rule <${r}> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let i=(Qq(t,"resyncEnabled")?t:Xmt).resyncEnabled,a=(Qq(t,"recoveryValueFunc")?t:Xmt).recoveryValueFunc,s=this.ruleShortNameIdx<<12;return this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=r,this.fullRuleNameToShort[r]=s,t=!0===this.outputCst?me(function(...t){try{this.ruleInvocationStateUpdate(s,r,this.subruleIdx),n.apply(this,t);var e=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(e),e}catch(t){return this.invokeRuleCatch(t,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTry"):me(function(...t){try{return this.ruleInvocationStateUpdate(s,r,this.subruleIdx),n.apply(this,t)}catch(t){return this.invokeRuleCatch(t,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTryCst"),Object.assign(t,{ruleName:r,originalGrammarAction:n})}invokeRuleCatch(t,e,r){var n=1===this.RULE_STACK.length,e=e&&!this.isBackTracking()&&this.recoveryEnabled;if(Oft(t)){var i=t;if(e){if(e=this.findReSyncTokenType(),this.isInCurrentRuleReSyncSet(e))return i.resyncedTokens=this.reSyncTo(e),this.outputCst?((e=this.CST_STACK[this.CST_STACK.length-1]).recoveredNode=!0,e):r(t);this.outputCst&&((e=this.CST_STACK[this.CST_STACK.length-1]).recoveredNode=!0,i.partialCstResult=e)}else if(n)return this.moveToTerminatedState(),r(t);throw i}throw t}optionInternal(t,e){var r=this.getKeyForAutomaticLookahead(512,e);return this.optionInternalLogic(t,e,r)}optionInternalLogic(t,e,r){let n=this.getLaFuncFromCache(r),i;if("function"!=typeof t){i=t.DEF;let e=t.GATE;if(void 0!==e){let t=n;n=me(()=>e.call(this)&&t.call(this),"lookAheadFunc")}}else i=t;if(!0===n.call(this))return i.call(this)}atLeastOneInternal(t,e){var r=this.getKeyForAutomaticLookahead(1024,t);return this.atLeastOneInternalLogic(t,e,r)}atLeastOneInternalLogic(t,r,e){let n=this.getLaFuncFromCache(e),i;if("function"!=typeof r){i=r.DEF;let e=r.GATE;if(void 0!==e){let t=n;n=me(()=>e.call(this)&&t.call(this),"lookAheadFunc")}}else i=r;if(!0!==n.call(this))throw this.raiseEarlyExitException(t,lft.REPETITION_MANDATORY,r.ERR_MSG);{let t=this.doSingleRepetition(i);for(;!0===n.call(this)&&!0===t;)t=this.doSingleRepetition(i)}this.attemptInRepetitionRecovery(this.atLeastOneInternal,[t,r],n,1024,t,j1t)}atLeastOneSepFirstInternal(t,e){var r=this.getKeyForAutomaticLookahead(1536,t);this.atLeastOneSepFirstInternalLogic(t,e,r)}atLeastOneSepFirstInternalLogic(t,e,r){let n=e.DEF,i=e.SEP;if(!0!==this.getLaFuncFromCache(r).call(this))throw this.raiseEarlyExitException(t,lft.REPETITION_MANDATORY_WITH_SEPARATOR,e.ERR_MSG);for(n.call(this),r=me(()=>this.tokenMatcher(this.LA(1),i),"separatorLookAheadFunc");!0===this.tokenMatcher(this.LA(1),i);)this.CONSUME(i),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[t,i,r,n,W1t],r,1536,t,W1t)}manyInternal(t,e){var r=this.getKeyForAutomaticLookahead(768,t);return this.manyInternalLogic(t,e,r)}manyInternalLogic(t,r,e){let n=this.getLaFuncFromCache(e),i;if("function"!=typeof r){i=r.DEF;let e=r.GATE;if(void 0!==e){let t=n;n=me(()=>e.call(this)&&t.call(this),"lookaheadFunction")}}else i=r;let a=!0;for(;!0===n.call(this)&&!0===a;)a=this.doSingleRepetition(i);this.attemptInRepetitionRecovery(this.manyInternal,[t,r],n,768,t,U1t,a)}manySepFirstInternal(t,e){var r=this.getKeyForAutomaticLookahead(1280,t);this.manySepFirstInternalLogic(t,e,r)}manySepFirstInternalLogic(t,e,r){let n=e.DEF,i=e.SEP;if(!0===this.getLaFuncFromCache(r).call(this)){for(n.call(this),e=me(()=>this.tokenMatcher(this.LA(1),i),"separatorLookAheadFunc");!0===this.tokenMatcher(this.LA(1),i);)this.CONSUME(i),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[t,i,e,n,q1t],e,1280,t,q1t)}}repetitionSepSecondInternal(t,e,r,n,i){for(;r();)this.CONSUME(e),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[t,e,r,n,i],r,1536,t,i)}doSingleRepetition(t){var e=this.getLexerPosition();return t.call(this),this.getLexerPosition()>e}orInternal(t,e){var r=this.getKeyForAutomaticLookahead(256,e),n=n8(t)?t:t.DEF;if(void 0!==(r=this.getLaFuncFromCache(r).call(this,n)))return n[r].ALT.call(this);this.raiseNoAltException(e,t.ERR_MSG)}ruleFinallyStateUpdate(){var t,e;this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),0===this.RULE_STACK.length&&!1===this.isAtEndOfInput()&&(t=this.LA(1),e=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:t,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new zft(e,t)))}subruleInternal(t,e,r){var n;try{var i=void 0!==r?r.ARGS:void 0;return this.subruleIdx=e,n=t.apply(this,i),this.cstPostNonTerminal(n,void 0!==r&&void 0!==r.LABEL?r.LABEL:t.ruleName),n}catch(e){throw this.subruleInternalError(e,r,t.ruleName)}}subruleInternalError(t,e,r){throw Oft(t)&&void 0!==t.partialCstResult&&(this.cstPostNonTerminal(t.partialCstResult,void 0!==e&&void 0!==e.LABEL?e.LABEL:r),delete t.partialCstResult),t}consumeInternal(t,e,r){let n;try{var i=this.LA(1);!0===this.tokenMatcher(i,t)?(this.consumeToken(),n=i):this.consumeInternalError(t,i,r)}catch(r){n=this.consumeInternalRecovery(t,e,r)}return this.cstPostTerminal(void 0!==r&&void 0!==r.LABEL?r.LABEL:t.name,n),n}consumeInternalError(t,e,r){var n=this.LA(0),r=void 0!==r&&r.ERR_MSG?r.ERR_MSG:this.errorMessageProvider.buildMismatchTokenMessage({expected:t,actual:e,previous:n,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new $ft(r,e,n))}consumeInternalRecovery(t,e,r){if(!this.recoveryEnabled||"MismatchedTokenException"!==r.name||this.isBackTracking())throw r;e=this.getFollowsForInRuleRecovery(t,e);try{return this.tryInRuleRecovery(t,e)}catch(t){throw t.name===Wft?r:t}}saveRecogState(){var t=this.errors,e=mz(this.RULE_STACK);return{errors:t,lexerState:this.exportLexerState(),RULE_STACK:e,CST_STACK:this.CST_STACK}}reloadRecogState(t){this.errors=t.errors,this.importLexerState(t.lexerState),this.RULE_STACK=t.RULE_STACK}ruleInvocationStateUpdate(t,e,r){this.RULE_OCCURRENCE_STACK.push(r),this.RULE_STACK.push(t),this.cstInvocationStateUpdate(e)}isBackTracking(){return 0!==this.isBackTrackingStack.length}getCurrRuleFullName(){var t=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[t]}shortRuleNameToFullName(t){return this.shortRuleNameToFull[t]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),A1t)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}}}),Lmt=b(()=>{Uft(),WY(),uft(),Jmt(),kmt=class{static{me(this,"ErrorHandler")}initErrorHandler(t){this._errors=[],this.errorMessageProvider=(Qq(t,"errorMessageProvider")?t:Vmt).errorMessageProvider}SAVE_ERROR(t){if(Oft(t))return t.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:mz(this.RULE_OCCURRENCE_STACK)},this._errors.push(t),t;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return mz(this._errors)}set errors(t){this._errors=t}raiseEarlyExitException(t,e,r){var n=this.getCurrRuleFullName(),t=ift(t,this.getGAstProductions()[n],e,this.maxLookahead)[0],i=[];for(let t=1;t<=this.maxLookahead;t++)i.push(this.LA(t));throw e=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:t,actual:i,previous:this.LA(0),customUserDescription:r,ruleName:n}),this.SAVE_ERROR(new Gft(e,this.LA(1),this.LA(0)))}raiseNoAltException(t,e){var r=this.getCurrRuleFullName(),t=nft(t,this.getGAstProductions()[r],this.maxLookahead),n=[];for(let t=1;t<=this.maxLookahead;t++)n.push(this.LA(t));throw r=this.LA(0),t=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:t,actual:n,previous:r,customUserDescription:e,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new Fft(t,this.LA(1),r))}}}),Nmt=b(()=>{Y1t(),WY(),Tmt=class{static{me(this,"ContentAssist")}initContentAssist(){}computeContentAssist(t,e){var r=this.gastProductionsCache[t];if(Lj(r))throw Error(`Rule ->${t}<- does not exist in this grammar.`);return $1t([r],e,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(t){var e=kq(t.ruleStack),e=this.getGAstProductions()[e];return new z1t(e,t).startWalking()}}});function Imt(t,e,r,n=!1){Dmt(r);var i=PU(this.recordingProdStack),a=R6(e)?e:e.DEF,t=new t({definition:[],idx:r});return n&&(t.separator=e.SEP),Qq(e,"MAX_LOOKAHEAD")&&(t.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(t),a.call(this),i.definition.push(t),this.recordingProdStack.pop(),Omt}function Rmt(t,e){Dmt(e);let r=PU(this.recordingProdStack),n=!1===n8(t),i=0==n?t:t.DEF,a=new b0t({definition:[],idx:e,ignoreAmbiguities:n&&!0===t.IGNORE_AMBIGUITIES});return Qq(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD),e=fY(i,t=>R6(t.GATE)),a.hasPredicates=e,r.definition.push(a),v(i,t=>{var e=new g0t({definition:[]});a.definition.push(e),Qq(t,"IGNORE_AMBIGUITIES")?e.ignoreAmbiguities=t.IGNORE_AMBIGUITIES:Qq(t,"GATE")&&(e.ignoreAmbiguities=!0),this.recordingProdStack.push(e),t.ALT.call(this),this.recordingProdStack.pop()}),Omt}function Mmt(t){return 0===t?"":""+t}function Dmt(t){if(t<0||Pmt + Idx value must be a none negative value smaller than `+(Pmt+1))).KNOWN_RECORDER_ERROR=!0,t}var Omt,Pmt,Bmt,$mt,Fmt,zmt,Gmt,Umt=b(()=>{WY(),N0t(),d1t(),h1t(),R1t(),Jmt(),Zft(),Omt={description:"This Object indicates the Parser is during Recording Phase"},Object.freeze(Omt),Pmt=Math.pow(2,8)-1,Hgt([Bmt=f1t({name:"RECORDING_PHASE_TOKEN",pattern:c1t.NA})]),$mt=y1t(Bmt,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1),Object.freeze($mt),Fmt={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},zmt=class{static{me(this,"GastRecorder")}initGastRecorder(t){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let r=0;r<10;r++){var t=0{var e=this;for(let t=0;t<10;t++){var r=0!0}LA_RECORD(t){return Hmt}topLevelRuleRecord(t,e){try{var r=new p0t({definition:[],name:t});return r.name=t,this.recordingProdStack.push(r),e.call(this),this.recordingProdStack.pop(),r}catch(t){if(!0!==t.KNOWN_RECORDER_ERROR)try{t.message=t.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{}throw t}}optionInternalRecord(t,e){return Imt.call(this,f0t,t,e)}atLeastOneInternalRecord(t,e){Imt.call(this,m0t,e,t)}atLeastOneSepFirstInternalRecord(t,e){Imt.call(this,y0t,e,t,!0)}manyInternalRecord(t,e){Imt.call(this,v0t,e,t)}manySepFirstInternalRecord(t,e){Imt.call(this,x0t,e,t,!0)}orInternalRecord(t,e){return Rmt.call(this,t,e)}subruleInternalRecord(t,e,r){var n,i;if(Dmt(e),t&&!1!==Qq(t,"ruleName"))return n=PU(this.recordingProdStack),i=t.ruleName,i=new d0t({idx:e,nonTerminalName:i,label:r?.LABEL,referencedRule:void 0}),n.definition.push(i),this.outputCst?Fmt:Omt;throw(r=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(t)}> + inside top level rule: <${this.recordingProdStack[0].name}>`)).KNOWN_RECORDER_ERROR=!0,r}consumeInternalRecord(t,e,r){var n;if(Dmt(e),Jgt(t))return n=PU(this.recordingProdStack),r=new w0t({idx:e,terminalType:t,label:r?.LABEL}),n.definition.push(r),$mt;throw(n=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(t)}> + inside top level rule: <${this.recordingProdStack[0].name}>`)).KNOWN_RECORDER_ERROR=!0,n}},me(Imt,"recordProd"),me(Rmt,"recordOrProd"),me(Mmt,"getIdxSuffix"),me(Dmt,"assertMethodIdxIsValid")}),qmt=b(()=>{WY(),s0t(),Jmt(),Gmt=class{static{me(this,"PerformanceTracer")}initPerformanceTracer(t){var e;Qq(t,"traceInitPerf")?(t=t.traceInitPerf,this.traceInitMaxIdent=(e="number"==typeof t)?t:1/0,this.traceInitPerf=e?0 <${t}>`),r0t(e)),a=10 time: ${n}ms`),this.traceInitIndent--,i):e()}}});function jmt(i,t){t.forEach(r=>{let n=r.prototype;Object.getOwnPropertyNames(n).forEach(t=>{var e;"constructor"!==t&&((e=Object.getOwnPropertyDescriptor(n,t))&&(e.get||e.set)?Object.defineProperty(i.prototype,t,e):i.prototype[t]=r.prototype[t])})})}var Wmt=b(()=>{me(jmt,"applyMixins")});function Ymt(t=void 0){return function(){return t}}var Hmt,Vmt,Xmt,Kmt,Zmt,Qmt,Jmt=b(()=>{var t;WY(),s0t(),j0t(),R1t(),M1t(),Dft(),Vft(),nmt(),Cmt(),Smt(),_mt(),Amt(),Lmt(),Nmt(),Umt(),qmt(),Wmt(),Ift(),Hmt=y1t(A1t,"",NaN,NaN,NaN,NaN,NaN,NaN),Object.freeze(Hmt),Vmt=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:L1t,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),Xmt=Object.freeze({recoveryValueFunc:me(()=>{},"recoveryValueFunc"),resyncEnabled:!0}),(t=Kmt=Kmt||{})[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",t[t.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION",me(Ymt,"EMPTY_ALT"),(Zmt=class e{static{me(this,"Parser")}static performSelfAnalysis(t){throw Error("The **static** `performSelfAnalysis` method has been deprecated.\t\nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{var t;this.selfAnalysisDone=!0;let r=this.className,n=(this.TRACE_INIT("toFastProps",()=>{i0t(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),v(this.definedRulesNames,t=>{let e=this[t].originalGrammarAction,r;this.TRACE_INIT(t+" Rule",()=>{r=this.topLevelRuleRecord(t,e)}),this.gastProductionsCache[t]=r})}finally{this.disableRecording()}}),[]);if(this.TRACE_INIT("Grammar Resolving",()=>{n=Rft({rules:oj(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{var t,e;bj(n)&&!1===this.skipValidations&&(t=Mft({rules:oj(this.gastProductionsCache),tokenTypes:oj(this.tokensMap),errMsgProvider:I1t,grammarName:r}),e=dft({lookaheadStrategy:this.lookaheadStrategy,rules:oj(this.gastProductionsCache),tokenTypes:oj(this.tokensMap),grammarName:r}),this.definitionErrors=this.definitionErrors.concat(t,e))}),bj(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{var t=G0t(oj(this.gastProductionsCache));this.resyncFollows=t}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var t,e;null!=(e=(t=this.lookaheadStrategy).initialize)&&e.call(t,{rules:oj(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(oj(this.gastProductionsCache))})),!e.DEFER_DEFINITION_ERRORS_HANDLING&&!bj(this.definitionErrors))throw t=x(this.definitionErrors,t=>t.message),new Error(`Parser Definition Errors detected: + `+t.join(` +------------------------------- +`))})}constructor(t,e){if(this.definitionErrors=[],this.selfAnalysisDone=!1,this.initErrorHandler(e),this.initLexerAdapter(),this.initLooksAhead(e),this.initRecognizerEngine(t,e),this.initRecoverable(e),this.initTreeBuilder(e),this.initContentAssist(),this.initGastRecorder(e),this.initPerformanceTracer(e),Qq(e,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=(Qq(e,"skipValidations")?e:Vmt).skipValidations}}).DEFER_DEFINITION_ERRORS_HANDLING=!1,jmt(Zmt,[Hft,tmt,vmt,xmt,wmt,bmt,kmt,Tmt,zmt,Gmt]),Qmt=class extends Zmt{static{me(this,"EmbeddedActionsParser")}constructor(t,e=Vmt){(e=mz(e)).outputCst=!1,super(t,e)}}}),tyt=b(()=>{N0t()}),eyt=b(()=>{}),ryt=b(()=>{tyt(),eyt()}),nyt=b(()=>{Qpt()}),iyt=b(()=>{Qpt(),Jmt(),d1t(),R1t(),uft(),Qft(),M1t(),Uft(),u1t(),N0t(),N0t(),ryt(),nyt()});function ayt(t,e,r){return t.name+`_${e}_`+r}function syt(e){var r={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]},n=(oyt(r,e),e.length);for(let t=0;tlyt(e,r,t)));return byt(e,r,n,t,...i)}function gyt(t,e,r){var n=_yt(t,e,r,{type:Nyt});return xyt(t,n),vyt(t,e,r,byt(t,e,n,r,fyt(t,e,r)))}function fyt(e,r,t){return 1===(t=cq(x(t.definition,t=>lyt(e,r,t)),t=>void 0!==t)).length?t[0]:0===t.length?void 0:kyt(e,t)}function myt(t,e,r,n,i){var a=n.left,n=n.right,s=_yt(t,e,r,{type:$yt}),o=(xyt(t,s),_yt(t,e,r,{type:Fyt}));return a.loopback=s,o.loopback=s,Syt(n,t.decisionMap[ayt(e,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=s),void 0===i?(Syt(s,a),Syt(s,o)):(Syt(s,o),Syt(s,i.left),Syt(i.right,a)),{left:a,right:o}}function yyt(t,e,r,n,i){var a=n.left,n=n.right,s=_yt(t,e,r,{type:Byt}),o=(xyt(t,s),_yt(t,e,r,{type:Fyt})),l=_yt(t,e,r,{type:Pyt});return s.loopback=l,o.loopback=l,Syt(s,a),Syt(s,o),Syt(n,l),void 0!==i?(Syt(l,o),Syt(l,i.left),Syt(i.right,a)):Syt(l,s),{left:t.decisionMap[ayt(e,i?"RepetitionWithSeparator":"Repetition",r.idx)]=s,right:o}}function vyt(t,e,r,n){var i=n.left;return Syt(i,n.right),t.decisionMap[ayt(e,"Option",r.idx)]=i,n}function xyt(t,e){return t.decisionStates.push(e),e.decision=t.decisionStates.length-1,e.decision}function byt(t,e,r,n,...i){var a,s=_yt(t,e,n,{type:Oyt,start:r});r.end=s;for(a of i)void 0!==a?(Syt(r,a.left),Syt(a.right,s)):Syt(r,s);return i={left:r,right:s},t.decisionMap[ayt(e,wyt(n),n.idx)]=r,i}function wyt(t){if(t instanceof b0t)return"Alternation";if(t instanceof f0t)return"Option";if(t instanceof v0t)return"Repetition";if(t instanceof x0t)return"RepetitionWithSeparator";if(t instanceof m0t)return"RepetitionMandatory";if(t instanceof y0t)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function kyt(e,r){var n=r.length;for(let t=0;t{Lq(),hq(),iyt(),me(ayt,"buildATNKey"),Nyt=1,Iyt=2,Ryt=4,Myt=5,Dyt=7,Oyt=8,Pyt=9,Byt=10,$yt=11,Fyt=12,zyt=class{static{me(this,"AbstractTransition")}constructor(t){this.target=t}isEpsilon(){return!1}},Gyt=class extends zyt{static{me(this,"AtomTransition")}constructor(t,e){super(t),this.tokenType=e}},Uyt=class extends zyt{static{me(this,"EpsilonTransition")}constructor(t){super(t)}isEpsilon(){return!0}},qyt=class extends zyt{static{me(this,"RuleTransition")}constructor(t,e,r){super(t),this.rule=e,this.followState=r}isEpsilon(){return!0}},me(syt,"createATN"),me(oyt,"createRuleStartAndStopATNStates"),me(lyt,"atom"),me(cyt,"repetition"),me(hyt,"repetitionSep"),me(uyt,"repetitionMandatory"),me(dyt,"repetitionMandatorySep"),me(pyt,"alternation"),me(gyt,"option"),me(fyt,"block"),me(myt,"plus"),me(yyt,"star"),me(vyt,"optional"),me(xyt,"defineDecisionState"),me(byt,"makeAlts"),me(wyt,"getProdType"),me(kyt,"makeBlock"),me(Tyt,"tokenRef"),me(Eyt,"ruleRef"),me(Cyt,"buildRuleHandle"),me(Syt,"epsilon"),me(_yt,"newState"),me(Ayt,"addTransition"),me(Lyt,"removeState")});function Wyt(t,e=!0){return`${e?"a"+t.alt:""}s${t.state.stateNumber}:`+t.stack.map(t=>t.stateNumber.toString()).join("_")}var Yyt,Hyt,Vyt=b(()=>{Lq(),Yyt={},Hyt=class{static{me(this,"ATNConfigSet")}constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(t){var e=Wyt(t);e in this.map||(this.map[e]=this.configs.length,this.configs.push(t))}get elements(){return this.configs}get alts(){return x(this.configs,t=>t.alt)}get key(){let t="";for(var e in this.map)t+=e+":";return t}},me(Wyt,"getATNConfigKey")});function Xyt(n,i){let a={};return t=>{let e=t.toString(),r=a[e];return void 0===r&&(r={atnStartState:n,decision:i,states:{}},a[e]=r),r}}function Kyt(t,e=!0){var r,n=new Set;for(r of t){var i,a,s=new Set;for(i of r){if(void 0===i){if(e)break;return!1}for(a of[i.tokenTypeIdx].concat(i.categoryMatches))if(n.has(a)){if(!s.has(a))return!1}else n.add(a),s.add(a)}}return!0}function Zyt(e){var r=e.decisionStates.length,n=Array(r);for(let t=0;tp1t(t)).join(", "),r=0===t.production.idx?"":t.production.idx;return`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(", ")}> in <${n2t(t.production)}${r}> inside <${t.topLevelRule.name}> Rule, +<${e}> may appears as a prefix path in all these alternatives. +`+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`}function n2t(t){if(t instanceof d0t)return"SUBRULE";if(t instanceof f0t)return"OPTION";if(t instanceof b0t)return"OR";if(t instanceof m0t)return"AT_LEAST_ONE";if(t instanceof y0t)return"AT_LEAST_ONE_SEP";if(t instanceof x0t)return"MANY_SEP";if(t instanceof v0t)return"MANY";if(t instanceof w0t)return"CONSUME";throw Error("non exhaustive match")}function i2t(t,e,r){return e=Iq(e.configs.elements,t=>t.state.transitions),{actualToken:r,possibleTokenTypes:MY(e.filter(t=>t instanceof Gyt).map(t=>t.tokenType),t=>t.tokenTypeIdx),tokenPath:t}}function a2t(t,e){return t.edges[e.tokenTypeIdx]}function s2t(t,e,r){var n,i=new Hyt,a=[];for(n of t.elements)if(!1!==r.is(n.alt))if(n.state.type===Dyt)a.push(n);else{var s=n.state.transitions.length;for(let t=0;t{iyt(),jyt(),Vyt(),Wj(),Rq(),DY(),Lq(),c$(),VU(),wj(),iY(),me(Xyt,"createDFACache"),w2t=class{static{me(this,"PredicateSet")}constructor(){this.predicates=[]}is(t){return t>=this.predicates.length||this.predicates[t]}set(t,e){this.predicates[t]=e}toString(){let e="",r=this.predicates.length;for(let t=0;tconsole.log(t)}initialize(t){this.atn=syt(t.rules),this.dfas=Zyt(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(t){let{prodOccurrence:e,rule:r,hasPredicates:n,dynamicTokensEnabled:i}=t,a=this.dfas,s=this.logging,o=ayt(r,"Alternation",e),l=this.atn.decisionMap[o].decision,c=x(V1t({maxLookahead:1,occurrence:e,prodType:"Alternation",rule:r}),t=>x(t,t=>t[0]));if(!Kyt(c,!1)||i)return n?function(e){var r=new w2t,n=void 0===e?0:e.length;for(let t=0;t(v(t,t=>{t&&(e[t.tokenTypeIdx]=r,v(t.categoryMatches,t=>{e[t]=r}))}),e),{});return n?function(t){var e=this.LA(1),e=r[e.tokenTypeIdx];if(void 0===t||void 0===e||void 0===(t=null==(t=t[e])?void 0:t.GATE)||!1!==t.call(this))return e}:function(){var t=this.LA(1);return r[t.tokenTypeIdx]}}}buildLookaheadForOptional(r){let{prodOccurrence:t,rule:e,prodType:n,dynamicTokensEnabled:i}=r,a=this.dfas,s=this.logging,o=ayt(e,n,t),l=this.atn.decisionMap[o].decision,c=x(V1t({maxLookahead:1,occurrence:t,prodType:n,rule:e}),t=>x(t,t=>t[0]));if(Kyt(c)&&c[0][0]&&!i){if(r=c[0],1===(r=l$(r)).length&&bj(r[0].categoryMatches)){let t=r[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===t}}{let e=nY(r,(e,t)=>(void 0!==t&&(e[t.tokenTypeIdx]=!0,v(t.categoryMatches,t=>{e[t]=!0})),e),{});return function(){var t=this.LA(1);return!0===e[t.tokenTypeIdx]}}}return function(){var t=Qyt.call(this,a,l,k2t,s);return"object"!=typeof t&&0===t}}},me(Kyt,"isLL1Sequence"),me(Zyt,"initATNSimulator"),me(Qyt,"adaptivePredict"),me(Jyt,"performLookahead"),me(t2t,"computeLookaheadTarget"),me(e2t,"reportLookaheadAmbiguity"),me(r2t,"buildAmbiguityError"),me(n2t,"getProductionDslName"),me(i2t,"buildAdaptivePredictError"),me(a2t,"getExistingTargetState"),me(s2t,"computeReachSet"),me(o2t,"getReachableTarget"),me(l2t,"getUniqueAlt"),me(c2t,"newDFAState"),me(h2t,"addDFAEdge"),me(u2t,"addDFAState"),me(d2t,"computeStartState"),me(p2t,"closure"),me(g2t,"getEpsilonTarget"),me(f2t,"hasConfigInRuleStopState"),me(m2t,"allConfigsInRuleStopStates"),me(y2t,"hasConflictTerminatingPrediction"),me(v2t,"getConflictingAltSets"),me(x2t,"hasConflictingAltSet"),me(b2t,"hasStateAssociatedWithOneAlt")}),ext=b(()=>{txt()}),rxt=b(()=>{function t(t){return"string"==typeof t}var e,r,n,i;function a(t){return"string"==typeof t}function s(t){return"number"==typeof t&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}function o(t){return"number"==typeof t&&r.MIN_VALUE<=t&&t<=r.MAX_VALUE}function l(t,e){return{line:t=t===Number.MAX_VALUE?_2t.MAX_VALUE:t,character:e=e===Number.MAX_VALUE?_2t.MAX_VALUE:e}}function c(t){return ye.objectLiteral(t)&&ye.uinteger(t.line)&&ye.uinteger(t.character)}function h(t,e,r,n){if(ye.uinteger(t)&&ye.uinteger(e)&&ye.uinteger(r)&&ye.uinteger(n))return{start:A2t.create(t,e),end:A2t.create(r,n)};if(A2t.is(t)&&A2t.is(e))return{start:t,end:e};throw new Error(`Range#create called with invalid arguments[${t}, ${e}, ${r}, ${n}]`)}function u(t){return ye.objectLiteral(t)&&A2t.is(t.start)&&A2t.is(t.end)}function d(t,e){return{uri:t,range:e}}function p(t){return ye.objectLiteral(t)&&L2t.is(t.range)&&(ye.string(t.uri)||ye.undefined(t.uri))}function g(t,e,r,n){return{targetUri:t,targetRange:e,targetSelectionRange:r,originSelectionRange:n}}function f(t){return ye.objectLiteral(t)&&L2t.is(t.targetRange)&&ye.string(t.targetUri)&&L2t.is(t.targetSelectionRange)&&(L2t.is(t.originSelectionRange)||ye.undefined(t.originSelectionRange))}function m(t,e,r,n){return{red:t,green:e,blue:r,alpha:n}}function y(t){return ye.objectLiteral(t)&&ye.numberRange(t.red,0,1)&&ye.numberRange(t.green,0,1)&&ye.numberRange(t.blue,0,1)&&ye.numberRange(t.alpha,0,1)}function v(t,e){return{range:t,color:e}}function x(t){return ye.objectLiteral(t)&&L2t.is(t.range)&&R2t.is(t.color)}function b(t,e,r){return{label:t,textEdit:e,additionalTextEdits:r}}function w(t){return ye.objectLiteral(t)&&ye.string(t.label)&&(ye.undefined(t.textEdit)||q2t.is(t))&&(ye.undefined(t.additionalTextEdits)||ye.typedArray(t.additionalTextEdits,q2t.is))}function k(t,e,r,n,i,a){return t={startLine:t,endLine:e},ye.defined(r)&&(t.startCharacter=r),ye.defined(n)&&(t.endCharacter=n),ye.defined(i)&&(t.kind=i),ye.defined(a)&&(t.collapsedText=a),t}function T(t){return ye.objectLiteral(t)&&ye.uinteger(t.startLine)&&ye.uinteger(t.startLine)&&(ye.undefined(t.startCharacter)||ye.uinteger(t.startCharacter))&&(ye.undefined(t.endCharacter)||ye.uinteger(t.endCharacter))&&(ye.undefined(t.kind)||ye.string(t.kind))}function E(t,e){return{location:t,message:e}}function C(t){return ye.defined(t)&&N2t.is(t.location)&&ye.string(t.message)}function S(t){return ye.objectLiteral(t)&&ye.string(t.href)}function _(t,e,r,n,i,a){return t={range:t,message:e},ye.defined(r)&&(t.severity=r),ye.defined(n)&&(t.code=n),ye.defined(i)&&(t.source=i),ye.defined(a)&&(t.relatedInformation=a),t}function A(t){var e;return ye.defined(t)&&L2t.is(t.range)&&ye.string(t.message)&&(ye.number(t.severity)||ye.undefined(t.severity))&&(ye.integer(t.code)||ye.string(t.code)||ye.undefined(t.code))&&(ye.undefined(t.codeDescription)||ye.string(null==(e=t.codeDescription)?void 0:e.href))&&(ye.string(t.source)||ye.undefined(t.source))&&(ye.undefined(t.relatedInformation)||ye.typedArray(t.relatedInformation,B2t.is))}function L(t,e,...r){return t={title:t,command:e},ye.defined(r)&&0ye.string(t.kind)?V2t.is(t)||X2t.is(t)||K2t.is(t):H2t.is(t)))}function J(t){return{uri:t}}function tt(t){return ye.defined(t)&&ye.string(t.uri)}function et(t,e){return{uri:t,version:e}}function rt(t){return ye.defined(t)&&ye.string(t.uri)&&ye.integer(t.version)}function nt(t,e){return{uri:t,version:e}}function it(t){return ye.defined(t)&&ye.string(t.uri)&&(null===t.version||ye.integer(t.version))}function at(t,e,r,n){return{uri:t,languageId:e,version:r,text:n}}function st(t){return ye.defined(t)&&ye.string(t.uri)&&ye.string(t.languageId)&&ye.integer(t.version)&&ye.string(t.text)}function ot(t){return t===n.PlainText||t===n.Markdown}function lt(t){var e=t;return ye.objectLiteral(t)&&rvt.is(e.kind)&&ye.string(e.value)}function ct(t,e,r){return{newText:t,insert:e,replace:r}}function ht(t){return t&&ye.string(t.newText)&&L2t.is(t.insert)&&L2t.is(t.replace)}function ut(t){return t&&(ye.string(t.detail)||void 0===t.detail)&&(ye.string(t.description)||void 0===t.description)}function dt(t){return{label:t}}function pt(t,e){return{items:t||[],isIncomplete:!!e}}function gt(t){return t.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}function ft(t){return ye.string(t)||ye.objectLiteral(t)&&ye.string(t.language)&&ye.string(t.value)}function mt(t){var e=t;return!!e&&ye.objectLiteral(e)&&(nvt.is(e.contents)||uvt.is(e.contents)||ye.typedArray(e.contents,uvt.is))&&(void 0===t.range||L2t.is(t.range))}function yt(t,e){return e?{label:t,documentation:e}:{label:t}}function vt(t,e,...r){return t={label:t},ye.defined(e)&&(t.documentation=e),ye.defined(r)?t.parameters=r:t.parameters=[],t}function xt(t,e){return t={range:t},ye.number(e)&&(t.kind=e),t}function bt(t,e,r,n,i){return t={name:t,kind:e,location:{uri:n,range:r}},i&&(t.containerName=i),t}function wt(t,e,r,n){return void 0!==n?{name:t,kind:e,location:{uri:r,range:n}}:{name:t,kind:e,location:{uri:r}}}function kt(t,e,r,n,i,a){return t={name:t,detail:e,kind:r,range:n,selectionRange:i},void 0!==a&&(t.children=a),t}function Tt(t){return t&&ye.string(t.name)&&ye.number(t.kind)&&L2t.is(t.range)&&L2t.is(t.selectionRange)&&(void 0===t.detail||ye.string(t.detail))&&(void 0===t.deprecated||ye.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))&&(void 0===t.tags||Array.isArray(t.tags))}function Et(t,e,r){return t={diagnostics:t},null!=e&&(t.only=e),null!=r&&(t.triggerKind=r),t}function Ct(t){return ye.defined(t)&&ye.typedArray(t.diagnostics,G2t.is)&&(void 0===t.only||ye.typedArray(t.only,ye.string))&&(void 0===t.triggerKind||t.triggerKind===kvt.Invoked||t.triggerKind===kvt.Automatic)}function St(t,e,r){let n={title:t},i=!0;return"string"==typeof e?(i=!1,n.kind=e):U2t.is(e)?n.command=e:n.edit=e,i&&void 0!==r&&(n.kind=r),n}function _t(t){return t&&ye.string(t.title)&&(void 0===t.diagnostics||ye.typedArray(t.diagnostics,G2t.is))&&(void 0===t.kind||ye.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||U2t.is(t.command))&&(void 0===t.isPreferred||ye.boolean(t.isPreferred))&&(void 0===t.edit||Z2t.is(t.edit))}function At(t,e){return t={range:t},ye.defined(e)&&(t.data=e),t}function Lt(t){return ye.defined(t)&&L2t.is(t.range)&&(ye.undefined(t.command)||U2t.is(t.command))}function Nt(t,e){return{tabSize:t,insertSpaces:e}}function It(t){return ye.defined(t)&&ye.uinteger(t.tabSize)&&ye.boolean(t.insertSpaces)}function Rt(t,e,r){return{range:t,target:e,data:r}}function Mt(t){return ye.defined(t)&&L2t.is(t.range)&&(ye.undefined(t.target)||ye.string(t.target))}function Dt(t,e){return{range:t,parent:e}}function Ot(t){return ye.objectLiteral(t)&&L2t.is(t.range)&&(void 0===t.parent||i.is(t.parent))}function Pt(t){return ye.objectLiteral(t)&&(void 0===t.resultId||"string"==typeof t.resultId)&&Array.isArray(t.data)&&(0===t.data.length||"number"==typeof t.data[0])}function Bt(t,e){return{range:t,text:e}}function $t(t){return null!=t&&L2t.is(t.range)&&ye.string(t.text)}function Ft(t,e,r){return{range:t,variableName:e,caseSensitiveLookup:r}}function zt(t){return null!=t&&L2t.is(t.range)&&ye.boolean(t.caseSensitiveLookup)&&(ye.string(t.variableName)||void 0===t.variableName)}function Gt(t,e){return{range:t,expression:e}}function Ut(t){return null!=t&&L2t.is(t.range)&&(ye.string(t.expression)||void 0===t.expression)}function qt(t,e){return{frameId:t,stoppedLocation:e}}function jt(t){return ye.defined(t)&&L2t.is(t.stoppedLocation)}function Wt(t){return 1===t||2===t}function Yt(t){return{value:t}}function Ht(t){return ye.objectLiteral(t)&&(void 0===t.tooltip||ye.string(t.tooltip)||nvt.is(t.tooltip))&&(void 0===t.location||N2t.is(t.location))&&(void 0===t.command||U2t.is(t.command))}function Vt(t,e,r){return t={position:t,label:e},void 0!==r&&(t.kind=r),t}function Xt(t){return ye.objectLiteral(t)&&A2t.is(t.position)&&(ye.string(t.label)||ye.typedArray(t.label,Bvt.is))&&(void 0===t.kind||Pvt.is(t.kind))&&void 0===t.textEdits||ye.typedArray(t.textEdits,q2t.is)&&(void 0===t.tooltip||ye.string(t.tooltip)||nvt.is(t.tooltip))&&(void 0===t.paddingLeft||ye.boolean(t.paddingLeft))&&(void 0===t.paddingRight||ye.boolean(t.paddingRight))}function Kt(t){return{kind:"snippet",value:t}}function Zt(t,e,r,n){return{insertText:t,filterText:e,range:r,command:n}}function Qt(t){return{items:t}}function Jt(t,e){return{range:t,text:e}}function te(t,e){return{triggerKind:t,selectedCompletionInfo:e}}function ee(t){return ye.objectLiteral(t)&&C2t.is(t.uri)&&ye.string(t.name)}function re(t,e,r,n){return new Hvt(t,e,r,n)}function ne(t){return!!(ye.defined(t)&&ye.string(t.uri)&&(ye.undefined(t.languageId)||ye.string(t.languageId))&&ye.uinteger(t.lineCount)&&ye.func(t.getText)&&ye.func(t.positionAt)&&ye.func(t.offsetAt))}function ie(e,t){let r=e.getText(),n=D(t,(t,e)=>{var r=t.range.start.line-e.range.start.line;return 0==r?t.range.start.character-e.range.start.character:r}),i=r.length;for(let t=n.length-1;0<=t;t--){var a=n[t],s=e.offsetAt(a.range.start),o=e.offsetAt(a.range.end);if(!(o<=i))throw new Error("Overlapping edit");r=r.substring(0,s)+a.newText+r.substring(o,r.length),i=s}return r}function D(n,i){if(!(n.length<=1)){var a=n.length/2|0,s=n.slice(0,a),o=n.slice(a);D(s,i),D(o,i);let t=0,e=0,r=0;for(;tt?n=i:r=i+1}var a=r-1;return A2t.create(a,t-e[a])}offsetAt(t){var e,r=this.getLineOffsets();return t.line>=r.length?this._content.length:t.line<0?0:(e=r[t.line],r=t.line+1{rxt(),bht(),Vvt=class{static{me(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){var t;return null!=(t=this.nodeStack[this.nodeStack.length-1])?t:this.rootNode}buildRootNode(t){return this.rootNode=new Jvt(t),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(t){var e=new Zvt;return e.grammarSource=t,e.root=this.rootNode,this.current.content.push(e),this.nodeStack.push(e),e}buildLeafNode(t,e){return(t=new Kvt(t.startOffset,t.image.length,rht(t),t.tokenType,!e)).grammarSource=e,t.root=this.rootNode,this.current.content.push(t),t}removeNode(t){var e=t.container;e&&0<=(t=e.content.indexOf(t))&&e.content.splice(t,1)}addHiddenNodes(t){var e,r=[];for(e of t){var n=new Kvt(e.startOffset,e.image.length,rht(e),e.tokenType,!0);n.root=this.rootNode,r.push(n)}let i=this.current,a=!1;if(0{iyt(),ext(),gdt(),Xpt(),Ndt(),nxt(),axt=Symbol("Datatype"),me(ixt,"isDataTypeNode"),sxt=me(t=>t.endsWith("​")?t:t+"​","withRuleSuffix"),oxt=class{static{me(this,"AbstractLangiumParser")}constructor(t){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=t.parser.Lexer;var e=this.lexer.definition,r="production"===t.LanguageMetaData.mode;this.wrapper=new pxt(e,Object.assign(Object.assign({},t.parser.ParserConfig),{skipValidations:r,errorMessageProvider:t.parser.ParserErrorMessageProvider}))}alternatives(t,e){this.wrapper.wrapOr(t,e)}optional(t,e){this.wrapper.wrapOption(t,e)}many(t,e){this.wrapper.wrapMany(t,e)}atLeastOne(t,e){this.wrapper.wrapAtLeastOne(t,e)}getRule(t){return this.allRules.get(t)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},lxt=class extends oxt{static{me(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(t){super(t),this.nodeBuilder=new Vvt,this.stack=[],this.assignmentMap=new Map,this.linker=t.references.Linker,this.converter=t.parser.ValueConverter,this.astReflection=t.shared.AstReflection}rule(t,e){var r=this.computeRuleType(t),r=this.wrapper.DEFINE_RULE(sxt(t.name),this.startImplementation(r,e).bind(this));return this.allRules.set(t.name,r),t.entry&&(this.mainRule=r),r}computeRuleType(t){if(!t.fragment)return Npt(t)?axt:Dpt(t)??t.name}parse(t,e={}){this.nodeBuilder.buildRootNode(t);var t=this.lexerResult=this.lexer.tokenize(t),r=(this.wrapper.input=t.tokens,e.rule?this.allRules.get(e.rule):this.mainRule);if(r)return r=r.call(this.wrapper,{}),this.nodeBuilder.addHiddenNodes(t.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,{value:r,lexerErrors:t.errors,lexerReport:t.report,parserErrors:this.wrapper.errors};throw new Error(e.rule?`No rule found with name '${e.rule}'`:"No main rule available.")}startImplementation(i,a){return t=>{var e,r=!this.isRecording()&&void 0!==i;r&&(this.stack.push(e={$type:i}),i===axt)&&(e.value="");let n;try{n=a(t)}catch{n=void 0}return n=void 0===n&&r?this.construct():n}}extractHiddenTokens(t){var e=this.lexerResult.hidden;if(!e.length)return[];var r=t.startOffset;for(let t=0;tr)return e.splice(0,t);return e.splice(0,e.length)}consume(e,r,n){if(e=this.wrapper.wrapConsume(e,r),!this.isRecording()&&this.isValidToken(e)){var r=this.extractHiddenTokens(e),r=(this.nodeBuilder.addHiddenNodes(r),this.nodeBuilder.buildLeafNode(e,n)),{assignment:t,isCrossRef:i}=this.getAssignment(n),a=this.current;if(t){var s=cut(n)?e.image:this.converter.convert(e.image,r);this.assign(t.operator,t.feature,s,r,i)}else if(ixt(a)){let t=e.image;cut(n)||(t=this.converter.convert(t,r).toString()),a.value+=t}}}isValidToken(t){return!t.isInsertedInRecovery&&!isNaN(t.startOffset)&&"number"==typeof t.endOffset&&!isNaN(t.endOffset)}subrule(t,e,r,n,i){let a;this.isRecording()||r||(a=this.nodeBuilder.buildCompositeNode(n)),r=this.wrapper.wrapSubrule(t,e,i),!this.isRecording()&&a&&0{var e=this.keepStackSize();try{r(t)}finally{this.resetStackSize(e)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){var t=this.elementStack.length;return this.stackSize=t}resetStackSize(t){this.removeUnexpectedElements(),this.stackSize=t}consume(t,e,r){this.wrapper.wrapConsume(t,e),this.isRecording()||(this.lastElementStack=[...this.elementStack,r],this.nextTokenIndex=this.currIdx+1)}subrule(t,e,r,n,i){this.before(n),this.wrapper.wrapSubrule(t,e,i),this.after(n)}before(t){this.isRecording()||this.elementStack.push(t)}after(t){this.isRecording()||0<=(t=this.elementStack.lastIndexOf(t))&&this.elementStack.splice(t)}get currIdx(){return this.wrapper.currIdx}},dxt={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new hxt},pxt=class extends Qmt{static{me(this,"ChevrotainWrapper")}constructor(t,e){var r=e&&"maxLookahead"in e;super(t,Object.assign(Object.assign(Object.assign({},dxt),{lookaheadStrategy:r?new Kft({maxLookahead:e.maxLookahead}):new T2t({logging:e.skipValidations?()=>{}:void 0})}),e))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(t,e){return this.RULE(t,e)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(t,e){return this.consume(t,e)}wrapSubrule(t,e,r){return this.subrule(t,e,{ARGS:[r]})}wrapOr(t,e){this.or(t,e)}wrapOption(t,e){this.option(t,e)}wrapMany(t,e){this.many(t,e)}wrapAtLeastOne(t,e){this.atLeastOne(t,e)}}});function fxt(t,e,r){return mxt({parser:e,tokens:r,ruleNames:new Map},t),e}function mxt(t,e){let r=ppt(e,!1),n=Wct(e.rules).filter(Hht).filter(t=>r.has(t));for(var i of n){var a=Object.assign(Object.assign({},t),{consume:1,optional:1,subrule:1,many:1,or:1});t.parser.rule(i,yxt(a,i.definition))}}function yxt(e,r,t=!1){let n;if(cut(r))n=_xt(e,r);else if(rut(r))n=vxt(e,r);else if(iut(r))n=yxt(e,r.terminal);else if(sut(r))n=Sxt(e,r);else if(dut(r))n=xxt(e,r);else if(nut(r))n=kxt(e,r);else if(mut(r))n=Txt(e,r);else if(lut(r))n=Ext(e,r);else{if(!out(r))throw new kht(r.$cstNode,"Unexpected element type: "+r.$type);{let t=e.consume++;n=me(()=>e.parser.consume(t,A1t,r),"method")}}return Axt(e,t?void 0:Cxt(r),n,r.cardinality)}function vxt(t,e){let r=Opt(e);return()=>t.parser.action(r,e)}function xxt(i,a){let s=a.rule.ref;if(Hht(s)){let e=i.subrule++,r=s.fragment,n=0({});return t=>i.parser.subrule(e,Lxt(i,s),r,a,n(t))}if(Qht(s)){let t=i.consume++,e=Ixt(i,s.name);return()=>i.parser.consume(t,e,a)}if(!s)throw new kht(a.$cstNode,"Undefined rule: "+a.rule.$refText);wht(s)}function bxt(a,t){let s=t.map(t=>wxt(t.value));return e=>{var r={};for(let t=0;te(t)||r(t)}if(Pht(n)){let e=wxt(n.left),r=wxt(n.right);return t=>e(t)&&r(t)}if(qht(n)){let e=wxt(n.value);return t=>!e(t)}if(Yht(n)){let e=n.parameter.ref.name;return t=>void 0!==t&&!0===t[e]}if(Oht(n)){let t=!!n.true;return()=>t}wht()}function kxt(r,n){if(1===n.elements.length)return yxt(r,n.elements[0]);{let t=[];for(var i of n.elements){var a={ALT:yxt(r,i,!0)};(i=Cxt(i))&&(a.GATE=wxt(i)),t.push(a)}let e=r.or++;return n=>r.parser.alternatives(e,t.map(t=>{let e={ALT:me(()=>t.ALT(n),"ALT")},r=t.GATE;return r&&(e.GATE=()=>r(n)),e}))}}function Txt(s,t){if(1===t.elements.length)return yxt(s,t.elements[0]);let e=[];for(var r of t.elements){var n={ALT:yxt(s,r,!0)};(r=Cxt(r))&&(n.GATE=wxt(r)),e.push(n)}let o=s.or++,l=me((t,e)=>`uGroup_${t}_`+e.getRuleStack().join("-"),"idFunc"),i=me(a=>s.parser.alternatives(o,e.map((e,r)=>{let t={ALT:me(()=>!0,"ALT")},n=s.parser,i=(t.ALT=()=>{var t;e.ALT(a),n.isRecording()||(t=l(o,n),n.unorderedGroups.get(t)||n.unorderedGroups.set(t,[]),"u"i(a):t.GATE=()=>!n.unorderedGroups.get(l(o,n))?.[r],t})),"alternatives"),a=Axt(s,Cxt(t),i,"*");return t=>{a(t),s.parser.isRecording()||s.parser.unorderedGroups.delete(l(o,s.parser))}}function Ext(e,t){let r=t.elements.map(t=>yxt(e,t));return e=>r.forEach(t=>t(e))}function Cxt(t){if(lut(t))return t.guardCondition}function Sxt(n,i,a=i.terminal){if(a){if(dut(a)&&Hht(a.rule.ref)){let e=a.rule.ref,r=n.subrule++;return t=>n.parser.subrule(r,Lxt(n,e),!1,i,t)}if(dut(a)&&Qht(a.rule.ref)){let t=n.consume++,e=Ixt(n,a.rule.ref.name);return()=>n.parser.consume(t,e,i)}if(cut(a)){let t=n.consume++,e=Ixt(n,a.value);return()=>n.parser.consume(t,e,i)}throw new Error("Could not build cross reference parser")}if(!i.type.ref)throw new Error("Could not resolve reference to type: "+i.type.$refText);if(a=Ept(i.type.ref)?.terminal)return Sxt(n,i,a);throw new Error("Could not find name assignment for type: "+Opt(i.type.ref))}function _xt(t,e){let r=t.consume++,n=t.tokens[e.value];if(n)return()=>t.parser.consume(r,n,e);throw new Error("Could not find token for keyword: "+e.value)}function Axt(n,t,i,e){let a=t&&wxt(t);if(!e){if(a){let e=n.or++;return t=>n.parser.alternatives(e,[{ALT:me(()=>i(t),"ALT"),GATE:me(()=>a(t),"GATE")},{ALT:Ymt(),GATE:me(()=>!a(t),"GATE")}])}return i}if("*"===e){let e=n.many++;return t=>n.parser.many(e,{DEF:me(()=>i(t),"DEF"),GATE:a?()=>a(t):void 0})}if("+"===e){let r=n.many++;if(a){let e=n.or++;return t=>n.parser.alternatives(e,[{ALT:me(()=>n.parser.atLeastOne(r,{DEF:me(()=>i(t),"DEF")}),"ALT"),GATE:me(()=>a(t),"GATE")},{ALT:Ymt(),GATE:me(()=>!a(t),"GATE")}])}return t=>n.parser.atLeastOne(r,{DEF:me(()=>i(t),"DEF")})}if("?"===e){let e=n.optional++;return t=>n.parser.optional(e,{DEF:me(()=>i(t),"DEF"),GATE:a?()=>a(t):void 0})}wht()}function Lxt(t,e){if(e=Nxt(t,e),t=t.parser.getRule(e))return t;throw new Error(`Rule "${e}" not found."`)}function Nxt(n,i){if(Hht(i))return i.name;if(n.ruleNames.has(i))return n.ruleNames.get(i);{let t=i,e=t.$container,r=i.$type;for(;!Hht(e);)(lut(e)||nut(e)||mut(e))&&(r=e.elements.indexOf(t).toString()+":"+r),e=(t=e).$container;return r=e.name+":"+r,n.ruleNames.set(i,r),r}}function Ixt(t,e){if(t=t.tokens[e])return t;throw new Error(`Token "${e}" not found."`)}var Rxt=b(()=>{iyt(),gdt(),Tht(),Zct(),Xpt(),me(fxt,"createParser"),me(mxt,"buildRules"),me(yxt,"buildElement"),me(vxt,"buildAction"),me(xxt,"buildRuleCall"),me(bxt,"buildRuleCallPredicate"),me(wxt,"buildPredicate"),me(kxt,"buildAlternatives"),me(Txt,"buildUnorderedGroup"),me(Ext,"buildGroup"),me(Cxt,"getGuardCondition"),me(Sxt,"buildCrossReference"),me(_xt,"buildKeyword"),me(Axt,"wrap"),me(Lxt,"getRule"),me(Nxt,"getRuleName"),me(Ixt,"getToken")});function Mxt(t){var e=t.Grammar,r=t.parser.Lexer;return fxt(e,t=new uxt(t),r.definition),t.finalize(),t}var Dxt=b(()=>{gxt(),Rxt(),me(Mxt,"createCompletionParser")});function Oxt(t){return(t=Pxt(t)).finalize(),t}function Pxt(t){var e=t.Grammar,r=t.parser.Lexer;return fxt(e,new lxt(t),r.definition)}var Bxt,$xt,Fxt,zxt=b(()=>{gxt(),Rxt(),me(Oxt,"createLangiumParser"),me(Pxt,"prepareLangiumParser")}),Gxt=b(()=>{iyt(),gdt(),Ndt(),Xpt(),cpt(),Zct(),Bxt=class{static{me(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(t,e){let r=Wct(ppt(t,!1)),n=this.buildTerminalTokens(r),i=this.buildKeywordTokens(r,n,e);return n.forEach(t=>{var e=t.PATTERN;"object"==typeof e&&e&&"test"in e&&Jdt(e)?i.unshift(t):i.push(t)}),i}flushLexingReport(t){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){var t=[...this.diagnostics];return this.diagnostics=[],t}buildTerminalTokens(t){return t.filter(Qht).filter(t=>!t.fragment).map(t=>this.buildTerminalToken(t)).toArray()}buildTerminalToken(t){var e=Fpt(t),r=this.requiresCustomPattern(e)?this.regexPatternFunction(e):e,n={name:t.name,PATTERN:r};return"function"==typeof r&&(n.LINE_BREAKS=!0),t.hidden&&(n.GROUP=Jdt(e)?c1t.SKIPPED:"hidden"),n}requiresCustomPattern(t){return!!(t.flags.includes("u")||t.flags.includes("s")||t.source.includes("?<=")||t.source.includes("?(r.lastIndex=e,r.exec(t))}buildKeywordTokens(t,e,r){return t.filter(Hht).flatMap(t=>kdt(t).filter(cut)).distinct(t=>t.value).toArray().sort((t,e)=>e.value.length-t.value.length).map(t=>this.buildKeywordToken(t,e,!!r?.caseInsensitive))}buildKeywordToken(t,e,r){return r=this.buildKeywordPattern(t,r),t={name:t.value,PATTERN:r,LONGER_ALT:this.findLongerAlt(t,e)},"function"==typeof r&&(t.LINE_BREAKS=!0),t}buildKeywordPattern(t,e){return e?new RegExp(ept(t.value)):t.value}findLongerAlt(n,t){return t.reduce((t,e)=>{var r=e?.PATTERN;return r?.source&&rpt("^"+r.source+"$",n.value)&&t.push(e),t},[])}}}),Uxt=b(()=>{function t(e){let r="";for(let t=1;t{var e,r;function n(){if(void 0===e)throw new Error("No runtime abstraction layer installed");return e}function i(t){if(void 0===t)throw new Error("No runtime abstraction layer provided");e=t}Object.defineProperty(t,"__esModule",{value:!0}),me(n,"RAL"),r=n,me(i,"install"),r.install=i,t.default=n}),jxt=WBt(t=>{function e(t){return!0===t||!1===t}function r(t){return"string"==typeof t||t instanceof String}function n(t){return"number"==typeof t||t instanceof Number}function i(t){return t instanceof Error}function a(t){return"function"==typeof t}function s(t){return Array.isArray(t)}function o(t){return s(t)&&t.every(t=>r(t))}Object.defineProperty(t,"__esModule",{value:!0}),t.stringArray=t.array=t.func=t.error=t.number=t.string=t.boolean=void 0,me(e,"boolean"),t.boolean=e,me(r,"string"),t.string=r,me(n,"number"),t.number=n,me(i,"error"),t.error=i,me(a,"func"),t.func=a,me(s,"array"),t.array=s,me(o,"stringArray"),t.stringArray=o}),Wxt=WBt(e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Emitter=e.Event=void 0;var s=qxt();{var r=e.Event={};let t={dispose(){}};r.None=function(){return t}}var i=class{static{me(this,"CallbackList")}add(t,e=null,r){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(t),this._contexts.push(e),Array.isArray(r)&&r.push({dispose:me(()=>this.remove(t,e),"dispose")})}remove(n,i=null){if(this._callbacks){let r=!1;for(let t=0,e=this._callbacks.length;t{this._callbacks||(this._callbacks=new i),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(t,e);let n={dispose:me(()=>{this._callbacks&&(this._callbacks.remove(t,e),n.dispose=a._noop,this._options)&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this)},"dispose")};return Array.isArray(r)&&r.push(n),n}),this._event}fire(t){this._callbacks&&this._callbacks.invoke.call(this._callbacks,t)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};(e.Emitter=r)._noop=function(){}}),Yxt=WBt(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CancellationTokenSource=t.CancellationToken=void 0;var e,r,n=qxt(),i=jxt(),a=Wxt();function s(t){return t&&(t===r.None||t===r.Cancelled||i.boolean(t.isCancellationRequested)&&!!t.onCancellationRequested)}(r=e||(t.CancellationToken=e={})).None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:a.Event.None}),r.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:a.Event.None}),me(s,"is"),r.is=s;var o=Object.freeze(function(t,e){let r=(0,n.default)().timer.setTimeout(t.bind(e),0);return{dispose(){r.dispose()}}}),l=class{static{me(this,"MutableToken")}constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?o:(this._emitter||(this._emitter=new a.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},c=class{static{me(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new l),this._token}cancel(){this._token?this._token.cancel():this._token=e.Cancelled}dispose(){this._token?this._token instanceof l&&this._token.dispose():this._token=e.None}};t.CancellationTokenSource=c}),Hxt={},Vxt=b(()=>{U(Hxt,q(Yxt(),1))});function Xxt(){return new Promise(t=>{"u"{Vxt(),me(Xxt,"delayNextTick"),tbt=0,ebt=10,me(Kxt,"startCancelableOperation"),me(Zxt,"setInterruptionPeriod"),rbt=Symbol("OperationCancelled"),me(Qxt,"isOperationCancelled"),me(Jxt,"interruptAndCheck"),nbt=class{static{me(this,"Deferred")}constructor(){this.promise=new Promise((e,r)=>{this.resolve=t=>(e(t),this),this.reject=t=>(r(t),this)})}}});function abt(n,i){if(!(n.length<=1)){var a=n.length/2|0,s=n.slice(0,a),o=n.slice(a);abt(s,i),abt(o,i);let t=0,e=0,r=0;for(;tr.line||e.line===r.line&&e.character>r.character?{start:r,end:e}:t}function cbt(t){var e=lbt(t.range);return e!==t.range?{newText:t.newText,range:e}:t}var hbt,ubt,dbt,pbt,gbt,fbt,mbt,ybt,vbt,xbt,bbt=b(()=>{function t(t,e,r,n){return new hbt(t,e,r,n)}function e(t,e,r){if(t instanceof hbt)return t.update(e,r),t;throw new Error("TextDocument.update: document must be created by TextDocument.create")}function r(t,e){let r=t.getText(),n=abt(e.map(cbt),(t,e)=>{var r=t.range.start.line-e.range.start.line;return 0==r?t.range.start.character-e.range.start.character:r}),i=0,a=[];for(var s of n){var o=t.offsetAt(s.range.start);if(oi&&a.push(r.substring(i,o)),s.newText.length&&a.push(s.newText),i=t.offsetAt(s.range.end)}return a.push(r.substr(i)),a.join("")}var n;hbt=class i{static{me(this,"FullTextDocument")}constructor(t,e,r,n){this._uri=t,this._languageId=e,this._version=r,this._content=n,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(t){var e;return t?(e=this.offsetAt(t.start),t=this.offsetAt(t.end),this._content.substring(e,t)):this._content}update(t,e){for(var a of t)if(i.isIncremental(a)){var s=lbt(a.range),o=this.offsetAt(s.start),l=this.offsetAt(s.end);this._content=this._content.substring(0,o)+a.text+this._content.substring(l,this._content.length);let r=Math.max(s.start.line,0),t=Math.max(s.end.line,0),n=this._lineOffsets,i=sbt(a.text,!1,o);if(t-r===i.length)for(let t=0,e=i.length;tt?n=i:r=i+1}var a=r-1;return{line:a,character:(t=this.ensureBeforeEOL(t,e[a]))-e[a]}}offsetAt(t){var e,r=this.getLineOffsets();return t.line>=r.length?this._content.length:t.line<0?0:(e=r[t.line],t.character<=0?e:(r=t.line+1{var r={470:t=>{function d(t){if("string"!=typeof t)throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}function a(t,e){for(var r,n="",i=0,a=-1,s=0,o=0;o<=t.length;++o){if(o{for(var r in e)h.o(e,r)&&!h.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},h.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var u,d,p={};{let n,r=((h.r=t=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})})(p),h.d(p,{URI:me(()=>w,"URI"),Utils:me(()=>u,"Utils")}),"object"==typeof process?n="win32"===process.platform:"object"==typeof navigator&&(n=0<=navigator.userAgent.indexOf("Windows")),/^\w[\w\d+.-]*$/),i=/^\//,a=/^\/\//;function g(t,e){if(!t.scheme&&e)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${t.authority}", path: "${t.path}", query: "${t.query}", fragment: "${t.fragment}"}`);if(t.scheme&&!r.test(t.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(t.path)if(t.authority){if(!i.test(t.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(a.test(t.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}me(g,"s");let s=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class w{static{me(this,"f")}static isUri(t){return t instanceof w||!!t&&"string"==typeof t.authority&&"string"==typeof t.fragment&&"string"==typeof t.path&&"string"==typeof t.query&&"string"==typeof t.scheme&&"string"==typeof t.fsPath&&"function"==typeof t.with&&"function"==typeof t.toString}scheme;authority;path;query;fragment;constructor(t,e,r,n,i,a=!1){"object"==typeof t?(this.scheme=t.scheme||"",this.authority=t.authority||"",this.path=t.path||"",this.query=t.query||"",this.fragment=t.fragment||""):(this.scheme=t||a?t:"file",this.authority=e||"",this.path=((t,e)=>{switch(t){case"https":case"http":case"file":e?"/"!==e[0]&&(e="/"+e):e="/"}return e})(this.scheme,r||""),this.query=n||"",this.fragment=i||"",g(this,a))}get fsPath(){return y(this,!1)}with(t){if(!t)return this;let{scheme:e,authority:r,path:n,query:i,fragment:a}=t;return void 0===e?e=this.scheme:null===e&&(e=""),void 0===r?r=this.authority:null===r&&(r=""),void 0===n?n=this.path:null===n&&(n=""),void 0===i?i=this.query:null===i&&(i=""),void 0===a?a=this.fragment:null===a&&(a=""),e===this.scheme&&r===this.authority&&n===this.path&&i===this.query&&a===this.fragment?this:new k(e,r,n,i,a)}static parse(t,e=!1){return(t=s.exec(t))?new k(t[2]||"",b(t[4]||""),b(t[5]||""),b(t[7]||""),b(t[9]||""),e):new k("","","","","")}static file(t){let e="",r;return"/"===(t=n?t.replace(/\\/g,"/"):t)[0]&&"/"===t[1]&&(t=-1===(r=t.indexOf("/",2))?(e=t.substring(2),"/"):(e=t.substring(2,r),t.substring(r)||"/")),new k("file",e,t,"","")}static from(t){return g(t=new k(t.scheme,t.authority,t.path,t.query,t.fragment),!0),t}toString(t=!1){return v(this,t)}toJSON(){return this}static revive(t){var e;return t&&(t instanceof w?t:((e=new k(t))._formatted=t.external,e._fsPath=t._sep===o?t.fsPath:null,e))}}let o=n?1:void 0;class k extends w{static{me(this,"l")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=y(this,!1)),this._fsPath}toString(t=!1){return t?v(this,!0):(this._formatted||(this._formatted=v(this,!1)),this._formatted)}toJSON(){var t={$mid:1};return this._fsPath&&(t.fsPath=this._fsPath,t._sep=o),this._formatted&&(t.external=this._formatted),this.path&&(t.path=this.path),this.scheme&&(t.scheme=this.scheme),this.authority&&(t.authority=this.authority),this.query&&(t.query=this.query),this.fragment&&(t.fragment=this.fragment),t}}let l={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function f(e,r,n){let i,a=-1;for(let t=0;tx(t)):t}me(b,"C");let t=h(470),c=t.posix||t;(d=u=u||{}).joinPath=function(t,...e){return t.with({path:c.join(t.path,...e)})},d.resolvePath=function(t,...e){let r=t.path,n=!1,i=("/"!==r[0]&&(r="/"+r,n=!0),c.resolve(r,...e));return n&&"/"===i[0]&&!t.authority&&(i=i.substring(1)),t.with({path:i})},d.dirname=function(t){if(0===t.path.length||"/"===t.path)return t;let e=c.dirname(t.path);return 1===e.length&&46===e.charCodeAt(0)&&(e=""),t.with({path:e})},d.basename=function(t){return c.basename(t.path)},d.extname=function(t){return c.extname(t.path)}}({URI:dbt,Utils:pbt}=p)}),kbt=b(()=>{function t(t,e){return t?.toString()===e?.toString()}function e(t,e){let r="string"==typeof t?t:t.path,n="string"==typeof e?e:e.path,i=r.split("/").filter(t=>00{var t;bbt(),Tbt(),Vxt(),Zct(),kbt(),(t=fbt=fbt||{})[t.Changed=0]="Changed",t[t.Parsed=1]="Parsed",t[t.IndexedContent=2]="IndexedContent",t[t.ComputedScopes=3]="ComputedScopes",t[t.Linked=4]="Linked",t[t.IndexedReferences=5]="IndexedReferences",t[t.Validated=6]="Validated",mbt=class{static{me(this,"DefaultLangiumDocumentFactory")}constructor(t){this.serviceRegistry=t.ServiceRegistry,this.textDocuments=t.workspace.TextDocuments,this.fileSystemProvider=t.workspace.FileSystemProvider}async fromUri(t,e=Hxt.CancellationToken.None){var r=await this.fileSystemProvider.readFile(t);return this.createAsync(t,r,e)}fromTextDocument(t,e,r){return e=e??dbt.parse(t.uri),Hxt.CancellationToken.is(r)?this.createAsync(e,t,r):this.create(e,t,r)}fromString(t,e,r){return Hxt.CancellationToken.is(r)?this.createAsync(e,t,r):this.create(e,t,r)}fromModel(t,e){return this.create(e,{$model:t})}create(t,e,r){var n;return"string"==typeof e?(n=this.parse(t,e,r),this.createLangiumDocument(n,t,void 0,e)):"$model"in e?(n={value:e.$model,parserErrors:[],lexerErrors:[]},this.createLangiumDocument(n,t)):(n=this.parse(t,e.getText(),r),this.createLangiumDocument(n,t,e))}async createAsync(t,e,r){var n;return"string"==typeof e?(n=await this.parseAsync(t,e,r),this.createLangiumDocument(n,t,void 0,e)):(n=await this.parseAsync(t,e.getText(),r),this.createLangiumDocument(n,t,e))}createLangiumDocument(e,r,t,n){let i;if(t)i={parseResult:e,uri:r,state:fbt.Parsed,references:[],textDocument:t};else{let t=this.createTextDocumentGetter(r,n);i={parseResult:e,uri:r,state:fbt.Parsed,references:[],get textDocument(){return t()}}}return e.value.$document=i}async update(t,e){var r=null==(r=t.parseResult.value.$cstNode)?void 0:r.root.fullText,n=null==(n=this.textDocuments)?void 0:n.get(t.uri.toString()),i=n?n.getText():await this.fileSystemProvider.readFile(t.uri);return n?Object.defineProperty(t,"textDocument",{value:n}):(n=this.createTextDocumentGetter(t.uri,i),Object.defineProperty(t,"textDocument",{get:n})),r!==i&&(t.parseResult=await this.parseAsync(t.uri,i,e),t.parseResult.value.$document=t),t.state=fbt.Parsed,t}parse(t,e,r){return this.serviceRegistry.getServices(t).parser.LangiumParser.parse(e,r)}parseAsync(t,e,r){return this.serviceRegistry.getServices(t).parser.AsyncParser.parse(e,r)}createTextDocumentGetter(t,e){let r=this.serviceRegistry,n;return()=>n=n??ubt.create(t.toString(),r.getServices(t).LanguageMetaData.languageId,0,e??"")}},ybt=class{static{me(this,"DefaultLangiumDocuments")}constructor(t){this.documentMap=new Map,this.langiumDocumentFactory=t.workspace.LangiumDocumentFactory,this.serviceRegistry=t.ServiceRegistry}get all(){return Wct(this.documentMap.values())}addDocument(t){var e=t.uri.toString();if(this.documentMap.has(e))throw new Error(`A document with the URI '${e}' is already present.`);this.documentMap.set(e,t)}getDocument(t){return t=t.toString(),this.documentMap.get(t)}async getOrCreateDocument(t,e){return this.getDocument(t)||(t=await this.langiumDocumentFactory.fromUri(t,e),this.addDocument(t),t)}createDocument(t,e,r){return r?this.langiumDocumentFactory.fromString(e,t,r).then(t=>(this.addDocument(t),t)):(r=this.langiumDocumentFactory.fromString(e,t),this.addDocument(r),r)}hasDocument(t){return this.documentMap.has(t.toString())}invalidateDocument(t){var e=t.toString();return(e=this.documentMap.get(e))&&(this.serviceRegistry.getServices(t).references.Linker.unlink(e),e.state=fbt.Changed,e.precomputedScopes=void 0,e.diagnostics=void 0),e}deleteDocument(t){var t=t.toString(),e=this.documentMap.get(t);return e&&(e.state=fbt.Changed,this.documentMap.delete(t)),e}}}),Ebt=b(()=>{Vxt(),Uct(),Ndt(),ibt(),Tbt(),vbt=Symbol("ref_resolving"),xbt=class{static{me(this,"DefaultLinker")}constructor(t){this.reflection=t.shared.AstReflection,this.langiumDocuments=()=>t.shared.workspace.LangiumDocuments,this.scopeProvider=t.references.ScopeProvider,this.astNodeLocator=t.workspace.AstNodeLocator}async link(e,t=Hxt.CancellationToken.None){for(var r of Tdt(e.parseResult.value))await Jxt(t),Cdt(r).forEach(t=>this.doLink(t,e))}doLink(t,e){var r=t.reference;if(void 0===r._ref){r._ref=vbt;try{var n,i=this.getCandidate(t);Bct(i)?r._ref=i:(r._nodeDescription=i,this.langiumDocuments().hasDocument(i.documentUri)?(n=this.loadAstNode(i),r._ref=n??this.createLinkingError(t,i)):r._ref=void 0)}catch(e){console.error(`An error occurred while resolving reference to '${r.$refText}':`,e),i=null!=(n=e.message)?n:String(e),r._ref=Object.assign(Object.assign({},t),{message:`An error occurred while resolving reference to '${r.$refText}': `+i})}e.references.push(r)}}unlink(t){for(var e of t.references)delete e._ref,delete e._nodeDescription;t.references=[]}getCandidate(t){return this.scopeProvider.getScope(t).getElement(t.reference.$refText)??this.createLinkingError(t)}buildReference(n,i,t,a){let s=this,o={$refNode:t,$refText:a,get ref(){var t;if(Dct(this._ref))return this._ref;if(Pct(this._nodeDescription)){var e=s.loadAstNode(this._nodeDescription);this._ref=e??s.createLinkingError({reference:o,container:n,property:i},this._nodeDescription)}else if(void 0===this._ref){this._ref=vbt;var e=bdt(n).$document,r=s.getLinkedNode({reference:o,container:n,property:i});if(r.error&&e&&e.state{Xpt(),me(Cbt,"isNamed"),Sbt=class{static{me(this,"DefaultNameProvider")}getName(t){if(Cbt(t))return t.name}getNameNode(t){return vpt(t.$cstNode,"name")}}}),Gbt=b(()=>{Xpt(),Uct(),Ndt(),bht(),Zct(),kbt(),_bt=class{static{me(this,"DefaultReferences")}constructor(t){this.nameProvider=t.references.NameProvider,this.index=t.shared.workspace.IndexManager,this.nodeLocator=t.workspace.AstNodeLocator}findDeclaration(t){if(t){var e=Tpt(t),r=t.astNode;if(e&&r){if(Oct(e=r[e.feature]))return e.ref;if(Array.isArray(e))for(var n of e)if(Oct(n)&&n.$refNode&&n.$refNode.offset<=t.offset&&n.$refNode.end>=t.end)return n.ref}if(r&&(e=this.nameProvider.getNameNode(r))&&(e===t||eht(t,e)))return r}}findDeclarationNode(t){if((t=this.findDeclaration(t))?.$cstNode)return this.nameProvider.getNameNode(t)??t.$cstNode}findReferences(t,e){var r,n=[];e.includeDeclaration&&(r=this.getReferenceToSelf(t))&&n.push(r);let i=this.index.findAllReferences(t,this.nodeLocator.getAstNodePath(t));return e.documentUri&&(i=i.filter(t=>gbt.equals(t.sourceUri,e.documentUri))),n.push(...i),Wct(n)}getReferenceToSelf(t){var e,r=this.nameProvider.getNameNode(t);if(r)return e=xdt(t),t=this.nodeLocator.getAstNodePath(t),{sourceUri:e.uri,sourcePath:t,targetUri:e.uri,targetPath:t,segment:nht(r),local:!0}}}}),Ubt=b(()=>{Zct(),Abt=class{static{me(this,"MultiMap")}constructor(t){if(this.map=new Map,t)for(var[e,r]of t)this.add(e,r)}get size(){return Kct.sum(Wct(this.map.values()).map(t=>t.length))}clear(){this.map.clear()}delete(t,e){var r;return void 0===e?this.map.delete(t):!!((r=this.map.get(t))&&0<=(e=r.indexOf(e)))&&(1===r.length?this.map.delete(t):r.splice(e,1),!0)}get(t){return null!=(t=this.map.get(t))?t:[]}has(t,e){return void 0===e?this.map.has(t):!!(t=this.map.get(t))&&0<=t.indexOf(e)}add(t,e){return this.map.has(t)?this.map.get(t).push(e):this.map.set(t,[e]),this}addAll(t,e){return this.map.has(t)?this.map.get(t).push(...e):this.map.set(t,Array.from(e)),this}forEach(r){this.map.forEach((t,e)=>t.forEach(t=>r(t,e,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return Wct(this.map.entries()).flatMap(([e,t])=>t.map(t=>[e,t]))}keys(){return Wct(this.map.keys())}values(){return Wct(this.map.values()).flat()}entriesGroupedByKey(){return Wct(this.map.entries())}},Lbt=class{static{me(this,"BiMap")}get size(){return this.map.size}constructor(t){if(this.map=new Map,this.inverse=new Map,t)for(var[e,r]of t)this.set(e,r)}clear(){this.map.clear(),this.inverse.clear()}set(t,e){return this.map.set(t,e),this.inverse.set(e,t),this}get(t){return this.map.get(t)}getKey(t){return this.inverse.get(t)}delete(t){var e=this.map.get(t);return void 0!==e&&(this.map.delete(t),this.inverse.delete(e),!0)}}}),qbt=b(()=>{Vxt(),Ndt(),Ubt(),ibt(),Nbt=class{static{me(this,"DefaultScopeComputation")}constructor(t){this.nameProvider=t.references.NameProvider,this.descriptions=t.workspace.AstNodeDescriptionProvider}async computeExports(t,e=Hxt.CancellationToken.None){return this.computeExportsForNode(t.parseResult.value,t,void 0,e)}async computeExportsForNode(t,e,r=wdt,n=Hxt.CancellationToken.None){var i,a=[];this.exportNode(t,a,e);for(i of r(t))await Jxt(n),this.exportNode(i,a,e);return a}exportNode(t,e,r){var n=this.nameProvider.getName(t);n&&e.push(this.descriptions.createDescription(t,n,r))}async computeLocalScopes(t,e=Hxt.CancellationToken.None){var r,n=t.parseResult.value,i=new Abt;for(r of kdt(n))await Jxt(e),this.processNode(r,t,i);return i}processNode(t,e,r){var n,i=t.$container;i&&(n=this.nameProvider.getName(t))&&r.add(i,this.descriptions.createDescription(t,n,e))}}}),jbt=b(()=>{Zct(),Ibt=class{static{me(this,"StreamScope")}constructor(t,e,r){this.elements=t,this.outerScope=e,this.caseInsensitive=null!=(t=r?.caseInsensitive)&&t}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){return(this.caseInsensitive?this.elements.find(t=>t.name.toLowerCase()===e.toLowerCase()):this.elements.find(t=>t.name===e))||(this.outerScope?this.outerScope.getElement(e):void 0)}},Rbt=class{static{me(this,"MapScope")}constructor(t,e,r){var n;this.elements=new Map,this.caseInsensitive=null!=(r=r?.caseInsensitive)&&r;for(n of t){var i=this.caseInsensitive?n.name.toLowerCase():n.name;this.elements.set(i,n)}this.outerScope=e}getElement(t){var e=this.caseInsensitive?t.toLowerCase():t;return this.elements.get(e)||(this.outerScope?this.outerScope.getElement(t):void 0)}getAllElements(){let t=Wct(this.elements.values());return t=this.outerScope?t.concat(this.outerScope.getAllElements()):t}},Mbt={getElement(){},getAllElements(){return Hct}}}),Wbt=b(()=>{Dbt=class{static{me(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(t){this.toDispose.push(t)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(t=>t.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},Obt=class extends Dbt{static{me(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(t){return this.throwIfDisposed(),this.cache.has(t)}set(t,e){this.throwIfDisposed(),this.cache.set(t,e)}get(t,e){return this.throwIfDisposed(),this.cache.has(t)?this.cache.get(t):e?(e=e(),this.cache.set(t,e),e):void 0}delete(t){return this.throwIfDisposed(),this.cache.delete(t)}clear(){this.throwIfDisposed(),this.cache.clear()}},Pbt=class extends Dbt{static{me(this,"ContextCache")}constructor(t){super(),this.cache=new Map,this.converter=t??(t=>t)}has(t,e){return this.throwIfDisposed(),this.cacheForContext(t).has(e)}set(t,e,r){this.throwIfDisposed(),this.cacheForContext(t).set(e,r)}get(t,e,r){return this.throwIfDisposed(),(t=this.cacheForContext(t)).has(e)?t.get(e):r?(r=r(),t.set(e,r),r):void 0}delete(t,e){return this.throwIfDisposed(),this.cacheForContext(t).delete(e)}clear(t){this.throwIfDisposed(),t?(t=this.converter(t),this.cache.delete(t)):this.cache.clear()}cacheForContext(t){let e=this.converter(t),r=this.cache.get(e);return r||(r=new Map,this.cache.set(e,r)),r}},Bbt=class extends Pbt{static{me(this,"DocumentCache")}constructor(t,e){super(t=>t.toString()),e?(this.toDispose.push(t.workspace.DocumentBuilder.onDocumentPhase(e,t=>{this.clear(t.uri.toString())})),this.toDispose.push(t.workspace.DocumentBuilder.onUpdate((t,e)=>{for(var r of e)this.clear(r)}))):this.toDispose.push(t.workspace.DocumentBuilder.onUpdate((t,e)=>{var r;for(r of t.concat(e))this.clear(r)}))}},$bt=class extends Obt{static{me(this,"WorkspaceCache")}constructor(t,e){super(),e?(this.toDispose.push(t.workspace.DocumentBuilder.onBuildPhase(e,()=>{this.clear()})),this.toDispose.push(t.workspace.DocumentBuilder.onUpdate((t,e)=>{0{this.clear()}))}}}),Ybt=b(()=>{jbt(),Ndt(),Zct(),Wbt(),Fbt=class{static{me(this,"DefaultScopeProvider")}constructor(t){this.reflection=t.shared.AstReflection,this.nameProvider=t.references.NameProvider,this.descriptions=t.workspace.AstNodeDescriptionProvider,this.indexManager=t.shared.workspace.IndexManager,this.globalScopeCache=new $bt(t.shared)}getScope(e){let r=[],n=this.reflection.getReferenceType(e),i=xdt(e.container).precomputedScopes;if(i){let t=e.container;do{var a=i.get(t);0this.reflection.isSubtype(t.type,n))),t=t.$container}while(t)}let s=this.getGlobalScope(n,e);for(let t=r.length-1;0<=t;t--)s=this.createScope(r[t],s);return s}createScope(t,e,r){return new Ibt(Wct(t),e,r)}createScopeForNodes(t,e,r){return t=Wct(t).map(t=>{var e=this.nameProvider.getName(t);if(e)return this.descriptions.createDescription(t,e)}).nonNullable(),new Ibt(t,e,r)}getGlobalScope(t,e){return this.globalScopeCache.get(t,()=>new Rbt(this.indexManager.allElements(t)))}}});function Hbt(t){return"string"==typeof t.$comment}function Vbt(t){return"object"==typeof t&&!!t&&("$ref"in t||"$error"in t)}var Xbt,Kbt,Zbt=b(()=>{wbt(),Uct(),Ndt(),Xpt(),me(Hbt,"isAstNodeWithComment"),me(Vbt,"isIntermediateReference"),Xbt=class{static{me(this,"DefaultJsonSerializer")}constructor(t){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=t.shared.workspace.LangiumDocuments,this.astNodeLocator=t.workspace.AstNodeLocator,this.nameProvider=t.references.NameProvider,this.commentProvider=t.documentation.CommentProvider}serialize(t,e){let r=e??{},n=e?.replacer,i=me((t,e)=>this.replacer(t,e,r),"defaultReplacer"),a=n?(t,e)=>n(t,e,i):i;try{return this.currentDocument=xdt(t),JSON.stringify(t,a,e?.space)}finally{this.currentDocument=void 0}}deserialize(t,e){return e=e??{},t=JSON.parse(t),this.linkNode(t,t,e),t}replacer(e,r,{refText:n,sourceText:i,textRegions:a,comments:s,uriConverter:o}){if(!this.ignoreProperties.has(e)){if(Oct(r)){var l=r.ref,n=n?r.$refText:void 0;if(l){let t=xdt(l),e="";return this.currentDocument&&this.currentDocument!==t&&(e=o?o(t.uri,r):t.uri.toString()),o=this.astNodeLocator.getAstNodePath(l),{$ref:e+"#"+o,$refText:n}}return{$error:null!=(o=null==(l=r.error)?void 0:l.message)?o:"Could not resolve reference",$refText:n}}if(Dct(r)){let t;return a&&(t=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},r)),!e||r.$document)&&t?.$textRegion&&(t.$textRegion.documentURI=null==(l=this.currentDocument)?void 0:l.uri.toString()),i&&!e&&((t=t??Object.assign({},r)).$sourceText=null==(o=r.$cstNode)?void 0:o.text),s&&(t=t??Object.assign({},r),n=this.commentProvider.getComment(r))&&(t.$comment=n.replace(/\r/g,"")),t??r}return r}}addAstNodeRegionWithAssignmentsTo(n){let i=me(t=>({offset:t.offset,end:t.end,length:t.length,range:t.range}),"createDocumentSegment");if(n.$cstNode){let t=n.$textRegion=i(n.$cstNode),r=t.assignments={};return Object.keys(n).filter(t=>!t.startsWith("$")).forEach(t=>{var e=ypt(n.$cstNode,t).map(i);0!==e.length&&(r[t]=e)}),n}}linkNode(e,r,n,t,i,a){for(var[s,o]of Object.entries(e))if(Array.isArray(o))for(let t=0;t{kbt(),Kbt=class{static{me(this,"DefaultServiceRegistry")}get map(){return this.fileExtensionMap}constructor(t){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.textDocuments=t?.workspace.TextDocuments}register(t){var e,r=t.LanguageMetaData;for(e of r.fileExtensions)this.fileExtensionMap.has(e)&&console.warn(`The file extension ${e} is used by multiple languages. It is now assigned to '${r.languageId}'.`),this.fileExtensionMap.set(e,t);this.languageIdMap.set(r.languageId,t),1===this.languageIdMap.size?this.singleton=t:this.singleton=void 0}getServices(t){if(void 0!==this.singleton)return this.singleton;if(0===this.languageIdMap.size)throw new Error("The service registry is empty. Use `register` to register the services of a language.");var e=null==(e=null==(e=this.textDocuments)?void 0:e.get(t))?void 0:e.languageId;if(void 0!==e){var r=this.languageIdMap.get(e);if(r)return r}if(r=gbt.extname(t),t=this.fileExtensionMap.get(r))return t;throw e?new Error(`The service registry contains no services for the extension '${r}' for language '${e}'.`):new Error(`The service registry contains no services for the extension '${r}'.`)}hasServices(t){try{return this.getServices(t),!0}catch{return!1}}get all(){return Array.from(this.languageIdMap.values())}}});function Jbt(t){return{code:t}}var t4t,e4t,r4t=b(()=>{n3t(),Ubt(),ibt(),Zct(),me(Jbt,"diagnosticData"),(t4t=t4t||{}).all=["fast","slow","built-in"],e4t=class{static{me(this,"ValidationRegistry")}constructor(t){this.entries=new Abt,this.entriesBefore=[],this.entriesAfter=[],this.reflection=t.shared.AstReflection}register(t,e=this,r="fast"){if("built-in"===r)throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");for(var[n,i]of Object.entries(t))if(Array.isArray(i))for(var a of i)a={check:this.wrapValidationException(a,e),category:r},this.addEntry(n,a);else"function"==typeof i?(i={check:this.wrapValidationException(i,e),category:r},this.addEntry(n,i)):wht()}wrapValidationException(n,i){return async(t,e,r)=>{await this.handleException(()=>n.call(i,t,e,r),"An error occurred during validation",e,t)}}async handleException(t,e,r,n){try{await t()}catch(t){if(Qxt(t))throw t;console.error(e+":",t),t instanceof Error&&t.stack&&console.error(t.stack),r("error",e+": "+(t instanceof Error?t.message:String(t)),{node:n})}}addEntry(t,e){if("AstNode"===t)this.entries.add("AstNode",e);else for(var r of this.reflection.getAllSubTypes(t))this.entries.add(r,e)}getChecks(t,e){let r=Wct(this.entries.get(t)).concat(this.entries.get("AstNode"));return(r=e?r.filter(t=>e.includes(t.category)):r).map(t=>t.check)}registerBeforeDocument(t,e=this){this.entriesBefore.push(this.wrapPreparationException(t,"An error occurred during set-up of the validation",e))}registerAfterDocument(t,e=this){this.entriesAfter.push(this.wrapPreparationException(t,"An error occurred during tear-down of the validation",e))}wrapPreparationException(i,a,s){return async(t,e,r,n)=>{await this.handleException(()=>i.call(s,t,e,r,n),a,e,t)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}}});function n4t(t){if(t.range)return t.range;let e;return"string"==typeof t.property?e=vpt(t.node.$cstNode,t.property,t.index):"string"==typeof t.keyword&&(e=wpt(t.node.$cstNode,t.keyword,t.index)),(e=e??t.node.$cstNode)?e.range:{start:{line:0,character:0},end:{line:0,character:0}}}function i4t(t){switch(t){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+t)}}function a4t(t){switch(t){case"error":return Jbt(o4t.LexingError);case"warning":return Jbt(o4t.LexingWarning);case"info":return Jbt(o4t.LexingInfo);case"hint":return Jbt(o4t.LexingHint);default:throw new Error("Invalid diagnostic severity: "+t)}}var s4t,o4t,l4t,c4t,h4t,u4t,d4t,p4t,g4t,f4t,m4t=b(()=>{var t;Vxt(),Xpt(),Ndt(),bht(),ibt(),r4t(),s4t=class{static{me(this,"DefaultDocumentValidator")}constructor(t){this.validationRegistry=t.validation.ValidationRegistry,this.metadata=t.LanguageMetaData}async validateDocument(t,e={},r=Hxt.CancellationToken.None){var n=t.parseResult,i=[];if(await Jxt(r),e.categories&&!e.categories.includes("built-in")||(this.processLexingErrors(n,i,e),!(e.stopAfterLexingErrors&&i.some(t=>(null==(t=t.data)?void 0:t.code)===o4t.LexingError)||(this.processParsingErrors(n,i,e),e.stopAfterParsingErrors&&i.some(t=>(null==(t=t.data)?void 0:t.code)===o4t.ParsingError))||(this.processLinkingErrors(t,i,e),e.stopAfterLinkingErrors&&i.some(t=>(null==(t=t.data)?void 0:t.code)===o4t.LinkingError))))){try{i.push(...await this.validateAst(n.value,e,r))}catch(t){if(Qxt(t))throw t;console.error("An error occurred during validation:",t)}await Jxt(r)}return i}processLexingErrors(t,e,r){var n;for(n of[...t.lexerErrors,...null!=(t=null==(t=t.lexerReport)?void 0:t.diagnostics)?t:[]]){var i={severity:i4t(i=null!=(i=n.severity)?i:"error"),range:{start:{line:n.line-1,character:n.column-1},end:{line:n.line-1,character:n.column+n.length-1}},message:n.message,data:a4t(i),source:this.getSource()};e.push(i)}}processParsingErrors(t,e,r){for(var n of t.parserErrors){let t;var i,a;isNaN(n.token.startOffset)?"previousToken"in n&&(a=n.previousToken,t=isNaN(a.startOffset)?{start:i={line:0,character:0},end:i}:{start:i={line:a.endLine-1,character:a.endColumn},end:i}):t=rht(n.token),t&&(a={severity:i4t("error"),range:t,message:n.message,data:Jbt(o4t.ParsingError),source:this.getSource()},e.push(a))}}processLinkingErrors(t,e,r){for(var n of t.references){var i;(n=n.error)&&(i={node:n.container,property:n.property,index:n.index,data:{code:o4t.LinkingError,containerType:n.container.$type,property:n.property,refText:n.reference.$refText}},e.push(this.toDiagnostic("error",n.message,i)))}}async validateAst(t,e,r=Hxt.CancellationToken.None){let n=[],i=me((t,e,r)=>{n.push(this.toDiagnostic(t,e,r))},"acceptor");return await this.validateAstBefore(t,e,i,r),await this.validateAstNodes(t,e,i,r),await this.validateAstAfter(t,e,i,r),n}async validateAstBefore(t,e,r,n=Hxt.CancellationToken.None){var i,a;for(a of this.validationRegistry.checksBefore)await Jxt(n),await a(t,r,null!=(i=e.categories)?i:[],n)}async validateAstNodes(t,r,n,i=Hxt.CancellationToken.None){await Promise.all(Tdt(t).map(async t=>{var e;await Jxt(i);for(e of this.validationRegistry.getChecks(t.$type,r.categories))await e(t,n,i)}))}async validateAstAfter(t,e,r,n=Hxt.CancellationToken.None){var i,a;for(a of this.validationRegistry.checksAfter)await Jxt(n),await a(t,r,null!=(i=e.categories)?i:[],n)}toDiagnostic(t,e,r){return{message:e,range:n4t(r),severity:i4t(t),code:r.code,codeDescription:r.codeDescription,tags:r.tags,relatedInformation:r.relatedInformation,data:r.data,source:this.getSource()}}getSource(){return this.metadata.languageId}},me(n4t,"getDiagnosticRange"),me(i4t,"toDiagnosticSeverity"),me(a4t,"toDiagnosticData"),(t=o4t=o4t||{}).LexingError="lexing-error",t.LexingWarning="lexing-warning",t.LexingInfo="lexing-info",t.LexingHint="lexing-hint",t.ParsingError="parsing-error",t.LinkingError="linking-error"}),y4t=b(()=>{Vxt(),Uct(),Ndt(),bht(),ibt(),kbt(),l4t=class{static{me(this,"DefaultAstNodeDescriptionProvider")}constructor(t){this.astNodeLocator=t.workspace.AstNodeLocator,this.nameProvider=t.references.NameProvider}createDescription(e,t,r){var r=r??xdt(e),n=(t=t??this.nameProvider.getName(e),this.astNodeLocator.getAstNodePath(e));if(!t)throw new Error(`Node at path ${n} has no name.`);let i,a=me(()=>{var t;return i=i??nht(null!=(t=this.nameProvider.getNameNode(e))?t:e.$cstNode)},"nameSegmentGetter");return{node:e,name:t,get nameSegment(){return a()},selectionSegment:nht(e.$cstNode),type:e.$type,documentUri:r.uri,path:n}}},c4t=class{static{me(this,"DefaultReferenceDescriptionProvider")}constructor(t){this.nodeLocator=t.workspace.AstNodeLocator}async createDescriptions(t,e=Hxt.CancellationToken.None){let r=[],n=t.parseResult.value;for(var i of Tdt(n))await Jxt(e),Cdt(i).filter(t=>!Bct(t)).forEach(t=>{(t=this.createDescription(t))&&r.push(t)});return r}createDescription(t){var e,r=t.reference.$nodeDescription,n=t.reference.$refNode;if(r&&n)return{sourceUri:e=xdt(t.container).uri,sourcePath:this.nodeLocator.getAstNodePath(t.container),targetUri:r.documentUri,targetPath:r.path,segment:nht(n),local:gbt.equals(r.documentUri,e)}}}}),v4t=b(()=>{h4t=class{static{me(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(t){var e;return t.$container?(e=this.getAstNodePath(t.$container),t=this.getPathSegment(t),e+this.segmentSeparator+t):""}getPathSegment({$containerProperty:t,$containerIndex:e}){if(t)return void 0!==e?t+this.indexSeparator+e:t;throw new Error("Missing '$containerProperty' in AST node.")}getAstNode(t,e){return e.split(this.segmentSeparator).reduce((t,e)=>{var r,n;return t&&0!==e.length?0<(n=e.indexOf(this.indexSeparator))?(r=e.substring(0,n),n=parseInt(e.substring(n+1)),t[r]?.[n]):t[e]:t},t)}}}),x4t={},b4t=b(()=>{U(x4t,q(Wxt(),1))}),w4t=b(()=>{b4t(),ibt(),u4t=class{static{me(this,"DefaultConfigurationProvider")}constructor(t){this._ready=new nbt,this.settings={},this.workspaceConfig=!1,this.onConfigurationSectionUpdateEmitter=new x4t.Emitter,this.serviceRegistry=t.ServiceRegistry}get ready(){return this._ready.promise}initialize(t){this.workspaceConfig=null!=(t=null==(t=t.capabilities.workspace)?void 0:t.configuration)&&t}async initialized(e){var t;if(this.workspaceConfig&&(e.register&&(t=this.serviceRegistry.all,e.register({section:t.map(t=>this.toSectionName(t.LanguageMetaData.languageId))})),e.fetchConfiguration)){let t=this.serviceRegistry.all.map(t=>({section:this.toSectionName(t.LanguageMetaData.languageId)})),r=await e.fetchConfiguration(t);t.forEach((t,e)=>{this.updateSectionConfiguration(t.section,r[e])})}this._ready.resolve()}updateConfiguration(r){r.settings&&Object.keys(r.settings).forEach(t=>{var e=r.settings[t];this.updateSectionConfiguration(t,e),this.onConfigurationSectionUpdateEmitter.fire({section:t,configuration:e})})}updateSectionConfiguration(t,e){this.settings[t]=e}async getConfiguration(t,e){if(await this.ready,t=this.toSectionName(t),this.settings[t])return this.settings[t][e]}toSectionName(t){return""+t}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}}}),k4t=b(()=>{function t(t){return{dispose:me(async()=>t(),"dispose")}}var e=d4t=d4t||{};me(t,"create"),e.create=t}),T4t=b(()=>{Vxt(),k4t(),Ubt(),ibt(),Zct(),r4t(),Tbt(),p4t=class{static{me(this,"DefaultDocumentBuilder")}constructor(t){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new Abt,this.documentPhaseListeners=new Abt,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=fbt.Changed,this.langiumDocuments=t.workspace.LangiumDocuments,this.langiumDocumentFactory=t.workspace.LangiumDocumentFactory,this.textDocuments=t.workspace.TextDocuments,this.indexManager=t.workspace.IndexManager,this.serviceRegistry=t.ServiceRegistry}async build(t,r={},e=Hxt.CancellationToken.None){var n;for(n of t){var i,a=n.uri.toString();if(n.state===fbt.Validated){if("boolean"==typeof r.validation&&r.validation)n.state=fbt.IndexedReferences,n.diagnostics=void 0,this.buildState.delete(a);else if("object"==typeof r.validation){let t=this.buildState.get(a),e=null==(i=t?.result)?void 0:i.validationChecks;e&&0<(i=(null!=(i=r.validation.categories)?i:t4t.all).filter(t=>!e.includes(t))).length&&(this.buildState.set(a,{completed:!1,options:{validation:Object.assign(Object.assign({},r.validation),{categories:i})},result:t.result}),n.state=fbt.IndexedReferences)}}else this.buildState.delete(a)}this.currentState=fbt.Changed,await this.emitUpdate(t.map(t=>t.uri),[]),await this.buildDocuments(t,r,e)}async update(t,e,r=Hxt.CancellationToken.None){this.currentState=fbt.Changed;for(var n of e)this.langiumDocuments.deleteDocument(n),this.buildState.delete(n.toString()),this.indexManager.remove(n);for(var i of t){var a;this.langiumDocuments.invalidateDocument(i)||((a=this.langiumDocumentFactory.fromModel({$type:"INVALID"},i)).state=fbt.Changed,this.langiumDocuments.addDocument(a)),this.buildState.delete(i.toString())}let s=Wct(t).concat(e).map(t=>t.toString()).toSet();this.langiumDocuments.all.filter(t=>!s.has(t.uri.toString())&&this.shouldRelink(t,s)).forEach(t=>{this.serviceRegistry.getServices(t.uri).references.Linker.unlink(t),t.state=Math.min(t.state,fbt.ComputedScopes),t.diagnostics=void 0}),await this.emitUpdate(t,e),await Jxt(r),t=this.sortDocuments(this.langiumDocuments.all.filter(t=>t.statet(e,r)))}sortDocuments(t){let e=0,r=t.length-1;for(;evoid 0!==t.error)||this.indexManager.isAffected(t,e)}onUpdate(e){return this.updateListeners.push(e),d4t.create(()=>{var t=this.updateListeners.indexOf(e);0<=t&&this.updateListeners.splice(t,1)})}async buildDocuments(t,e,r){this.prepareBuild(t,e),await this.runCancelable(t,fbt.Parsed,r,t=>this.langiumDocumentFactory.update(t,r)),await this.runCancelable(t,fbt.IndexedContent,r,t=>this.indexManager.updateContent(t,r)),await this.runCancelable(t,fbt.ComputedScopes,r,async t=>{var e=this.serviceRegistry.getServices(t.uri).references.ScopeComputation;t.precomputedScopes=await e.computeLocalScopes(t,r)}),await this.runCancelable(t,fbt.Linked,r,t=>this.serviceRegistry.getServices(t.uri).references.Linker.link(t,r)),await this.runCancelable(t,fbt.IndexedReferences,r,t=>this.indexManager.updateReferences(t,r));var n,e=t.filter(t=>this.shouldValidate(t));await this.runCancelable(e,fbt.Validated,r,t=>this.validate(t,r));for(n of t){var i=this.buildState.get(n.uri.toString());i&&(i.completed=!0)}}prepareBuild(t,e){for(var r of t){var r=r.uri.toString(),n=this.buildState.get(r);n&&!n.completed||this.buildState.set(r,{completed:!1,options:e,result:n?.result})}}async runCancelable(t,e,r,n){var i;for(i of t.filter(t=>t.statet.state===e),await this.notifyBuildPhase(t,e,r),this.currentState=e}onBuildPhase(t,e){return this.buildPhaseListeners.add(t,e),d4t.create(()=>{this.buildPhaseListeners.delete(t,e)})}onDocumentPhase(t,e){return this.documentPhaseListeners.add(t,e),d4t.create(()=>{this.documentPhaseListeners.delete(t,e)})}waitUntil(i,t,a){let s;return t&&"path"in t?s=t:a=t,a=a??Hxt.CancellationToken.None,s&&(t=this.langiumDocuments.getDocument(s))&&t.state>i?Promise.resolve(s):this.currentState>=i?Promise.resolve(void 0):a.isCancellationRequested?Promise.reject(rbt):new Promise((e,t)=>{let r=this.onBuildPhase(i,()=>{var t;r.dispose(),n.dispose(),s?(t=this.langiumDocuments.getDocument(s),e(t?.uri)):e(void 0)}),n=a.onCancellationRequested(()=>{r.dispose(),n.dispose(),t(rbt)})})}async notifyDocumentPhase(t,e,r){var n;for(n of this.documentPhaseListeners.get(e).slice())try{await n(t,r)}catch(t){if(!Qxt(t))throw t}}async notifyBuildPhase(t,e,r){var n;if(0!==t.length)for(n of this.buildPhaseListeners.get(e).slice())await Jxt(r),await n(t,r)}shouldValidate(t){return!!this.getBuildOptions(t).validation}async validate(t,e){var r=this.serviceRegistry.getServices(t.uri).validation.DocumentValidator,n=this.getBuildOptions(t).validation,r=await r.validateDocument(t,n="object"==typeof n?n:void 0,e);t.diagnostics?t.diagnostics.push(...r):t.diagnostics=r,(e=this.buildState.get(t.uri.toString()))&&(null==e.result&&(e.result={}),t=null!=(r=n?.categories)?r:t4t.all,e.result.validationChecks?e.result.validationChecks.push(...t):e.result.validationChecks=[...t])}getBuildOptions(t){return null!=(t=null==(t=this.buildState.get(t.uri.toString()))?void 0:t.options)?t:{}}}}),E4t=b(()=>{Ndt(),Wbt(),Vxt(),Zct(),kbt(),g4t=class{static{me(this,"DefaultIndexManager")}constructor(t){this.symbolIndex=new Map,this.symbolByTypeIndex=new Pbt,this.referenceIndex=new Map,this.documents=t.workspace.LangiumDocuments,this.serviceRegistry=t.ServiceRegistry,this.astReflection=t.AstReflection}findAllReferences(t,e){let r=xdt(t).uri,n=[];return this.referenceIndex.forEach(t=>{t.forEach(t=>{gbt.equals(t.targetUri,r)&&t.targetPath===e&&n.push(t)})}),Wct(n)}allElements(e,r){let t=Wct(this.symbolIndex.keys());return(t=r?t.filter(t=>!r||r.has(t)):t).map(t=>this.getFileDescriptions(t,e)).flat()}getFileDescriptions(e,r){var t;return r?this.symbolByTypeIndex.get(e,r,()=>{var t;return(null!=(t=this.symbolIndex.get(e))?t:[]).filter(t=>this.astReflection.isSubtype(t.type,r))}):null!=(t=this.symbolIndex.get(e))?t:[]}remove(t){t=t.toString(),this.symbolIndex.delete(t),this.symbolByTypeIndex.clear(t),this.referenceIndex.delete(t)}async updateContent(t,e=Hxt.CancellationToken.None){e=await this.serviceRegistry.getServices(t.uri).references.ScopeComputation.computeExports(t,e),t=t.uri.toString(),this.symbolIndex.set(t,e),this.symbolByTypeIndex.clear(t)}async updateReferences(t,e=Hxt.CancellationToken.None){e=await this.serviceRegistry.getServices(t.uri).workspace.ReferenceDescriptionProvider.createDescriptions(t,e),this.referenceIndex.set(t.uri.toString(),e)}isAffected(t,e){return!!(t=this.referenceIndex.get(t.uri.toString()))&&t.some(t=>!t.local&&e.has(t.targetUri.toString()))}}}),C4t=b(()=>{Vxt(),ibt(),kbt(),f4t=class{static{me(this,"DefaultWorkspaceManager")}constructor(t){this.initialBuildOptions={},this._ready=new nbt,this.serviceRegistry=t.ServiceRegistry,this.langiumDocuments=t.workspace.LangiumDocuments,this.documentBuilder=t.workspace.DocumentBuilder,this.fileSystemProvider=t.workspace.FileSystemProvider,this.mutex=t.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(t){this.folders=null!=(t=t.workspaceFolders)?t:void 0}initialized(t){return this.mutex.write(t=>{var e;return this.initializeWorkspace(null!=(e=this.folders)?e:[],t)})}async initializeWorkspace(t,e=Hxt.CancellationToken.None){t=await this.performStartup(t),await Jxt(e),await this.documentBuilder.build(t,this.initialBuildOptions,e)}async performStartup(t){let e=this.serviceRegistry.all.flatMap(t=>t.LanguageMetaData.fileExtensions),r=[],n=me(t=>{r.push(t),this.langiumDocuments.hasDocument(t.uri)||this.langiumDocuments.addDocument(t)},"collector");return await this.loadAdditionalDocuments(t,n),await Promise.all(t.map(t=>[t,this.getRootFolder(t)]).map(async t=>this.traverseFolder(...t,e,n))),this._ready.resolve(),r}loadAdditionalDocuments(t,e){return Promise.resolve()}getRootFolder(t){return dbt.parse(t.uri)}async traverseFolder(e,t,r,n){t=await this.fileSystemProvider.readDirectory(t),await Promise.all(t.map(async t=>{this.includeEntry(e,t,r)&&(t.isDirectory?await this.traverseFolder(e,t.uri,r,n):t.isFile&&(t=await this.langiumDocuments.getOrCreateDocument(t.uri),n(t)))}))}includeEntry(t,e,r){var n=gbt.basename(e.uri);return!n.startsWith(".")&&(e.isDirectory?"node_modules"!==n&&"out"!==n:!!e.isFile&&(n=gbt.extname(e.uri),r.includes(n)))}}});function S4t(t){return Array.isArray(t)&&(0===t.length||"name"in t[0])}function _4t(t){return t&&"modes"in t&&"defaultMode"in t}function A4t(t){return!S4t(t)&&!_4t(t)}var L4t,N4t,I4t,R4t=b(()=>{iyt(),L4t=class{static{me(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(t,e,r,n,i){return s1t.buildUnexpectedCharactersMessage(t,e,r,n,i)}buildUnableToPopLexerModeMessage(t){return s1t.buildUnableToPopLexerModeMessage(t)}},N4t={mode:"full"},I4t=class{static{me(this,"DefaultLexer")}constructor(t){this.errorMessageProvider=t.parser.LexerErrorMessageProvider,this.tokenBuilder=t.parser.TokenBuilder;var e=this.tokenBuilder.buildTokens(t.Grammar,{caseInsensitive:t.LanguageMetaData.caseInsensitive}),e=(this.tokenTypes=this.toTokenTypeDictionary(e),A4t(e)?Object.values(e):e),t="production"===t.LanguageMetaData.mode;this.chevrotainLexer=new c1t(e,{positionTracking:"full",skipValidations:t,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(t,e=0){var r,n=this.chevrotainLexer.tokenize(t);return{tokens:n.tokens,errors:n.errors,hidden:null!=(n=n.groups.hidden)?n:[],report:null==(r=(n=this.tokenBuilder).flushLexingReport)?void 0:r.call(n,t)}}toTokenTypeDictionary(t){if(A4t(t))return t;let e=_4t(t)?Object.values(t.modes).flat():t,r={};return e.forEach(t=>r[t.name]=t),r}},me(S4t,"isTokenTypeArray"),me(_4t,"isIMultiModeLexerDefinition"),me(A4t,"isTokenTypeDictionary")});function M4t(t,e,r){let n,i;return n="string"==typeof t?(i=e,r):(i=t.range.start,e),i=i||A2t.create(0,0),r=O4t(t),e=H4t(n),z4t({index:0,tokens:P4t({lines:r,position:i,options:e}),position:i})}function D4t(t,e){var r,n,e=H4t(e);return 0!==(t=O4t(t)).length&&(r=t[t.length-1],n=e.start,e=e.end,!!n?.exec(t[0]))&&!!e?.exec(r)}function O4t(t){return("string"==typeof t?t:t.text).split(ipt)}function P4t(a){let s,o,l,c=[],h=a.position.line,u=a.position.character;for(let i=0;i=r.length?0{rxt(),cpt(),kbt(),me(M4t,"parseJSDoc"),me(D4t,"isJSDoc"),me(O4t,"getLines"),Q4t=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,J4t=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu,me(P4t,"tokenize"),me(B4t,"buildInlineTokens"),t5t=/\S/,e5t=/\s*$/,me($4t,"skipWhitespace"),me(F4t,"lastCharacter"),me(z4t,"parseJSDocComment"),me(G4t,"parseJSDocElement"),me(U4t,"appendEmptyLine"),me(q4t,"parseJSDocText"),me(j4t,"parseJSDocInline"),me(W4t,"parseJSDocTag"),me(Y4t,"parseJSDocLine"),me(H4t,"normalizeOptions"),me(V4t,"normalizeOption"),r5t=class{static{me(this,"JSDocCommentImpl")}constructor(t,e){this.elements=t,this.range=e}getTag(e){return this.getAllTags().find(t=>t.name===e)}getTags(e){return this.getAllTags().filter(t=>t.name===e)}getAllTags(){return this.elements.filter(t=>"name"in t)}toString(){let t="";for(var e of this.elements)0===t.length?t=e.toString():(e=e.toString(),t+=Z4t(t)+e);return t.trim()}toMarkdown(t){let e="";for(var r of this.elements)0===e.length?e=r.toMarkdown(t):(r=r.toMarkdown(t),e+=Z4t(e)+r);return e.trim()}},n5t=class{static{me(this,"JSDocTagImpl")}constructor(t,e,r,n){this.name=t,this.content=e,this.inline=r,this.range=n}toString(){let t="@"+this.name,e=this.content.toString();return 1===this.content.inlines.length?t=t+" "+e:1r.range.start.line&&(e+=` +`)}return e}toMarkdown(e){let r="";for(let t=0;tn.range.start.line&&(r+=` +`)}return r}},a5t=class{static{me(this,"JSDocLineImpl")}constructor(t,e){this.text=t,this.range=e}toString(){return this.text}toMarkdown(){return this.text}},me(Z4t,"fillNewlines")}),g5t=b(()=>{Ndt(),p5t(),s5t=class{static{me(this,"JSDocDocumentationProvider")}constructor(t){this.indexManager=t.shared.workspace.IndexManager,this.commentProvider=t.documentation.CommentProvider}getDocumentation(r){var t=this.commentProvider.getComment(r);if(t&&D4t(t))return M4t(t).toMarkdown({renderLink:me((t,e)=>this.documentationLinkRenderer(r,t,e),"renderLink"),renderTag:me(t=>this.documentationTagRenderer(r,t),"renderTag")})}documentationLinkRenderer(t,e,r){var n=null!=(n=this.findNameInPrecomputedScopes(t,e))?n:this.findNameInGlobalScope(t,e);return n&&n.nameSegment?(t=n.nameSegment.range.start.line+1,e=n.nameSegment.range.start.character+1,`[${r}](${n.documentUri.with({fragment:`L${t},`+e}).toString()})`):void 0}documentationTagRenderer(t,e){}findNameInPrecomputedScopes(e,r){var n=xdt(e).precomputedScopes;if(n){let t=e;do{var i=n.get(t).find(t=>t.name===r);if(i)return i}while(t=t.$container)}}findNameInGlobalScope(t,e){return this.indexManager.allElements().find(t=>t.name===e)}}}),f5t=b(()=>{Zbt(),bht(),o5t=class{static{me(this,"DefaultCommentProvider")}constructor(t){this.grammarConfig=()=>t.parser.GrammarConfig}getComment(t){return Hbt(t)?t.$comment:null==(t=oht(t.$cstNode,this.grammarConfig().multilineCommentRules))?void 0:t.text}}}),m5t=b(()=>{ibt(),b4t(),l5t=class{static{me(this,"DefaultAsyncParser")}constructor(t){this.syncParser=t.parser.LangiumParser}parse(t,e){return Promise.resolve(this.syncParser.parse(t))}},c5t=class{static{me(this,"AbstractThreadedAsyncParser")}constructor(t){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=t.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length{var t;0{i=setTimeout(()=>{this.terminateWorker(r)},this.terminationDelay)});return r.parse(t).then(t=>{t=this.hydrator.hydrate(t),n.resolve(t)}).catch(t=>{n.reject(t)}).finally(()=>{a.dispose(),clearTimeout(i)}),n.promise}terminateWorker(t){t.terminate(),0<=(t=this.workerPool.indexOf(t))&&this.workerPool.splice(t,1)}async acquireParserWorker(t){this.initializeWorkers();for(var e of this.workerPool)if(e.ready)return e.lock(),e;let r=new nbt;return t.onCancellationRequested(()=>{var t=this.queue.indexOf(r);0<=t&&this.queue.splice(t,1),r.reject(rbt)}),this.queue.push(r),r.promise}},h5t=class{static{me(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(t,e,r,n){this.onReadyEmitter=new x4t.Emitter,this.deferred=new nbt,this._ready=!0,this._parsing=!1,this.sendMessage=t,this._terminate=n,e(t=>{this.deferred.resolve(t),this.unlock()}),r(t=>{this.deferred.reject(t),this.unlock()})}terminate(){this.deferred.reject(rbt),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(t){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new nbt,this.sendMessage(t),this.deferred.promise}}}),y5t=b(()=>{Vxt(),ibt(),u5t=class{static{me(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new Hxt.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(t){this.cancelWrite();var e=Kxt();return this.previousTokenSource=e,this.enqueue(this.writeQueue,t,e.token)}read(t){return this.enqueue(this.readQueue,t)}enqueue(t,e,r=Hxt.CancellationToken.None){var n=new nbt;return t.push({action:e,deferred:n,cancellationToken:r}),this.performNextOperation(),n.promise}async performNextOperation(){if(this.done){var t=[];if(0{try{var n=await Promise.resolve().then(()=>t(r));e.resolve(n)}catch(t){Qxt(t)?e.resolve(void 0):e.reject(t)}})),this.done=!0,this.performNextOperation()}}cancelWrite(){this.previousTokenSource.cancel()}}}),v5t=b(()=>{nxt(),gdt(),Uct(),Ndt(),Ubt(),bht(),d5t=class{static{me(this,"DefaultHydrator")}constructor(t){this.grammarElementIdMap=new Lbt,this.tokenTypeIdMap=new Lbt,this.grammar=t.Grammar,this.lexer=t.parser.Lexer,this.linker=t.references.Linker}dehydrate(t){return{lexerErrors:t.lexerErrors,lexerReport:t.lexerReport?this.dehydrateLexerReport(t.lexerReport):void 0,parserErrors:t.parserErrors.map(t=>Object.assign(Object.assign({},t),{message:t.message})),value:this.dehydrateAstNode(t.value,this.createDehyrationContext(t.value))}}dehydrateLexerReport(t){return t}createDehyrationContext(t){var e,r=new Map,n=new Map;for(e of Tdt(t))r.set(e,{});if(t.$cstNode)for(var i of Jct(t.$cstNode))n.set(i,{});return{astNodes:r,cstNodes:n}}dehydrateAstNode(t,e){var r,n,i=e.astNodes.get(t);i.$type=t.$type,i.$containerIndex=t.$containerIndex,i.$containerProperty=t.$containerProperty,void 0!==t.$cstNode&&(i.$cstNode=this.dehydrateCstNode(t.$cstNode,e));for([r,n]of Object.entries(t))if(!r.startsWith("$"))if(Array.isArray(n)){var a,s=[];i[r]=s;for(a of n)Dct(a)?s.push(this.dehydrateAstNode(a,e)):Oct(a)?s.push(this.dehydrateReference(a,e)):s.push(a)}else Dct(n)?i[r]=this.dehydrateAstNode(n,e):Oct(n)?i[r]=this.dehydrateReference(n,e):void 0!==n&&(i[r]=n);return i}dehydrateReference(t,e){var r={};return r.$refText=t.$refText,t.$refNode&&(r.$refNode=e.cstNodes.get(t.$refNode)),r}dehydrateCstNode(t,e){var r=e.cstNodes.get(t);return zct(t)?r.fullText=t.fullText:r.grammarSource=this.getGrammarElementId(t.grammarSource),r.hidden=t.hidden,r.astNode=e.astNodes.get(t.astNode),$ct(t)?r.content=t.content.map(t=>this.dehydrateCstNode(t,e)):Fct(t)&&(r.tokenType=t.tokenType.name,r.offset=t.offset,r.length=t.length,r.startLine=t.range.start.line,r.startColumn=t.range.start.character,r.endLine=t.range.end.line,r.endColumn=t.range.end.character),r}hydrate(t){var e=t.value,r=this.createHydrationContext(e);return"$cstNode"in e&&this.hydrateCstNode(e.$cstNode,r),{lexerErrors:t.lexerErrors,lexerReport:t.lexerReport,parserErrors:t.parserErrors,value:this.hydrateAstNode(e,r)}}createHydrationContext(t){var e,r=new Map,n=new Map;for(e of Tdt(t))r.set(e,{});let i;if(t.$cstNode)for(var a of Jct(t.$cstNode)){let t;"fullText"in a?(t=new Jvt(a.fullText),i=t):"content"in a?t=new Zvt:"tokenType"in a&&(t=this.hydrateCstLeafNode(a)),t&&(n.set(a,t),t.root=i)}return{astNodes:r,cstNodes:n}}hydrateAstNode(t,e){var r,n,i=e.astNodes.get(t);i.$type=t.$type,i.$containerIndex=t.$containerIndex,i.$containerProperty=t.$containerProperty,t.$cstNode&&(i.$cstNode=e.cstNodes.get(t.$cstNode));for([r,n]of Object.entries(t))if(!r.startsWith("$"))if(Array.isArray(n)){var a,s=[];i[r]=s;for(a of n)Dct(a)?s.push(this.setParent(this.hydrateAstNode(a,e),i)):Oct(a)?s.push(this.hydrateReference(a,i,r,e)):s.push(a)}else Dct(n)?i[r]=this.setParent(this.hydrateAstNode(n,e),i):Oct(n)?i[r]=this.hydrateReference(n,i,r,e):void 0!==n&&(i[r]=n);return i}setParent(t,e){return t.$container=e,t}hydrateReference(t,e,r,n){return this.linker.buildReference(e,r,n.cstNodes.get(t.$refNode),t.$refText)}hydrateCstNode(t,e,r=0){var n=e.cstNodes.get(t);if("number"==typeof t.grammarSource&&(n.grammarSource=this.getGrammarElement(t.grammarSource)),n.astNode=e.astNodes.get(t.astNode),$ct(n))for(var i of t.content)i=this.hydrateCstNode(i,e,r++),n.content.push(i);return n}hydrateCstLeafNode(t){var e=this.getTokenType(t.tokenType),r=t.offset;return new Kvt(r,t.length,{start:{line:t.startLine,character:t.startColumn},end:{line:t.endLine,character:t.endColumn}},e,t.hidden)}getTokenType(t){return this.lexer.definition[t]}getGrammarElementId(t){if(t)return 0===this.grammarElementIdMap.size&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(t)}getGrammarElement(t){return 0===this.grammarElementIdMap.size&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(t)}createGrammarElementIdMap(){let t=0;for(var e of Tdt(this.grammar))Rht(e)&&this.grammarElementIdMap.set(e,t++)}}});function x5t(t){return{documentation:{CommentProvider:me(t=>new o5t(t),"CommentProvider"),DocumentationProvider:me(t=>new s5t(t),"DocumentationProvider")},parser:{AsyncParser:me(t=>new l5t(t),"AsyncParser"),GrammarConfig:me(t=>Kpt(t),"GrammarConfig"),LangiumParser:me(t=>Oxt(t),"LangiumParser"),CompletionParser:me(t=>Mxt(t),"CompletionParser"),ValueConverter:me(()=>new $xt,"ValueConverter"),TokenBuilder:me(()=>new Bxt,"TokenBuilder"),Lexer:me(t=>new I4t(t),"Lexer"),ParserErrorMessageProvider:me(()=>new hxt,"ParserErrorMessageProvider"),LexerErrorMessageProvider:me(()=>new L4t,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:me(()=>new h4t,"AstNodeLocator"),AstNodeDescriptionProvider:me(t=>new l4t(t),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:me(t=>new c4t(t),"ReferenceDescriptionProvider")},references:{Linker:me(t=>new xbt(t),"Linker"),NameProvider:me(()=>new Sbt,"NameProvider"),ScopeProvider:me(t=>new Fbt(t),"ScopeProvider"),ScopeComputation:me(t=>new Nbt(t),"ScopeComputation"),References:me(t=>new _bt(t),"References")},serializer:{Hydrator:me(t=>new d5t(t),"Hydrator"),JsonSerializer:me(t=>new Xbt(t),"JsonSerializer")},validation:{DocumentValidator:me(t=>new s4t(t),"DocumentValidator"),ValidationRegistry:me(t=>new e4t(t),"ValidationRegistry")},shared:me(()=>t.shared,"shared")}}function b5t(e){return{ServiceRegistry:me(t=>new Kbt(t),"ServiceRegistry"),workspace:{LangiumDocuments:me(t=>new ybt(t),"LangiumDocuments"),LangiumDocumentFactory:me(t=>new mbt(t),"LangiumDocumentFactory"),DocumentBuilder:me(t=>new p4t(t),"DocumentBuilder"),IndexManager:me(t=>new g4t(t),"IndexManager"),WorkspaceManager:me(t=>new f4t(t),"WorkspaceManager"),FileSystemProvider:me(t=>e.fileSystemProvider(t),"FileSystemProvider"),WorkspaceLock:me(()=>new u5t,"WorkspaceLock"),ConfigurationProvider:me(t=>new u4t(t),"ConfigurationProvider")}}}var w5t=b(()=>{Zpt(),Dxt(),zxt(),Gxt(),Uxt(),Ebt(),zbt(),Gbt(),qbt(),Ybt(),Zbt(),Qbt(),m4t(),r4t(),y4t(),v4t(),w4t(),T4t(),Tbt(),E4t(),C4t(),R4t(),g5t(),f5t(),gxt(),m5t(),y5t(),v5t(),me(x5t,"createDefaultCoreModule"),me(b5t,"createDefaultSharedCoreModule")});function k5t(t,e,r,n,i,a,s,o,l){return E5t([t,e,r,n,i,a,s,o,l].reduce(S5t,{}))}function T5t(t){if(t&&t[A5t])for(var e of Object.values(t))T5t(e);return t}function E5t(r,n){let i=new Proxy({},{deleteProperty:me(()=>!1,"deleteProperty"),set:me(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:me((t,e)=>e===A5t||C5t(t,e,r,n||i),"get"),getOwnPropertyDescriptor:me((t,e)=>(C5t(t,e,r,n||i),Object.getOwnPropertyDescriptor(t,e)),"getOwnPropertyDescriptor"),has:me((t,e)=>e in r,"has"),ownKeys:me(()=>[...Object.getOwnPropertyNames(r)],"ownKeys")});return i}function C5t(t,e,r,n){if(e in t){if(t[e]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:t[e]});if(t[e]===L5t)throw new Error('Cycle detected. Please make "'+String(e)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return t[e]}if(e in r){r=r[e],t[e]=L5t;try{t[e]="function"==typeof r?r(n):E5t(r,n)}catch(r){throw t[e]=r instanceof Error?r:void 0,r}return t[e]}}function S5t(t,e){if(e)for(var[r,n]of Object.entries(e)){var i;void 0!==n&&(null!==(i=t[r])&&null!==n&&"object"==typeof i&&"object"==typeof n?t[r]=S5t(i,n):t[r]=n)}return t}var _5t,A5t,L5t,N5t,I5t,R5t,M5t,D5t,O5t,P5t=b(()=>{(_5t=_5t||{}).merge=(t,e)=>S5t(S5t({},t),e),me(k5t,"inject"),A5t=Symbol("isProxy"),me(T5t,"eagerLoad"),me(E5t,"_inject"),L5t=Symbol(),me(C5t,"_resolve"),me(S5t,"_merge")}),B5t=b(()=>{}),$5t=b(()=>{f5t(),g5t(),p5t()}),F5t=b(()=>{}),z5t=b(()=>{Zpt(),F5t()}),G5t=b(()=>{iyt(),Gxt(),R4t(),N5t={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]},(I5t=I5t||{}).REGULAR="indentation-sensitive",I5t.IGNORE_INDENTATION="ignore-indentation",R5t=class extends Bxt{static{me(this,"IndentationAwareTokenBuilder")}constructor(t=N5t){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options=Object.assign(Object.assign({},N5t),t),this.indentTokenType=f1t({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=f1t({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(t,e){var r;if(!S4t(t=super.buildTokens(t,e)))throw new Error("Invalid tokens built by default builder");let{indentTokenName:n,dedentTokenName:i,whitespaceTokenName:a,ignoreIndentationDelimiters:s}=this.options,o,l,c,h=[];for(r of t){for(var[u,d]of s)r.name===u?r.PUSH_MODE=I5t.IGNORE_INDENTATION:r.name===d&&(r.POP_MODE=!0);r.name===i?o=r:r.name===n?l=r:r.name===a?c=r:h.push(r)}if(o&&l&&c)return 0{}),q5t=b(()=>{m5t(),Dxt(),nxt(),G5t(),zxt(),gxt(),R4t(),Rxt(),U5t(),Gxt(),Uxt()}),j5t=b(()=>{Ebt(),zbt(),Gbt(),jbt(),qbt(),Ybt()}),W5t=b(()=>{v5t(),Zbt()}),Y5t=b(()=>{D5t=class{static{me(this,"EmptyFileSystemProvider")}readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}},O5t={fileSystemProvider:me(()=>new D5t,"fileSystemProvider")}});function H5t(){var t=k5t(b5t(O5t),K5t),e=k5t(x5t({shared:t}),X5t);return t.ServiceRegistry.register(e),e}function V5t(t){var e=H5t(),t=e.serializer.JsonSerializer.deserialize(t);return e.shared.workspace.LangiumDocumentFactory.fromModel(t,dbt.parse(`memory://${null!=(e=t.name)?e:"grammar"}.langium`)),t}var X5t,K5t,Z5t=b(()=>{w5t(),P5t(),gdt(),Y5t(),kbt(),X5t={Grammar:me(()=>{},"Grammar"),LanguageMetaData:me(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},K5t={AstReflection:me(()=>new ddt,"AstReflection")},me(H5t,"createMinimalGrammarServices"),me(V5t,"loadGrammarFromJson")}),Q5t={},J5t=(KBt(Q5t,{AstUtils:()=>fdt,BiMap:()=>Lbt,Cancellation:()=>Hxt,ContextCache:()=>Pbt,CstUtils:()=>Qct,DONE_RESULT:()=>Vct,Deferred:()=>nbt,Disposable:()=>d4t,DisposableCache:()=>Dbt,DocumentCache:()=>Bbt,EMPTY_STREAM:()=>Hct,ErrorWithLocation:()=>kht,GrammarUtils:()=>hpt,MultiMap:()=>Abt,OperationCancelled:()=>rbt,Reduction:()=>Kct,RegExpUtils:()=>Kdt,SimpleCache:()=>Obt,StreamImpl:()=>Yct,TreeStreamImpl:()=>Xct,URI:()=>dbt,UriUtils:()=>gbt,WorkspaceCache:()=>$bt,assertUnreachable:()=>wht,delayNextTick:()=>Xxt,interruptAndCheck:()=>Jxt,isOperationCancelled:()=>Qxt,loadGrammarFromJson:()=>V5t,setInterruptionPeriod:()=>Zxt,startCancelableOperation:()=>Kxt,stream:()=>Wct}),b(()=>{Wbt(),b4t(),U(Q5t,x4t),Ubt(),k4t(),Tht(),Z5t(),ibt(),Zct(),kbt(),Ndt(),Vxt(),bht(),Xpt(),cpt()})),t3t=b(()=>{m4t(),r4t()}),e3t=b(()=>{y4t(),v4t(),w4t(),T4t(),Tbt(),Y5t(),E4t(),y5t(),C4t()}),r3t={},n3t=(KBt(r3t,{AbstractAstReflection:()=>Gct,AbstractCstNode:()=>Xvt,AbstractLangiumParser:()=>oxt,AbstractParserErrorMessageProvider:()=>cxt,AbstractThreadedAsyncParser:()=>c5t,AstUtils:()=>fdt,BiMap:()=>Lbt,Cancellation:()=>Hxt,CompositeCstNodeImpl:()=>Zvt,ContextCache:()=>Pbt,CstNodeBuilder:()=>Vvt,CstUtils:()=>Qct,DEFAULT_TOKENIZE_OPTIONS:()=>N4t,DONE_RESULT:()=>Vct,DatatypeSymbol:()=>axt,DefaultAstNodeDescriptionProvider:()=>l4t,DefaultAstNodeLocator:()=>h4t,DefaultAsyncParser:()=>l5t,DefaultCommentProvider:()=>o5t,DefaultConfigurationProvider:()=>u4t,DefaultDocumentBuilder:()=>p4t,DefaultDocumentValidator:()=>s4t,DefaultHydrator:()=>d5t,DefaultIndexManager:()=>g4t,DefaultJsonSerializer:()=>Xbt,DefaultLangiumDocumentFactory:()=>mbt,DefaultLangiumDocuments:()=>ybt,DefaultLexer:()=>I4t,DefaultLexerErrorMessageProvider:()=>L4t,DefaultLinker:()=>xbt,DefaultNameProvider:()=>Sbt,DefaultReferenceDescriptionProvider:()=>c4t,DefaultReferences:()=>_bt,DefaultScopeComputation:()=>Nbt,DefaultScopeProvider:()=>Fbt,DefaultServiceRegistry:()=>Kbt,DefaultTokenBuilder:()=>Bxt,DefaultValueConverter:()=>$xt,DefaultWorkspaceLock:()=>u5t,DefaultWorkspaceManager:()=>f4t,Deferred:()=>nbt,Disposable:()=>d4t,DisposableCache:()=>Dbt,DocumentCache:()=>Bbt,DocumentState:()=>fbt,DocumentValidator:()=>o4t,EMPTY_SCOPE:()=>Mbt,EMPTY_STREAM:()=>Hct,EmptyFileSystem:()=>O5t,EmptyFileSystemProvider:()=>D5t,ErrorWithLocation:()=>kht,GrammarAST:()=>Eht,GrammarUtils:()=>hpt,IndentationAwareLexer:()=>M5t,IndentationAwareTokenBuilder:()=>R5t,JSDocDocumentationProvider:()=>s5t,LangiumCompletionParser:()=>uxt,LangiumParser:()=>lxt,LangiumParserErrorMessageProvider:()=>hxt,LeafCstNodeImpl:()=>Kvt,LexingMode:()=>I5t,MapScope:()=>Rbt,Module:()=>_5t,MultiMap:()=>Abt,OperationCancelled:()=>rbt,ParserWorker:()=>h5t,Reduction:()=>Kct,RegExpUtils:()=>Kdt,RootCstNodeImpl:()=>Jvt,SimpleCache:()=>Obt,StreamImpl:()=>Yct,StreamScope:()=>Ibt,TextDocument:()=>ubt,TreeStreamImpl:()=>Xct,URI:()=>dbt,UriUtils:()=>gbt,ValidationCategory:()=>t4t,ValidationRegistry:()=>e4t,ValueConverter:()=>Fxt,WorkspaceCache:()=>$bt,assertUnreachable:()=>wht,createCompletionParser:()=>Mxt,createDefaultCoreModule:()=>x5t,createDefaultSharedCoreModule:()=>b5t,createGrammarConfig:()=>Kpt,createLangiumParser:()=>Oxt,createParser:()=>fxt,delayNextTick:()=>Xxt,diagnosticData:()=>Jbt,eagerLoad:()=>T5t,getDiagnosticRange:()=>n4t,indentationBuilderDefaultOptions:()=>N5t,inject:()=>k5t,interruptAndCheck:()=>Jxt,isAstNode:()=>Dct,isAstNodeDescription:()=>Pct,isAstNodeWithComment:()=>Hbt,isCompositeCstNode:()=>$ct,isIMultiModeLexerDefinition:()=>_4t,isJSDoc:()=>D4t,isLeafCstNode:()=>Fct,isLinkingError:()=>Bct,isNamed:()=>Cbt,isOperationCancelled:()=>Qxt,isReference:()=>Oct,isRootCstNode:()=>zct,isTokenTypeArray:()=>S4t,isTokenTypeDictionary:()=>A4t,loadGrammarFromJson:()=>V5t,parseJSDoc:()=>M4t,prepareLangiumParser:()=>Pxt,setInterruptionPeriod:()=>Zxt,startCancelableOperation:()=>Kxt,stream:()=>Wct,toDiagnosticData:()=>a4t,toDiagnosticSeverity:()=>i4t}),b(()=>{w5t(),P5t(),Qbt(),B5t(),Uct(),$5t(),z5t(),q5t(),j5t(),W5t(),J5t(),U(r3t,Q5t),t3t(),e3t(),gdt()}));function i3t(t){return F3t.isInstance(t,m3t)}function a3t(t){return F3t.isInstance(t,v3t)}function s3t(t){return F3t.isInstance(t,k3t)}function o3t(t){return F3t.isInstance(t,T3t)}function l3t(t){return F3t.isInstance(t,E3t)}function c3t(t){return F3t.isInstance(t,_3t)}function h3t(t){return F3t.isInstance(t,L3t)}function u3t(t){return F3t.isInstance(t,N3t)}function d3t(t){return F3t.isInstance(t,"Pie")}function p3t(t){return F3t.isInstance(t,I3t)}function g3t(t){return F3t.isInstance(t,M3t)}var f3t,s,m3t,y3t,v3t,x3t,b3t,w3t,k3t,T3t,E3t,C3t,S3t,_3t,A3t,L3t,N3t,I3t,R3t,M3t,D3t,O3t,P3t,B3t,$3t,F3t,z3t,G3t,U3t,q3t,j3t,W3t,Y3t,H3t,V3t,X3t,K3t,Z3t,Q3t,J3t,twt,ewt,rwt,nwt,iwt,awt,swt,owt,lwt,cwt,hwt,uwt,dwt,pwt,gwt,fwt,mwt,ywt,vwt,xwt=b(()=>{n3t(),n3t(),n3t(),n3t(),f3t=Object.defineProperty,s=me((t,e)=>f3t(t,"name",{value:e,configurable:!0}),"__name"),m3t="Architecture",me(i3t,"isArchitecture"),s(i3t,"isArchitecture"),y3t="Axis",v3t="Branch",me(a3t,"isBranch"),s(a3t,"isBranch"),x3t="Checkout",b3t="CherryPicking",w3t="ClassDefStatement",k3t="Commit",me(s3t,"isCommit"),s(s3t,"isCommit"),T3t="GitGraph",me(o3t,"isGitGraph"),s(o3t,"isGitGraph"),E3t="Info",me(l3t,"isInfo"),s(l3t,"isInfo"),C3t="Item",S3t="Junction",_3t="Merge",me(c3t,"isMerge"),s(c3t,"isMerge"),A3t="Option",L3t="Packet",me(h3t,"isPacket"),s(h3t,"isPacket"),N3t="PacketBlock",me(u3t,"isPacketBlock"),s(u3t,"isPacketBlock"),me(d3t,"isPie"),s(d3t,"isPie"),I3t="PieSection",me(p3t,"isPieSection"),s(p3t,"isPieSection"),R3t="Service",M3t="Treemap",me(g3t,"isTreemap"),s(g3t,"isTreemap"),D3t="TreemapRow",O3t="Direction",P3t="Leaf",B3t="Section",$3t=class extends Gct{static{me(this,"MermaidAstReflection")}static{s(this,"MermaidAstReflection")}getAllTypes(){return[m3t,y3t,v3t,x3t,b3t,w3t,k3t,"Curve",O3t,"Edge","Entry",T3t,"Group",E3t,C3t,S3t,P3t,_3t,A3t,L3t,N3t,"Pie",I3t,"Radar",B3t,R3t,"Statement",M3t,D3t]}computeIsSubtype(t,e){switch(t){case v3t:case x3t:case b3t:case k3t:case _3t:return this.isSubtype("Statement",e);case O3t:return this.isSubtype(T3t,e);case P3t:case B3t:return this.isSubtype(C3t,e);default:return!1}}getReferenceType(t){if("Entry:axis"!=(t=t.container.$type+":"+t.property))throw new Error(t+" is not a valid reference id.");return y3t}getTypeMetaData(t){switch(t){case m3t:return{name:m3t,properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case y3t:return{name:y3t,properties:[{name:"label"},{name:"name"}]};case v3t:return{name:v3t,properties:[{name:"name"},{name:"order"}]};case x3t:return{name:x3t,properties:[{name:"branch"}]};case b3t:return{name:b3t,properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case w3t:return{name:w3t,properties:[{name:"className"},{name:"styleText"}]};case k3t:return{name:k3t,properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case"Curve":return{name:"Curve",properties:[{name:"entries",defaultValue:[]},{name:"label"},{name:"name"}]};case"Edge":return{name:"Edge",properties:[{name:"lhsDir"},{name:"lhsGroup",defaultValue:!1},{name:"lhsId"},{name:"lhsInto",defaultValue:!1},{name:"rhsDir"},{name:"rhsGroup",defaultValue:!1},{name:"rhsId"},{name:"rhsInto",defaultValue:!1},{name:"title"}]};case"Entry":return{name:"Entry",properties:[{name:"axis"},{name:"value"}]};case T3t:return{name:T3t,properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case"Group":return{name:"Group",properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case E3t:return{name:E3t,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case C3t:return{name:C3t,properties:[{name:"classSelector"},{name:"name"}]};case S3t:return{name:S3t,properties:[{name:"id"},{name:"in"}]};case _3t:return{name:_3t,properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case A3t:return{name:A3t,properties:[{name:"name"},{name:"value",defaultValue:!1}]};case L3t:return{name:L3t,properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case N3t:return{name:N3t,properties:[{name:"bits"},{name:"end"},{name:"label"},{name:"start"}]};case"Pie":return{name:"Pie",properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case I3t:return{name:I3t,properties:[{name:"label"},{name:"value"}]};case"Radar":return{name:"Radar",properties:[{name:"accDescr"},{name:"accTitle"},{name:"axes",defaultValue:[]},{name:"curves",defaultValue:[]},{name:"options",defaultValue:[]},{name:"title"}]};case R3t:return{name:R3t,properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case M3t:return{name:M3t,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"},{name:"TreemapRows",defaultValue:[]}]};case D3t:return{name:D3t,properties:[{name:"indent"},{name:"item"}]};case O3t:return{name:O3t,properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};case P3t:return{name:P3t,properties:[{name:"classSelector"},{name:"name"},{name:"value"}]};case B3t:return{name:B3t,properties:[{name:"classSelector"},{name:"name"}]};default:return{name:t,properties:[]}}}},F3t=new $3t,G3t=s(()=>z3t=z3t??V5t(`{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`),"InfoGrammar"),q3t=s(()=>U3t=U3t??V5t(`{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`),"PacketGrammar"),W3t=s(()=>j3t=j3t??V5t(`{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`),"PieGrammar"),H3t=s(()=>Y3t=Y3t??V5t(`{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`),"ArchitectureGrammar"),X3t=s(()=>V3t=V3t??V5t(`{"$type":"Grammar","isDeclared":true,"name":"GitGraph","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`),"GitGraphGrammar"),Z3t=s(()=>K3t=K3t??V5t(`{"$type":"Grammar","isDeclared":true,"name":"Radar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"types":[],"usedGrammars":[]}`),"RadarGrammar"),J3t=s(()=>Q3t=Q3t??V5t(`{"$type":"Grammar","isDeclared":true,"name":"Treemap","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","}},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@14"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`),"TreemapGrammar"),swt={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!(awt={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!(iwt={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!(nwt={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!(rwt={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!(ewt={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!(twt={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"}),mode:"production"}),mode:"production"}),mode:"production"}),mode:"production"}),mode:"production"}),mode:"production"},owt={AstReflection:s(()=>new $3t,"AstReflection")},lwt={Grammar:s(()=>G3t(),"Grammar"),LanguageMetaData:s(()=>twt,"LanguageMetaData"),parser:{}},cwt={Grammar:s(()=>q3t(),"Grammar"),LanguageMetaData:s(()=>ewt,"LanguageMetaData"),parser:{}},hwt={Grammar:s(()=>W3t(),"Grammar"),LanguageMetaData:s(()=>rwt,"LanguageMetaData"),parser:{}},uwt={Grammar:s(()=>H3t(),"Grammar"),LanguageMetaData:s(()=>nwt,"LanguageMetaData"),parser:{}},dwt={Grammar:s(()=>X3t(),"Grammar"),LanguageMetaData:s(()=>iwt,"LanguageMetaData"),parser:{}},pwt={Grammar:s(()=>Z3t(),"Grammar"),LanguageMetaData:s(()=>awt,"LanguageMetaData"),parser:{}},gwt={Grammar:s(()=>J3t(),"Grammar"),LanguageMetaData:s(()=>swt,"LanguageMetaData"),parser:{}},fwt={ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/accTitle[\t ]*:([^\n\r]*)/,TITLE:/title([\t ][^\n\r]*|)/},mwt=class extends $xt{static{me(this,"AbstractMermaidValueConverter")}static{s(this,"AbstractMermaidValueConverter")}runConverter(t,e,r){var n=this.runCommonConverter(t,e,r);return void 0===(n=void 0===n?this.runCustomConverter(t,e,r):n)?super.runConverter(t,e,r):n}runCommonConverter(t,e,r){return void 0!==(t=fwt[t.name])&&null!==(t=t.exec(e))?void 0!==t[1]?t[1].trim().replace(/[\t ]{2,}/gm," "):void 0!==t[2]?t[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,` +`):void 0:void 0}},ywt=class extends mwt{static{me(this,"CommonValueConverter")}static{s(this,"CommonValueConverter")}runCustomConverter(t,e,r){}},vwt=class extends Bxt{static{me(this,"AbstractMermaidTokenBuilder")}static{s(this,"AbstractMermaidTokenBuilder")}constructor(t){super(),this.keywords=new Set(t)}buildKeywordTokens(t,e,r){return(t=super.buildKeywordTokens(t,e,r)).forEach(t=>{this.keywords.has(t.name)&&void 0!==t.PATTERN&&(t.PATTERN=new RegExp(t.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),t}},class extends vwt{static{me(this,"CommonTokenBuilder")}static{s(this,"CommonTokenBuilder")}}});function bwt(t=O5t){var t=k5t(b5t(t),owt),e=k5t(x5t({shared:t}),dwt,kwt);return t.ServiceRegistry.register(e),{shared:t,GitGraph:e}}var wwt,kwt,Twt=b(()=>{xwt(),n3t(),wwt=class extends vwt{static{me(this,"GitGraphTokenBuilder")}static{s(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},kwt={parser:{TokenBuilder:s(()=>new wwt,"TokenBuilder"),ValueConverter:s(()=>new ywt,"ValueConverter")}},me(bwt,"createGitGraphServices"),s(bwt,"createGitGraphServices")});function Ewt(t=O5t){var t=k5t(b5t(t),owt),e=k5t(x5t({shared:t}),lwt,Swt);return t.ServiceRegistry.register(e),{shared:t,Info:e}}var Cwt,Swt,_wt=b(()=>{xwt(),n3t(),Cwt=class extends vwt{static{me(this,"InfoTokenBuilder")}static{s(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},Swt={parser:{TokenBuilder:s(()=>new Cwt,"TokenBuilder"),ValueConverter:s(()=>new ywt,"ValueConverter")}},me(Ewt,"createInfoServices"),s(Ewt,"createInfoServices")});function Awt(t=O5t){var t=k5t(b5t(t),owt),e=k5t(x5t({shared:t}),cwt,Nwt);return t.ServiceRegistry.register(e),{shared:t,Packet:e}}var Lwt,Nwt,Iwt=b(()=>{xwt(),n3t(),Lwt=class extends vwt{static{me(this,"PacketTokenBuilder")}static{s(this,"PacketTokenBuilder")}constructor(){super(["packet"])}},Nwt={parser:{TokenBuilder:s(()=>new Lwt,"TokenBuilder"),ValueConverter:s(()=>new ywt,"ValueConverter")}},me(Awt,"createPacketServices"),s(Awt,"createPacketServices")});function Rwt(t=O5t){var t=k5t(b5t(t),owt),e=k5t(x5t({shared:t}),hwt,Owt);return t.ServiceRegistry.register(e),{shared:t,Pie:e}}var Mwt,Dwt,Owt,Pwt=b(()=>{xwt(),n3t(),Mwt=class extends vwt{static{me(this,"PieTokenBuilder")}static{s(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},Dwt=class extends mwt{static{me(this,"PieValueConverter")}static{s(this,"PieValueConverter")}runCustomConverter(t,e,r){if("PIE_SECTION_LABEL"===t.name)return e.replace(/"/g,"").trim()}},Owt={parser:{TokenBuilder:s(()=>new Mwt,"TokenBuilder"),ValueConverter:s(()=>new Dwt,"ValueConverter")}},me(Rwt,"createPieServices"),s(Rwt,"createPieServices")});function Bwt(t=O5t){var t=k5t(b5t(t),owt),e=k5t(x5t({shared:t}),uwt,zwt);return t.ServiceRegistry.register(e),{shared:t,Architecture:e}}var $wt,Fwt,zwt,Gwt=b(()=>{xwt(),n3t(),$wt=class extends vwt{static{me(this,"ArchitectureTokenBuilder")}static{s(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},Fwt=class extends mwt{static{me(this,"ArchitectureValueConverter")}static{s(this,"ArchitectureValueConverter")}runCustomConverter(t,e,r){return"ARCH_ICON"===t.name?e.replace(/[()]/g,"").trim():"ARCH_TEXT_ICON"===t.name?e.replace(/["()]/g,""):"ARCH_TITLE"===t.name?e.replace(/[[\]]/g,"").trim():void 0}},zwt={parser:{TokenBuilder:s(()=>new $wt,"TokenBuilder"),ValueConverter:s(()=>new Fwt,"ValueConverter")}},me(Bwt,"createArchitectureServices"),s(Bwt,"createArchitectureServices")});function Uwt(t=O5t){var t=k5t(b5t(t),owt),e=k5t(x5t({shared:t}),pwt,jwt);return t.ServiceRegistry.register(e),{shared:t,Radar:e}}var qwt,jwt,Wwt=b(()=>{xwt(),n3t(),qwt=class extends vwt{static{me(this,"RadarTokenBuilder")}static{s(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},jwt={parser:{TokenBuilder:s(()=>new qwt,"TokenBuilder"),ValueConverter:s(()=>new ywt,"ValueConverter")}},me(Uwt,"createRadarServices"),s(Uwt,"createRadarServices")});function Ywt(t){var e,r=t.validation.TreemapValidator;(t=t.validation.ValidationRegistry)&&(e={Treemap:r.checkSingleRoot.bind(r)},t.register(e,r))}function Hwt(t=O5t){var t=k5t(b5t(t),owt),e=k5t(x5t({shared:t}),gwt,Qwt);return t.ServiceRegistry.register(e),Ywt(e),{shared:t,Treemap:e}}var Vwt,Xwt,Kwt,Zwt,Qwt,Jwt=b(()=>{xwt(),n3t(),Vwt=class extends vwt{static{me(this,"TreemapTokenBuilder")}static{s(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},Xwt=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,Kwt=class extends mwt{static{me(this,"TreemapValueConverter")}static{s(this,"TreemapValueConverter")}runCustomConverter(t,e,r){return"NUMBER2"===t.name?parseFloat(e.replace(/,/g,"")):"SEPARATOR"===t.name||"STRING2"===t.name?e.substring(1,e.length-1):"INDENTATION"===t.name?e.length:"ClassDef"===t.name?"string"!=typeof e?e:(t=Xwt.exec(e))?{$type:"ClassDefStatement",className:t[1],styleText:t[2]||void 0}:void 0:void 0}},me(Ywt,"registerValidationChecks"),s(Ywt,"registerValidationChecks"),Zwt=class{static{me(this,"TreemapValidator")}static{s(this,"TreemapValidator")}checkSingleRoot(t,e){let r;for(var n of t.TreemapRows)n.item&&(void 0===r&&void 0===n.indent?r=0:(void 0===n.indent||void 0!==r&&r>=parseInt(n.indent,10))&&e("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}))}},Qwt={parser:{TokenBuilder:s(()=>new Vwt,"TokenBuilder"),ValueConverter:s(()=>new Kwt,"ValueConverter")},validation:{TreemapValidator:s(()=>new Zwt,"TreemapValidator")}},me(Hwt,"createTreemapServices"),s(Hwt,"createTreemapServices")}),t6t={},e6t=(KBt(t6t,{InfoModule:()=>Swt,createInfoServices:()=>Ewt}),b(()=>{_wt(),xwt()})),r6t={},n6t=(KBt(r6t,{PacketModule:()=>Nwt,createPacketServices:()=>Awt}),b(()=>{Iwt(),xwt()})),i6t={},a6t=(KBt(i6t,{PieModule:()=>Owt,createPieServices:()=>Rwt}),b(()=>{Pwt(),xwt()})),s6t={},o6t=(KBt(s6t,{ArchitectureModule:()=>zwt,createArchitectureServices:()=>Bwt}),b(()=>{Gwt(),xwt()})),l6t={},c6t=(KBt(l6t,{GitGraphModule:()=>kwt,createGitGraphServices:()=>bwt}),b(()=>{Twt(),xwt()})),h6t={},u6t=(KBt(h6t,{RadarModule:()=>jwt,createRadarServices:()=>Uwt}),b(()=>{Wwt(),xwt()})),d6t={},p6t=(KBt(d6t,{TreemapModule:()=>Qwt,createTreemapServices:()=>Hwt}),b(()=>{Jwt(),xwt()}));async function g6t(t,e){var r=m6t[t];if(!r)throw new Error("Unknown diagram type: "+t);if(f6t[t]||await r(),0<(r=f6t[t].parse(e)).lexerErrors.length||0{Twt(),_wt(),Iwt(),Pwt(),Gwt(),Wwt(),Jwt(),xwt(),f6t={},m6t={info:s(async()=>{var t=(t=(await Promise.resolve().then(()=>(e6t(),t6t))).createInfoServices)().Info.parser.LangiumParser;f6t.info=t},"info"),packet:s(async()=>{var t=(t=(await Promise.resolve().then(()=>(n6t(),r6t))).createPacketServices)().Packet.parser.LangiumParser;f6t.packet=t},"packet"),pie:s(async()=>{var t=(t=(await Promise.resolve().then(()=>(a6t(),i6t))).createPieServices)().Pie.parser.LangiumParser;f6t.pie=t},"pie"),architecture:s(async()=>{var t=(t=(await Promise.resolve().then(()=>(o6t(),s6t))).createArchitectureServices)().Architecture.parser.LangiumParser;f6t.architecture=t},"architecture"),gitGraph:s(async()=>{var t=(t=(await Promise.resolve().then(()=>(c6t(),l6t))).createGitGraphServices)().GitGraph.parser.LangiumParser;f6t.gitGraph=t},"gitGraph"),radar:s(async()=>{var t=(t=(await Promise.resolve().then(()=>(u6t(),h6t))).createRadarServices)().Radar.parser.LangiumParser;f6t.radar=t},"radar"),treemap:s(async()=>{var t=(t=(await Promise.resolve().then(()=>(p6t(),d6t))).createTreemapServices)().Treemap.parser.LangiumParser;f6t.treemap=t},"treemap")},me(g6t,"parse"),s(g6t,"parse"),y6t=class extends Error{static{me(this,"MermaidParseError")}constructor(t){super(`Parsing failed: ${t.lexerErrors.map(t=>t.message).join(` +`)} `+t.parserErrors.map(t=>t.message).join(` +`)),this.result=t}static{s(this,"MermaidParseError")}}});function x6t(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}var b6t,w6t,k6t=b(()=>{me(x6t,"populateCommonDb")}),T6t=b(()=>{b6t={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4}}),E6t=b(()=>{w6t=class{constructor(t){this.init=t,this.records=this.init()}static{me(this,"ImperativeState")}reset(){this.records=this.init()}}});function C6t(){return qC({length:7})}function S6t(t,n){let i=Object.create(null);return t.reduce((t,e)=>{var r=n(e);return i[r]||(i[r]=!0,t.push(e)),t},[])}function _6t(t,e,r){-1===(e=t.indexOf(e))?t.push(r):t.splice(e,1,r)}function A6t(t){let e=t.reduce((t,e)=>t.seq>e.seq?t:e,t[0]),r="";t.forEach(function(t){t===e?r+="\t*":r+="\t|"});var n,i=[r,e.id,e.seq];for(n in y.records.branches)y.records.branches.get(n)===e.id&&i.push(n);if(D.debug(i.join(" ")),e.parents&&2==e.parents.length&&e.parents[0]&&e.parents[1]){var a=y.records.commits.get(e.parents[0]);_6t(t,e,a),e.parents[1]&&t.push(y.records.commits.get(e.parents[1]))}else{if(0==e.parents.length)return;e.parents[0]&&(a=y.records.commits.get(e.parents[0]),_6t(t,e,a))}A6t(t=S6t(t,t=>t.id))}var L6t,N6t,y,I6t,R6t,M6t,D6t,O6t,P6t,B6t,$6t,F6t,z6t,G6t,U6t,q6t,j6t,W6t,Y6t,H6t,V6t,X6t,K6t,Z6t,Q6t,J6t,tkt,ekt,rkt,nkt,ikt,akt,skt,okt,lkt,ckt,hkt,ukt,dkt,pkt,gkt,fkt,mkt,ykt,vkt,xkt,bkt,wkt,kkt,Tkt,Ekt,Ckt,Skt,_kt,Akt,Lkt,Nkt,Ikt,Rkt,Mkt,Dkt,Okt,Pkt=b(()=>{t(),iS(),rn(),Oc(),ku(),T6t(),E6t(),tn(),L6t=We.gitGraph,N6t=me(()=>SC({...L6t,...ar().gitGraph}),"getConfig"),y=new w6t(()=>{var t=(e=N6t()).mainBranchName,e=e.mainBranchOrder;return{mainBranchName:t,commits:new Map,head:null,branchConfig:new Map([[t,{name:t,order:e}]]),branches:new Map([[t,null]]),currBranch:t,direction:"LR",seq:0,options:{}}}),me(C6t,"getID"),me(S6t,"uniqBy"),I6t=me(function(t){y.records.direction=t},"setDirection"),R6t=me(function(t){D.debug("options str",t),t=t?.trim()||"{}";try{y.records.options=JSON.parse(t)}catch(t){D.error("error while parsing gitGraph options",t.message)}},"setOptions"),M6t=me(function(){return y.records.options},"getOptions"),D6t=me(function(t){let e=t.msg,r=t.id,n=t.type,i=t.tags,a=(D.info("commit",e,r,n,i),D.debug("Entering commit:",e,r,n,i),N6t());r=L.sanitizeText(r,a),e=L.sanitizeText(e,a),i=i?.map(t=>L.sanitizeText(t,a)),t={id:r||y.records.seq+"-"+C6t(),message:e,seq:y.records.seq++,type:n??b6t.NORMAL,tags:i??[],parents:null==y.records.head?[]:[y.records.head.id],branch:y.records.currBranch},y.records.head=t,D.info("main branch",a.mainBranchName),y.records.commits.has(t.id)&&D.warn(`Commit ID ${t.id} already exists`),y.records.commits.set(t.id,t),y.records.branches.set(y.records.currBranch,t.id),D.debug("in pushCommit "+t.id)},"commit"),O6t=me(function(t){var e=t.name,t=t.order,e=L.sanitizeText(e,N6t());if(y.records.branches.has(e))throw 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 ${e}")`);y.records.branches.set(e,null!=y.records.head?y.records.head.id:null),y.records.branchConfig.set(e,{name:e,order:t}),$6t(e),D.debug("in createBranch")},"branch"),P6t=me(t=>{var e=t.branch,r=t.id,n=t.type,i=t.tags,a=N6t(),e=L.sanitizeText(e,a),r=r&&L.sanitizeText(r,a),t=y.records.branches.get(y.records.currBranch),a=y.records.branches.get(e),t=t?y.records.commits.get(t):void 0,s=a?y.records.commits.get(a):void 0;if(t&&s&&t.branch===e)throw new Error(`Cannot merge branch '${e}' into itself.`);if(y.records.currBranch===e)throw(o=new Error('Incorrect usage of "merge". Cannot merge a branch to itself')).hash={text:"merge "+e,token:"merge "+e,expected:["branch abc"]},o;if(void 0===t||!t)throw(o=new Error(`Incorrect usage of "merge". Current branch (${y.records.currBranch})has no commits`)).hash={text:"merge "+e,token:"merge "+e,expected:["commit"]},o;if(!y.records.branches.has(e))throw(o=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") does not exist")).hash={text:"merge "+e,token:"merge "+e,expected:["branch "+e]},o;if(void 0===s||!s)throw(o=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") has no commits")).hash={text:"merge "+e,token:"merge "+e,expected:['"commit"']},o;if(t===s)throw(o=new Error('Incorrect usage of "merge". Both branches have same head')).hash={text:"merge "+e,token:"merge "+e,expected:["branch abc"]},o;if(r&&y.records.commits.has(r))throw(t=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom id")).hash={text:`merge ${e} ${r} ${n} `+i?.join(" "),token:`merge ${e} ${r} ${n} `+i?.join(" "),expected:[`merge ${e} ${r}_UNIQUE ${n} `+i?.join(" ")]},t;var s=a||"",o={id:r||y.records.seq+"-"+C6t(),message:`merged branch ${e} into `+y.records.currBranch,seq:y.records.seq++,parents:null==y.records.head?[]:[y.records.head.id,s],branch:y.records.currBranch,type:b6t.MERGE,customType:n,customId:!!r,tags:i??[]};y.records.head=o,y.records.commits.set(o.id,o),y.records.branches.set(y.records.currBranch,o.id),D.debug(y.records.branches),D.debug("in mergeBranch")},"merge"),B6t=me(function(t){let e=t.id,r=t.targetId,n=t.tags,i=t.parent,a=(D.debug("Entering cherryPick:",e,r,n),N6t());if(e=L.sanitizeText(e,a),r=L.sanitizeText(r,a),n=n?.map(t=>L.sanitizeText(t,a)),i=L.sanitizeText(i,a),!e||!y.records.commits.has(e))throw(t=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided')).hash={text:`cherryPick ${e} `+r,token:`cherryPick ${e} `+r,expected:["cherry-pick abc"]},t;if(void 0===(t=y.records.commits.get(e))||!t)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(i&&(!Array.isArray(t.parents)||!t.parents.includes(i)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");var s=t.branch;if(t.type===b6t.MERGE&&!i)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!r||!y.records.commits.has(r)){if(s===y.records.currBranch)throw(s=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch')).hash={text:`cherryPick ${e} `+r,token:`cherryPick ${e} `+r,expected:["cherry-pick abc"]},s;if(void 0===(s=y.records.branches.get(y.records.currBranch))||!s)throw(o=new Error(`Incorrect usage of "cherry-pick". Current branch (${y.records.currBranch})has no commits`)).hash={text:`cherryPick ${e} `+r,token:`cherryPick ${e} `+r,expected:["cherry-pick abc"]},o;var o=y.records.commits.get(s);if(void 0===o||!o)throw(s=new Error(`Incorrect usage of "cherry-pick". Current branch (${y.records.currBranch})has no commits`)).hash={text:`cherryPick ${e} `+r,token:`cherryPick ${e} `+r,expected:["cherry-pick abc"]},s;o={id:y.records.seq+"-"+C6t(),message:`cherry-picked ${t?.message} into `+y.records.currBranch,seq:y.records.seq++,parents:null==y.records.head?[]:[y.records.head.id,t.id],branch:y.records.currBranch,type:b6t.CHERRY_PICK,tags:n?n.filter(Boolean):["cherry-pick:"+t.id+(t.type===b6t.MERGE?"|parent:"+i:"")]},y.records.head=o,y.records.commits.set(o.id,o),y.records.branches.set(y.records.currBranch,o.id),D.debug(y.records.branches),D.debug("in cherryPick")}},"cherryPick"),$6t=me(function(t){var e;if(t=L.sanitizeText(t,N6t()),!y.records.branches.has(t))throw(e=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`)).hash={text:"checkout "+t,token:"checkout "+t,expected:["branch "+t]},e;y.records.currBranch=t,e=y.records.branches.get(y.records.currBranch),y.records.head=void 0!==e&&e?y.records.commits.get(e)??null:null},"checkout"),me(_6t,"upsert"),me(A6t,"prettyPrintCommitHistory"),F6t=me(function(){D.debug(y.records.commits),A6t([j6t()[0]])},"prettyPrint"),z6t=me(function(){y.reset(),fh()},"clear"),G6t=me(function(){return[...y.records.branchConfig.values()].map((t,e)=>null!=t.order?t:{...t,order:parseFloat("0."+e)}).sort((t,e)=>(t.order??0)-(e.order??0)).map(({name:t})=>({name:t}))},"getBranchesAsObjArray"),U6t=me(function(){return y.records.branches},"getBranches"),q6t=me(function(){return y.records.commits},"getCommits"),j6t=me(function(){var t=[...y.records.commits.values()];return t.forEach(function(t){D.debug(t.id)}),t.sort((t,e)=>t.seq-e.seq),t},"getCommitsArray"),W6t=me(function(){return y.records.currBranch},"getCurrentBranch"),Y6t=me(function(){return y.records.direction},"getDirection"),H6t=me(function(){return y.records.head},"getHead"),V6t={commitType:b6t,getConfig:N6t,setDirection:I6t,setOptions:R6t,getOptions:M6t,commit:D6t,branch:O6t,merge:P6t,cherryPick:B6t,checkout:$6t,prettyPrint:F6t,clear:z6t,getBranchesAsObjArray:G6t,getBranches:U6t,getCommits:q6t,getCommitsArray:j6t,getCurrentBranch:W6t,getDirection:Y6t,getHead:H6t,setAccTitle:mh,getAccTitle:yh,getAccDescription:xh,setAccDescription:vh,setDiagramTitle:bh,getDiagramTitle:wh}}),Bkt=b(()=>{v6t(),t(),k6t(),Pkt(),T6t(),X6t=me((t,e)=>{x6t(t,e),t.dir&&e.setDirection(t.dir);for(var r of t.statements)K6t(r,e)},"populate"),K6t=me((t,e)=>{var r={Commit:me(t=>e.commit(Z6t(t)),"Commit"),Branch:me(t=>e.branch(Q6t(t)),"Branch"),Merge:me(t=>e.merge(J6t(t)),"Merge"),Checkout:me(t=>e.checkout(tkt(t)),"Checkout"),CherryPicking:me(t=>e.cherryPick(ekt(t)),"CherryPicking")}[t.$type];r?r(t):D.error("Unknown statement type: "+t.$type)},"parseStatement"),Z6t=me(t=>({id:t.id,msg:t.message??"",type:void 0!==t.type?b6t[t.type]:b6t.NORMAL,tags:t.tags??void 0}),"parseCommit"),Q6t=me(t=>({name:t.name,order:t.order??0}),"parseBranch"),J6t=me(t=>({branch:t.branch,id:t.id??"",type:void 0!==t.type?b6t[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),tkt=me(t=>t.branch,"parseCheckout"),ekt=me(t=>({id:t.id,targetId:"",tags:0===t.tags?.length?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),rkt={parse:me(async t=>{t=await g6t("gitGraph",t),D.debug(t),X6t(t,V6t)},"parse")}}),$kt=b(()=>{i6(),Tu(),t(),iS(),T6t(),Rkt=O(),nkt=Rkt?.gitGraph,ikt=new Map,akt=new Map,skt=new Map,okt=[],lkt=0,ckt="LR",hkt=me(()=>{ikt.clear(),akt.clear(),skt.clear(),lkt=0,okt=[],ckt="LR"},"clear"),ukt=me(t=>{let r=document.createElementNS("http://www.w3.org/2000/svg","text");return("string"==typeof t?t.split(/\\n|\n|/gi):t).forEach(t=>{var e=document.createElementNS("http://www.w3.org/2000/svg","tspan");e.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),e.setAttribute("dy","1em"),e.setAttribute("x","0"),e.setAttribute("class","row"),e.textContent=t.trim(),r.appendChild(e)}),r},"drawText"),dkt=me(t=>{let r,n,i;return i="BT"===ckt?(n=me((t,e)=>t<=e,"comparisonFunc"),1/0):(n=me((t,e)=>e<=t,"comparisonFunc"),0),t.forEach(t=>{var e="TB"===ckt||"BT"==ckt?akt.get(t)?.y:akt.get(t)?.x;void 0!==e&&n(e,i)&&(r=t,i=e)}),r},"findClosestParent"),pkt=me(t=>{let r="",n=1/0;return t.forEach(t=>{var e=akt.get(t).y;e<=n&&(r=t,n=e)}),r||void 0},"findClosestParentBT"),gkt=me((t,n,e)=>{let i=e,a=e,r=[];t.forEach(t=>{var e=n.get(t);if(!e)throw new Error("Commit not found for key "+t);e.parents.length?(i=mkt(e),a=Math.max(i,a)):r.push(e),ykt(e,i)}),i=a,r.forEach(t=>{vkt(t,i,e)}),t.forEach(t=>{var e,r;(t=n.get(t))?.parents.length&&(e=pkt(t.parents),(i=akt.get(e).y-40)<=a&&(a=i),e=ikt.get(t.branch).pos,r=i-10,akt.set(t.id,{x:e,y:r}))})},"setParallelBTPos"),fkt=me(t=>{var e=dkt(t.parents.filter(t=>null!==t));if(!e)throw new Error("Closest parent not found for commit "+t.id);if(void 0===(e=akt.get(e)?.y))throw new Error("Closest parent position not found for commit "+t.id);return e},"findClosestParentPos"),mkt=me(t=>fkt(t)+40,"calculateCommitPosition"),ykt=me((t,e)=>{var r=ikt.get(t.branch);if(r)return r=r.pos,akt.set(t.id,{x:r,y:e+=10}),{x:r,y:e};throw new Error("Branch not found for commit "+t.id)},"setCommitPosition"),vkt=me((t,e,r)=>{var n=ikt.get(t.branch);if(!n)throw new Error("Branch not found for commit "+t.id);n=n.pos,akt.set(t.id,{x:n,y:e+r})},"setRootPosition"),xkt=me((t,e,r,n,i,a)=>{var s;a===b6t.HIGHLIGHT?(t.append("rect").attr("x",r.x-10).attr("y",r.y-10).attr("width",20).attr("height",20).attr("class",`commit ${e.id} commit-highlight${i%8} ${n}-outer`),t.append("rect").attr("x",r.x-6).attr("y",r.y-6).attr("width",12).attr("height",12).attr("class",`commit ${e.id} commit${i%8} ${n}-inner`)):a===b6t.CHERRY_PICK?(t.append("circle").attr("cx",r.x).attr("cy",r.y).attr("r",10).attr("class",`commit ${e.id} `+n),t.append("circle").attr("cx",r.x-3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} `+n),t.append("circle").attr("cx",r.x+3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} `+n),t.append("line").attr("x1",r.x+3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} `+n),t.append("line").attr("x1",r.x-3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} `+n)):((s=t.append("circle")).attr("cx",r.x),s.attr("cy",r.y),s.attr("r",e.type===b6t.MERGE?9:10),s.attr("class",`commit ${e.id} commit`+i%8),a===b6t.MERGE&&((s=t.append("circle")).attr("cx",r.x),s.attr("cy",r.y),s.attr("r",6),s.attr("class",`commit ${n} ${e.id} commit`+i%8)),a===b6t.REVERSE&&t.append("path").attr("d",`M ${r.x-5},${r.y-5}L${r.x+5},${r.y+5}M${r.x-5},${r.y+5}L${r.x+5},`+(r.y-5)).attr("class",`commit ${n} ${e.id} commit`+i%8))},"drawCommitBullet"),bkt=me((t,e,r,n)=>{var i,a;e.type!==b6t.CHERRY_PICK&&(e.customId&&e.type===b6t.MERGE||e.type!==b6t.MERGE)&&nkt?.showCommitLabel&&(a=(t=t.append("g")).insert("rect").attr("class","commit-label-bkg"),i=(e=t.append("text").attr("x",n).attr("y",r.y+25).attr("class","commit-label").text(e.id)).node()?.getBBox())&&(a.attr("x",r.posWithOffset-i.width/2-2).attr("y",r.y+13.5).attr("width",i.width+4).attr("height",i.height+4),"TB"===ckt||"BT"===ckt?(a.attr("x",r.x-(i.width+16+5)).attr("y",r.y-12),e.attr("x",r.x-(i.width+16)).attr("y",r.y+i.height-12)):e.attr("x",r.posWithOffset-i.width/2),nkt.rotateCommitLabel)&&("TB"===ckt||"BT"===ckt?(e.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),a.attr("transform","rotate(-45, "+r.x+", "+r.y+")")):(e=-7.5-(i.width+10)/25*9.5,a=10+i.width/25*8.5,t.attr("transform","translate("+e+", "+a+") rotate(-45, "+n+", "+r.y+")")))},"drawCommitLabel"),wkt=me((i,a,s,o)=>{if(0{switch(t.customType??t.type){case b6t.NORMAL:return"commit-normal";case b6t.REVERSE:return"commit-reverse";case b6t.HIGHLIGHT:return"commit-highlight";case b6t.MERGE:return"commit-merge";case b6t.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),Tkt=me((t,e,r,n)=>{var i,a={x:0,y:0};return 0{var r="BT"===ckt&&r?e:e+10,e="TB"===ckt||"BT"===ckt?r:ikt.get(t.branch)?.pos,n="TB"===ckt||"BT"===ckt?ikt.get(t.branch)?.pos:r;if(void 0===n||void 0===e)throw new Error("Position were undefined for commit "+t.id);return{x:n,y:e,posWithOffset:r}},"getCommitPosition"),Ckt=me((t,a,s)=>{if(!nkt)throw new Error("GitGraph config not found");let o=t.append("g").attr("class","commit-bullets"),l=t.append("g").attr("class","commit-labels"),c="TB"===ckt||"BT"===ckt?30:0,e=[...a.keys()],h=nkt?.parallelCommits??!1,r=me((t,e)=>(t=a.get(t)?.seq,e=a.get(e)?.seq,void 0!==t&&void 0!==e?t-e:0),"sortKeys"),n=e.sort(r);"BT"===ckt&&(h&&gkt(n,a,c),n=n.reverse()),n.forEach(t=>{var e=a.get(t);if(!e)throw new Error("Commit not found for key "+t);h&&(c=Tkt(e,ckt,c,akt));var r,n,i,t=Ekt(e,c,h);s&&(r=kkt(e),n=e.customType??e.type,i=ikt.get(e.branch)?.index??0,xkt(o,e,t,r,i,n),bkt(l,e,t,c),wkt(l,e,t,c)),"TB"===ckt||"BT"===ckt?akt.set(e.id,{x:t.x,y:t.posWithOffset}):akt.set(e.id,{x:t.posWithOffset,y:t.y}),(c="BT"===ckt&&h?c+40:c+40+10)>lkt&&(lkt=c)})},"drawCommits"),Skt=me((e,r,t,n,i)=>{let a=(("TB"===ckt||"BT"===ckt?t.xt.branch===a,"isOnBranchToGetCurve"),o=me(t=>t.seq>e.seq&&t.seqo(t)&&s(t))},"shouldRerouteArrow"),_kt=me((t,e,r=0)=>{let n=t+Math.abs(t-e)/2,i;return 510<=Math.abs(t-n))?(okt.push(n),n):(i=Math.abs(t-e),_kt(t,e-i/5,r+1))},"findLane"),Akt=me((t,e,r,n)=>{var i,a=akt.get(e.id),s=akt.get(r.id);if(void 0===a||void 0===s)throw new Error(`Commit positions not found for commits ${e.id} and `+r.id);let o=Skt(e,r,a,s,n),l="",c="",h=0,u=0,d=ikt.get(r.branch)?.index;r.type===b6t.MERGE&&e.id!==r.parents[0]&&(d=ikt.get(e.branch)?.index);let p;if(o?(l="A 10 10, 0, 0, 0,",c="A 10 10, 0, 0, 1,",h=10,u=10,n=a.ys.x&&(l="A 20 20, 0, 0, 0,",c="A 20 20, 0, 0, 1,",h=20,u=20,p=r.type===b6t.MERGE&&e.id!==r.parents[0]?`M ${a.x} ${a.y} L ${a.x} ${s.y-h} ${c} ${a.x-u} ${s.y} L ${s.x} `+s.y:`M ${a.x} ${a.y} L ${s.x+h} ${a.y} ${l} ${s.x} ${a.y+u} L ${s.x} `+s.y),a.x===s.x&&(p=`M ${a.x} ${a.y} L ${s.x} `+s.y)):"BT"===ckt?(a.xs.x&&(l="A 20 20, 0, 0, 0,",c="A 20 20, 0, 0, 1,",h=20,u=20,p=r.type===b6t.MERGE&&e.id!==r.parents[0]?`M ${a.x} ${a.y} L ${a.x} ${s.y+h} ${l} ${a.x-u} ${s.y} L ${s.x} `+s.y:`M ${a.x} ${a.y} L ${s.x-h} ${a.y} ${l} ${s.x} ${a.y-u} L ${s.x} `+s.y),a.x===s.x&&(p=`M ${a.x} ${a.y} L ${s.x} `+s.y)):(a.ys.y&&(p=r.type===b6t.MERGE&&e.id!==r.parents[0]?`M ${a.x} ${a.y} L ${s.x-h} ${a.y} ${l} ${s.x} ${a.y-u} L ${s.x} `+s.y:`M ${a.x} ${a.y} L ${a.x} ${s.y+h} ${c} ${a.x+u} ${s.y} L ${s.x} `+s.y),a.y===s.y&&(p=`M ${a.x} ${a.y} L ${s.x} `+s.y))),void 0===p)throw new Error("Line definition not found");t.append("path").attr("d",p).attr("class","arrow arrow"+d%8)},"drawArrow"),Lkt=me((t,r)=>{let n=t.append("g").attr("class","commit-arrows");[...r.keys()].forEach(t=>{let e=r.get(t);e.parents&&0{Akt(n,r.get(t),e,r)})})},"drawArrows"),Nkt=me((t,e)=>{let a=t.append("g");e.forEach((t,e)=>{var e=e%8,r=ikt.get(t.name)?.pos;if(void 0===r)throw new Error("Position not found for branch "+t.name);(n=a.append("line")).attr("x1",0),n.attr("y1",r),n.attr("x2",lkt),n.attr("y2",r),n.attr("class","branch branch"+e),"TB"===ckt?(n.attr("y1",30),n.attr("x1",r),n.attr("y2",lkt),n.attr("x2",r)):"BT"===ckt&&(n.attr("y1",lkt),n.attr("x1",r),n.attr("y2",30),n.attr("x2",r)),okt.push(r);var n=t.name,t=ukt(n),n=a.insert("rect"),i=a.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+e),t=(i.node().appendChild(t),t.getBBox());n.attr("class","branchLabelBkg label"+e).attr("rx",4).attr("ry",4).attr("x",-t.width-4-(!0===nkt?.rotateCommitLabel?30:0)).attr("y",-t.height/2+8).attr("width",t.width+18).attr("height",t.height+4),i.attr("transform","translate("+(-t.width-14-(!0===nkt?.rotateCommitLabel?30:0))+", "+(r-t.height/2-1)+")"),"TB"===ckt?(n.attr("x",r-t.width/2-10).attr("y",0),i.attr("transform","translate("+(r-t.width/2-5)+", 0)")):"BT"===ckt?(n.attr("x",r-t.width/2-10).attr("y",lkt),i.attr("transform","translate("+(r-t.width/2-5)+", "+lkt+")")):n.attr("transform","translate(-19, "+(r-t.height/2)+")")})},"drawBranches"),Ikt=me(function(t,e,r,n,i){return ikt.set(t,{pos:e,index:r}),e+(50+(i?40:0)+("TB"===ckt||"BT"===ckt?n.width/2:0))},"setBranchPosition"),Rkt=me(function(t,e,r,n){if(hkt(),D.debug("in gitgraph renderer",t+` +`,"id:",e,r),!nkt)throw new Error("GitGraph config not found");let s=nkt.rotateCommitLabel??!1,i=n.db,o=(skt=i.getCommits(),t=i.getBranchesAsObjArray(),ckt=i.getDirection(),H(`[id="${e}"]`)),l=0;t.forEach((t,e)=>{var r=ukt(t.name),n=o.append("g"),i=n.insert("g").attr("class","branchLabel"),a=i.insert("g").attr("class","label branch-label"),r=(a.node()?.appendChild(r),r.getBBox());l=Ikt(t.name,l,e,r,s),a.remove(),i.remove(),n.remove()}),Ckt(o,skt,!1),nkt.showBranches&&Nkt(o,t),Lkt(o,skt),Ckt(o,skt,!0),tS.insertTitle(o,"gitTitleText",nkt.titleTopMargin??0,i.getDiagramTitle()),_h(void 0,o,nkt.diagramPadding,nkt.useMaxWidth)},"draw"),Mkt={draw:Rkt}}),Fkt=b(()=>{Dkt=me(e=>` + .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(t=>` + .branch-label${t} { fill: ${e["gitBranchLabel"+t]}; } + .commit${t} { stroke: ${e["git"+t]}; fill: ${e["git"+t]}; } + .commit-highlight${t} { stroke: ${e["gitInv"+t]}; fill: ${e["gitInv"+t]}; } + .label${t} { fill: ${e["git"+t]}; } + .arrow${t} { stroke: ${e["git"+t]}; } + `).join(` +`)} + + .branch { + stroke-width: 1; + stroke: ${e.lineColor}; + stroke-dasharray: 2; + } + .commit-label { font-size: ${e.commitLabelFontSize}; fill: ${e.commitLabelColor};} + .commit-label-bkg { font-size: ${e.commitLabelFontSize}; fill: ${e.commitLabelBackground}; opacity: 0.5; } + .tag-label { font-size: ${e.tagLabelFontSize}; fill: ${e.tagLabelColor};} + .tag-label-bkg { fill: ${e.tagLabelBackground}; stroke: ${e.tagLabelBorder}; } + .tag-hole { fill: ${e.textColor}; } + + .commit-merge { + stroke: ${e.primaryColor}; + fill: ${e.primaryColor}; + } + .commit-reverse { + stroke: ${e.primaryColor}; + fill: ${e.primaryColor}; + stroke-width: 3; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${e.primaryColor}; + fill: ${e.primaryColor}; + } + + .arrow { stroke-width: 8; stroke-linecap: round; fill: none} + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } +`,"getStyles"),Okt=Dkt}),zkt={};KBt(zkt,{diagram:()=>Gkt});var Gkt,Ukt,qkt,jkt=b(()=>{Bkt(),Pkt(),$kt(),Fkt(),Gkt={parser:rkt,db:V6t,renderer:Mkt,styles:Okt}}),Wkt=b(()=>{function t(){this.yy={}}var e=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),r=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],n=[1,26],i=[1,27],a=[1,28],s=[1,29],o=[1,30],l=[1,31],c=[1,32],h=[1,33],u=[1,34],d=[1,9],p=[1,10],g=[1,11],f=[1,12],m=[1,13],y=[1,14],v=[1,15],x=[1,16],b=[1,19],w=[1,20],k=[1,21],T=[1,22],E=[1,23],C=[1,25],S=[1,35],n={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 1:return a[o-1];case 2:this.$=[];break;case 3:a[o-1].push(a[o]),this.$=a[o-1];break;case 4:case 5:this.$=a[o];break;case 6:case 7:this.$=[];break;case 8:n.setWeekday("monday");break;case 9:n.setWeekday("tuesday");break;case 10:n.setWeekday("wednesday");break;case 11:n.setWeekday("thursday");break;case 12:n.setWeekday("friday");break;case 13:n.setWeekday("saturday");break;case 14:n.setWeekday("sunday");break;case 15:n.setWeekend("friday");break;case 16:n.setWeekend("saturday");break;case 17:n.setDateFormat(a[o].substr(11)),this.$=a[o].substr(11);break;case 18:n.enableInclusiveEndDates(),this.$=a[o].substr(18);break;case 19:n.TopAxis(),this.$=a[o].substr(8);break;case 20:n.setAxisFormat(a[o].substr(11)),this.$=a[o].substr(11);break;case 21:n.setTickInterval(a[o].substr(13)),this.$=a[o].substr(13);break;case 22:n.setExcludes(a[o].substr(9)),this.$=a[o].substr(9);break;case 23:n.setIncludes(a[o].substr(9)),this.$=a[o].substr(9);break;case 24:n.setTodayMarker(a[o].substr(12)),this.$=a[o].substr(12);break;case 27:n.setDiagramTitle(a[o].substr(6)),this.$=a[o].substr(6);break;case 28:this.$=a[o].trim(),n.setAccTitle(this.$);break;case 29:case 30:this.$=a[o].trim(),n.setAccDescription(this.$);break;case 31:n.addSection(a[o].substr(8)),this.$=a[o].substr(8);break;case 33:n.addTask(a[o-1],a[o]),this.$="task";break;case 34:this.$=a[o-1],n.setClickEvent(a[o-1],a[o],null);break;case 35:this.$=a[o-2],n.setClickEvent(a[o-2],a[o-1],a[o]);break;case 36:this.$=a[o-2],n.setClickEvent(a[o-2],a[o-1],null),n.setLink(a[o-2],a[o]);break;case 37:this.$=a[o-3],n.setClickEvent(a[o-3],a[o-2],a[o-1]),n.setLink(a[o-3],a[o]);break;case 38:this.$=a[o-2],n.setClickEvent(a[o-2],a[o],null),n.setLink(a[o-2],a[o-1]);break;case 39:this.$=a[o-3],n.setClickEvent(a[o-3],a[o-1],a[o]),n.setLink(a[o-3],a[o-2]);break;case 40:this.$=a[o-1],n.setLink(a[o-1],a[o]);break;case 41:case 47:this.$=a[o-1]+" "+a[o];break;case 42:case 43:case 45:this.$=a[o-2]+" "+a[o-1]+" "+a[o];break;case 44:case 46:this.$=a[o-3]+" "+a[o-2]+" "+a[o-1]+" "+a[o]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(r,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:n,13:i,14:a,15:s,16:o,17:l,18:c,19:18,20:h,21:u,22:d,23:p,24:g,25:f,26:m,27:y,28:v,29:x,30:b,31:w,33:k,35:T,36:E,37:24,38:C,40:S},e(r,[2,7],{1:[2,1]}),e(r,[2,3]),{9:36,11:17,12:n,13:i,14:a,15:s,16:o,17:l,18:c,19:18,20:h,21:u,22:d,23:p,24:g,25:f,26:m,27:y,28:v,29:x,30:b,31:w,33:k,35:T,36:E,37:24,38:C,40:S},e(r,[2,5]),e(r,[2,6]),e(r,[2,17]),e(r,[2,18]),e(r,[2,19]),e(r,[2,20]),e(r,[2,21]),e(r,[2,22]),e(r,[2,23]),e(r,[2,24]),e(r,[2,25]),e(r,[2,26]),e(r,[2,27]),{32:[1,37]},{34:[1,38]},e(r,[2,30]),e(r,[2,31]),e(r,[2,32]),{39:[1,39]},e(r,[2,8]),e(r,[2,9]),e(r,[2,10]),e(r,[2,11]),e(r,[2,12]),e(r,[2,13]),e(r,[2,14]),e(r,[2,15]),e(r,[2,16]),{41:[1,40],43:[1,41]},e(r,[2,4]),e(r,[2,28]),e(r,[2,29]),e(r,[2,33]),e(r,[2,34],{42:[1,42],43:[1,43]}),e(r,[2,40],{41:[1,44]}),e(r,[2,35],{43:[1,45]}),e(r,[2,36]),e(r,[2,38],{42:[1,46]}),e(r,[2,37]),e(r,[2,39])],defaultActions:{},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0{function r(){return function(t,e,i){var a=me(function(t){return t.add(4-t.isoWeekday(),"day")},"a"),s=((e=e.prototype).isoWeekYear=function(){return a(this).year()},e.isoWeek=function(t){var e,r,n;return this.$utils().u(t)?(r=a(this),n=this.isoWeekYear(),e=4-(n=(this.$u?i.utc:i)().year(n).startOf("year")).isoWeekday(),4{function r(){var o={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"},l=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,t=/\d/,e=/\d\d/,r=/\d\d?/,n=/\d*[^-_:/,()\s\d]+/,g={},i=me(function(t){return(t=+t)+(68{try{if(-1<["x","X"].indexOf(e))return new Date(("X"===e?1e3:1)*t);var i=T(e)(t),a=i.year,s=i.month,o=i.day,l=i.hours,c=i.minutes,h=i.seconds,u=i.milliseconds,d=i.zone,p=i.week,g=new Date,f=o||(a||s?1:g.getDate()),m=a||g.getFullYear(),y=0;a&&!s||(y=0{function r(){return function(t,e){var a=(e=e.prototype).format;e.format=function(t){var e,r,n=this,i=this.$locale();return this.isValid()?(e=this.$utils(),r=(t||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(t){switch(t){case"Q":return Math.ceil((n.$M+1)/3);case"Do":return i.ordinal(n.$D);case"gggg":return n.weekYear();case"GGGG":return n.isoWeekYear();case"wo":return i.ordinal(n.week(),"W");case"w":case"ww":return e.s(n.week(),"w"===t?1:2,"0");case"W":case"WW":return e.s(n.isoWeek(),"W"===t?1:2,"0");case"k":case"kk":return e.s(String(0===n.$H?24:n.$H),"k"===t?1:2,"0");case"X":return Math.floor(n.$d.getTime()/1e3);case"x":return n.$d.getTime();case"z":return"["+n.offsetName()+"]";case"zzz":return"["+n.offsetName("long")+"]";default:return t}}),a.bind(this)(r)):a.bind(this)(t)}}}"object"==typeof t&&typeof e<"u"?e.exports=r():"function"==typeof define&&define.amd?define(r):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_advancedFormat=r()});function Xkt(r,n,t){let i=!0;for(;i;)i=!1,t.forEach(function(t){var e=new RegExp("^\\s*"+t+"\\s*$");r[0].match(e)&&(n[t]=!0,r.shift(1),i=!0)})}var Kkt,Zkt,Qkt,Jkt,tTt,eTt,rTt,nTt,iTt,aTt,sTt,oTt,lTt,cTt,hTt,uTt,dTt,pTt,gTt,fTt,mTt,yTt,vTt,xTt,bTt,wTt,kTt,TTt,ETt,CTt,STt,_Tt,ATt,LTt,NTt,ITt,RTt,MTt,DTt,OTt,PTt,BTt,$Tt,FTt,zTt,GTt,UTt,qTt,jTt,WTt,YTt,HTt,VTt,XTt,KTt,ZTt,QTt,JTt,t7t,e7t,r7t,n7t,i7t,a7t,s7t,o7t,l7t,c7t,h7t,u7t,d7t,p7t,g7t,f7t,m7t,y7t,v7t,x7t,b7t,w7t,k7t,T7t=b(()=>{Kkt=q(s6(),1),Zkt=q(yr(),1),yTt=q(Ykt(),1),vTt=q(Hkt(),1),xTt=q(Vkt(),1),t(),Tu(),iS(),ku(),Zkt.default.extend(yTt.default),Zkt.default.extend(vTt.default),Zkt.default.extend(xTt.default),Qkt={friday:5,saturday:6},rTt=tTt=Jkt="",nTt=[],iTt=[],aTt=new Map,sTt=[],oTt=[],cTt=lTt="",hTt=["active","done","crit","milestone","vert"],pTt=dTt=!(uTt=[]),gTt="sunday",fTt="saturday",mTt=0,yTt=me(function(){sTt=[],oTt=[],uTt=[],e7t=[],eTt=t7t=JTt=void(XTt=0),rTt=cTt=tTt=Jkt=lTt="",nTt=[],pTt=dTt=!(iTt=[]),mTt=0,aTt=new Map,fh(),gTt="sunday",fTt="saturday"},"clear"),vTt=me(function(t){tTt=t},"setAxisFormat"),xTt=me(function(){return tTt},"getAxisFormat"),bTt=me(function(t){eTt=t},"setTickInterval"),wTt=me(function(){return eTt},"getTickInterval"),kTt=me(function(t){rTt=t},"setTodayMarker"),TTt=me(function(){return rTt},"getTodayMarker"),ETt=me(function(t){Jkt=t},"setDateFormat"),CTt=me(function(){dTt=!0},"enableInclusiveEndDates"),STt=me(function(){return dTt},"endDatesAreInclusive"),_Tt=me(function(){pTt=!0},"enableTopAxis"),ATt=me(function(){return pTt},"topAxisEnabled"),LTt=me(function(t){cTt=t},"setDisplayMode"),NTt=me(function(){return cTt},"getDisplayMode"),ITt=me(function(){return Jkt},"getDateFormat"),RTt=me(function(t){nTt=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),MTt=me(function(){return nTt},"getIncludes"),DTt=me(function(t){iTt=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),OTt=me(function(){return iTt},"getExcludes"),PTt=me(function(){return aTt},"getLinks"),BTt=me(function(t){lTt=t,sTt.push(t)},"addSection"),$Tt=me(function(){return sTt},"getSections"),FTt=me(function(){let t=s7t(),e=0;for(;!t&&e<10;)t=s7t(),e++;return oTt=e7t},"getTasks"),zTt=me(function(t,e,r,n){var e=t.format(e.trim()),i=t.format("YYYY-MM-DD");return!n.includes(e)&&!n.includes(i)&&(!((!r.includes("weekends")||t.isoWeekday()!==Qkt[fTt]&&t.isoWeekday()!==Qkt[fTt]+1)&&!r.includes(t.format("dddd").toLowerCase()))||r.includes(e)||r.includes(i))},"isInvalidDate"),GTt=me(function(t){gTt=t},"setWeekday"),UTt=me(function(){return gTt},"getWeekday"),qTt=me(function(t){fTt=t},"setWeekend"),jTt=me(function(e,r,n,i){if(n.length&&!e.manualEndTime){let t;t=(t=e.startTime instanceof Date?(0,Zkt.default)(e.startTime):(0,Zkt.default)(e.startTime,r,!0)).add(1,"d");var a=e.endTime instanceof Date?(0,Zkt.default)(e.endTime):(0,Zkt.default)(e.endTime,r,!0),[r,n]=WTt(t,a,r,n,i);e.endTime=r.toDate(),e.renderEndTime=n}},"checkTaskDates"),WTt=me(function(t,e,r,n,i){let a=!1,s=null;for(;t<=e;)a||(s=e.toDate()),(a=zTt(t,r,n,i))&&(e=e.add(1,"d")),t=t.add(1,"d");return[e,s]},"fixTaskDates"),YTt=me(function(t,e,r){r=r.trim();var n=/^after\s+(?[\d\w- ]+)/.exec(r);if(null!==n){let t=null;for(var i of n.groups.ids.split(" "))void 0!==(i=i7t(i))&&(!t||i.endTime>t.endTime)&&(t=i);return t?t.endTime:((n=new Date).setHours(0,0,0,0),n)}if((n=(0,Zkt.default)(r,e.trim(),!0)).isValid())return n.toDate();if(D.debug("Invalid date:"+r),D.debug("With date format:"+e.trim()),void 0===(n=new Date(r))||isNaN(n.getTime())||n.getFullYear()<-1e4||1e4[\d\w- ]+)/.exec(r);if(null!==i){let t=null;for(var a of i.groups.ids.split(" "))void 0!==(a=i7t(a))&&(!t||a.startTime{window.open(r,"_self")}),aTt.set(t,r))}),l7t(t,"clickable")},"setLink"),l7t=me(function(t,e){t.split(",").forEach(function(t){void 0!==(t=i7t(t))&&t.classes.push(e)})},"setClass"),c7t=me(function(t,e,n){if("loose"===O().securityLevel&&void 0!==e){let r=[];if("string"==typeof n){r=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let e=0;e{tS.runFunc(e,...r)})}},"setClickFun"),h7t=me(function(e,r){uTt.push(function(){var t=document.querySelector(`[id="${e}"]`);null!==t&&t.addEventListener("click",function(){r()})},function(){var t=document.querySelector(`[id="${e}-text"]`);null!==t&&t.addEventListener("click",function(){r()})})},"pushFun"),u7t=me(function(t,e,r){t.split(",").forEach(function(t){c7t(t,e,r)}),l7t(t,"clickable")},"setClickEvent"),d7t=me(function(e){uTt.forEach(function(t){t(e)})},"bindFunctions"),p7t={getConfig:me(()=>O().gantt,"getConfig"),clear:yTt,setDateFormat:ETt,getDateFormat:ITt,enableInclusiveEndDates:CTt,endDatesAreInclusive:STt,enableTopAxis:_Tt,topAxisEnabled:ATt,setAxisFormat:vTt,getAxisFormat:xTt,setTickInterval:bTt,getTickInterval:wTt,setTodayMarker:kTt,getTodayMarker:TTt,setAccTitle:mh,getAccTitle:yh,setDiagramTitle:bh,getDiagramTitle:wh,setDisplayMode:LTt,getDisplayMode:NTt,setAccDescription:vh,getAccDescription:xh,addSection:BTt,getSections:$Tt,getTasks:FTt,addTask:n7t,findTaskById:i7t,addTaskOrg:a7t,setIncludes:RTt,getIncludes:MTt,setExcludes:DTt,getExcludes:OTt,setClickEvent:u7t,setLink:o7t,getLinks:PTt,bindFunctions:d7t,parseDuration:HTt,isInvalidDate:zTt,setWeekday:GTt,getWeekday:UTt,setWeekend:qTt},me(Xkt,"getTaskTags")}),E7t=b(()=>{g7t=q(yr(),1),t(),i6(),Oc(),Tu(),lh(),f7t=me(function(){D.debug("Something is calling, setConf, remove the call")},"setConf"),m7t={monday:hb,tuesday:ub,wednesday:db,thursday:pb,friday:gb,saturday:fb,sunday:cb},y7t=me((t,e)=>{let r=[...t].map(()=>-1/0),n=[...t].sort((t,e)=>t.startTime-e.startTime||t.order-e.order),i=0;for(var a of n)for(let t=0;t=r[t]){r[t]=a.endTime,a.order=t+e,t>i&&(i=t);break}return i},"getMaxIntersections"),x7t=me(function(t,l,e,p){let g=O().gantt,r=O().securityLevel,n,i=("sandbox"===r&&(n=H("#i"+l)),H("sandbox"===r?n.nodes()[0].contentDocument.body:"body")),s="sandbox"===r?n.nodes()[0].contentDocument:document,a=s.getElementById(l),u=(void 0===(v7t=a.parentElement.offsetWidth)&&(v7t=1200),void 0!==g.useWidth&&(v7t=g.useWidth),p.db.getTasks()),d=[];for(var o of u)d.push(o.type);d=A(d);let c={},h=2*g.topPadding;if("compact"===p.db.getDisplayMode()||"compact"===g.displayMode){var f,m,y={};for(f of u)void 0===y[f.section]?y[f.section]=[f]:y[f.section].push(f);let t=0;for(m of Object.keys(y)){var v=y7t(y[m],t)+1;t+=v,h+=v*(g.barHeight+g.barGap),c[m]=v}}else{h+=u.length*(g.barHeight+g.barGap);for(let e of d)c[e]=u.filter(t=>t.type===e).length}a.setAttribute("viewBox","0 0 "+v7t+" "+h);let x=i.select(`[id="${l}"]`),b=p5().domain([Ju(u,function(t){return t.startTime}),Zu(u,function(t){return t.endTime})]).rangeRound([0,v7t-g.leftPadding-g.rightPadding]);function w(t,e){let r=t.startTime,n=e.startTime,i=0;return nt.vert===e.vert?0:t.vert?1:-1);var a=[...new Set(t.map(t=>t.order))].map(e=>t.find(t=>t.order===e));x.append("g").selectAll("rect").data(a).enter().append("rect").attr("x",0).attr("y",function(t,e){return t.order*r+n-2}).attr("width",function(){return h-g.rightPadding/2}).attr("height",r).attr("class",function(t){for(var[e,r]of d.entries())if(t.type===r)return"section section"+e%g.numberSectionStyles;return"section section0"}).enter();let s=x.append("g").selectAll("rect").data(t).enter(),o=p.db.getLinks();if(s.append("rect").attr("id",function(t){return t.id}).attr("rx",3).attr("ry",3).attr("x",function(t){return t.milestone?b(t.startTime)+i+.5*(b(t.endTime)-b(t.startTime))-.5*c:b(t.startTime)+i}).attr("y",function(t,e){return e=t.order,t.vert?g.gridLineStartPadding:e*r+n}).attr("width",function(t){return t.milestone?c:t.vert?.08*c:b(t.renderEndTime||t.endTime)-b(t.startTime)}).attr("height",function(t){return t.vert?u.length*(g.barHeight+g.barGap)+2*g.barHeight:c}).attr("transform-origin",function(t,e){return e=t.order,(b(t.startTime)+i+.5*(b(t.endTime)-b(t.startTime))).toString()+"px "+(e*r+n+.5*c).toString()+"px"}).attr("class",function(t){let e="",r=(0r-e?r+t+1.5*g.leftPadding>h?e+i-5:r+i+5:(r-e)/2+e+i}).attr("y",function(t,e){return t.vert?g.gridLineStartPadding+u.length*(g.barHeight+g.barGap)+60:t.order*r+g.barHeight/2+(g.fontSize/2-2)+n}).attr("text-height",c).attr("class",function(t){let e=b(t.startTime),r=b(t.endTime),n=(t.milestone&&(r=e+c),this.getBBox().width),i="",a=(0r-e?r+n+1.5*g.leftPadding>h?i+" taskTextOutsideLeft taskTextOutside"+a+" "+l:i+" taskTextOutsideRight taskTextOutside"+a+" "+l+" width-"+n:i+" taskText taskText"+a+" "+l+" width-"+n}),"sandbox"===O().securityLevel){let a=H("#i"+l).nodes()[0].contentDocument;s.filter(function(t){return o.has(t.id)}).each(function(t){var e=a.querySelector("#"+t.id),r=a.querySelector("#"+t.id+"-text"),n=e.parentNode,i=a.createElement("a");i.setAttribute("xlink:href",o.get(t.id)),i.setAttribute("target","_top"),n.appendChild(i),i.appendChild(e),i.appendChild(r)})}}function E(s,o,l,t,c,e,h,u){if(0!==h.length||0!==u.length){let i,a;for(var{startTime:r,endTime:n}of e)(void 0===i||ra)&&(a=n);if(i&&a)if(5<(0,g7t.default)(a).diff((0,g7t.default)(i),"year"))D.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");else{let t=p.db.getDateFormat(),e=[],r=null,n=(0,g7t.default)(i);for(;n.valueOf()<=a;)p.db.isInvalidDate(n,t,h,u)?r?r.end=n:r={start:n,end:n}:r&&(e.push(r),r=null),n=n.add(1,"d");x.append("g").selectAll("rect").data(e).enter().append("rect").attr("id",t=>"exclude-"+t.start.format("YYYY-MM-DD")).attr("x",t=>b(t.start.startOf("day"))+l).attr("y",g.gridLineStartPadding).attr("width",t=>b(t.end.endOf("day"))-b(t.start.startOf("day"))).attr("height",c-o-g.gridLineStartPadding).attr("transform-origin",function(t,e){return(b(t.start)+l+.5*(b(t.end)-b(t.start))).toString()+"px "+(e*s+.5*c).toString()+"px"}).attr("class","exclude-range")}}}function C(t,e,r,n){var i=p.db.getDateFormat(),i=p.db.getAxisFormat()||("D"===i?"%d":g.axisFormat??"%Y-%m-%d"),a=pd(b).tickSize(-n+e+g.gridLineStartPadding).tickFormat(o5(i)),s=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(p.db.getTickInterval()||g.tickInterval);if(null!==s){var o=s[1],l=s[2],c=p.db.getWeekday()||g.weekday;switch(l){case"millisecond":a.ticks(Yx.every(o));break;case"second":a.ticks(Hx.every(o));break;case"minute":a.ticks(Vx.every(o));break;case"hour":a.ticks(Kx.every(o));break;case"day":a.ticks(Qx.every(o));break;case"week":a.ticks(m7t[c].every(o));break;case"month":a.ticks(Tb.every(o))}}if(x.append("g").attr("class","grid").attr("transform","translate("+t+", "+(n-50)+")").call(a).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),p.db.topAxisEnabled()||g.topAxis){var h=dd(b).tickSize(-n+e+g.gridLineStartPadding).tickFormat(o5(i));if(null!==s){var u=s[1],l=s[2],d=p.db.getWeekday()||g.weekday;switch(l){case"millisecond":h.ticks(Yx.every(u));break;case"second":h.ticks(Hx.every(u));break;case"minute":h.ticks(Vx.every(u));break;case"hour":h.ticks(Kx.every(u));break;case"day":h.ticks(Qx.every(u));break;case"week":h.ticks(m7t[d].every(u));break;case"month":h.ticks(Tb.every(u))}}x.append("g").attr("class","grid").attr("transform","translate("+t+", "+e+")").call(h).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}function S(r,n){let i=0,a=Object.keys(c).map(t=>[t,c[t]]);x.append("g").selectAll("text").data(a).enter().append(function(t){var e,r,n=-((t=t[0].split(L.lineBreakRegex)).length-1)/2,i=s.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("dy",n+"em");for([e,r]of t.entries()){var a=s.createElementNS("http://www.w3.org/2000/svg","tspan");a.setAttribute("alignment-baseline","central"),a.setAttribute("x","10"),0{w7t=me(t=>` + .mermaid-main-font { + font-family: ${t.fontFamily}; + } + + .exclude-range { + fill: ${t.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${t.sectionBkgColor}; + } + + .section2 { + fill: ${t.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${t.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${t.titleColor}; + } + + .sectionTitle1 { + fill: ${t.titleColor}; + } + + .sectionTitle2 { + fill: ${t.titleColor}; + } + + .sectionTitle3 { + fill: ${t.titleColor}; + } + + .sectionTitle { + text-anchor: start; + font-family: ${t.fontFamily}; + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${t.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + } + + .grid .tick text { + font-family: ${t.fontFamily}; + fill: ${t.textColor}; + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${t.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: ${t.fontFamily}; + } + + .taskTextOutsideRight { + fill: ${t.taskTextDarkColor}; + text-anchor: start; + font-family: ${t.fontFamily}; + } + + .taskTextOutsideLeft { + fill: ${t.taskTextDarkColor}; + text-anchor: end; + } + + + /* Special case clickable */ + + .task.clickable { + cursor: pointer; + } + + .taskText.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${t.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${t.taskBkgColor}; + stroke: ${t.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${t.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${t.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${t.activeTaskBkgColor}; + stroke: ${t.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${t.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${t.doneTaskBorderColor}; + fill: ${t.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${t.taskTextDarkColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${t.critBorderColor}; + fill: ${t.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${t.critBorderColor}; + fill: ${t.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${t.critBorderColor}; + fill: ${t.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: ${t.taskTextDarkColor} !important; + } + + .vert { + stroke: ${t.vertLineColor}; + } + + .vertText { + font-size: 15px; + text-anchor: middle; + fill: ${t.vertLineColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${t.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.titleColor||t.textColor}; + font-family: ${t.fontFamily}; + } +`,"getStyles"),k7t=w7t}),S7t={};KBt(S7t,{diagram:()=>_7t});var _7t,A7t,L7t,N7t,I7t,R7t,M7t,D7t,O7t,P7t=b(()=>{Wkt(),T7t(),E7t(),C7t(),_7t={parser:qkt,db:p7t,renderer:b7t,styles:k7t}}),B7t=b(()=>{v6t(),t(),A7t={parse:me(async t=>{t=await g6t("info",t),D.debug(t)},"parse")}}),$7t=b(()=>{L7t={name:"mermaid",version:"11.11.0",description:"Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",type:"module",module:"./dist/mermaid.core.mjs",types:"./dist/mermaid.d.ts",exports:{".":{types:"./dist/mermaid.d.ts",import:"./dist/mermaid.core.mjs",default:"./dist/mermaid.core.mjs"},"./*":"./*"},keywords:["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph","mindmap","packet diagram","c4 diagram","er diagram","pie chart","pie diagram","quadrant chart","requirement diagram","graph"],scripts:{clean:"rimraf dist",dev:"pnpm -w dev","docs:code":"typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup","docs:build":"rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts","docs:verify":"pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify","docs:pre:vitepress":"pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts","docs:build:vitepress":"pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing","docs:dev":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:dev:docker":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:serve":"pnpm docs:build:vitepress && vitepress serve src/vitepress","docs:spellcheck":'cspell "src/docs/**/*.md"',"docs:release-version":"tsx scripts/update-release-version.mts","docs:verify-version":"tsx scripts/update-release-version.mts --verify","types:build-config":"tsx scripts/create-types-from-json-schema.mts","types:verify-config":"tsx scripts/create-types-from-json-schema.mts --verify",checkCircle:"npx madge --circular ./src",prepublishOnly:"pnpm docs:verify-version"},repository:{type:"git",url:"https://github.com/mermaid-js/mermaid"},author:"Knut Sveidqvist",license:"MIT",standard:{ignore:["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],globals:["page"]},dependencies:{"@braintree/sanitize-url":"^7.0.4","@iconify/utils":"^3.0.1","@mermaid-js/parser":"workspace:^","@types/d3":"^7.4.3",cytoscape:"^3.29.3","cytoscape-cose-bilkent":"^4.1.0","cytoscape-fcose":"^2.2.0",d3:"^7.9.0","d3-sankey":"^0.12.3","dagre-d3-es":"7.0.11",dayjs:"^1.11.13",dompurify:"^3.2.5",katex:"^0.16.22",khroma:"^2.1.0","lodash-es":"^4.17.21",marked:"^15.0.7",roughjs:"^4.6.6",stylis:"^4.3.6","ts-dedent":"^2.2.0",uuid:"^11.1.0"},devDependencies:{"@adobe/jsonschema2md":"^8.0.2","@iconify/types":"^2.0.0","@types/cytoscape":"^3.21.9","@types/cytoscape-fcose":"^2.2.4","@types/d3-sankey":"^0.12.4","@types/d3-scale":"^4.0.9","@types/d3-scale-chromatic":"^3.1.0","@types/d3-selection":"^3.0.11","@types/d3-shape":"^3.1.7","@types/jsdom":"^21.1.7","@types/katex":"^0.16.7","@types/lodash-es":"^4.17.12","@types/micromatch":"^4.0.9","@types/stylis":"^4.2.7","@types/uuid":"^10.0.0",ajv:"^8.17.1",canvas:"^3.1.0",chokidar:"3.6.0",concurrently:"^9.1.2","csstree-validator":"^4.0.1",globby:"^14.0.2",jison:"^0.4.18","js-base64":"^3.7.7",jsdom:"^26.1.0","json-schema-to-typescript":"^15.0.4",micromatch:"^4.0.8","path-browserify":"^1.0.1",prettier:"^3.5.2",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.1",rimraf:"^6.0.1","start-server-and-test":"^2.0.10","type-fest":"^4.35.0",typedoc:"^0.28.9","typedoc-plugin-markdown":"^4.8.0",typescript:"~5.7.3","unist-util-flatmap":"^1.0.0","unist-util-visit":"^5.0.0",vitepress:"^1.0.2","vitepress-plugin-search":"1.0.4-alpha.22"},files:["dist/","README.md"],publishConfig:{access:"public"}}}),F7t=b(()=>{$7t(),N7t={version:L7t.version+""},I7t=me(()=>N7t.version,"getVersion"),R7t={getVersion:I7t}}),z7t=b(()=>{i6(),Tu(),M7t=me(t=>{let e=O().securityLevel,r=H("body"),n;return"sandbox"===e&&(n=H("#i"+t).node()?.contentDocument??document,r=H(n.body)),r.select("#"+t)},"selectSvgElement")}),G7t=b(()=>{t(),z7t(),lh(),D7t=me((t,e,r)=>{D.debug(`rendering info diagram +`+t),t=M7t(e),Zc(t,100,400,!0),t.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text("v"+r)},"draw"),O7t={draw:D7t}}),U7t={};KBt(U7t,{diagram:()=>q7t});var q7t,j7t,W7t,Y7t,H7t,V7t,X7t,K7t,Z7t,Q7t,J7t,t8t,e8t,r8t,n8t,i8t,a8t,s8t,o8t,l8t=b(()=>{B7t(),F7t(),G7t(),q7t={parser:A7t,db:R7t,renderer:O7t}}),c8t=b(()=>{t(),ku(),tn(),V7t=We.pie,j7t={sections:new Map,showData:!1,config:V7t},W7t=j7t.sections,Y7t=j7t.showData,H7t=structuredClone(V7t),V7t=me(()=>structuredClone(H7t),"getConfig"),X7t=me(()=>{W7t=new Map,Y7t=j7t.showData,fh()},"clear"),K7t=me(({label:t,value:e})=>{if(e<0)throw new Error(`"${t}" has invalid value: ${e}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);W7t.has(t)||(W7t.set(t,e),D.debug(`added new section: ${t}, with value: `+e))},"addSection"),Z7t=me(()=>W7t,"getSections"),Q7t=me(t=>{Y7t=t},"setShowData"),J7t=me(()=>Y7t,"getShowData"),t8t={getConfig:V7t,clear:X7t,setDiagramTitle:bh,getDiagramTitle:wh,setAccTitle:mh,getAccTitle:yh,setAccDescription:vh,getAccDescription:xh,addSection:K7t,getSections:Z7t,setShowData:Q7t,getShowData:J7t}}),h8t=b(()=>{v6t(),t(),k6t(),c8t(),e8t=me((t,e)=>{x6t(t,e),e.setShowData(t.showData),t.sections.map(e.addSection)},"populateDb"),r8t={parse:me(async t=>{t=await g6t("pie",t),D.debug(t),e8t(t,t8t)},"parse")}}),u8t=b(()=>{n8t=me(t=>` + .pieCircle{ + stroke: ${t.pieStrokeColor}; + stroke-width : ${t.pieStrokeWidth}; + opacity : ${t.pieOpacity}; + } + .pieOuterCircle{ + stroke: ${t.pieOuterStrokeColor}; + stroke-width: ${t.pieOuterStrokeWidth}; + fill: none; + } + .pieTitleText { + text-anchor: middle; + font-size: ${t.pieTitleTextSize}; + fill: ${t.pieTitleTextColor}; + font-family: ${t.fontFamily}; + } + .slice { + font-family: ${t.fontFamily}; + fill: ${t.pieSectionTextColor}; + font-size:${t.pieSectionTextSize}; + // fill: white; + } + .legend text { + fill: ${t.pieLegendTextColor}; + font-family: ${t.fontFamily}; + font-size: ${t.pieLegendTextSize}; + } +`,"getStyles"),i8t=n8t}),d8t=b(()=>{i6(),Tu(),t(),z7t(),lh(),iS(),a8t=me(t=>{let e=[...t.values()].reduce((t,e)=>t+e,0),r=[...t.entries()].map(([t,e])=>({label:t,value:e})).filter(t=>1<=t.value/e*100).sort((t,e)=>e.value-t.value);return l3().value(t=>t.value)(r)},"createPieArcs"),s8t=me((t,e,r,n)=>{D.debug(`rendering pie chart +`+t);let i=n.db,a=O(),s=SC(i.getConfig(),a.pie),o=M7t(e),l=o.append("g");l.attr("transform","translate(225,225)");var t=a.themeVariables,[n]=JC(t.pieOuterStrokeWidth);n??=2;let c=s.textPosition,h=Math.min(450,450)/2-40,u=Y5().innerRadius(0).outerRadius(h),d=Y5().innerRadius(h*c).outerRadius(h*c),p=(l.append("circle").attr("cx",0).attr("cy",0).attr("r",h+n/2).attr("class","pieOuterCircle"),i.getSections()),g=a8t(p),f=[t.pie1,t.pie2,t.pie3,t.pie4,t.pie5,t.pie6,t.pie7,t.pie8,t.pie9,t.pie10,t.pie11,t.pie12],m=0,y=(p.forEach(t=>{m+=t}),g.filter(t=>"0"!==(t.data.value/m*100).toFixed(0))),v=yx(f),x=(l.selectAll("mySlices").data(y).enter().append("path").attr("d",u).attr("fill",t=>v(t.data.label)).attr("class","pieCircle"),l.selectAll("mySlices").data(y).enter().append("text").text(t=>(t.data.value/m*100).toFixed(0)+"%").attr("transform",t=>"translate("+d.centroid(t)+")").style("text-anchor","middle").attr("class","slice"),l.append("text").text(i.getDiagramTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText"),[...p.entries()].map(([t,e])=>({label:t,value:e}))),b=l.selectAll(".legend").data(x).enter().append("g").attr("class","legend").attr("transform",(t,e)=>"translate(216,"+(22*e-22*x.length/2)+")");b.append("rect").attr("width",18).attr("height",18).style("fill",t=>v(t.label)).style("stroke",t=>v(t.label)),b.append("text").attr("x",22).attr("y",14).text(t=>i.getShowData()?t.label+` [${t.value}]`:t.label),e=512+Math.max(...b.selectAll("text").nodes().map(t=>t?.getBoundingClientRect().width??0)),o.attr("viewBox",`0 0 ${e} 450`),Zc(o,450,e,s.useMaxWidth)},"draw"),o8t={draw:s8t}}),p8t={};KBt(p8t,{diagram:()=>g8t});var g8t,f8t,m8t,y8t,v8t,x8t=b(()=>{h8t(),c8t(),u8t(),d8t(),g8t={parser:r8t,db:t8t,renderer:o8t,styles:i8t}}),b8t=b(()=>{function t(){this.yy={}}var e=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),r=[1,3],n=[1,4],i=[1,5],a=[1,6],s=[1,7],P=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],B=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],o=[55,56,57],$=[2,36],l=[1,37],c=[1,36],h=[1,38],u=[1,35],d=[1,43],p=[1,41],F=[1,14],z=[1,23],G=[1,18],U=[1,19],q=[1,20],j=[1,21],W=[1,22],Y=[1,24],H=[1,25],V=[1,26],X=[1,27],K=[1,28],Z=[1,29],g=[1,32],f=[1,33],m=[1,34],y=[1,39],v=[1,40],x=[1,42],b=[1,44],w=[1,62],k=[1,61],T=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],Q=[1,65],J=[1,66],tt=[1,67],et=[1,68],rt=[1,69],nt=[1,70],it=[1,71],at=[1,72],st=[1,73],ot=[1,74],lt=[1,75],ct=[1,76],E=[4,5,6,7,8,9,10,11,12,13,14,15,18],C=[1,90],S=[1,91],_=[1,92],A=[1,99],L=[1,93],N=[1,96],I=[1,94],R=[1,95],M=[1,97],D=[1,98],ht=[1,102],ut=[10,55,56,57],O=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],r={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 23:this.$=a[o];break;case 24:this.$=a[o-1]+""+a[o];break;case 26:this.$=a[o-1]+a[o];break;case 27:this.$=[a[o].trim()];break;case 28:a[o-2].push(a[o].trim()),this.$=a[o-2];break;case 29:this.$=a[o-4],n.addClass(a[o-2],a[o]);break;case 37:this.$=[];break;case 42:this.$=a[o].trim(),n.setDiagramTitle(this.$);break;case 43:this.$=a[o].trim(),n.setAccTitle(this.$);break;case 44:case 45:this.$=a[o].trim(),n.setAccDescription(this.$);break;case 46:n.addSection(a[o].substr(8)),this.$=a[o].substr(8);break;case 47:n.addPoint(a[o-3],"",a[o-1],a[o],[]);break;case 48:n.addPoint(a[o-4],a[o-3],a[o-1],a[o],[]);break;case 49:n.addPoint(a[o-4],"",a[o-2],a[o-1],a[o]);break;case 50:n.addPoint(a[o-5],a[o-4],a[o-2],a[o-1],a[o]);break;case 51:n.setXAxisLeftText(a[o-2]),n.setXAxisRightText(a[o]);break;case 52:a[o-1].text+=" ⟶ ",n.setXAxisLeftText(a[o-1]);break;case 53:n.setXAxisLeftText(a[o]);break;case 54:n.setYAxisBottomText(a[o-2]),n.setYAxisTopText(a[o]);break;case 55:a[o-1].text+=" ⟶ ",n.setYAxisBottomText(a[o-1]);break;case 56:n.setYAxisBottomText(a[o]);break;case 57:n.setQuadrant1Text(a[o]);break;case 58:n.setQuadrant2Text(a[o]);break;case 59:n.setQuadrant3Text(a[o]);break;case 60:n.setQuadrant4Text(a[o]);break;case 64:this.$={text:a[o],type:"text"};break;case 65:this.$={text:a[o-1].text+""+a[o],type:a[o-1].type};break;case 66:this.$={text:a[o],type:"text"};break;case 67:this.$={text:a[o],type:"markdown"};break;case 68:this.$=a[o];break;case 69:this.$=a[o-1]+""+a[o]}},"anonymous"),table:[{18:r,26:1,27:2,28:n,55:i,56:a,57:s},{1:[3]},{18:r,26:8,27:2,28:n,55:i,56:a,57:s},{18:r,26:9,27:2,28:n,55:i,56:a,57:s},e(P,[2,33],{29:10}),e(B,[2,61]),e(B,[2,62]),e(B,[2,63]),{1:[2,30]},{1:[2,31]},e(o,$,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:l,5:c,10:h,12:u,13:d,14:p,18:F,25:z,35:G,37:U,39:q,41:j,42:W,48:Y,50:H,51:V,52:X,53:K,54:Z,60:g,61:f,63:m,64:y,65:v,66:x,67:b}),e(P,[2,34]),{27:45,55:i,56:a,57:s},e(o,[2,37]),e(o,$,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:l,5:c,10:h,12:u,13:d,14:p,18:F,25:z,35:G,37:U,39:q,41:j,42:W,48:Y,50:H,51:V,52:X,53:K,54:Z,60:g,61:f,63:m,64:y,65:v,66:x,67:b}),e(o,[2,39]),e(o,[2,40]),e(o,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},e(o,[2,45]),e(o,[2,46]),{18:[1,50]},{4:l,5:c,10:h,12:u,13:d,14:p,43:51,58:31,60:g,61:f,63:m,64:y,65:v,66:x,67:b},{4:l,5:c,10:h,12:u,13:d,14:p,43:52,58:31,60:g,61:f,63:m,64:y,65:v,66:x,67:b},{4:l,5:c,10:h,12:u,13:d,14:p,43:53,58:31,60:g,61:f,63:m,64:y,65:v,66:x,67:b},{4:l,5:c,10:h,12:u,13:d,14:p,43:54,58:31,60:g,61:f,63:m,64:y,65:v,66:x,67:b},{4:l,5:c,10:h,12:u,13:d,14:p,43:55,58:31,60:g,61:f,63:m,64:y,65:v,66:x,67:b},{4:l,5:c,10:h,12:u,13:d,14:p,43:56,58:31,60:g,61:f,63:m,64:y,65:v,66:x,67:b},{4:l,5:c,8:w,10:h,12:u,13:d,14:p,18:k,44:[1,57],47:[1,58],58:60,59:59,63:m,64:y,65:v,66:x,67:b},e(T,[2,64]),e(T,[2,66]),e(T,[2,67]),e(T,[2,70]),e(T,[2,71]),e(T,[2,72]),e(T,[2,73]),e(T,[2,74]),e(T,[2,75]),e(T,[2,76]),e(T,[2,77]),e(T,[2,78]),e(T,[2,79]),e(T,[2,80]),e(P,[2,35]),e(o,[2,38]),e(o,[2,42]),e(o,[2,43]),e(o,[2,44]),{3:64,4:Q,5:J,6:tt,7:et,8:rt,9:nt,10:it,11:at,12:st,13:ot,14:lt,15:ct,21:63},e(o,[2,53],{59:59,58:60,4:l,5:c,8:w,10:h,12:u,13:d,14:p,18:k,49:[1,77],63:m,64:y,65:v,66:x,67:b}),e(o,[2,56],{59:59,58:60,4:l,5:c,8:w,10:h,12:u,13:d,14:p,18:k,49:[1,78],63:m,64:y,65:v,66:x,67:b}),e(o,[2,57],{59:59,58:60,4:l,5:c,8:w,10:h,12:u,13:d,14:p,18:k,63:m,64:y,65:v,66:x,67:b}),e(o,[2,58],{59:59,58:60,4:l,5:c,8:w,10:h,12:u,13:d,14:p,18:k,63:m,64:y,65:v,66:x,67:b}),e(o,[2,59],{59:59,58:60,4:l,5:c,8:w,10:h,12:u,13:d,14:p,18:k,63:m,64:y,65:v,66:x,67:b}),e(o,[2,60],{59:59,58:60,4:l,5:c,8:w,10:h,12:u,13:d,14:p,18:k,63:m,64:y,65:v,66:x,67:b}),{45:[1,79]},{44:[1,80]},e(T,[2,65]),e(T,[2,81]),e(T,[2,82]),e(T,[2,83]),{3:82,4:Q,5:J,6:tt,7:et,8:rt,9:nt,10:it,11:at,12:st,13:ot,14:lt,15:ct,18:[1,81]},e(E,[2,23]),e(E,[2,1]),e(E,[2,2]),e(E,[2,3]),e(E,[2,4]),e(E,[2,5]),e(E,[2,6]),e(E,[2,7]),e(E,[2,8]),e(E,[2,9]),e(E,[2,10]),e(E,[2,11]),e(E,[2,12]),e(o,[2,52],{58:31,43:83,4:l,5:c,10:h,12:u,13:d,14:p,60:g,61:f,63:m,64:y,65:v,66:x,67:b}),e(o,[2,55],{58:31,43:84,4:l,5:c,10:h,12:u,13:d,14:p,60:g,61:f,63:m,64:y,65:v,66:x,67:b}),{46:[1,85]},{45:[1,86]},{4:C,5:S,6:_,8:A,11:L,13:N,16:89,17:I,18:R,19:M,20:D,22:88,23:87},e(E,[2,24]),e(o,[2,51],{59:59,58:60,4:l,5:c,8:w,10:h,12:u,13:d,14:p,18:k,63:m,64:y,65:v,66:x,67:b}),e(o,[2,54],{59:59,58:60,4:l,5:c,8:w,10:h,12:u,13:d,14:p,18:k,63:m,64:y,65:v,66:x,67:b}),e(o,[2,47],{22:88,16:89,23:100,4:C,5:S,6:_,8:A,11:L,13:N,17:I,18:R,19:M,20:D}),{46:[1,101]},e(o,[2,29],{10:ht}),e(ut,[2,27],{16:103,4:C,5:S,6:_,8:A,11:L,13:N,17:I,18:R,19:M,20:D}),e(O,[2,25]),e(O,[2,13]),e(O,[2,14]),e(O,[2,15]),e(O,[2,16]),e(O,[2,17]),e(O,[2,18]),e(O,[2,19]),e(O,[2,20]),e(O,[2,21]),e(O,[2,22]),e(o,[2,49],{10:ht}),e(o,[2,48],{22:88,16:89,23:104,4:C,5:S,6:_,8:A,11:L,13:N,17:I,18:R,19:M,20:D}),{4:C,5:S,6:_,8:A,11:L,13:N,16:89,17:I,18:R,19:M,20:D,22:105},e(O,[2,26]),e(o,[2,50],{10:ht}),e(ut,[2,28],{16:103,4:C,5:S,6:_,8:A,11:L,13:N,17:I,18:R,19:M,20:D})],defaultActions:{8:[2,30],9:[2,31]},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0 *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}};r.lexer=n,me(t,"Parser"),(f8t=new((t.prototype=r).Parser=t)).parser=f8t,m8t=f8t}),w8t=b(()=>{i6(),tn(),t(),Xr(),y8t=Oe(),v8t=class{constructor(){this.classes=new Map,this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{me(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:We.quadrantChart?.chartWidth||500,chartWidth:We.quadrantChart?.chartHeight||500,titlePadding:We.quadrantChart?.titlePadding||10,titleFontSize:We.quadrantChart?.titleFontSize||20,quadrantPadding:We.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:We.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:We.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:We.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:We.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:We.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:We.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:We.quadrantChart?.pointTextPadding||5,pointLabelFontSize:We.quadrantChart?.pointLabelFontSize||12,pointRadius:We.quadrantChart?.pointRadius||5,xAxisPosition:We.quadrantChart?.xAxisPosition||"top",yAxisPosition:We.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:We.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:We.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:y8t.quadrant1Fill,quadrant2Fill:y8t.quadrant2Fill,quadrant3Fill:y8t.quadrant3Fill,quadrant4Fill:y8t.quadrant4Fill,quadrant1TextFill:y8t.quadrant1TextFill,quadrant2TextFill:y8t.quadrant2TextFill,quadrant3TextFill:y8t.quadrant3TextFill,quadrant4TextFill:y8t.quadrant4TextFill,quadrantPointFill:y8t.quadrantPointFill,quadrantPointTextFill:y8t.quadrantPointTextFill,quadrantXAxisTextFill:y8t.quadrantXAxisTextFill,quadrantYAxisTextFill:y8t.quadrantYAxisTextFill,quadrantTitleFill:y8t.quadrantTitleFill,quadrantInternalBorderStrokeFill:y8t.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:y8t.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,D.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}addClass(t,e){this.classes.set(t,e)}setConfig(t){D.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){D.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,e,r,n){var i=2*this.config.xAxisLabelPadding+this.config.xAxisLabelFontSize,t={top:"top"===t&&e?i:0,bottom:"bottom"===t&&e?i:0},e=2*this.config.yAxisLabelPadding+this.config.yAxisLabelFontSize,i={left:"left"===this.config.yAxisPosition&&r?e:0,right:"right"===this.config.yAxisPosition&&r?e:0},r=this.config.titleFontSize+2*this.config.titlePadding,e={top:n?r:0},n=this.config.quadrantPadding+i.left,r=this.config.quadrantPadding+t.top+e.top,a=this.config.chartWidth-2*this.config.quadrantPadding-i.left-i.right,s=this.config.chartHeight-2*this.config.quadrantPadding-t.top-t.bottom-e.top;return{xAxisSpace:t,yAxisSpace:i,titleSpace:e,quadrantSpace:{quadrantLeft:n,quadrantTop:r,quadrantWidth:a,quadrantHalfWidth:a/2,quadrantHeight:s,quadrantHalfHeight:s/2}}}getAxisLabels(t,e,r,n){var{quadrantSpace:n,titleSpace:i}=n,{quadrantHalfHeight:n,quadrantHeight:a,quadrantLeft:s,quadrantHalfWidth:o,quadrantTop:l,quadrantWidth:c}=n,h=!!this.data.xAxisRightText,u=!!this.data.yAxisTopText,d=[];return this.data.xAxisLeftText&&e&&d.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:s+(h?o/2:0),y:"top"===t?this.config.xAxisLabelPadding+i.top:this.config.xAxisLabelPadding+l+a+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:h?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&e&&d.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:s+o+(h?o/2:0),y:"top"===t?this.config.xAxisLabelPadding+i.top:this.config.xAxisLabelPadding+l+a+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:h?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&r&&d.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+s+c+this.config.quadrantPadding,y:l+a-(u?n/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&r&&d.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+s+c+this.config.quadrantPadding,y:l+n-(u?n/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:-90}),d}getQuadrants(t){var e,{quadrantHalfHeight:t,quadrantLeft:r,quadrantHalfWidth:n,quadrantTop:i}=t=t.quadrantSpace;for(e of r=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:r+n,y:i,width:n,height:t,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:r,y:i,width:n,height:t,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:r,y:i+t,width:n,height:t,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:r+n,y:i+t,width:n,height:t,fill:this.themeConfig.quadrant4Fill}])e.text.x=e.x+e.width/2,0===this.data.points.length?(e.text.y=e.y+e.height/2,e.text.horizontalPos="middle"):(e.text.y=e.y+this.config.quadrantTextTopPadding,e.text.horizontalPos="top");return r}getQuadrantPoints(t){let e=t.quadrantSpace,{quadrantHeight:r,quadrantLeft:n,quadrantTop:i,quadrantWidth:a}=e,s=Fx().domain([0,1]).range([n,a+n]),o=Fx().domain([0,1]).range([r+i,i]);return this.data.points.map(t=>{var e=this.classes.get(t.className);return e&&(t={...e,...t}),{x:s(t.x),y:o(t.y),fill:t.color??this.themeConfig.quadrantPointFill,radius:t.radius??this.config.pointRadius,text:{text:t.text,fill:this.themeConfig.quadrantPointTextFill,x:s(t.x),y:o(t.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:t.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:t.strokeWidth??"0px"}})}getBorders(t){var e=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantHalfHeight:t,quadrantHeight:r,quadrantLeft:n,quadrantHalfWidth:i,quadrantTop:a,quadrantWidth:s}=t=t.quadrantSpace;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:n-e,y1:a,x2:n+s+e,y2:a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:n+s,y1:a+e,x2:n+s,y2:a+r-e},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:n-e,y1:a+r,x2:n+s+e,y2:a+r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:n,y1:a+e,x2:n,y2:a+r-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:n+i,y1:a+e,x2:n+i,y2:a+r-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:n+e,y1:a+t,x2:n+s-e,y2:a+t}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){var t=this.config.showXAxis&&!(!this.data.xAxisLeftText&&!this.data.xAxisRightText),e=this.config.showYAxis&&!(!this.data.yAxisTopText&&!this.data.yAxisBottomText),r=this.config.showTitle&&!!this.data.titleText,n=0{C8t=class extends Error{static{me(this,"InvalidStyleError")}constructor(t,e,r){super(`value for ${t} ${e} is invalid, please use a valid `+r),this.name="InvalidStyleError"}},me(k8t,"validateHexCode"),me(T8t,"validateNumber"),me(E8t,"validateSizeInPixels")});function _8t(t){return lc(t.trim(),U8t)}function A8t(t){q8t.setData({quadrant1Text:_8t(t.text)})}function L8t(t){q8t.setData({quadrant2Text:_8t(t.text)})}function N8t(t){q8t.setData({quadrant3Text:_8t(t.text)})}function I8t(t){q8t.setData({quadrant4Text:_8t(t.text)})}function R8t(t){q8t.setData({xAxisLeftText:_8t(t.text)})}function M8t(t){q8t.setData({xAxisRightText:_8t(t.text)})}function D8t(t){q8t.setData({yAxisTopText:_8t(t.text)})}function O8t(t){q8t.setData({yAxisBottomText:_8t(t.text)})}function P8t(t){var e,r={};for(e of t){var[n,i]=e.trim().split(/\s*:\s*/);if("radius"===n){if(T8t(i))throw new C8t(n,i,"number");r.radius=parseInt(i)}else if("color"===n){if(k8t(i))throw new C8t(n,i,"hex code");r.color=i}else if("stroke-color"===n){if(k8t(i))throw new C8t(n,i,"hex code");r.strokeColor=i}else{if("stroke-width"!==n)throw new Error(`style named ${n} is not supported.`);if(E8t(i))throw new C8t(n,i,"number of pixels (eg. 10px)");r.strokeWidth=i}}return r}function B8t(t,e,r,n,i){i=P8t(i),q8t.addPoints([{x:r,y:n,text:_8t(t.text),className:e,...i}])}function $8t(t,e){q8t.addClass(t,P8t(e))}function F8t(t){q8t.setConfig({chartWidth:t})}function z8t(t){q8t.setConfig({chartHeight:t})}function G8t(){var{themeVariables:t,quadrantChart:e}=O();return e&&q8t.setConfig(e),q8t.setThemeConfig({quadrant1Fill:t.quadrant1Fill,quadrant2Fill:t.quadrant2Fill,quadrant3Fill:t.quadrant3Fill,quadrant4Fill:t.quadrant4Fill,quadrant1TextFill:t.quadrant1TextFill,quadrant2TextFill:t.quadrant2TextFill,quadrant3TextFill:t.quadrant3TextFill,quadrant4TextFill:t.quadrant4TextFill,quadrantPointFill:t.quadrantPointFill,quadrantPointTextFill:t.quadrantPointTextFill,quadrantXAxisTextFill:t.quadrantXAxisTextFill,quadrantYAxisTextFill:t.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:t.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:t.quadrantInternalBorderStrokeFill,quadrantTitleFill:t.quadrantTitleFill}),q8t.setData({titleText:wh()}),q8t.build()}var U8t,q8t,j8t,W8t,Y8t,H8t,V8t=b(()=>{Tu(),Oc(),ku(),w8t(),S8t(),U8t=O(),me(_8t,"textSanitizer"),q8t=new v8t,me(A8t,"setQuadrant1Text"),me(L8t,"setQuadrant2Text"),me(N8t,"setQuadrant3Text"),me(I8t,"setQuadrant4Text"),me(R8t,"setXAxisLeftText"),me(M8t,"setXAxisRightText"),me(D8t,"setYAxisTopText"),me(O8t,"setYAxisBottomText"),me(P8t,"parseStyles"),me(B8t,"addPoint"),me($8t,"addClass"),me(F8t,"setWidth"),me(z8t,"setHeight"),me(G8t,"getQuadrantData"),j8t=me(function(){q8t.clear(),fh()},"clear"),W8t={setWidth:F8t,setHeight:z8t,setQuadrant1Text:A8t,setQuadrant2Text:L8t,setQuadrant3Text:N8t,setQuadrant4Text:I8t,setXAxisLeftText:R8t,setXAxisRightText:M8t,setYAxisTopText:D8t,setYAxisBottomText:O8t,parseStyles:P8t,addPoint:B8t,addClass:$8t,getQuadrantData:G8t,clear:j8t,setAccTitle:mh,getAccTitle:yh,setDiagramTitle:bh,getDiagramTitle:wh,getAccDescription:xh,setAccDescription:vh}}),X8t=b(()=>{i6(),Tu(),t(),lh(),Y8t=me((t,e,r,n)=>{function i(t){return"top"===t?"hanging":"middle"}function a(t){return"left"===t?"start":"middle"}function s(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}me(i,"getDominantBaseLine"),me(a,"getTextAnchor"),me(s,"getTransformation");var o=O();D.debug(`Rendering quadrant chart +`+t);let l=o.securityLevel,c;"sandbox"===l&&(c=H("#i"+e));var e=(t=H("sandbox"===l?c.nodes()[0].contentDocument.body:"body").select(`[id="${e}"]`)).append("g").attr("class","main"),h=o.quadrantChart?.chartWidth??500,u=o.quadrantChart?.chartHeight??500,o=(Zc(t,u,h,o.quadrantChart?.useMaxWidth??!0),t.attr("viewBox","0 0 "+h+" "+u),n.db.setHeight(u),n.db.setWidth(h),n.db.getQuadrantData()),t=e.append("g").attr("class","quadrants"),u=e.append("g").attr("class","border"),h=e.append("g").attr("class","data-points"),n=e.append("g").attr("class","labels"),e=e.append("g").attr("class","title");o.title&&e.append("text").attr("x",0).attr("y",0).attr("fill",o.title.fill).attr("font-size",o.title.fontSize).attr("dominant-baseline",i(o.title.horizontalPos)).attr("text-anchor",a(o.title.verticalPos)).attr("transform",s(o.title)).text(o.title.text),o.borderLines&&u.selectAll("line").data(o.borderLines).enter().append("line").attr("x1",t=>t.x1).attr("y1",t=>t.y1).attr("x2",t=>t.x2).attr("y2",t=>t.y2).style("stroke",t=>t.strokeFill).style("stroke-width",t=>t.strokeWidth),(e=t.selectAll("g.quadrant").data(o.quadrants).enter().append("g").attr("class","quadrant")).append("rect").attr("x",t=>t.x).attr("y",t=>t.y).attr("width",t=>t.width).attr("height",t=>t.height).attr("fill",t=>t.fill),e.append("text").attr("x",0).attr("y",0).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>i(t.text.horizontalPos)).attr("text-anchor",t=>a(t.text.verticalPos)).attr("transform",t=>s(t.text)).text(t=>t.text.text),n.selectAll("g.label").data(o.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(t=>t.text).attr("fill",t=>t.fill).attr("font-size",t=>t.fontSize).attr("dominant-baseline",t=>i(t.horizontalPos)).attr("text-anchor",t=>a(t.verticalPos)).attr("transform",t=>s(t)),(u=h.selectAll("g.data-point").data(o.points).enter().append("g").attr("class","data-point")).append("circle").attr("cx",t=>t.x).attr("cy",t=>t.y).attr("r",t=>t.radius).attr("fill",t=>t.fill).attr("stroke",t=>t.strokeColor).attr("stroke-width",t=>t.strokeWidth),u.append("text").attr("x",0).attr("y",0).text(t=>t.text.text).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>i(t.text.horizontalPos)).attr("text-anchor",t=>a(t.text.verticalPos)).attr("transform",t=>s(t.text))},"draw"),H8t={draw:Y8t}}),K8t={};KBt(K8t,{diagram:()=>Z8t});var Z8t,Q8t,J8t,tEt=b(()=>{b8t(),V8t(),X8t(),Z8t={parser:m8t,db:W8t,renderer:H8t,styles:me(()=>"","styles")}}),eEt=b(()=>{function t(){this.yy={}}var e=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),r=[1,10,12,14,16,18,19,21,23],n=[2,6],i=[1,3],a=[1,5],s=[1,6],o=[1,7],l=[1,5,10,12,14,16,18,19,21,23,34,35,36],c=[1,25],h=[1,26],u=[1,28],d=[1,29],p=[1,30],g=[1,31],f=[1,32],m=[1,33],y=[1,34],v=[1,35],x=[1,36],b=[1,37],w=[1,43],k=[1,42],T=[1,47],E=[1,50],C=[1,10,12,14,16,18,19,21,23,34,35,36],S=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],_=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],A=[1,64],n={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 5:n.setOrientation(a[o]);break;case 9:n.setDiagramTitle(a[o].text.trim());break;case 12:n.setLineData({text:"",type:"text"},a[o]);break;case 13:n.setLineData(a[o-1],a[o]);break;case 14:n.setBarData({text:"",type:"text"},a[o]);break;case 15:n.setBarData(a[o-1],a[o]);break;case 16:this.$=a[o].trim(),n.setAccTitle(this.$);break;case 17:case 18:this.$=a[o].trim(),n.setAccDescription(this.$);break;case 19:this.$=a[o-1];break;case 20:this.$=[Number(a[o-2]),...a[o]];break;case 21:this.$=[Number(a[o])];break;case 22:n.setXAxisTitle(a[o]);break;case 23:n.setXAxisTitle(a[o-1]);break;case 24:n.setXAxisTitle({type:"text",text:""});break;case 25:n.setXAxisBand(a[o]);break;case 26:n.setXAxisRangeData(Number(a[o-2]),Number(a[o]));break;case 27:this.$=a[o-1];break;case 28:this.$=[a[o-2],...a[o]];break;case 29:this.$=[a[o]];break;case 30:n.setYAxisTitle(a[o]);break;case 31:n.setYAxisTitle(a[o-1]);break;case 32:n.setYAxisTitle({type:"text",text:""});break;case 33:n.setYAxisRangeData(Number(a[o-2]),Number(a[o]));break;case 37:case 38:this.$={text:a[o],type:"text"};break;case 39:this.$={text:a[o],type:"markdown"};break;case 40:this.$=a[o];break;case 41:this.$=a[o-1]+""+a[o]}},"anonymous"),table:[e(r,n,{3:1,4:2,7:4,5:i,34:a,35:s,36:o}),{1:[3]},e(r,n,{4:2,7:4,3:8,5:i,34:a,35:s,36:o}),e(r,n,{4:2,7:4,6:9,3:10,5:i,8:[1,11],34:a,35:s,36:o}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(l,[2,34]),e(l,[2,35]),e(l,[2,36]),{1:[2,1]},e(r,n,{4:2,7:4,3:21,5:i,34:a,35:s,36:o}),{1:[2,3]},e(l,[2,5]),e(r,[2,7],{4:22,34:a,35:s,36:o}),{11:23,37:24,38:c,39:h,40:27,41:u,42:d,43:p,44:g,45:f,46:m,47:y,48:v,49:x,50:b},{11:39,13:38,24:w,27:k,29:40,30:41,37:24,38:c,39:h,40:27,41:u,42:d,43:p,44:g,45:f,46:m,47:y,48:v,49:x,50:b},{11:45,15:44,27:T,33:46,37:24,38:c,39:h,40:27,41:u,42:d,43:p,44:g,45:f,46:m,47:y,48:v,49:x,50:b},{11:49,17:48,24:E,37:24,38:c,39:h,40:27,41:u,42:d,43:p,44:g,45:f,46:m,47:y,48:v,49:x,50:b},{11:52,17:51,24:E,37:24,38:c,39:h,40:27,41:u,42:d,43:p,44:g,45:f,46:m,47:y,48:v,49:x,50:b},{20:[1,53]},{22:[1,54]},e(C,[2,18]),{1:[2,2]},e(C,[2,8]),e(C,[2,9]),e(S,[2,37],{40:55,41:u,42:d,43:p,44:g,45:f,46:m,47:y,48:v,49:x,50:b}),e(S,[2,38]),e(S,[2,39]),e(_,[2,40]),e(_,[2,42]),e(_,[2,43]),e(_,[2,44]),e(_,[2,45]),e(_,[2,46]),e(_,[2,47]),e(_,[2,48]),e(_,[2,49]),e(_,[2,50]),e(_,[2,51]),e(C,[2,10]),e(C,[2,22],{30:41,29:56,24:w,27:k}),e(C,[2,24]),e(C,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:c,39:h,40:27,41:u,42:d,43:p,44:g,45:f,46:m,47:y,48:v,49:x,50:b},e(C,[2,11]),e(C,[2,30],{33:60,27:T}),e(C,[2,32]),{31:[1,61]},e(C,[2,12]),{17:62,24:E},{25:63,27:A},e(C,[2,14]),{17:65,24:E},e(C,[2,16]),e(C,[2,17]),e(_,[2,41]),e(C,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(C,[2,31]),{27:[1,69]},e(C,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(C,[2,15]),e(C,[2,26]),e(C,[2,27]),{11:59,32:72,37:24,38:c,39:h,40:27,41:u,42:d,43:p,44:g,45:f,46:m,47:y,48:v,49:x,50:b},e(C,[2,33]),e(C,[2,19]),{25:73,27:A},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}};n.lexer=i,me(t,"Parser"),(Q8t=new((t.prototype=n).Parser=t)).parser=Q8t,J8t=Q8t});function rEt(t){return"bar"===t.type}function nEt(t){return"band"===t.type}function iEt(t){return"linear"===t.type}var aEt,sEt,oEt,lEt,cEt=b(()=>{me(rEt,"isBarPlot"),me(nEt,"isBandAxisData"),me(iEt,"isLinearAxisData")}),hEt=b(()=>{JL(),aEt=class{constructor(t){this.parentGroup=t}static{me(this,"TextDimensionCalculatorWithFont")}getMaxDimension(t,e){if(!this.parentGroup)return{width:t.reduce((t,e)=>Math.max(e.length,t),0)*e,height:e};var r,n={width:0,height:0},i=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",e);for(r of t){var a=(s=VL(i,1,r))?s.width:r.length*e,s=s?s.height:e;n.width=Math.max(n.width,a),n.height=Math.max(n.height,s)}return i.remove(),n}}}),uEt=b(()=>{sEt=class{constructor(t,e,r,n){this.axisConfig=t,this.title=e,this.textDimensionCalculator=r,this.axisThemeConfig=n,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{me(this,"BaseAxis")}setRange(t){this.range=t,"left"===this.axisPosition||"right"===this.axisPosition?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){var t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>2*this.outerPadding&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let e=t.height;var r,n;this.axisConfig.showAxisLine&&e>this.axisConfig.axisLineWidth&&(e-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel&&(r=this.getLabelDimension(),n=.2*t.width,this.outerPadding=Math.min(r.width/2,n),n=r.height+2*this.axisConfig.labelPadding,this.labelTextHeight=r.height,n<=e)&&(e-=n,this.showLabel=!0),this.axisConfig.showTick&&e>=this.axisConfig.tickLength&&(this.showTick=!0,e-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title&&(n=(r=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize)).height+2*this.axisConfig.titlePadding,this.titleTextHeight=r.height,n<=e)&&(e-=n,this.showTitle=!0),this.boundingRect.width=t.width,this.boundingRect.height=t.height-e}calculateSpaceIfDrawnVertical(t){let e=t.width;var r,n;this.axisConfig.showAxisLine&&e>this.axisConfig.axisLineWidth&&(e-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel&&(r=this.getLabelDimension(),n=.2*t.height,this.outerPadding=Math.min(r.height/2,n),(n=r.width+2*this.axisConfig.labelPadding)<=e)&&(e-=n,this.showLabel=!0),this.axisConfig.showTick&&e>=this.axisConfig.tickLength&&(this.showTick=!0,e-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title&&(n=(r=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize)).height+2*this.axisConfig.titlePadding,this.titleTextHeight=r.height,n<=e)&&(e-=n,this.showTitle=!0),this.boundingRect.width=t.width-e,this.boundingRect.height=t.height}calculateSpace(t){return"left"===this.axisPosition||"right"===this.axisPosition?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}getDrawableElementsForLeftAxis(){var t,r=[];if(this.showAxisLine&&(t=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2,r.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${t},${this.boundingRect.y} L ${t},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})),this.showLabel&&r.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(t),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let e=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);r.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${e},${this.getScaleValue(t)} L ${e-this.axisConfig.tickLength},`+this.getScaleValue(t),strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&r.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),r}getDrawableElementsForBottomAxis(){var t,r=[];if(this.showAxisLine&&(t=this.boundingRect.y+this.axisConfig.axisLineWidth/2,r.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${t} L ${this.boundingRect.x+this.boundingRect.width},`+t,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})),this.showLabel&&r.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.getScaleValue(t),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let e=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);r.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${this.getScaleValue(t)},${e} L ${this.getScaleValue(t)},`+(e+this.axisConfig.tickLength),strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&r.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),r}getDrawableElementsForTopAxis(){var t,r=[];if(this.showAxisLine&&(t=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2,r.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${t} L ${this.boundingRect.x+this.boundingRect.width},`+t,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})),this.showLabel&&r.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.getScaleValue(t),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+2*this.axisConfig.titlePadding:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let e=this.boundingRect.y;r.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${this.getScaleValue(t)},${e+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(t)},`+(e+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)),strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&r.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),r}getDrawableElements(){if("left"===this.axisPosition)return this.getDrawableElementsForLeftAxis();if("right"===this.axisPosition)throw Error("Drawing of right axis is not implemented");return"bottom"===this.axisPosition?this.getDrawableElementsForBottomAxis():"top"===this.axisPosition?this.getDrawableElementsForTopAxis():[]}}}),dEt=b(()=>{i6(),t(),uEt(),oEt=class extends sEt{static{me(this,"BandAxis")}constructor(t,e,r,n,i){super(t,n,i,e),this.categories=r,this.scale=bx().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=bx().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),D.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}}}),pEt=b(()=>{i6(),uEt(),lEt=class extends sEt{static{me(this,"LinearAxis")}constructor(t,e,r,n,i){super(t,n,i,e),this.domain=r,this.scale=Fx().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){var t=[...this.domain];"left"===this.axisPosition&&t.reverse(),this.scale=Fx().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}}});function gEt(t,e,r,n){return n=new aEt(n),nEt(t)?new oEt(e,r,t.categories,t.title,n):new lEt(e,r,[t.min,t.max],t.title,n)}var fEt=b(()=>{cEt(),hEt(),dEt(),pEt(),me(gEt,"getAxis")});function mEt(t,e,r,n){return n=new aEt(n),new yEt(n,t,e,r)}var yEt,vEt,xEt,bEt=b(()=>{hEt(),yEt=class{constructor(t,e,r,n){this.textDimensionCalculator=t,this.chartConfig=e,this.chartData=r,this.chartThemeConfig=n,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{me(this,"ChartTitle")}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){var e=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),t=Math.max(e.width,t.width),r=e.height+2*this.chartConfig.titlePadding;return e.width<=t&&e.height<=r&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=t,this.boundingRect.height=r,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){var t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}},me(mEt,"getChartTitleComponent")}),wEt=b(()=>{i6(),vEt=class{constructor(t,e,r,n,i){this.plotData=t,this.xAxis=e,this.yAxis=r,this.orientation=n,this.plotIndex=i}static{me(this,"LinePlot")}getDrawableElement(){var t=this.plotData.data.map(t=>[this.xAxis.getScaleValue(t[0]),this.yAxis.getScaleValue(t[1])]);return(t=("horizontal"===this.orientation?r3().y(t=>t[0]).x(t=>t[1]):r3().x(t=>t[0]).y(t=>t[1]))(t))?[{groupTexts:["plot","line-plot-"+this.plotIndex],type:"path",data:[{path:t,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}}),kEt=b(()=>{xEt=class{constructor(t,e,r,n,i,a){this.barData=t,this.boundingRect=e,this.xAxis=r,this.yAxis=n,this.orientation=i,this.plotIndex=a}static{me(this,"BarPlot")}getDrawableElement(){let t=this.barData.data.map(t=>[this.xAxis.getScaleValue(t[0]),this.yAxis.getScaleValue(t[1])]),e=.95*Math.min(2*this.xAxis.getAxisOuterPadding(),this.xAxis.getTickDistance()),r=e/2;return"horizontal"===this.orientation?[{groupTexts:["plot","bar-plot-"+this.plotIndex],type:"rect",data:t.map(t=>({x:this.boundingRect.x,y:t[0]-r,height:e,width:t[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot","bar-plot-"+this.plotIndex],type:"rect",data:t.map(t=>({x:t[0]-r,y:t[1],width:e,height:this.boundingRect.y+this.boundingRect.height-t[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}});function TEt(t,e,r){return new EEt(t,e,r)}var EEt,CEt,SEt,_Et=b(()=>{wEt(),kEt(),EEt=class{constructor(t,e,r){this.chartConfig=t,this.chartData=e,this.chartThemeConfig=r,this.boundingRect={x:0,y:0,width:0,height:0}}static{me(this,"BasePlot")}setAxes(t,e){this.xAxis=t,this.yAxis=e}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!this.xAxis||!this.yAxis)throw Error("Axes must be passed to render Plots");var t,e,r=[];for([t,e]of this.chartData.plots.entries())switch(e.type){case"line":var n=new vEt(e,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,t);r.push(...n.getDrawableElement());break;case"bar":n=new xEt(e,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,t),r.push(...n.getDrawableElement())}return r}},me(TEt,"getPlotComponent")}),AEt=b(()=>{fEt(),bEt(),_Et(),cEt(),CEt=class{constructor(t,e,r,n){this.chartConfig=t,this.chartData=e,this.componentStore={title:mEt(t,e,r,n),plot:TEt(t,e,r),xAxis:gEt(e.xAxis,t.xAxis,{titleColor:r.xAxisTitleColor,labelColor:r.xAxisLabelColor,tickColor:r.xAxisTickColor,axisLineColor:r.xAxisLineColor},n),yAxis:gEt(e.yAxis,t.yAxis,{titleColor:r.yAxisTitleColor,labelColor:r.yAxisLabelColor,tickColor:r.yAxisTickColor,axisLineColor:r.yAxisLineColor},n)}}static{me(this,"Orchestrator")}calculateVerticalSpace(){let t=this.chartConfig.width,e=this.chartConfig.height,r,n,i=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),a=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),s=this.componentStore.plot.calculateSpace({width:i,height:a});t-=s.width,n=(s=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:e-=s.height})).height,e-=s.height,this.componentStore.xAxis.setAxisPosition("bottom"),e-=this.componentStore.xAxis.calculateSpace({width:t,height:e}).height,this.componentStore.yAxis.setAxisPosition("left"),r=(s=this.componentStore.yAxis.calculateSpace({width:t,height:e})).width,0<(t-=s.width)&&(i+=t),0rEt(t))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,e=this.chartConfig.height,r,n,i,a=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),o=this.componentStore.plot.calculateSpace({width:a,height:s});t-=o.width,r=(o=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:e-=o.height})).height,e-=o.height,this.componentStore.xAxis.setAxisPosition("left"),t-=(o=this.componentStore.xAxis.calculateSpace({width:t,height:e})).width,n=o.width,this.componentStore.yAxis.setAxisPosition("top"),e-=(o=this.componentStore.yAxis.calculateSpace({width:t,height:e})).height,i=r+o.height,0rEt(t))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){"horizontal"===this.chartConfig.chartOrientation?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();var t,e=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(t of Object.values(this.componentStore))e.push(...t.getDrawableElements());return e}}}),LEt=b(()=>{AEt(),SEt=class{static{me(this,"XYChartBuilder")}static build(t,e,r,n){return new CEt(t,e,r,n).getDrawableElement()}}});function NEt(){var t=Oe(),e=ar();return SC(t.xyChart,e.themeVariables.xyChart)}function IEt(){var t=ar();return SC(We.xyChart,t.xyChart)}function REt(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function MEt(t){var e=ar();return lc(t.trim(),e)}function DEt(t){ZEt=t}function OEt(t){QEt.chartOrientation="horizontal"===t?"horizontal":"vertical"}function PEt(t){tCt.xAxis.title=MEt(t.text)}function BEt(t,e){tCt.xAxis={type:"linear",title:tCt.xAxis.title,min:t,max:e},rCt=!0}function $Et(t){tCt.xAxis={type:"band",title:tCt.xAxis.title,categories:t.map(t=>MEt(t.text))},rCt=!0}function FEt(t){tCt.yAxis.title=MEt(t.text)}function zEt(t,e){tCt.yAxis={type:"linear",title:tCt.yAxis.title,min:t,max:e},nCt=!0}function GEt(t){var e=Math.min(...t),t=Math.max(...t),r=iEt(tCt.yAxis)?tCt.yAxis.min:1/0,n=iEt(tCt.yAxis)?tCt.yAxis.max:-1/0;tCt.yAxis={type:"linear",title:tCt.yAxis.title,min:Math.min(r,e),max:Math.max(n,t)}}function UEt(r){let t=[],e;if(0!==r.length&&(rCt||(n=iEt(tCt.xAxis)?tCt.xAxis.min:1/0,e=iEt(tCt.xAxis)?tCt.xAxis.max:-1/0,BEt(Math.min(n,1),Math.max(e,r.length))),nCt||GEt(r),nEt(tCt.xAxis)&&(t=tCt.xAxis.categories.map((t,e)=>[t,r[e]])),iEt(tCt.xAxis))){var n=tCt.xAxis.min,i=tCt.xAxis.max,a=(i-n)/(r.length-1),s=[];for(let t=n;t<=i;t+=a)s.push(""+t);t=s.map((t,e)=>[t,r[e]])}return t}function qEt(t){return eCt[0===t?0:t%eCt.length]}function jEt(t,e){e=UEt(e),tCt.plots.push({type:"line",strokeFill:qEt(KEt),strokeWidth:2,data:e}),KEt++}function WEt(t,e){e=UEt(e),tCt.plots.push({type:"bar",fill:qEt(KEt),data:e}),KEt++}function YEt(){if(0===tCt.plots.length)throw Error("No Plot to render, please provide a plot with some data");return tCt.title=wh(),SEt.build(QEt,tCt,JEt,ZEt)}function HEt(){return JEt}function VEt(){return QEt}function XEt(){return tCt}var KEt,ZEt,QEt,JEt,tCt,eCt,rCt,nCt,iCt,aCt,sCt,oCt,lCt=b(()=>{rn(),tn(),Xr(),iS(),Oc(),ku(),LEt(),cEt(),KEt=0,QEt=IEt(),JEt=NEt(),tCt=REt(),eCt=JEt.plotColorPalette.split(",").map(t=>t.trim()),nCt=rCt=!1,me(NEt,"getChartDefaultThemeConfig"),me(IEt,"getChartDefaultConfig"),me(REt,"getChartDefaultData"),me(MEt,"textSanitizer"),me(DEt,"setTmpSVGG"),me(OEt,"setOrientation"),me(PEt,"setXAxisTitle"),me(BEt,"setXAxisRangeData"),me($Et,"setXAxisBand"),me(FEt,"setYAxisTitle"),me(zEt,"setYAxisRangeData"),me(GEt,"setYAxisRangeFromPlotData"),me(UEt,"transformDataWithoutCategory"),me(qEt,"getPlotColorFromPalette"),me(jEt,"setLineData"),me(WEt,"setBarData"),me(YEt,"getDrawableElem"),me(HEt,"getChartThemeConfig"),me(VEt,"getChartConfig"),me(XEt,"getXYChartData"),iCt=me(function(){fh(),KEt=0,QEt=IEt(),tCt=REt(),JEt=NEt(),eCt=JEt.plotColorPalette.split(",").map(t=>t.trim()),nCt=rCt=!1},"clear"),aCt={getDrawableElem:YEt,clear:iCt,setAccTitle:mh,getAccTitle:yh,setDiagramTitle:bh,getDiagramTitle:wh,getAccDescription:xh,setAccDescription:vh,setOrientation:OEt,setXAxisTitle:PEt,setXAxisRangeData:BEt,setXAxisBand:$Et,setYAxisTitle:FEt,setYAxisRangeData:zEt,setLineData:jEt,setBarData:WEt,setTmpSVGG:DEt,getChartThemeConfig:HEt,getChartConfig:VEt,getXYChartData:XEt}}),cCt=b(()=>{t(),z7t(),lh(),sCt=me((t,e,r,n)=>{let i=n.db,a=i.getChartThemeConfig(),s=i.getChartConfig(),o=i.getXYChartData().plots[0].data.map(t=>t[1]);function l(t){return"top"===t?"text-before-edge":"middle"}function c(t){return"left"===t?"start":"right"===t?"end":"middle"}function h(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}me(l,"getDominantBaseLine"),me(c,"getTextAnchor"),me(h,"getTextTransformation"),D.debug(`Rendering xychart chart +`+t);let u=M7t(e),d=u.append("g").attr("class","main"),p=d.append("rect").attr("width",s.width).attr("height",s.height).attr("class","background"),g=(Zc(u,s.height,s.width,!0),u.attr("viewBox",`0 0 ${s.width} `+s.height),p.attr("fill",a.backgroundColor),i.setTmpSVGG(u.append("g").attr("class","mermaid-tmp-group")),i.getDrawableElem()),f={};function m(e){let r=d,n="";for(var[i]of e.entries()){let t=d;0t.x).attr("y",t=>t.y).attr("width",t=>t.width).attr("height",t=>t.height).attr("fill",t=>t.fill).attr("stroke",t=>t.strokeFill).attr("stroke-width",t=>t.strokeWidth),s.showDataLabel)if("horizontal"===s.chartOrientation){let n=function(t,e){var{data:t,label:r}=t;return e*r.length*.7<=t.width-10};n,me(n,"fitsHorizontally");var x=(b=y.data.map((t,e)=>({data:t,label:o[e].toString()})).filter(t=>0{let e=t.data,r=.7*e.height;for(;!n(t,r)&&0t.data.x+t.data.width-10).attr("y",t=>t.data.y+t.data.height/2).attr("text-anchor","end").attr("dominant-baseline","middle").attr("fill","black").attr("font-size",x+"px").text(t=>t.label)}else{let i=function(t,e,r){var{data:t,label:n}=t,n=e*n.length*.7,i=t.x+t.width/2;return t.x<=i-n/2&&i+n/2<=t.x+t.width&&t.y+r+e<=t.y+t.height};i,me(i,"fitsInBar");var b,x=(b=y.data.map((t,e)=>({data:t,label:o[e].toString()})).filter(t=>0{let{data:e,label:r}=t,n=e.width/(.7*r.length);for(;!i(t,n,10)&&0t.data.x+t.data.width/2).attr("y",t=>t.data.y+10).attr("text-anchor","middle").attr("dominant-baseline","hanging").attr("fill","black").attr("font-size",w+"px").text(t=>t.label)}break;case"text":v.selectAll("text").data(y.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",t=>t.fill).attr("font-size",t=>t.fontSize).attr("dominant-baseline",t=>l(t.verticalPos)).attr("text-anchor",t=>c(t.horizontalPos)).attr("transform",t=>h(t)).text(t=>t.text);break;case"path":v.selectAll("path").data(y.data).enter().append("path").attr("d",t=>t.path).attr("fill",t=>t.fill||"none").attr("stroke",t=>t.strokeFill).attr("stroke-width",t=>t.strokeWidth)}}},"draw"),oCt={draw:sCt}}),hCt={};KBt(hCt,{diagram:()=>uCt});var uCt,dCt,pCt,gCt,fCt,mCt,yCt=b(()=>{eEt(),lCt(),cCt(),uCt={parser:J8t,db:aCt,renderer:oCt}}),vCt=b(()=>{function P(){this.yy={}}var t=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],B=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],a=[1,22],s=[2,7],o=[1,26],l=[1,27],c=[1,28],h=[1,29],u=[1,33],d=[1,34],p=[1,35],g=[1,36],f=[1,37],m=[1,38],y=[1,24],v=[1,31],x=[1,32],b=[1,30],w=[1,39],k=[1,40],T=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],E=[1,61],C=[89,90],$=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],F=[27,29],z=[1,70],G=[1,71],U=[1,72],q=[1,73],j=[1,74],W=[1,75],Y=[1,76],S=[1,83],_=[1,80],H=[1,84],V=[1,85],X=[1,86],K=[1,87],Z=[1,88],Q=[1,89],J=[1,90],tt=[1,91],et=[1,92],rt=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],A=[63,64],nt=[1,101],it=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],L=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],N=[1,110],I=[1,106],R=[1,107],M=[1,108],D=[1,109],O=[1,111],at=[1,116],st=[1,117],ot=[1,114],lt=[1,115],e={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType: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:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 4:this.$=a[o].trim(),n.setAccTitle(this.$);break;case 5:case 6:this.$=a[o].trim(),n.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:n.setDirection("TB");break;case 18:n.setDirection("BT");break;case 19:n.setDirection("RL");break;case 20:n.setDirection("LR");break;case 21:n.addRequirement(a[o-3],a[o-4]);break;case 22:n.addRequirement(a[o-5],a[o-6]),n.setClass([a[o-5]],a[o-3]);break;case 23:n.setNewReqId(a[o-2]);break;case 24:n.setNewReqText(a[o-2]);break;case 25:n.setNewReqRisk(a[o-2]);break;case 26:n.setNewReqVerifyMethod(a[o-2]);break;case 29:this.$=n.RequirementType.REQUIREMENT;break;case 30:this.$=n.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=n.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=n.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=n.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=n.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=n.RiskLevel.LOW_RISK;break;case 36:this.$=n.RiskLevel.MED_RISK;break;case 37:this.$=n.RiskLevel.HIGH_RISK;break;case 38:this.$=n.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=n.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=n.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=n.VerifyType.VERIFY_TEST;break;case 42:n.addElement(a[o-3]);break;case 43:n.addElement(a[o-5]),n.setClass([a[o-5]],a[o-3]);break;case 44:n.setNewElementType(a[o-2]);break;case 45:n.setNewElementDocRef(a[o-2]);break;case 48:n.addRelationship(a[o-2],a[o],a[o-4]);break;case 49:n.addRelationship(a[o-2],a[o-4],a[o]);break;case 50:this.$=n.Relationships.CONTAINS;break;case 51:this.$=n.Relationships.COPIES;break;case 52:this.$=n.Relationships.DERIVES;break;case 53:this.$=n.Relationships.SATISFIES;break;case 54:this.$=n.Relationships.VERIFIES;break;case 55:this.$=n.Relationships.REFINES;break;case 56:this.$=n.Relationships.TRACES;break;case 57:this.$=a[o-2],n.defineClass(a[o-1],a[o]);break;case 58:n.setClass(a[o-1],a[o]);break;case 59:n.setClass([a[o-2]],a[o]);break;case 60:case 62:this.$=[a[o]];break;case 61:case 63:this.$=a[o-2].concat([a[o]]);break;case 64:this.$=a[o-2],n.setCssStyle(a[o-1],a[o]);break;case 65:this.$=[a[o]];break;case 66:a[o-2].push(a[o]),this.$=a[o-2];break;case 68:this.$=a[o-1]+a[o]}},"anonymous"),table:[{3:1,4:2,6:e,9:r,11:n,13:i},{1:[3]},{3:8,4:2,5:[1,7],6:e,9:r,11:n,13:i},{5:[1,9]},{10:[1,10]},{12:[1,11]},t(B,[2,6]),{3:12,4:2,6:e,9:r,11:n,13:i},{1:[2,2]},{4:17,5:a,7:13,8:s,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:l,23:c,24:h,25:23,33:25,41:u,42:d,43:p,44:g,45:f,46:m,54:y,72:v,74:x,77:b,89:w,90:k},t(B,[2,4]),t(B,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:a,7:42,8:s,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:l,23:c,24:h,25:23,33:25,41:u,42:d,43:p,44:g,45:f,46:m,54:y,72:v,74:x,77:b,89:w,90:k},{4:17,5:a,7:43,8:s,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:l,23:c,24:h,25:23,33:25,41:u,42:d,43:p,44:g,45:f,46:m,54:y,72:v,74:x,77:b,89:w,90:k},{4:17,5:a,7:44,8:s,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:l,23:c,24:h,25:23,33:25,41:u,42:d,43:p,44:g,45:f,46:m,54:y,72:v,74:x,77:b,89:w,90:k},{4:17,5:a,7:45,8:s,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:l,23:c,24:h,25:23,33:25,41:u,42:d,43:p,44:g,45:f,46:m,54:y,72:v,74:x,77:b,89:w,90:k},{4:17,5:a,7:46,8:s,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:l,23:c,24:h,25:23,33:25,41:u,42:d,43:p,44:g,45:f,46:m,54:y,72:v,74:x,77:b,89:w,90:k},{4:17,5:a,7:47,8:s,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:l,23:c,24:h,25:23,33:25,41:u,42:d,43:p,44:g,45:f,46:m,54:y,72:v,74:x,77:b,89:w,90:k},{4:17,5:a,7:48,8:s,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:l,23:c,24:h,25:23,33:25,41:u,42:d,43:p,44:g,45:f,46:m,54:y,72:v,74:x,77:b,89:w,90:k},{4:17,5:a,7:49,8:s,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:l,23:c,24:h,25:23,33:25,41:u,42:d,43:p,44:g,45:f,46:m,54:y,72:v,74:x,77:b,89:w,90:k},{4:17,5:a,7:50,8:s,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:l,23:c,24:h,25:23,33:25,41:u,42:d,43:p,44:g,45:f,46:m,54:y,72:v,74:x,77:b,89:w,90:k},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},t(T,[2,17]),t(T,[2,18]),t(T,[2,19]),t(T,[2,20]),{30:60,33:62,75:E,89:w,90:k},{30:63,33:62,75:E,89:w,90:k},{30:64,33:62,75:E,89:w,90:k},t(C,[2,29]),t(C,[2,30]),t(C,[2,31]),t(C,[2,32]),t(C,[2,33]),t(C,[2,34]),t($,[2,81]),t($,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},t(F,[2,79]),t(F,[2,80]),{27:[1,67],29:[1,68]},t(F,[2,85]),t(F,[2,86]),{62:69,65:z,66:G,67:U,68:q,69:j,70:W,71:Y},{62:77,65:z,66:G,67:U,68:q,69:j,70:W,71:Y},{30:78,33:62,75:E,89:w,90:k},{73:79,75:S,76:_,78:81,79:82,80:H,81:V,82:X,83:K,84:Z,85:Q,86:J,87:tt,88:et},t(rt,[2,60]),t(rt,[2,62]),{73:93,75:S,76:_,78:81,79:82,80:H,81:V,82:X,83:K,84:Z,85:Q,86:J,87:tt,88:et},{30:94,33:62,75:E,76:_,89:w,90:k},{5:[1,95]},{30:96,33:62,75:E,89:w,90:k},{5:[1,97]},{30:98,33:62,75:E,89:w,90:k},{63:[1,99]},t(A,[2,50]),t(A,[2,51]),t(A,[2,52]),t(A,[2,53]),t(A,[2,54]),t(A,[2,55]),t(A,[2,56]),{64:[1,100]},t(T,[2,59],{76:_}),t(T,[2,64],{76:nt}),{33:103,75:[1,102],89:w,90:k},t(it,[2,65],{79:104,75:S,80:H,81:V,82:X,83:K,84:Z,85:Q,86:J,87:tt,88:et}),t(L,[2,67]),t(L,[2,69]),t(L,[2,70]),t(L,[2,71]),t(L,[2,72]),t(L,[2,73]),t(L,[2,74]),t(L,[2,75]),t(L,[2,76]),t(L,[2,77]),t(L,[2,78]),t(T,[2,57],{76:nt}),t(T,[2,58],{76:_}),{5:N,28:105,31:I,34:R,36:M,38:D,40:O},{27:[1,112],76:_},{5:at,40:st,56:113,57:ot,59:lt},{27:[1,118],76:_},{33:119,89:w,90:k},{33:120,89:w,90:k},{75:S,78:121,79:82,80:H,81:V,82:X,83:K,84:Z,85:Q,86:J,87:tt,88:et},t(rt,[2,61]),t(rt,[2,63]),t(L,[2,68]),t(T,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:N,28:126,31:I,34:R,36:M,38:D,40:O},t(T,[2,28]),{5:[1,127]},t(T,[2,42]),{32:[1,128]},{32:[1,129]},{5:at,40:st,56:130,57:ot,59:lt},t(T,[2,47]),{5:[1,131]},t(T,[2,48]),t(T,[2,49]),t(it,[2,66],{79:104,75:S,80:H,81:V,82:X,83:K,84:Z,85:Q,86:J,87:tt,88:et}),{33:132,89:w,90:k},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},t(T,[2,27]),{5:N,28:145,31:I,34:R,36:M,38:D,40:O},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},t(T,[2,46]),{5:at,40:st,56:152,57:ot,59:lt},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},t(T,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},t(T,[2,43]),{5:N,28:159,31:I,34:R,36:M,38:D,40:O},{5:N,28:160,31:I,34:R,36:M,38:D,40:O},{5:N,28:161,31:I,34:R,36:M,38:D,40:O},{5:N,28:162,31:I,34:R,36:M,38:D,40:O},{5:at,40:st,56:163,57:ot,59:lt},{5:at,40:st,56:164,57:ot,59:lt},t(T,[2,23]),t(T,[2,24]),t(T,[2,25]),t(T,[2,26]),t(T,[2,44]),t(T,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}};e.lexer=B,me(P,"Parser"),(dCt=new((P.prototype=e).Parser=P)).parser=dCt,pCt=dCt}),xCt=b(()=>{Tu(),t(),ku(),gCt=class{constructor(){this.relations=[],this.latestRequirement=this.getInitialRequirement(),this.requirements=new Map,this.latestElement=this.getInitialElement(),this.elements=new Map,this.classes=new Map,this.direction="TB",this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},this.setAccTitle=mh,this.getAccTitle=yh,this.setAccDescription=vh,this.getAccDescription=xh,this.setDiagramTitle=bh,this.getDiagramTitle=wh,this.getConfig=me(()=>O().requirement,"getConfig"),this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{me(this,"RequirementDB")}getDirection(){return this.direction}setDirection(t){this.direction=t}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(t,e){return this.requirements.has(t)||this.requirements.set(t,{name:t,type:e,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(t)}getRequirements(){return this.requirements}setNewReqId(t){void 0!==this.latestRequirement&&(this.latestRequirement.requirementId=t)}setNewReqText(t){void 0!==this.latestRequirement&&(this.latestRequirement.text=t)}setNewReqRisk(t){void 0!==this.latestRequirement&&(this.latestRequirement.risk=t)}setNewReqVerifyMethod(t){void 0!==this.latestRequirement&&(this.latestRequirement.verifyMethod=t)}addElement(t){return this.elements.has(t)||(this.elements.set(t,{name:t,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),D.info("Added new element: ",t)),this.resetLatestElement(),this.elements.get(t)}getElements(){return this.elements}setNewElementType(t){void 0!==this.latestElement&&(this.latestElement.type=t)}setNewElementDocRef(t){void 0!==this.latestElement&&(this.latestElement.docRef=t)}addRelationship(t,e,r){this.relations.push({type:t,src:e,dst:r})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,fh()}setCssStyle(t,e){for(var r of t){var n,i=this.requirements.get(r)??this.elements.get(r);if(!e||!i)return;for(n of e)n.includes(",")?i.cssStyles.push(...n.split(",")):i.cssStyles.push(n)}}setClass(t,e){for(var r of t){var n=this.requirements.get(r)??this.elements.get(r);if(n)for(var i of e)n.classes.push(i),(i=this.classes.get(i)?.styles)&&n.cssStyles.push(...i)}}defineClass(t,n){for(let e of t){let r=this.classes.get(e);void 0===r&&(r={id:e,styles:[],textStyles:[]},this.classes.set(e,r)),n&&n.forEach(function(t){var e;/color/.exec(t)&&(e=t.replace("fill","bgFill"),r.textStyles.push(e)),r.styles.push(t)}),this.requirements.forEach(t=>{t.classes.includes(e)&&t.cssStyles.push(...n.flatMap(t=>t.split(",")))}),this.elements.forEach(t=>{t.classes.includes(e)&&t.cssStyles.push(...n.flatMap(t=>t.split(",")))})}}getClasses(){return this.classes}getData(){var t,e,r,n=O(),i=[],a=[];for(t of this.requirements.values()){var s=t;s.id=t.name,s.cssStyles=t.cssStyles,s.cssClasses=t.classes.join(" "),s.shape="requirementBox",s.look=n.look,i.push(s)}for(e of this.elements.values()){var o=e;o.shape="requirementBox",o.look=n.look,o.id=e.name,o.cssStyles=e.cssStyles,o.cssClasses=e.classes.join(" "),i.push(o)}for(r of this.relations){var l=r.type===this.Relationships.CONTAINS,l={id:r.src+`-${r.dst}-0`,start:this.requirements.get(r.src)?.name??this.elements.get(r.src)?.name,end:this.requirements.get(r.dst)?.name??this.elements.get(r.dst)?.name,label:`<<${r.type}>>`,classes:"relationshipLine",style:["fill:none",l?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:l?"normal":"dashed",arrowTypeStart:l?"requirement_contains":"",arrowTypeEnd:l?"":"requirement_arrow",look:n.look};a.push(l)}return{nodes:i,edges:a,other:{},config:n,direction:this.getDirection()}}}}),bCt=b(()=>{fCt=me(t=>` + + marker { + fill: ${t.relationColor}; + stroke: ${t.relationColor}; + } + + marker.cross { + stroke: ${t.lineColor}; + } + + svg { + font-family: ${t.fontFamily}; + font-size: ${t.fontSize}; + } + + .reqBox { + fill: ${t.requirementBackground}; + fill-opacity: 1.0; + stroke: ${t.requirementBorderColor}; + stroke-width: ${t.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${t.requirementTextColor}; + } + .reqLabelBox { + fill: ${t.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${t.requirementBorderColor}; + stroke-width: ${t.requirementBorderSize}; + } + .relationshipLine { + stroke: ${t.relationColor}; + stroke-width: 1; + } + .relationshipLabel { + fill: ${t.relationLabelColor}; + } + .divider { + stroke: ${t.nodeBorder}; + stroke-width: 1; + } + .label { + font-family: ${t.fontFamily}; + color: ${t.nodeTextColor||t.textColor}; + } + .label text,span { + fill: ${t.nodeTextColor||t.textColor}; + color: ${t.nodeTextColor||t.textColor}; + } + .labelBkg { + background-color: ${t.edgeLabelBackground}; + } + +`,"getStyles"),mCt=fCt}),wCt={};KBt(wCt,{draw:()=>kCt});var kCt,TCt=b(()=>{Tu(),t(),iO(),cct(),hct(),iS(),kCt=me(async function(t,e,r,n){D.info("REF0:"),D.info("Drawing requirement diagram (unified)",e);var{securityLevel:i,state:a,layout:s}=O(),o=n.db.getData(),i=WD(e,i);o.type=n.type,o.layoutAlgorithm=Hlt(s),o.nodeSpacing=a?.nodeSpacing??50,o.rankSpacing=a?.rankSpacing??50,o.markers=["requirement_contains","requirement_arrow"],o.diagramId=e,await Ylt(o,i),tS.insertTitle(i,"requirementDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Vlt(i,8,"requirementDiagram",a?.useMaxWidth??!0)},"draw")}),ECt={};KBt(ECt,{diagram:()=>CCt});var CCt,SCt,_Ct,ACt,LCt,NCt,ICt,RCt,MCt,DCt,OCt,PCt,BCt,$Ct,FCt,zCt,GCt,UCt,qCt,jCt,WCt,YCt,HCt,VCt,XCt,KCt,ZCt,QCt,JCt,tSt,eSt,rSt,nSt,iSt,aSt,sSt,oSt,lSt,cSt,hSt,uSt,dSt,pSt,gSt,fSt,mSt,ySt,vSt,xSt,bSt,wSt=b(()=>{vCt(),xCt(),bCt(),TCt(),CCt={parser:pCt,get db(){return new gCt},renderer:wCt,styles:mCt}}),kSt=b(()=>{function P(){this.yy={}}var t=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),e=[1,2],B=[1,3],$=[1,4],r=[2,4],n=[1,9],i=[1,11],a=[1,13],s=[1,14],o=[1,16],l=[1,17],c=[1,18],h=[1,24],u=[1,25],d=[1,26],p=[1,27],g=[1,28],f=[1,29],m=[1,30],y=[1,31],v=[1,32],x=[1,33],b=[1,34],w=[1,35],k=[1,36],T=[1,37],E=[1,38],C=[1,39],S=[1,41],_=[1,42],A=[1,43],L=[1,44],N=[1,45],I=[1,46],R=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,55,60,61,62,63,71],F=[2,71],M=[4,5,16,50,52,53],z=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,55,60,61,62,63,71],G=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,55,60,61,62,63,71],U=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,55,60,61,62,63,71],q=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,55,60,61,62,63,71],D=[69,70,71],O=[1,127],e={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,actor_with_config:54,note:55,placement:56,text2:57,over:58,actor_pair:59,links:60,link:61,properties:62,details:63,spaceList:64,",":65,left_of:66,right_of:67,signaltype:68,"+":69,"-":70,ACTOR:71,config_object:72,CONFIG_START:73,CONFIG_CONTENT:74,CONFIG_END:75,SOLID_OPEN_ARROW:76,DOTTED_OPEN_ARROW:77,SOLID_ARROW:78,BIDIRECTIONAL_SOLID_ARROW:79,DOTTED_ARROW:80,BIDIRECTIONAL_DOTTED_ARROW:81,SOLID_CROSS:82,DOTTED_CROSS:83,SOLID_POINT:84,DOTTED_POINT:85,TXT:86,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",55:"note",58:"over",60:"links",61:"link",62:"properties",63:"details",65:",",66:"left_of",67:"right_of",69:"+",70:"-",71:"ACTOR",73:"CONFIG_START",74:"CONFIG_CONTENT",75:"CONFIG_END",76:"SOLID_OPEN_ARROW",77:"DOTTED_OPEN_ARROW",78:"SOLID_ARROW",79:"BIDIRECTIONAL_SOLID_ARROW",80:"DOTTED_ARROW",81:"BIDIRECTIONAL_DOTTED_ARROW",82:"SOLID_CROSS",83:"DOTTED_CROSS",84:"SOLID_POINT",85:"DOTTED_POINT",86:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[64,2],[64,1],[59,3],[59,1],[56,1],[56,1],[17,5],[17,5],[17,4],[54,2],[72,3],[22,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[57,1]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 3:return n.apply(a[o]),a[o];case 4:case 9:this.$=[];break;case 5:case 10:a[o-1].push(a[o]),this.$=a[o-1];break;case 6:case 7:case 11:case 12:this.$=a[o];break;case 8:case 13:this.$=[];break;case 15:a[o].type="createParticipant",this.$=a[o];break;case 16:a[o-1].unshift({type:"boxStart",boxData:n.parseBoxData(a[o-2])}),a[o-1].push({type:"boxEnd",boxText:a[o-2]}),this.$=a[o-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(a[o-2]),sequenceIndexStep:Number(a[o-1]),sequenceVisible:!0,signalType:n.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(a[o-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:n.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:n.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:n.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:n.LINETYPE.ACTIVE_START,actor:a[o-1].actor};break;case 23:this.$={type:"activeEnd",signalType:n.LINETYPE.ACTIVE_END,actor:a[o-1].actor};break;case 29:n.setDiagramTitle(a[o].substring(6)),this.$=a[o].substring(6);break;case 30:n.setDiagramTitle(a[o].substring(7)),this.$=a[o].substring(7);break;case 31:this.$=a[o].trim(),n.setAccTitle(this.$);break;case 32:case 33:this.$=a[o].trim(),n.setAccDescription(this.$);break;case 34:a[o-1].unshift({type:"loopStart",loopText:n.parseMessage(a[o-2]),signalType:n.LINETYPE.LOOP_START}),a[o-1].push({type:"loopEnd",loopText:a[o-2],signalType:n.LINETYPE.LOOP_END}),this.$=a[o-1];break;case 35:a[o-1].unshift({type:"rectStart",color:n.parseMessage(a[o-2]),signalType:n.LINETYPE.RECT_START}),a[o-1].push({type:"rectEnd",color:n.parseMessage(a[o-2]),signalType:n.LINETYPE.RECT_END}),this.$=a[o-1];break;case 36:a[o-1].unshift({type:"optStart",optText:n.parseMessage(a[o-2]),signalType:n.LINETYPE.OPT_START}),a[o-1].push({type:"optEnd",optText:n.parseMessage(a[o-2]),signalType:n.LINETYPE.OPT_END}),this.$=a[o-1];break;case 37:a[o-1].unshift({type:"altStart",altText:n.parseMessage(a[o-2]),signalType:n.LINETYPE.ALT_START}),a[o-1].push({type:"altEnd",signalType:n.LINETYPE.ALT_END}),this.$=a[o-1];break;case 38:a[o-1].unshift({type:"parStart",parText:n.parseMessage(a[o-2]),signalType:n.LINETYPE.PAR_START}),a[o-1].push({type:"parEnd",signalType:n.LINETYPE.PAR_END}),this.$=a[o-1];break;case 39:a[o-1].unshift({type:"parStart",parText:n.parseMessage(a[o-2]),signalType:n.LINETYPE.PAR_OVER_START}),a[o-1].push({type:"parEnd",signalType:n.LINETYPE.PAR_END}),this.$=a[o-1];break;case 40:a[o-1].unshift({type:"criticalStart",criticalText:n.parseMessage(a[o-2]),signalType:n.LINETYPE.CRITICAL_START}),a[o-1].push({type:"criticalEnd",signalType:n.LINETYPE.CRITICAL_END}),this.$=a[o-1];break;case 41:a[o-1].unshift({type:"breakStart",breakText:n.parseMessage(a[o-2]),signalType:n.LINETYPE.BREAK_START}),a[o-1].push({type:"breakEnd",optText:n.parseMessage(a[o-2]),signalType:n.LINETYPE.BREAK_END}),this.$=a[o-1];break;case 43:this.$=a[o-3].concat([{type:"option",optionText:n.parseMessage(a[o-1]),signalType:n.LINETYPE.CRITICAL_OPTION},a[o]]);break;case 45:this.$=a[o-3].concat([{type:"and",parText:n.parseMessage(a[o-1]),signalType:n.LINETYPE.PAR_AND},a[o]]);break;case 47:this.$=a[o-3].concat([{type:"else",altText:n.parseMessage(a[o-1]),signalType:n.LINETYPE.ALT_ELSE},a[o]]);break;case 48:a[o-3].draw="participant",a[o-3].type="addParticipant",a[o-3].description=n.parseMessage(a[o-1]),this.$=a[o-3];break;case 49:a[o-1].draw="participant",a[o-1].type="addParticipant",this.$=a[o-1];break;case 50:a[o-3].draw="actor",a[o-3].type="addParticipant",a[o-3].description=n.parseMessage(a[o-1]),this.$=a[o-3];break;case 51:a[o-1].draw="actor",a[o-1].type="addParticipant",this.$=a[o-1];break;case 52:a[o-1].type="destroyParticipant",this.$=a[o-1];break;case 53:a[o-1].draw="participant",a[o-1].type="addParticipant",this.$=a[o-1];break;case 54:this.$=[a[o-1],{type:"addNote",placement:a[o-2],actor:a[o-1].actor,text:a[o]}];break;case 55:a[o-2]=[].concat(a[o-1],a[o-1]).slice(0,2),a[o-2][0]=a[o-2][0].actor,a[o-2][1]=a[o-2][1].actor,this.$=[a[o-1],{type:"addNote",placement:n.PLACEMENT.OVER,actor:a[o-2].slice(0,2),text:a[o]}];break;case 56:this.$=[a[o-1],{type:"addLinks",actor:a[o-1].actor,text:a[o]}];break;case 57:this.$=[a[o-1],{type:"addALink",actor:a[o-1].actor,text:a[o]}];break;case 58:this.$=[a[o-1],{type:"addProperties",actor:a[o-1].actor,text:a[o]}];break;case 59:this.$=[a[o-1],{type:"addDetails",actor:a[o-1].actor,text:a[o]}];break;case 62:this.$=[a[o-2],a[o]];break;case 63:this.$=a[o];break;case 64:this.$=n.PLACEMENT.LEFTOF;break;case 65:this.$=n.PLACEMENT.RIGHTOF;break;case 66:this.$=[a[o-4],a[o-1],{type:"addMessage",from:a[o-4].actor,to:a[o-1].actor,signalType:a[o-3],msg:a[o],activate:!0},{type:"activeStart",signalType:n.LINETYPE.ACTIVE_START,actor:a[o-1].actor}];break;case 67:this.$=[a[o-4],a[o-1],{type:"addMessage",from:a[o-4].actor,to:a[o-1].actor,signalType:a[o-3],msg:a[o]},{type:"activeEnd",signalType:n.LINETYPE.ACTIVE_END,actor:a[o-4].actor}];break;case 68:this.$=[a[o-3],a[o-1],{type:"addMessage",from:a[o-3].actor,to:a[o-1].actor,signalType:a[o-2],msg:a[o]}];break;case 69:this.$={type:"addParticipant",actor:a[o-1],config:a[o]};break;case 70:this.$=a[o-1].trim();break;case 71:this.$={type:"addParticipant",actor:a[o]};break;case 72:this.$=n.LINETYPE.SOLID_OPEN;break;case 73:this.$=n.LINETYPE.DOTTED_OPEN;break;case 74:this.$=n.LINETYPE.SOLID;break;case 75:this.$=n.LINETYPE.BIDIRECTIONAL_SOLID;break;case 76:this.$=n.LINETYPE.DOTTED;break;case 77:this.$=n.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 78:this.$=n.LINETYPE.SOLID_CROSS;break;case 79:this.$=n.LINETYPE.DOTTED_CROSS;break;case 80:this.$=n.LINETYPE.SOLID_POINT;break;case 81:this.$=n.LINETYPE.DOTTED_POINT;break;case 82:this.$=n.parseMessage(a[o].trim().substring(1))}},"anonymous"),table:[{3:1,4:e,5:B,6:$},{1:[3]},{3:5,4:e,5:B,6:$},{3:6,4:e,5:B,6:$},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,55,60,61,62,63,71],r,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:n,5:i,8:8,9:10,12:12,13:a,14:s,17:15,18:o,21:l,22:40,23:c,24:19,25:20,26:21,27:22,28:23,29:h,30:u,31:d,33:p,35:g,36:f,37:m,38:y,39:v,41:x,43:b,44:w,46:k,50:T,52:E,53:C,55:S,60:_,61:A,62:L,63:N,71:I},t(R,[2,5]),{9:47,12:12,13:a,14:s,17:15,18:o,21:l,22:40,23:c,24:19,25:20,26:21,27:22,28:23,29:h,30:u,31:d,33:p,35:g,36:f,37:m,38:y,39:v,41:x,43:b,44:w,46:k,50:T,52:E,53:C,55:S,60:_,61:A,62:L,63:N,71:I},t(R,[2,7]),t(R,[2,8]),t(R,[2,14]),{12:48,50:T,52:E,53:C},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,71:I},{22:55,71:I},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(R,[2,29]),t(R,[2,30]),{32:[1,61]},{34:[1,62]},t(R,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,54:72,71:[1,73]},{22:74,71:I},{22:75,71:I},{68:76,76:[1,77],77:[1,78],78:[1,79],79:[1,80],80:[1,81],81:[1,82],82:[1,83],83:[1,84],84:[1,85],85:[1,86]},{56:87,58:[1,88],66:[1,89],67:[1,90]},{22:91,71:I},{22:92,71:I},{22:93,71:I},{22:94,71:I},t([5,51,65,76,77,78,79,80,81,82,83,84,85,86],F),t(R,[2,6]),t(R,[2,15]),t(M,[2,9],{10:95}),t(R,[2,17]),{5:[1,97],19:[1,96]},{5:[1,98]},t(R,[2,21]),{5:[1,99]},{5:[1,100]},t(R,[2,24]),t(R,[2,25]),t(R,[2,26]),t(R,[2,27]),t(R,[2,28]),t(R,[2,31]),t(R,[2,32]),t(z,r,{7:101}),t(z,r,{7:102}),t(z,r,{7:103}),t(G,r,{40:104,7:105}),t(U,r,{42:106,7:107}),t(U,r,{7:107,42:108}),t(q,r,{45:109,7:110}),t(z,r,{7:111}),{5:[1,113],51:[1,112]},{5:[1,114]},t([5,51],F,{72:115,73:[1,116]}),{5:[1,118],51:[1,117]},{5:[1,119]},{22:122,69:[1,120],70:[1,121],71:I},t(D,[2,72]),t(D,[2,73]),t(D,[2,74]),t(D,[2,75]),t(D,[2,76]),t(D,[2,77]),t(D,[2,78]),t(D,[2,79]),t(D,[2,80]),t(D,[2,81]),{22:123,71:I},{22:125,59:124,71:I},{71:[2,64]},{71:[2,65]},{57:126,86:O},{57:128,86:O},{57:129,86:O},{57:130,86:O},{4:[1,133],5:[1,135],11:132,12:134,16:[1,131],50:T,52:E,53:C},{5:[1,136]},t(R,[2,19]),t(R,[2,20]),t(R,[2,22]),t(R,[2,23]),{4:n,5:i,8:8,9:10,12:12,13:a,14:s,16:[1,137],17:15,18:o,21:l,22:40,23:c,24:19,25:20,26:21,27:22,28:23,29:h,30:u,31:d,33:p,35:g,36:f,37:m,38:y,39:v,41:x,43:b,44:w,46:k,50:T,52:E,53:C,55:S,60:_,61:A,62:L,63:N,71:I},{4:n,5:i,8:8,9:10,12:12,13:a,14:s,16:[1,138],17:15,18:o,21:l,22:40,23:c,24:19,25:20,26:21,27:22,28:23,29:h,30:u,31:d,33:p,35:g,36:f,37:m,38:y,39:v,41:x,43:b,44:w,46:k,50:T,52:E,53:C,55:S,60:_,61:A,62:L,63:N,71:I},{4:n,5:i,8:8,9:10,12:12,13:a,14:s,16:[1,139],17:15,18:o,21:l,22:40,23:c,24:19,25:20,26:21,27:22,28:23,29:h,30:u,31:d,33:p,35:g,36:f,37:m,38:y,39:v,41:x,43:b,44:w,46:k,50:T,52:E,53:C,55:S,60:_,61:A,62:L,63:N,71:I},{16:[1,140]},{4:n,5:i,8:8,9:10,12:12,13:a,14:s,16:[2,46],17:15,18:o,21:l,22:40,23:c,24:19,25:20,26:21,27:22,28:23,29:h,30:u,31:d,33:p,35:g,36:f,37:m,38:y,39:v,41:x,43:b,44:w,46:k,49:[1,141],50:T,52:E,53:C,55:S,60:_,61:A,62:L,63:N,71:I},{16:[1,142]},{4:n,5:i,8:8,9:10,12:12,13:a,14:s,16:[2,44],17:15,18:o,21:l,22:40,23:c,24:19,25:20,26:21,27:22,28:23,29:h,30:u,31:d,33:p,35:g,36:f,37:m,38:y,39:v,41:x,43:b,44:w,46:k,48:[1,143],50:T,52:E,53:C,55:S,60:_,61:A,62:L,63:N,71:I},{16:[1,144]},{16:[1,145]},{4:n,5:i,8:8,9:10,12:12,13:a,14:s,16:[2,42],17:15,18:o,21:l,22:40,23:c,24:19,25:20,26:21,27:22,28:23,29:h,30:u,31:d,33:p,35:g,36:f,37:m,38:y,39:v,41:x,43:b,44:w,46:k,47:[1,146],50:T,52:E,53:C,55:S,60:_,61:A,62:L,63:N,71:I},{4:n,5:i,8:8,9:10,12:12,13:a,14:s,16:[1,147],17:15,18:o,21:l,22:40,23:c,24:19,25:20,26:21,27:22,28:23,29:h,30:u,31:d,33:p,35:g,36:f,37:m,38:y,39:v,41:x,43:b,44:w,46:k,50:T,52:E,53:C,55:S,60:_,61:A,62:L,63:N,71:I},{15:[1,148]},t(R,[2,49]),t(R,[2,53]),{5:[2,69]},{74:[1,149]},{15:[1,150]},t(R,[2,51]),t(R,[2,52]),{22:151,71:I},{22:152,71:I},{57:153,86:O},{57:154,86:O},{57:155,86:O},{65:[1,156],86:[2,63]},{5:[2,56]},{5:[2,82]},{5:[2,57]},{5:[2,58]},{5:[2,59]},t(R,[2,16]),t(M,[2,10]),{12:157,50:T,52:E,53:C},t(M,[2,12]),t(M,[2,13]),t(R,[2,18]),t(R,[2,34]),t(R,[2,35]),t(R,[2,36]),t(R,[2,37]),{15:[1,158]},t(R,[2,38]),{15:[1,159]},t(R,[2,39]),t(R,[2,40]),{15:[1,160]},t(R,[2,41]),{5:[1,161]},{75:[1,162]},{5:[1,163]},{57:164,86:O},{57:165,86:O},{5:[2,68]},{5:[2,54]},{5:[2,55]},{22:166,71:I},t(M,[2,11]),t(G,r,{7:105,40:167}),t(U,r,{7:107,42:168}),t(q,r,{7:110,45:169}),t(R,[2,48]),{5:[2,70]},t(R,[2,50]),{5:[2,66]},{5:[2,67]},{86:[2,62]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],89:[2,64],90:[2,65],115:[2,69],126:[2,56],127:[2,82],128:[2,57],129:[2,58],130:[2,59],153:[2,68],154:[2,54],155:[2,55],162:[2,70],164:[2,66],165:[2,67],166:[2,62],167:[2,47],168:[2,45],169:[2,43]},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0\->:\n,;@\s]+(?=@\{))/i,/^(?:[^\<->\->:\n,;@]+?([\-]*[^\<->\->:\n,;@]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\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,/^(?:par_over\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,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,/^(?::)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[50,51],inclusive:!1},acc_descr:{rules:[48],inclusive:!1},acc_title:{rules:[46],inclusive:!1},ID:{rules:[2,3,7,10,11,17],inclusive:!1},ALIAS:{rules:[2,3,18,19],inclusive:!1},LINE:{rules:[2,3,31],inclusive:!1},CONFIG:{rules:[8,9],inclusive:!1},CONFIG_DATA:{rules:[],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,12,13,14,15,16,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,47,49,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73],inclusive:!0}}};e.lexer=B,me(P,"Parser"),(SCt=new((P.prototype=e).Parser=P)).parser=SCt,_Ct=SCt}),TSt=b(()=>{Tu(),F9(),t(),E6t(),Oc(),ku(),ACt={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,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34},LCt={FILLED:0,OPEN:1},NCt={LEFTOF:0,RIGHTOF:1,OVER:2},ICt={ACTOR:"actor",BOUNDARY:"boundary",COLLECTIONS:"collections",CONTROL:"control",DATABASE:"database",ENTITY:"entity",PARTICIPANT:"participant",QUEUE:"queue"},RCt=class{constructor(){this.state=new w6t(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0})),this.setAccTitle=mh,this.setAccDescription=vh,this.setDiagramTitle=bh,this.getAccTitle=yh,this.getAccDescription=xh,this.getDiagramTitle=wh,this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap(O().wrap),this.LINETYPE=ACt,this.ARROWTYPE=LCt,this.PLACEMENT=NCt}static{me(this,"SequenceDB")}addBox(t){this.state.records.boxes.push({name:t.text,wrap:t.wrap??this.autoWrap(),fill:t.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(t,e,r,n,i){let a=this.state.records.currentBox,s,o;if(void 0!==i&&(o=i.includes(` +`)?i+` +`:`{ +`+i+` +}`,s=$9(o,{schema:B9})),n=s?.type??n,i=this.state.records.actors.get(t)){if(this.state.records.currentBox&&i.box&&this.state.records.currentBox!==i.box)throw new Error(`A same participant should only be defined in one Box: ${i.name} can't be in '${i.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(a=i.box||this.state.records.currentBox,i.box=a,i&&e===i.name&&null==r)return}null==r?.text&&(r={text:e,type:n}),null!=n&&null!=r.text||(r={text:e,type:n}),this.state.records.actors.set(t,{box:a,name:e,description:r.text,wrap:r.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:n??"participant"}),this.state.records.prevActor&&(i=this.state.records.actors.get(this.state.records.prevActor))&&(i.nextActor=t),this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(t),this.state.records.prevActor=t}activationCount(t){let e,r=0;if(!t)return 0;for(e=0;e>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},a;return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:e,message:r?.text??"",wrap:r?.wrap??this.autoWrap(),type:n,activate:i}),!0}hasAtLeastOneBox(){return 0t.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(t){return this.state.records.actors.get(t)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(t){this.state.records.wrapEnabled=t}extractWrap(t){if(void 0===t)return{};t=t.trim();var e=null!==/^:?wrap:/.exec(t)||null===/^:?nowrap:/.exec(t)&&void 0;return{cleanedText:(void 0===e?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:e}}autoWrap(){return void 0!==this.state.records.wrapEnabled?this.state.records.wrapEnabled:O().sequence?.wrap??!1}clear(){this.state.reset(),fh()}parseMessage(t){var t=t.trim(),{wrap:t,cleanedText:e}=this.extractWrap(t),e={text:e,wrap:t};return D.debug("parseMessage: "+JSON.stringify(e)),e}parseBoxData(t){let e=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t),r=e?.[1]?e[1].trim():"transparent",n=e?.[2]?e[2].trim():void 0;window?.CSS?window.CSS.supports("color",r)||(r="transparent",n=t.trim()):((i=(new Option).style).color=r,i.color!==r&&(r="transparent",n=t.trim()));var{wrap:i,cleanedText:t}=this.extractWrap(n);return{text:t?lc(t,O()):void 0,color:r,wrap:i}}addNote(t,e,r){var n={actor:t,placement:e,message:r.text,wrap:r.wrap??this.autoWrap()},t=[].concat(t,t);this.state.records.notes.push(n),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t[0],to:t[1],message:r.text,wrap:r.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:e})}addLinks(e,r){e=this.getActor(e);try{let t=lc(r.text,O());t=(t=t.replace(/=/g,"=")).replace(/&/g,"&");var n=JSON.parse(t);this.insertLinks(e,n)}catch(t){D.error("error while parsing actor link text",t)}}addALink(a,s){a=this.getActor(a);try{let t={},e=lc(s.text,O()),r=e.indexOf("@"),n=(e=(e=e.replace(/=/g,"=")).replace(/&/g,"&")).slice(0,r-1).trim(),i=e.slice(r+1).trim();t[n]=i,this.insertLinks(a,t)}catch(t){D.error("error while parsing actor link text",t)}}insertLinks(t,e){if(null==t.links)t.links=e;else for(var r in e)t.links[r]=e[r]}addProperties(t,e){t=this.getActor(t);try{var r=lc(e.text,O()),n=JSON.parse(r);this.insertProperties(t,n)}catch(t){D.error("error while parsing actor properties text",t)}}insertProperties(t,e){if(null==t.properties)t.properties=e;else for(var r in e)t.properties[r]=e[r]}boxEnd(){this.state.records.currentBox=void 0}addDetails(t,e){t=this.getActor(t),e=document.getElementById(e.text);try{var r=e.innerHTML,n=JSON.parse(r);n.properties&&this.insertProperties(t,n.properties),n.links&&this.insertLinks(t,n.links)}catch(t){D.error("error while parsing actor details text",t)}}getActorProperty(t,e){if(void 0!==t?.properties)return t.properties[e]}apply(t){if(Array.isArray(t))t.forEach(t=>{this.apply(t)});else switch(t.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":this.addActor(t.actor,t.actor,t.description,t.draw,t.config);break;case"createParticipant":if(this.state.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=t.actor,this.addActor(t.actor,t.actor,t.description,t.draw,t.config),this.state.records.createdActors.set(t.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=t.actor,this.state.records.destroyedActors.set(t.actor,this.state.records.messages.length);break;case"activeStart":case"activeEnd":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"addNote":this.addNote(t.actor,t.placement,t.text);break;case"addLinks":this.addLinks(t.actor,t.text);break;case"addALink":this.addALink(t.actor,t.text);break;case"addProperties":this.addProperties(t.actor,t.text);break;case"addDetails":this.addDetails(t.actor,t.text);break;case"addMessage":if(this.state.records.lastCreated){if(t.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(t.to!==this.state.records.lastDestroyed&&t.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(t.from,t.to,t.msg,t.signalType,t.activate);break;case"boxStart":this.addBox(t.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"rectStart":this.addSignal(void 0,void 0,t.color,t.signalType);break;case"rectEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"optStart":this.addSignal(void 0,void 0,t.optText,t.signalType);break;case"optEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"altStart":case"else":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"altEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"setAccTitle":mh(t.text);break;case"parStart":case"and":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"parEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,t.criticalText,t.signalType);break;case"option":this.addSignal(void 0,void 0,t.optionText,t.signalType);break;case"criticalEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"breakStart":this.addSignal(void 0,void 0,t.breakText,t.signalType);break;case"breakEnd":this.addSignal(void 0,void 0,void 0,t.signalType)}}getConfig(){return O().sequence}}}),ESt=b(()=>{MCt=me(t=>`.actor { + stroke: ${t.actorBorder}; + fill: ${t.actorBkg}; + } + + text.actor > tspan { + fill: ${t.actorTextColor}; + stroke: none; + } + + .actor-line { + stroke: ${t.actorLineColor}; + } + + .innerArc { + stroke-width: 1.5; + stroke-dasharray: none; + } + + .messageLine0 { + stroke-width: 1.5; + stroke-dasharray: none; + stroke: ${t.signalColor}; + } + + .messageLine1 { + stroke-width: 1.5; + stroke-dasharray: 2, 2; + stroke: ${t.signalColor}; + } + + #arrowhead path { + fill: ${t.signalColor}; + stroke: ${t.signalColor}; + } + + .sequenceNumber { + fill: ${t.sequenceNumberColor}; + } + + #sequencenumber { + fill: ${t.signalColor}; + } + + #crosshead path { + fill: ${t.signalColor}; + stroke: ${t.signalColor}; + } + + .messageText { + fill: ${t.signalTextColor}; + stroke: none; + } + + .labelBox { + stroke: ${t.labelBoxBorderColor}; + fill: ${t.labelBoxBkgColor}; + } + + .labelText, .labelText > tspan { + fill: ${t.labelTextColor}; + stroke: none; + } + + .loopText, .loopText > tspan { + fill: ${t.loopTextColor}; + stroke: none; + } + + .loopLine { + stroke-width: 2px; + stroke-dasharray: 2, 2; + stroke: ${t.labelBoxBorderColor}; + fill: ${t.labelBoxBorderColor}; + } + + .note { + //stroke: #decc93; + stroke: ${t.noteBorderColor}; + fill: ${t.noteBkgColor}; + } + + .noteText, .noteText > tspan { + fill: ${t.noteTextColor}; + stroke: none; + } + + .activation0 { + fill: ${t.activationBkgColor}; + stroke: ${t.activationBorderColor}; + } + + .activation1 { + fill: ${t.activationBkgColor}; + stroke: ${t.activationBorderColor}; + } + + .activation2 { + fill: ${t.activationBkgColor}; + stroke: ${t.activationBorderColor}; + } + + .actorPopupMenu { + position: absolute; + } + + .actorPopupMenuPanel { + position: absolute; + fill: ${t.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: ${t.actorBorder}; + fill: ${t.actorBkg}; + } + .actor-man circle, line { + stroke: ${t.actorBorder}; + fill: ${t.actorBkg}; + stroke-width: 2px; + } + +`,"getStyles"),DCt=MCt}),CSt=b(()=>{function e(t,e,r,n,i,a,s){g(e.append("text").attr("x",r).attr("y",n).style("text-anchor","start").text(t),s)}function l(t,e,r,n,i,a,s,o){var{actorFontSize:l,actorFontFamily:c,actorFontWeight:h}=o,u=t.split(L.lineBreakRegex);for(let t=0;tr?o.width:r);if((t=l.append("rect")).attr("class","actorPopupMenuPanel"+i),t.attr("x",o.x),t.attr("y",o.height),t.attr("fill",o.fill),t.attr("stroke",o.stroke),t.attr("width",c),t.attr("height",o.height),t.attr("rx",o.rx),t.attr("ry",o.ry),null!=a){var h,u=20;for(h in a){var d=l.append("a"),p=(0,OCt.sanitizeUrl)(a[h]);d.attr("xlink:href",p),d.attr("target","_blank"),xSt(n)(h,d,o.x+10,o.height+u,c,20,{class:"actor"},n),u+=30}}return t.attr("height",u),{height:o.height+u,width:c}},"drawPopup"),qCt=me(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),jCt=me(async function(n,i,a=null){var s=n.append("foreignObject"),o=await _c(i.text,ar()),o=s.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(o).node().getBoundingClientRect();if(s.attr("height",Math.round(o.height)).attr("width",Math.round(o.width)),"noteText"===i.class)(n=n.node().firstChild).setAttribute("height",o.height+2*i.textMargin),n=n.getBBox(),s.attr("x",Math.round(n.x+n.width/2-o.width/2)).attr("y",Math.round(n.y+n.height/2-o.height/2));else if(a){let{startx:t,stopx:e,starty:r}=a;t>e&&(n=t,t=e,e=n),s.attr("x",Math.round(t+Math.abs(t-e)/2-o.width/2)),"loopText"===i.class?s.attr("y",Math.round(r)):s.attr("y",Math.round(r-o.height))}return[s]},"drawKatex"),WCt=me(function(t,e){let r=0,n=0,i=e.text.split(L.lineBreakRegex),[a,s]=JC(e.fontSize),o=[],l=0,c=me(()=>e.y,"yfunc");if(void 0!==e.valign&&void 0!==e.textMargin&&0Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":c=me(()=>Math.round(e.y+(r+n+e.textMargin)/2),"yfunc");break;case"bottom":case"end":c=me(()=>Math.round(e.y+(r+n+2*e.textMargin)-e.textMargin),"yfunc")}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle"}for(var[h,u]of i.entries()){void 0!==e.textMargin&&0===e.textMargin&&void 0!==a&&(l=h*a),(h=t.append("text")).attr("x",e.x),h.attr("y",c()),void 0!==e.anchor&&h.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),void 0!==e.fontFamily&&h.style("font-family",e.fontFamily),void 0!==s&&h.style("font-size",s),void 0!==e.fontWeight&&h.style("font-weight",e.fontWeight),void 0!==e.fill&&h.attr("fill",e.fill),void 0!==e.class&&h.attr("class",e.class),void 0!==e.dy?h.attr("dy",e.dy):0!==l&&h.attr("dy",l);var d,u=u||NC;(e.tspan?((d=h.append("tspan")).attr("x",e.x),void 0!==e.fill&&d.attr("fill",e.fill),d):h).text(u),void 0!==e.valign&&void 0!==e.textMargin&&0{r.select&&t.forEach(t=>{var t=n.get(t),e=r.select("#actor"+t.actorCnt);!i.mirrorActors&&t.stopy?e.attr("y2",t.stopy+t.height/2):i.mirrorActors&&e.attr("y2",t.stopy)})},"fixLifeLineHeights"),XCt=me(function(t,e,r,n){var i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,o=t=t.append("g").lower(),s=(n||(HCt++,Object.keys(e.links||{}).length&&!r.forceMenus&&o.attr("onclick",qCt(`actor${HCt}_popup`)).attr("cursor","pointer"),o.append("line").attr("id","actor"+HCt).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),o=t.append("g"),e.actorCnt=HCt,null!=e.links&&o.attr("id","root-"+HCt)),Lw()),a="actor",t=(e.properties?.class?a=e.properties.class:s.fill="#eaeaea",a+=n?" "+$Ct:" "+BCt,s.x=e.x,s.y=i,s.width=e.width,s.height=e.height,s.class=a,s.rx=3,s.ry=3,s.name=e.name,GCt(o,s));e.rectData=s,e.properties?.icon&&("@"===(n=e.properties.icon.trim()).charAt(0)?Aw(o,s.x+s.width-20,s.y+10,n.substr(1)):_w(o,s.x+s.width-20,s.y+10,n)),vSt(r,Ec(e.description))(e.description,o,s.x,s.y,s.width,s.height,{class:"actor "+FCt},r);let l=e.height;return t.node&&(i=t.node().getBBox(),e.height=i.height,l=i.height),l},"drawActorTypeParticipant"),KCt=me(function(t,e,r,n){var i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,o=t=t.append("g").lower(),s=(n||(HCt++,Object.keys(e.links||{}).length&&!r.forceMenus&&o.attr("onclick",qCt(`actor${HCt}_popup`)).attr("cursor","pointer"),o.append("line").attr("id","actor"+HCt).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),o=t.append("g"),e.actorCnt=HCt,null!=e.links&&o.attr("id","root-"+HCt)),Lw()),a="actor",t=(e.properties?.class?a=e.properties.class:s.fill="#eaeaea",a+=n?" "+$Ct:" "+BCt,s.x=e.x,s.y=i,s.width=e.width,s.height=e.height,s.class=a,s.name=e.name,{...s,x:s.x+-6,y:s.y+6,class:"actor"}),n=GCt(o,s);GCt(o,t),e.rectData=s,e.properties?.icon&&("@"===(i=e.properties.icon.trim()).charAt(0)?Aw(o,s.x+s.width-20,s.y+10,i.substr(1)):_w(o,s.x+s.width-20,s.y+10,i)),vSt(r,Ec(e.description))(e.description,o,s.x-6,s.y+6,s.width,s.height,{class:"actor "+FCt},r);let l=e.height;return n.node&&(a=n.node().getBBox(),e.height=a.height,l=a.height),l},"drawActorTypeCollections"),ZCt=me(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,o=t.append("g").lower(),l=o,c=(n||(HCt++,Object.keys(e.links||{}).length&&!r.forceMenus&&l.attr("onclick",qCt(`actor${HCt}_popup`)).attr("cursor","pointer"),l.append("line").attr("id","actor"+HCt).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),l=o.append("g"),e.actorCnt=HCt,null!=e.links&&l.attr("id","root-"+HCt)),Lw()),h="actor";e.properties?.class?h=e.properties.class:c.fill="#eaeaea",h+=n?" "+$Ct:" "+BCt,c.x=e.x,c.y=i,c.width=e.width,c.height=e.height,c.class=h,c.name=e.name;var n=(t=c.height/2)/(2.5+c.height/50),u=l.append("g"),d=l.append("g");u.append("path").attr("d",`M ${c.x},${c.y+t} + a ${n},${t} 0 0 0 0,${c.height} + h ${c.width-2*n} + a ${n},${t} 0 0 0 0,-${c.height} + Z + `).attr("class",h),d.append("path").attr("d",`M ${c.x},${c.y+t} + a ${n},${t} 0 0 0 0,`+c.height).attr("stroke","#666").attr("stroke-width","1px").attr("class",h),u.attr("transform",`translate(${n}, ${-c.height/2})`),d.attr("transform",`translate(${c.width-n}, ${-c.height/2})`),e.rectData=c,e.properties?.icon&&(t=e.properties.icon.trim(),d=c.x+c.width-20,n=c.y+10,"@"===t.charAt(0)?Aw(l,d,n,t.substr(1)):_w(l,d,n,t)),vSt(r,Ec(e.description))(e.description,l,c.x,c.y,c.width,c.height,{class:"actor "+FCt},r);let p=e.height,g=u.select("path:last-child");return g.node()&&(d=g.node().getBBox(),e.height=d.height,p=d.height),p},"drawActorTypeQueue"),QCt=me(function(t,e,r,n){var i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+75,o=t.append("g").lower(),l=(n||(HCt++,o.append("line").attr("id","actor"+HCt).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=HCt),t.append("g")),c=zCt;return l.attr("class",c+=n?" "+$Ct:" "+BCt),l.attr("name",e.name),(o=Lw()).x=e.x,o.y=i,o.fill="#eaeaea",o.width=e.width,o.height=e.height,o.class="actor",s=e.x+e.width/2,a=i+30,l.append("defs").append("marker").attr("id","filled-head-control").attr("refX",11).attr("refY",5.8).attr("markerWidth",20).attr("markerHeight",28).attr("orient","172.5").append("path").attr("d","M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"),l.append("circle").attr("cx",s).attr("cy",a).attr("r",18).attr("fill","#eaeaf7").attr("stroke","#666").attr("stroke-width",1.2),l.append("line").attr("marker-end","url(#filled-head-control)").attr("transform",`translate(${s}, ${a-18})`),t=l.node().getBBox(),e.height=t.height+2*(r?.sequence?.labelBoxHeight??0),vSt(r,Ec(e.description))(e.description,l,o.x,o.y+18+(n?5:10),o.width,o.height,{class:"actor "+zCt},r),e.height},"drawActorTypeControl"),JCt=me(function(t,e,r,n){var i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+75,o=t.append("g").lower(),l=t.append("g"),c=zCt,c=(l.attr("class",c+=n?" "+$Ct:" "+BCt),l.attr("name",e.name),(t=Lw()).x=e.x,t.y=i,t.fill="#eaeaea",t.width=e.width,t.height=e.height,t.class="actor",e.x+e.width/2),h=i+(n?10:25),c=(l.append("circle").attr("cx",c).attr("cy",h).attr("r",18).attr("width",e.width).attr("height",e.height),l.append("line").attr("x1",c-18).attr("x2",c+18).attr("y1",h+18).attr("y2",h+18).attr("stroke","#333").attr("stroke-width",2),l.node().getBBox());return e.height=c.height+(r?.sequence?.labelBoxHeight??0),n||(HCt++,o.append("line").attr("id","actor"+HCt).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=HCt),vSt(r,Ec(e.description))(e.description,l,t.x,t.y+(n?(h-i+18-5)/2:(h+18-i)/2),t.width,t.height,{class:"actor "+zCt},r),l.attr("transform","translate(0, 9)"),e.height},"drawActorTypeEntity"),tSt=me(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height+2*r.boxTextMargin,o=t.append("g").lower(),l=o,c=(n||(HCt++,Object.keys(e.links||{}).length&&!r.forceMenus&&l.attr("onclick",qCt(`actor${HCt}_popup`)).attr("cursor","pointer"),l.append("line").attr("id","actor"+HCt).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),l=o.append("g"),e.actorCnt=HCt,null!=e.links&&l.attr("id","root-"+HCt)),Lw()),h="actor";e.properties?.class?h=e.properties.class:c.fill="#eaeaea",h+=n?" "+$Ct:" "+BCt,c.x=e.x,c.y=i,c.width=e.width,c.height=e.height,c.class=h,c.name=e.name,c.x=e.x,c.y=i;var t=c.width/4,u=c.width/4,d=(g=t/2)/(2.5+t/50),p=l.append("g"),g=` + M ${c.x},${c.y+d} + a ${g},${d} 0 0 0 ${t},0 + a ${g},${d} 0 0 0 -${t},0 + l 0,${u-2*d} + a ${g},${d} 0 0 0 ${t},0 + l 0,-${u-2*d} +`;return p.append("path").attr("d",g).attr("fill","#eaeaea").attr("stroke","#000").attr("stroke-width",1).attr("class",h),n?p.attr("transform",`translate(${1.5*t}, ${c.height/4-2*d})`):p.attr("transform",`translate(${1.5*t}, ${(c.height+d)/4})`),e.rectData=c,vSt(r,Ec(e.description))(e.description,l,c.x,c.y+(n?(c.height+u)/4:(c.height+d)/2),c.width,c.height,{class:"actor "+FCt},r),(g=p.select("path:last-child")).node()&&(t=g.node().getBBox(),e.height=t.height+(r.sequence.labelBoxHeight??0)),e.height},"drawActorTypeDatabase"),eSt=me(function(t,e,r,n){var i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+80,o=t.append("g").lower(),a=(n||(HCt++,o.append("line").attr("id","actor"+HCt).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=HCt),t.append("g")),t=zCt;return a.attr("class",t+=n?" "+$Ct:" "+BCt),a.attr("name",e.name),(o=Lw()).x=e.x,o.y=i,o.fill="#eaeaea",o.width=e.width,o.height=e.height,o.class="actor",a.append("line").attr("id","actor-man-torso"+HCt).attr("x1",e.x+e.width/2-75).attr("y1",i+10).attr("x2",e.x+e.width/2-15).attr("y2",i+10),a.append("line").attr("id","actor-man-arms"+HCt).attr("x1",e.x+e.width/2-75).attr("y1",i+0).attr("x2",e.x+e.width/2-75).attr("y2",i+20),a.append("circle").attr("cx",e.x+e.width/2).attr("cy",i+10).attr("r",30),s=a.node().getBBox(),e.height=s.height+(r.sequence.labelBoxHeight??0),vSt(r,Ec(e.description))(e.description,a,o.x,o.y+(n?11:18),o.width,o.height,{class:"actor "+zCt},r),a.attr("transform","translate(0,22)"),e.height},"drawActorTypeBoundary"),rSt=me(function(t,e,r,n){var i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+80,o=t.append("g").lower(),l=(n||(HCt++,o.append("line").attr("id","actor"+HCt).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=HCt),t.append("g")),c=zCt;return l.attr("class",c+=n?" "+$Ct:" "+BCt),l.attr("name",e.name),(o=Lw()).x=e.x,o.y=i,o.fill="#eaeaea",o.width=e.width,o.height=e.height,o.class="actor",o.rx=3,o.ry=3,l.append("line").attr("id","actor-man-torso"+HCt).attr("x1",a).attr("y1",i+25).attr("x2",a).attr("y2",i+45),l.append("line").attr("id","actor-man-arms"+HCt).attr("x1",a-PCt/2).attr("y1",i+33).attr("x2",a+PCt/2).attr("y2",i+33),l.append("line").attr("x1",a-PCt/2).attr("y1",i+60).attr("x2",a).attr("y2",i+45),l.append("line").attr("x1",a).attr("y1",i+45).attr("x2",a+PCt/2-2).attr("y2",i+60),(s=l.append("circle")).attr("cx",e.x+e.width/2),s.attr("cy",i+10),s.attr("r",15),s.attr("width",e.width),s.attr("height",e.height),t=l.node().getBBox(),e.height=t.height,vSt(r,Ec(e.description))(e.description,l,o.x,o.y+35,o.width,o.height,{class:"actor "+zCt},r),e.height},"drawActorTypeActor"),nSt=me(async function(t,e,r,n){switch(e.type){case"actor":return rSt(t,e,r,n);case"participant":return XCt(t,e,r,n);case"boundary":return eSt(t,e,r,n);case"control":return QCt(t,e,r,n);case"entity":return JCt(t,e,r,n);case"database":return tSt(t,e,r,n);case"collections":return KCt(t,e,r,n);case"queue":return ZCt(t,e,r,n)}},"drawActor"),iSt=me(function(t,e,r){t=t.append("g"),lSt(t,e),e.name&&vSt(r)(e.name,t,e.x,e.y+r.boxTextMargin+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},r),t.lower()},"drawBox"),aSt=me(function(t){return t.append("g")},"anchorElement"),sSt=me(function(t,e,r,n,i){var a=Lw(),s=e.anchored;a.x=e.startx,a.y=e.starty,a.class="activation"+i%3,a.width=e.stopx-e.startx,a.height=r-e.starty,GCt(s,a)},"drawActivation"),oSt=me(async function(t,e,r,n){let{boxMargin:i,boxTextMargin:a,labelBoxHeight:s,labelBoxWidth:o,messageFontFamily:l,messageFontSize:c,messageFontWeight:h}=n,u=t.append("g"),d=me(function(t,e,r,n){return u.append("line").attr("x1",t).attr("y1",e).attr("x2",r).attr("y2",n).attr("class","loopLine")},"drawLoopLine"),p=(d(e.startx,e.starty,e.stopx,e.starty),d(e.stopx,e.starty,e.stopx,e.stopy),d(e.startx,e.stopy,e.stopx,e.stopy),d(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach(function(t){d(e.startx,t.y,e.stopx,t.y).style("stroke-dasharray","3, 3")}),Nw());p.text=r,p.x=e.startx,p.y=e.starty,p.fontFamily=l,p.fontSize=c,p.fontWeight=h,p.anchor="middle",p.valign="middle",p.tspan=!1,p.width=o||50,p.height=s||20,p.textMargin=a,p.class="labelText",YCt(u,p),(p=mSt()).text=e.title,p.x=e.startx+o/2+(e.stopx-e.startx)/2,p.y=e.starty+i+a,p.anchor="middle",p.valign="middle",p.textMargin=a,p.class="loopText",p.fontFamily=l,p.fontSize=c,p.fontWeight=h,p.wrap=!0;var g=Ec(p.text)?await jCt(u,p,e):WCt(u,p);if(void 0!==e.sectionTitles)for(var[f,m]of Object.entries(e.sectionTitles))m.message&&(p.text=m.message,p.x=e.startx+(e.stopx-e.startx)/2,p.y=e.sections[f].y+i+a,p.class="loopText",p.anchor="middle",p.valign="middle",p.tspan=!1,p.fontFamily=l,p.fontSize=c,p.fontWeight=h,p.wrap=e.wrap,Ec(p.text)?(e.starty=e.sections[f].y,await jCt(u,p,e)):WCt(u,p),m=Math.round(g.map(t=>(t._groups||t)[0][0].getBBox().height).reduce((t,e)=>t+e)),e.sections[f].height+=m-(i+a));return e.height=Math.round(e.stopy-e.starty),u},"drawLoop"),lSt=me(function(t,e){Cw(t,e)},"drawBackgroundRect"),cSt=me(function(t){t.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")},"insertDatabaseIcon"),hSt=me(function(t){t.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")},"insertComputerIcon"),uSt=me(function(t){t.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")},"insertClockIcon"),dSt=me(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),pSt=me(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).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")},"insertArrowFilledHead"),gSt=me(function(t){t.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)},"insertSequenceNumber"),fSt=me(function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.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")},"insertArrowCrossHead"),mSt=me(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}},"getTextObj"),ySt=me(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),me(n,"byText"),me(c,"byTspan"),me(i,"byFo"),me(a,"byKatex"),me(f,"_setTextAttrs"),vSt=function(t,e=!1){return e?a:"fo"===t.textPlacement?i:"old"===t.textPlacement?n:c},me(e,"byText"),me(l,"byTspan"),me(r,"byFo"),me(g,"_setTextAttrs"),xSt=function(t){return"fo"===t.textPlacement?r:"old"===t.textPlacement?e:l},bSt={drawRect:GCt,drawText:WCt,drawLabel:YCt,drawActor:nSt,drawBox:iSt,drawPopup:UCt,anchorElement:aSt,drawActivation:sSt,drawLoop:oSt,drawBackgroundRect:lSt,insertArrowHead:dSt,insertArrowFilledHead:pSt,insertSequenceNumber:gSt,insertArrowCrossHead:fSt,insertDatabaseIcon:cSt,insertComputerIcon:hSt,insertClockIcon:uSt,getTextObj:mSt,getNoteRect:ySt,fixLifeLineHeights:VCt,sanitizeUrl:OCt.sanitizeUrl}});async function SSt(t,e){B.bumpVerticalPos(10);var{startx:r,stopx:n,message:i}=e,a=L.splitBreaks(i).length,s=Ec(i),i=s?await Cc(i,O()):tS.calculateTextDimensions(i,RSt(P));s||(s=i.height/a,e.height+=s,B.bumpVerticalPos(s));let o,l=i.height-10,c=i.width;return r===n?(o=B.getVerticalPos()+l,P.rightAngles||(l+=P.boxMargin,o=B.getVerticalPos()+l),l+=30,a=L.getMax(c/2,P.width/2),B.insert(r-a,B.getVerticalPos()-10+l,n+a,B.getVerticalPos()+30+l)):(l+=P.boxMargin,o=B.getVerticalPos()+l,B.insert(r,o-10,n,o)),B.bumpVerticalPos(l),e.height+=l,e.stopy=e.starty+e.height,B.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),o}function _St(t,e,r,n,i){B.bumpVerticalPos(r);let a=n;e.id&&e.message&&t[e.id]&&(r=t[e.id].width,t=RSt(P),e.message=tS.wrapLabel(`[${e.message}]`,r-2*P.wrapPadding,t),e.width=r,e.wrap=!0,r=tS.calculateTextDimensions(e.message,t),t=L.getMax(r.height,P.labelBoxHeight),a=n+t,D.debug(t+" - "+e.message)),i(e),B.bumpVerticalPos(a)}function ASt(r,n,t,e,i,a,s){function o(t,e){t.x{var e,r=RSt(P),r=(e=t.actorKeys.reduce((t,e)=>t+(n.get(e).width+(n.get(e).margin||0)),0)+8*P.boxMargin-2*P.boxTextMargin,t.wrap&&(t.name=tS.wrapLabel(t.name,e-2*P.wrapPadding,r)),tS.calculateTextDimensions(t.name,r)),r=(c=L.getMax(r.height,c),L.getMax(e,r.width+2*P.wrapPadding));t.margin=P.boxTextMargin,et.textMaxHeight=c),L.getMax(r,P.height)}var P,B,ISt,RSt,MSt,DSt,OSt,PSt,BSt,$St,FSt,zSt,GSt,USt,qSt,jSt,WSt,YSt,HSt,VSt=b(()=>{i6(),CSt(),t(),Oc(),Oc(),o6(),Tu(),mr(),iS(),lh(),TSt(),P={},B={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:me(function(){return Math.max.apply(null,0===this.actors.length?[0]:this.actors.map(t=>t.height||0))+(0===this.loops.length?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(0===this.messages.length?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(0===this.notes.length?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},"getHeight"),clear:me(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:me(function(t){this.boxes.push(t)},"addBox"),addActor:me(function(t){this.actors.push(t)},"addActor"),addLoop:me(function(t){this.loops.push(t)},"addLoop"),addMessage:me(function(t){this.messages.push(t)},"addMessage"),addNote:me(function(t){this.notes.push(t)},"addNote"),lastActor:me(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:me(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:me(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:me(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:me(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,FSt(O())},"init"),updateVal:me(function(t,e,r,n){void 0===t[e]?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:me(function(n,i,a,s){let o=this,l=0;function t(r){return me(function(t){l++;var e=o.sequenceItems.length-l+1;o.updateVal(t,"starty",i-e*P.boxMargin,Math.min),o.updateVal(t,"stopy",s+e*P.boxMargin,Math.max),o.updateVal(B.data,"startx",n-e*P.boxMargin,Math.min),o.updateVal(B.data,"stopx",a+e*P.boxMargin,Math.max),"activation"!==r&&(o.updateVal(t,"startx",n-e*P.boxMargin,Math.min),o.updateVal(t,"stopx",a+e*P.boxMargin,Math.max),o.updateVal(B.data,"starty",i-e*P.boxMargin,Math.min),o.updateVal(B.data,"stopy",s+e*P.boxMargin,Math.max))},"updateItemBounds")}me(t,"updateFn"),this.sequenceItems.forEach(t()),this.activations.forEach(t("activation"))},"updateBounds"),insert:me(function(t,e,r,n){var i=L.getMin(t,r),t=L.getMax(t,r),r=L.getMin(e,n),e=L.getMax(e,n);this.updateVal(B.data,"startx",i,Math.min),this.updateVal(B.data,"starty",r,Math.min),this.updateVal(B.data,"stopx",t,Math.max),this.updateVal(B.data,"stopy",e,Math.max),this.updateBounds(i,r,t,e)},"insert"),newActivation:me(function(t,e,r){var r=r.get(t.from),n=zSt(t.from).length||0,r=r.x+r.width/2+(n-1)*P.activationWidth/2;this.activations.push({startx:r,starty:this.verticalPos+2,stopx:r+P.activationWidth,stopy:void 0,actor:t.from,anchored:bSt.anchorElement(e)})},"newActivation"),endActivation:me(function(t){return t=this.activations.map(function(t){return t.actor}).lastIndexOf(t.from),this.activations.splice(t,1)[0]},"endActivation"),createLoop:me(function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},"createLoop"),newLoop:me(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:me(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:me(function(){return!!this.sequenceItems.length&&this.sequenceItems[this.sequenceItems.length-1].overlap},"isLoopOverlap"),addSectionToLoop:me(function(t){var e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:B.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:me(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:me(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:me(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=L.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:me(function(){return this.verticalPos},"getVerticalPos"),getBounds:me(function(){return{bounds:this.data,models:this.models}},"getBounds")},ISt=me(async function(t,e){B.bumpVerticalPos(P.boxMargin),e.height=P.boxMargin,e.starty=B.getVerticalPos();var r=Lw(),t=(r.x=e.startx,r.y=e.starty,r.width=e.width||P.width,r.class="note",t.append("g")),n=bSt.drawRect(t,r),t=((i=Nw()).x=e.startx,i.y=e.starty,i.width=r.width,i.dy="1em",i.text=e.message,i.class="noteText",i.fontFamily=P.noteFontFamily,i.fontSize=P.noteFontSize,i.fontWeight=P.noteFontWeight,i.anchor=P.noteAlign,i.textMargin=P.noteMargin,i.valign="center",Ec(i.text)?await jCt(t,i):WCt(t,i)),i=Math.round(t.map(t=>(t._groups||t)[0][0].getBBox().height).reduce((t,e)=>t+e));n.attr("height",i+2*P.noteMargin),e.height+=i+2*P.noteMargin,B.bumpVerticalPos(i+2*P.noteMargin),e.stopy=e.starty+i+2*P.noteMargin,e.stopx=e.startx+r.width,B.insert(e.startx,e.starty,e.stopx,e.stopy),B.models.addNote(e)},"drawNote"),RSt=me(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),MSt=me(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),DSt=me(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont"),me(SSt,"boundMessage"),OSt=me(async function(t,e,r,n){var{startx:e,stopx:i,starty:a,message:s,type:o,sequenceIndex:l,sequenceVisible:c}=e,h=tS.calculateTextDimensions(s,RSt(P)),u=Nw();u.x=e,u.y=a+10,u.width=i-e,u.class="messageText",u.dy="1em",u.text=s,u.fontFamily=P.messageFontFamily,u.fontSize=P.messageFontSize,u.fontWeight=P.messageFontWeight,u.anchor=P.messageAlign,u.valign="center",u.textMargin=P.wrapPadding,u.tspan=!1,Ec(u.text)?await jCt(t,u,{startx:e,stopx:i,starty:r}):WCt(t,u);let d=h.width,p,g=(e===i?p=P.rightAngles?t.append("path").attr("d",`M ${e},${r} H ${e+L.getMax(P.width/2,d/2)} V ${r+25} H `+e):t.append("path").attr("d","M "+e+","+r+" C "+(e+60)+","+(r-10)+" "+(e+60)+","+(r+30)+" "+e+","+(r+20)):((p=t.append("line")).attr("x1",e),p.attr("y1",r),p.attr("x2",i),p.attr("y2",r)),o===n.db.LINETYPE.DOTTED||o===n.db.LINETYPE.DOTTED_CROSS||o===n.db.LINETYPE.DOTTED_POINT||o===n.db.LINETYPE.DOTTED_OPEN||o===n.db.LINETYPE.BIDIRECTIONAL_DOTTED?(p.style("stroke-dasharray","3, 3"),p.attr("class","messageLine1")):p.attr("class","messageLine0"),"");P.arrowMarkerAbsolute&&(g=gc(!0)),p.attr("stroke-width",2),p.attr("stroke","none"),p.style("fill","none"),o!==n.db.LINETYPE.SOLID&&o!==n.db.LINETYPE.DOTTED||p.attr("marker-end","url("+g+"#arrowhead)"),o!==n.db.LINETYPE.BIDIRECTIONAL_SOLID&&o!==n.db.LINETYPE.BIDIRECTIONAL_DOTTED||(p.attr("marker-start","url("+g+"#arrowhead)"),p.attr("marker-end","url("+g+"#arrowhead)")),o!==n.db.LINETYPE.SOLID_POINT&&o!==n.db.LINETYPE.DOTTED_POINT||p.attr("marker-end","url("+g+"#filled-head)"),o!==n.db.LINETYPE.SOLID_CROSS&&o!==n.db.LINETYPE.DOTTED_CROSS||p.attr("marker-end","url("+g+"#crosshead)"),(c||P.showSequenceNumbers)&&(o!==n.db.LINETYPE.BIDIRECTIONAL_SOLID&&o!==n.db.LINETYPE.BIDIRECTIONAL_DOTTED||(ei&&(i=o.height),o.width+s.x>a&&(a=o.width+s.x)}return{maxHeight:i,maxWidth:a}},"drawActorsPopup"),FSt=me(function(t){At(P,t),t.fontFamily&&(P.actorFontFamily=P.noteFontFamily=P.messageFontFamily=t.fontFamily),t.fontSize&&(P.actorFontSize=P.noteFontSize=P.messageFontSize=t.fontSize),t.fontWeight&&(P.actorFontWeight=P.noteFontWeight=P.messageFontWeight=t.fontWeight)},"setConf"),zSt=me(function(e){return B.activations.filter(function(t){return t.actor===e})},"actorActivations"),GSt=me(function(t,e){return e=e.get(t),[(t=zSt(t)).reduce(function(t,e){return L.getMin(t,e.startx)},e.x+e.width/2-1),t.reduce(function(t,e){return L.getMax(t,e.stopx)},e.x+e.width/2+1)]},"activationBounds"),me(_St,"adjustLoopHeightForWrap"),me(ASt,"adjustCreatedDestroyedData"),USt=me(async function(n,t,e,i){var{securityLevel:r,sequence:a}=O();P=a;let s;"sandbox"===r&&(s=H("#i"+t));var a=H("sandbox"===r?s.nodes()[0].contentDocument.body:"body"),o="sandbox"===r?s.nodes()[0].contentDocument:document;B.init(),D.debug(i.db);let l="sandbox"===r?a.select(`[id="${t}"]`):H(`[id="${t}"]`),c=i.db.getActors(),h=i.db.getCreatedActors(),u=i.db.getDestroyedActors(),d=i.db.getBoxes(),p=i.db.getActorKeys(),g=i.db.getMessages(),f=i.db.getDiagramTitle(),m=i.db.hasAtLeastOneBox(),y=i.db.hasAtLeastOneBoxWithTitle(),v=await LSt(c,g,i);if(P.height=await NSt(c,v,d),bSt.insertComputerIcon(l),bSt.insertDatabaseIcon(l),bSt.insertClockIcon(l),m&&(B.bumpVerticalPos(P.boxMargin),y)&&B.bumpVerticalPos(d[0].textMaxHeight),!0===P.hideUnusedParticipants){let e=new Set;g.forEach(t=>{e.add(t.from),e.add(t.to)}),p=p.filter(t=>e.has(t))}PSt(l,c,h,p,0,g,!1);var x,b,w,k=await YSt(g,c,v,i);function T(t,e){var r=B.endActivation(t);r.starty+18>e&&(r.starty=e-6,e+=12),bSt.drawActivation(l,r,e,P,zSt(t.from).length),B.insert(r.startx,e-10,r.stopx,e)}bSt.insertArrowHead(l),bSt.insertArrowCrossHead(l),bSt.insertArrowFilledHead(l),bSt.insertSequenceNumber(l),me(T,"activeEnd");let E=1,C=1,S=[],_=[],A=0;for(x of g){let t,e,r;switch(x.type){case i.db.LINETYPE.NOTE:B.resetVerticalPos(),e=x.noteModel,await ISt(l,e);break;case i.db.LINETYPE.ACTIVE_START:B.newActivation(x,l,c);break;case i.db.LINETYPE.ACTIVE_END:T(x,B.getVerticalPos());break;case i.db.LINETYPE.LOOP_START:_St(k,x,P.boxMargin,P.boxMargin+P.boxTextMargin,t=>B.newLoop(t));break;case i.db.LINETYPE.LOOP_END:t=B.endLoop(),await bSt.drawLoop(l,t,"loop",P),B.bumpVerticalPos(t.stopy-B.getVerticalPos()),B.models.addLoop(t);break;case i.db.LINETYPE.RECT_START:_St(k,x,P.boxMargin,P.boxMargin,t=>B.newLoop(void 0,t.message));break;case i.db.LINETYPE.RECT_END:t=B.endLoop(),_.push(t),B.models.addLoop(t),B.bumpVerticalPos(t.stopy-B.getVerticalPos());break;case i.db.LINETYPE.OPT_START:_St(k,x,P.boxMargin,P.boxMargin+P.boxTextMargin,t=>B.newLoop(t));break;case i.db.LINETYPE.OPT_END:t=B.endLoop(),await bSt.drawLoop(l,t,"opt",P),B.bumpVerticalPos(t.stopy-B.getVerticalPos()),B.models.addLoop(t);break;case i.db.LINETYPE.ALT_START:_St(k,x,P.boxMargin,P.boxMargin+P.boxTextMargin,t=>B.newLoop(t));break;case i.db.LINETYPE.ALT_ELSE:_St(k,x,P.boxMargin+P.boxTextMargin,P.boxMargin,t=>B.addSectionToLoop(t));break;case i.db.LINETYPE.ALT_END:t=B.endLoop(),await bSt.drawLoop(l,t,"alt",P),B.bumpVerticalPos(t.stopy-B.getVerticalPos()),B.models.addLoop(t);break;case i.db.LINETYPE.PAR_START:case i.db.LINETYPE.PAR_OVER_START:_St(k,x,P.boxMargin,P.boxMargin+P.boxTextMargin,t=>B.newLoop(t)),B.saveVerticalPos();break;case i.db.LINETYPE.PAR_AND:_St(k,x,P.boxMargin+P.boxTextMargin,P.boxMargin,t=>B.addSectionToLoop(t));break;case i.db.LINETYPE.PAR_END:t=B.endLoop(),await bSt.drawLoop(l,t,"par",P),B.bumpVerticalPos(t.stopy-B.getVerticalPos()),B.models.addLoop(t);break;case i.db.LINETYPE.AUTONUMBER:E=x.message.start||E,C=x.message.step||C,x.message.visible?i.db.enableSequenceNumbers():i.db.disableSequenceNumbers();break;case i.db.LINETYPE.CRITICAL_START:_St(k,x,P.boxMargin,P.boxMargin+P.boxTextMargin,t=>B.newLoop(t));break;case i.db.LINETYPE.CRITICAL_OPTION:_St(k,x,P.boxMargin+P.boxTextMargin,P.boxMargin,t=>B.addSectionToLoop(t));break;case i.db.LINETYPE.CRITICAL_END:t=B.endLoop(),await bSt.drawLoop(l,t,"critical",P),B.bumpVerticalPos(t.stopy-B.getVerticalPos()),B.models.addLoop(t);break;case i.db.LINETYPE.BREAK_START:_St(k,x,P.boxMargin,P.boxMargin+P.boxTextMargin,t=>B.newLoop(t));break;case i.db.LINETYPE.BREAK_END:t=B.endLoop(),await bSt.drawLoop(l,t,"break",P),B.bumpVerticalPos(t.stopy-B.getVerticalPos()),B.models.addLoop(t);break;default:try{(r=x.msgModel).starty=B.getVerticalPos(),r.sequenceIndex=E,r.sequenceVisible=i.db.showSequenceNumbers();var L=await SSt(l,r);ASt(x,r,L,A,c,h,u),S.push({messageModel:r,lineStartY:L}),B.models.addMessage(r)}catch(n){D.error("error while drawing message",n)}}[i.db.LINETYPE.SOLID_OPEN,i.db.LINETYPE.DOTTED_OPEN,i.db.LINETYPE.SOLID,i.db.LINETYPE.DOTTED,i.db.LINETYPE.SOLID_CROSS,i.db.LINETYPE.DOTTED_CROSS,i.db.LINETYPE.SOLID_POINT,i.db.LINETYPE.DOTTED_POINT,i.db.LINETYPE.BIDIRECTIONAL_SOLID,i.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(x.type)&&(E+=C),A++}D.debug("createdActors",h),D.debug("destroyedActors",u),await BSt(l,c,p,!1);for(b of S)await OSt(l,b.messageModel,b.lineStartY,i);P.mirrorActors&&await BSt(l,c,p,!0),_.forEach(t=>bSt.drawBackgroundRect(l,t)),VCt(l,c,p,P);for(w of B.models.boxes){w.height=B.getVerticalPos()-w.y,B.insert(w.x,w.y,w.x+w.width,w.height);var N=2*P.boxMargin;w.startx=w.x-N,w.starty=w.y-.25*N,w.stopx=w.startx+w.width+2*N,w.stopy=w.starty+w.height+.75*N,w.stroke="rgb(0,0,0, 0.5)",bSt.drawBox(l,w,P)}m&&B.bumpVerticalPos(P.boxMargin),r=$St(l,c,p,o),void 0===(a=B.getBounds().bounds).startx&&(a.startx=0),void 0===a.starty&&(a.starty=0),void 0===a.stopx&&(a.stopx=0),void 0===a.stopy&&(a.stopy=0);let I=a.stopy-a.starty,R=(Io?-t:t,"adjustValue");t.from===t.to?c=l:(t.activate&&!h&&(c+=u(P.activationWidth/2-1)),[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(c+=u(3)),[r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(l-=u(3)));var e=[n,i,a,s],r=Math.abs(l-c),d=(t.wrap&&t.message&&(t.message=tS.wrapLabel(t.message,L.getMax(r+2*P.wrapPadding,P.width),RSt(P))),tS.calculateTextDimensions(t.message,RSt(P)));return{width:L.getMax(t.wrap?0:d.width+2*P.wrapPadding,r+2*P.wrapPadding,P.width),height:0,startx:l,stopx:c,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,e),toBounds:Math.max.apply(null,e)}},"buildMessageModel"),YSt=me(async function(t,n,e,i){let a={},s=[],o,l,c;for(let r of t){switch(r.type){case i.db.LINETYPE.LOOP_START:case i.db.LINETYPE.ALT_START:case i.db.LINETYPE.OPT_START:case i.db.LINETYPE.PAR_START:case i.db.LINETYPE.PAR_OVER_START:case i.db.LINETYPE.CRITICAL_START:case i.db.LINETYPE.BREAK_START:s.push({id:r.id,msg:r.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case i.db.LINETYPE.ALT_ELSE:case i.db.LINETYPE.PAR_AND:case i.db.LINETYPE.CRITICAL_OPTION:r.message&&(o=s.pop(),a[o.id]=o,a[r.id]=o,s.push(o));break;case i.db.LINETYPE.LOOP_END:case i.db.LINETYPE.ALT_END:case i.db.LINETYPE.OPT_END:case i.db.LINETYPE.PAR_END:case i.db.LINETYPE.CRITICAL_END:case i.db.LINETYPE.BREAK_END:o=s.pop(),a[o.id]=o;break;case i.db.LINETYPE.ACTIVE_START:var h=n.get(r.from||r.to.actor),u=zSt(r.from||r.to.actor).length,u={startx:h=h.x+h.width/2+(u-1)*P.activationWidth/2,stopx:h+P.activationWidth,actor:r.from,enabled:!0};B.activations.push(u);break;case i.db.LINETYPE.ACTIVE_END:h=B.activations.map(t=>t.actor).lastIndexOf(r.from),B.activations.splice(h,1).splice(0,1)}void 0!==r.placement?(l=await jSt(r,n,i),r.noteModel=l,s.forEach(t=>{(o=t).from=L.getMin(o.from,l.startx),o.to=L.getMax(o.to,l.startx+l.width),o.width=L.getMax(o.width,Math.abs(o.from-o.to))-P.labelBoxWidth})):(c=WSt(r,n,i),(r.msgModel=c).startx&&c.stopx&&0{var e;o=t,c.startx===c.stopx?(t=n.get(r.from),e=n.get(r.to),o.from=L.getMin(t.x-c.width/2,t.x-t.width/2,o.from),o.to=L.getMax(e.x+c.width/2,e.x+t.width/2,o.to),o.width=L.getMax(o.width,Math.abs(o.to-o.from))-P.labelBoxWidth):(o.from=L.getMin(c.startx,o.from),o.to=L.getMax(c.stopx,o.to),o.width=L.getMax(o.width,c.width)-P.labelBoxWidth)}))}return B.activations=[],D.debug("Loop type widths:",a),a},"calculateLoopBounds"),HSt={bounds:B,drawActors:BSt,drawActorsPopup:$St,setConf:FSt,draw:USt}}),XSt={};KBt(XSt,{diagram:()=>KSt});var KSt,ZSt,QSt,JSt,t_t,e_t,r_t,n_t,i_t,a_t,s_t,o_t,l_t,c_t,h_t,u_t=b(()=>{kSt(),TSt(),ESt(),Tu(),VSt(),KSt={parser:_Ct,get db(){return new RCt},renderer:HSt,styles:DCt,init:me(t=>{t.sequence||(t.sequence={}),t.wrap&&(t.sequence.wrap=t.wrap,Eh({sequence:{wrap:t.wrap}}))},"init")}}),d_t=b(()=>{function t(){this.yy={}}var e=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),r=[1,18],n=[1,19],i=[1,20],a=[1,41],s=[1,42],o=[1,26],l=[1,24],P=[1,25],B=[1,32],$=[1,33],F=[1,34],c=[1,45],z=[1,35],G=[1,36],U=[1,37],q=[1,38],j=[1,27],W=[1,28],Y=[1,29],H=[1,30],V=[1,31],h=[1,44],u=[1,46],d=[1,43],p=[1,47],X=[1,9],g=[1,8,9],f=[1,58],m=[1,59],y=[1,60],v=[1,61],x=[1,62],K=[1,63],Z=[1,64],b=[1,8,9,41],Q=[1,76],w=[1,8,9,12,13,22,39,41,44,68,69,70,71,72,73,74,79,81],k=[1,8,9,12,13,18,20,22,39,41,44,50,60,68,69,70,71,72,73,74,79,81,86,100,102,103],T=[13,60,86,100,102,103],E=[13,60,73,74,86,100,102,103],J=[13,60,68,69,70,71,72,86,100,102,103],tt=[1,100],C=[1,117],S=[1,113],_=[1,109],A=[1,115],L=[1,110],N=[1,111],I=[1,112],R=[1,114],M=[1,116],et=[22,48,60,61,82,86,87,88,89,90],rt=[1,8,9,39,41,44],D=[1,8,9,22],nt=[1,145],it=[1,8,9,61],O=[1,8,9,22,48,60,61,82,86,87,88,89,90],k={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,CLASS:46,emptyBody:47,SPACE:48,ANNOTATION_START:49,ANNOTATION_END:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",18:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"CLASS",48:"SPACE",49:"ANNOTATION_START",50:"ANNOTATION_END",51:"MEMBER",52:"SEPARATOR",54:"NOTE_FOR",56:"NOTE",57:"CLASSDEF",60:"ALPHA",61:"COMMA",62:"direction_tb",63:"direction_bt",64:"direction_rl",65:"direction_lr",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"STYLE",83:"CSSCLASS",86:"NUM",87:"COLON",88:"UNIT",89:"BRKT",90:"PCT",93:"graphCodeTokens",95:"TAGSTART",96:"TAGEND",97:"==",98:"--",99:"DEFAULT",100:"MINUS",101:"keywords",102:"UNICODE_TEXT",103:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,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],[23,4],[23,5],[38,2],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[43,2],[43,3],[47,0],[47,2],[47,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 8:this.$=a[o-1];break;case 9:case 10:case 13:case 15:this.$=a[o];break;case 11:case 14:this.$=a[o-2]+"."+a[o];break;case 12:case 16:this.$=a[o-1]+a[o];break;case 17:case 18:this.$=a[o-1]+"~"+a[o]+"~";break;case 19:n.addRelation(a[o]);break;case 20:a[o-1].title=n.cleanupLabel(a[o]),n.addRelation(a[o-1]);break;case 31:this.$=a[o].trim(),n.setAccTitle(this.$);break;case 32:case 33:this.$=a[o].trim(),n.setAccDescription(this.$);break;case 34:n.addClassesToNamespace(a[o-3],a[o-1]);break;case 35:n.addClassesToNamespace(a[o-4],a[o-1]);break;case 36:this.$=a[o],n.addNamespace(a[o]);break;case 37:this.$=[a[o]];break;case 38:this.$=[a[o-1]];break;case 39:a[o].unshift(a[o-2]),this.$=a[o];break;case 41:n.setCssClass(a[o-2],a[o]);break;case 42:n.addMembers(a[o-3],a[o-1]);break;case 44:n.setCssClass(a[o-5],a[o-3]),n.addMembers(a[o-5],a[o-1]);break;case 45:this.$=a[o],n.addClass(a[o]);break;case 46:this.$=a[o-1],n.addClass(a[o-1]),n.setClassLabel(a[o-1],a[o]);break;case 50:n.addAnnotation(a[o],a[o-2]);break;case 51:case 64:this.$=[a[o]];break;case 52:a[o].push(a[o-1]),this.$=a[o];break;case 53:break;case 54:n.addMember(a[o-1],n.cleanupLabel(a[o]));break;case 55:case 56:break;case 57:this.$={id1:a[o-2],id2:a[o],relation:a[o-1],relationTitle1:"none",relationTitle2:"none"};break;case 58:this.$={id1:a[o-3],id2:a[o],relation:a[o-1],relationTitle1:a[o-2],relationTitle2:"none"};break;case 59:this.$={id1:a[o-3],id2:a[o],relation:a[o-2],relationTitle1:"none",relationTitle2:a[o-1]};break;case 60:this.$={id1:a[o-4],id2:a[o],relation:a[o-2],relationTitle1:a[o-3],relationTitle2:a[o-1]};break;case 61:n.addNote(a[o],a[o-1]);break;case 62:n.addNote(a[o]);break;case 63:this.$=a[o-2],n.defineClass(a[o-1],a[o]);break;case 65:this.$=a[o-2].concat([a[o]]);break;case 66:n.setDirection("TB");break;case 67:n.setDirection("BT");break;case 68:n.setDirection("RL");break;case 69:n.setDirection("LR");break;case 70:this.$={type1:a[o-2],type2:a[o],lineType:a[o-1]};break;case 71:this.$={type1:"none",type2:a[o],lineType:a[o-1]};break;case 72:this.$={type1:a[o-1],type2:"none",lineType:a[o]};break;case 73:this.$={type1:"none",type2:"none",lineType:a[o]};break;case 74:this.$=n.relationType.AGGREGATION;break;case 75:this.$=n.relationType.EXTENSION;break;case 76:this.$=n.relationType.COMPOSITION;break;case 77:this.$=n.relationType.DEPENDENCY;break;case 78:this.$=n.relationType.LOLLIPOP;break;case 79:this.$=n.lineType.LINE;break;case 80:this.$=n.lineType.DOTTED_LINE;break;case 81:case 87:this.$=a[o-2],n.setClickEvent(a[o-1],a[o]);break;case 82:case 88:this.$=a[o-3],n.setClickEvent(a[o-2],a[o-1]),n.setTooltip(a[o-2],a[o]);break;case 83:this.$=a[o-2],n.setLink(a[o-1],a[o]);break;case 84:this.$=a[o-3],n.setLink(a[o-2],a[o-1],a[o]);break;case 85:this.$=a[o-3],n.setLink(a[o-2],a[o-1]),n.setTooltip(a[o-2],a[o]);break;case 86:this.$=a[o-4],n.setLink(a[o-3],a[o-2],a[o]),n.setTooltip(a[o-3],a[o-1]);break;case 89:this.$=a[o-3],n.setClickEvent(a[o-2],a[o-1],a[o]);break;case 90:this.$=a[o-4],n.setClickEvent(a[o-3],a[o-2],a[o-1]),n.setTooltip(a[o-3],a[o]);break;case 91:this.$=a[o-3],n.setLink(a[o-2],a[o]);break;case 92:this.$=a[o-4],n.setLink(a[o-3],a[o-1],a[o]);break;case 93:this.$=a[o-4],n.setLink(a[o-3],a[o-1]),n.setTooltip(a[o-3],a[o]);break;case 94:this.$=a[o-5],n.setLink(a[o-4],a[o-2],a[o]),n.setTooltip(a[o-4],a[o-1]);break;case 95:this.$=a[o-2],n.setCssStyle(a[o-1],a[o]);break;case 96:n.setCssClass(a[o-1],a[o]);break;case 97:this.$=[a[o]];break;case 98:a[o-2].push(a[o]),this.$=a[o-2];break;case 100:this.$=a[o-1]+a[o]}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:r,35:n,37:i,38:22,42:a,43:23,46:s,49:o,51:l,52:P,54:B,56:$,57:F,60:c,62:z,63:G,64:U,65:q,75:j,76:W,78:Y,82:H,83:V,86:h,100:u,102:d,103:p},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(X,[2,5],{8:[1,48]}),{8:[1,49]},e(g,[2,19],{22:[1,50]}),e(g,[2,21]),e(g,[2,22]),e(g,[2,23]),e(g,[2,24]),e(g,[2,25]),e(g,[2,26]),e(g,[2,27]),e(g,[2,28]),e(g,[2,29]),e(g,[2,30]),{34:[1,51]},{36:[1,52]},e(g,[2,33]),e(g,[2,53],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:f,69:m,70:y,71:v,72:x,73:K,74:Z}),{39:[1,65]},e(b,[2,40],{39:[1,67],44:[1,66]}),e(g,[2,55]),e(g,[2,56]),{16:68,60:c,86:h,100:u,102:d},{16:39,17:40,19:69,60:c,86:h,100:u,102:d,103:p},{16:39,17:40,19:70,60:c,86:h,100:u,102:d,103:p},{16:39,17:40,19:71,60:c,86:h,100:u,102:d,103:p},{60:[1,72]},{13:[1,73]},{16:39,17:40,19:74,60:c,86:h,100:u,102:d,103:p},{13:Q,55:75},{58:77,60:[1,78]},e(g,[2,66]),e(g,[2,67]),e(g,[2,68]),e(g,[2,69]),e(w,[2,13],{16:39,17:40,19:80,18:[1,79],20:[1,81],60:c,86:h,100:u,102:d,103:p}),e(w,[2,15],{20:[1,82]}),{15:83,16:84,17:85,60:c,86:h,100:u,102:d,103:p},{16:39,17:40,19:86,60:c,86:h,100:u,102:d,103:p},e(k,[2,123]),e(k,[2,124]),e(k,[2,125]),e(k,[2,126]),e([1,8,9,12,13,20,22,39,41,44,68,69,70,71,72,73,74,79,81],[2,127]),e(X,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:87,33:r,35:n,37:i,42:a,46:s,49:o,51:l,52:P,54:B,56:$,57:F,60:c,62:z,63:G,64:U,65:q,75:j,76:W,78:Y,82:H,83:V,86:h,100:u,102:d,103:p}),{5:88,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:r,35:n,37:i,38:22,42:a,43:23,46:s,49:o,51:l,52:P,54:B,56:$,57:F,60:c,62:z,63:G,64:U,65:q,75:j,76:W,78:Y,82:H,83:V,86:h,100:u,102:d,103:p},e(g,[2,20]),e(g,[2,31]),e(g,[2,32]),{13:[1,90],16:39,17:40,19:89,60:c,86:h,100:u,102:d,103:p},{53:91,66:56,67:57,68:f,69:m,70:y,71:v,72:x,73:K,74:Z},e(g,[2,54]),{67:92,73:K,74:Z},e(T,[2,73],{66:93,68:f,69:m,70:y,71:v,72:x}),e(E,[2,74]),e(E,[2,75]),e(E,[2,76]),e(E,[2,77]),e(E,[2,78]),e(J,[2,79]),e(J,[2,80]),{8:[1,95],24:96,40:94,43:23,46:s},{16:97,60:c,86:h,100:u,102:d},{41:[1,99],45:98,51:tt},{50:[1,101]},{13:[1,102]},{13:[1,103]},{79:[1,104],81:[1,105]},{22:C,48:S,59:106,60:_,82:A,84:107,85:108,86:L,87:N,88:I,89:R,90:M},{60:[1,118]},{13:Q,55:119},e(g,[2,62]),e(g,[2,128]),{22:C,48:S,59:120,60:_,61:[1,121],82:A,84:107,85:108,86:L,87:N,88:I,89:R,90:M},e(et,[2,64]),{16:39,17:40,19:122,60:c,86:h,100:u,102:d,103:p},e(w,[2,16]),e(w,[2,17]),e(w,[2,18]),{39:[2,36]},{15:124,16:84,17:85,18:[1,123],39:[2,9],60:c,86:h,100:u,102:d,103:p},{39:[2,10]},e(rt,[2,45],{11:125,12:[1,126]}),e(X,[2,7]),{9:[1,127]},e(D,[2,57]),{16:39,17:40,19:128,60:c,86:h,100:u,102:d,103:p},{13:[1,130],16:39,17:40,19:129,60:c,86:h,100:u,102:d,103:p},e(T,[2,72],{66:131,68:f,69:m,70:y,71:v,72:x}),e(T,[2,71]),{41:[1,132]},{24:96,40:133,43:23,46:s},{8:[1,134],41:[2,37]},e(b,[2,41],{39:[1,135]}),{41:[1,136]},e(b,[2,43]),{41:[2,51],45:137,51:tt},{16:39,17:40,19:138,60:c,86:h,100:u,102:d,103:p},e(g,[2,81],{13:[1,139]}),e(g,[2,83],{13:[1,141],77:[1,140]}),e(g,[2,87],{13:[1,142],80:[1,143]}),{13:[1,144]},e(g,[2,95],{61:nt}),e(it,[2,97],{85:146,22:C,48:S,60:_,82:A,86:L,87:N,88:I,89:R,90:M}),e(O,[2,99]),e(O,[2,101]),e(O,[2,102]),e(O,[2,103]),e(O,[2,104]),e(O,[2,105]),e(O,[2,106]),e(O,[2,107]),e(O,[2,108]),e(O,[2,109]),e(g,[2,96]),e(g,[2,61]),e(g,[2,63],{61:nt}),{60:[1,147]},e(w,[2,14]),{15:148,16:84,17:85,60:c,86:h,100:u,102:d,103:p},{39:[2,12]},e(rt,[2,46]),{13:[1,149]},{1:[2,4]},e(D,[2,59]),e(D,[2,58]),{16:39,17:40,19:150,60:c,86:h,100:u,102:d,103:p},e(T,[2,70]),e(g,[2,34]),{41:[1,151]},{24:96,40:152,41:[2,38],43:23,46:s},{45:153,51:tt},e(b,[2,42]),{41:[2,52]},e(g,[2,50]),e(g,[2,82]),e(g,[2,84]),e(g,[2,85],{77:[1,154]}),e(g,[2,88]),e(g,[2,89],{13:[1,155]}),e(g,[2,91],{13:[1,157],77:[1,156]}),{22:C,48:S,60:_,82:A,84:158,85:108,86:L,87:N,88:I,89:R,90:M},e(O,[2,100]),e(et,[2,65]),{39:[2,11]},{14:[1,159]},e(D,[2,60]),e(g,[2,35]),{41:[2,39]},{41:[1,160]},e(g,[2,86]),e(g,[2,90]),e(g,[2,92]),e(g,[2,93],{77:[1,161]}),e(it,[2,98],{85:146,22:C,48:S,60:_,82:A,86:L,87:N,88:I,89:R,90:M}),e(rt,[2,8]),e(b,[2,44]),e(g,[2,94])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,36],85:[2,10],124:[2,12],127:[2,4],137:[2,52],148:[2,11],152:[2,39]},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_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)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,33,34,35,36,37,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},namespace:{rules:[26,29,30,31,32,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},"class-body":{rules:[26,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},class:{rules:[26,39,40,41,42,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr:{rules:[9,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_title:{rules:[7,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_args:{rules:[22,23,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_name:{rules:[19,20,21,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},href:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},struct:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},generic:{rules:[26,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},bqstring:{rules:[26,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},string:{rules:[24,25,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,38,49,50,51,52,53,54,55,56,57,60,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],inclusive:!0}}};k.lexer=r,me(t,"Parser"),(ZSt=new((t.prototype=k).Parser=t)).parser=ZSt,QSt=ZSt}),p_t=b(()=>{Tu(),Oc(),JSt=["#","+","~","-",""],t_t=class{static{me(this,"ClassMember")}constructor(t,e){this.memberType=e,this.visibility="",this.classifier="",this.text="",e=lc(t,O()),this.parseMember(e)}getDisplayDetails(){let t=this.visibility+vc(this.id);"method"===this.memberType&&(t+=`(${vc(this.parameters.trim())})`,this.returnType)&&(t+=" : "+vc(this.returnType)),t=t.trim();var e=this.parseClassifier();return{displayText:t,cssStyle:e}}parseMember(t){let e="";"method"===this.memberType?(r=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(t))&&(i=r[1]?r[1].trim():"",JSt.includes(i)&&(this.visibility=i),this.id=r[2],this.parameters=r[3]?r[3].trim():"",e=r[4]?r[4].trim():"",this.returnType=r[5]?r[5].trim():"",""===e)&&(i=this.returnType.substring(this.returnType.length-1),/[$*]/.exec(i))&&(e=i,this.returnType=this.returnType.substring(0,this.returnType.length-1)):(r=t.length,i=t.substring(0,1),n=t.substring(r-1),JSt.includes(i)&&(this.visibility=i),/[$*]/.exec(n)&&(e=n),this.id=t.substring(""===this.visibility?0:1,""===e?r:r-1)),this.classifier=e,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();var r,n,i=(this.visibility?"\\"+this.visibility:"")+vc(this.id)+("method"===this.memberType?`(${vc(this.parameters)})`+(this.returnType?" : "+vc(this.returnType):""):"");this.text=i.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}}),g_t=b(()=>{i6(),t(),Tu(),Oc(),iS(),ku(),p_t(),e_t="classId-",r_t=0,n_t=me(t=>L.sanitizeText(t,O()),"sanitizeText"),i_t=class{constructor(){this.relations=[],this.classes=new Map,this.styleClasses=new Map,this.notes=[],this.interfaces=[],this.namespaces=new Map,this.namespaceCounter=0,this.functions=[],this.lineType={LINE:0,DOTTED_LINE:1},this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},this.setupToolTips=me(t=>{let r=H(".mermaidTooltip");null===(r._groups||r)[0][0]&&(r=H("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),H(t).select("svg").selectAll("g.node").on("mouseover",t=>{var e;null!==(t=H(t.currentTarget)).attr("title")&&(e=this.getBoundingClientRect(),r.transition().duration(200).style("opacity",".9"),r.text(t.attr("title")).style("left",window.scrollX+e.left+(e.right-e.left)/2+"px").style("top",window.scrollY+e.top-14+document.body.scrollTop+"px"),r.html(r.html().replace(/<br\/>/g,"
")),t.classed("hover",!0))}).on("mouseout",t=>{r.transition().duration(500).style("opacity",0),H(t.currentTarget).classed("hover",!1)})},"setupToolTips"),this.direction="TB",this.setAccTitle=mh,this.getAccTitle=yh,this.setAccDescription=vh,this.getAccDescription=xh,this.setDiagramTitle=bh,this.getDiagramTitle=wh,this.getConfig=me(()=>O().class,"getConfig"),this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{me(this,"ClassDB")}splitClassNameAndType(t){let e=L.sanitizeText(t,O()),r="",n=e;return 0`:"")}addClass(t){var t=L.sanitizeText(t,O()),{className:t,type:e}=this.splitClassNameAndType(t);this.classes.has(t)||(t=L.sanitizeText(t,O()),this.classes.set(t,{id:t,type:e,label:t,text:t+(e?`<${e}>`:""),shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:e_t+t+"-"+r_t}),r_t++)}addInterface(t,e){t={id:"interface"+this.interfaces.length,label:t,classId:e},this.interfaces.push(t)}lookUpDomId(t){if(t=L.sanitizeText(t,O()),this.classes.has(t))return this.classes.get(t).domId;throw new Error("Class not found: "+t)}clear(){this.relations=[],this.classes=new Map,this.notes=[],this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.direction="TB",fh()}getClass(t){return this.classes.get(t)}getClasses(){return this.classes}getRelations(){return this.relations}getNotes(){return this.notes}addRelation(t){D.debug("Adding relation: "+JSON.stringify(t));var e=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];t.relation.type1!==this.relationType.LOLLIPOP||e.includes(t.relation.type2)?t.relation.type2!==this.relationType.LOLLIPOP||e.includes(t.relation.type1)?(this.addClass(t.id1),this.addClass(t.id2)):(this.addClass(t.id1),this.addInterface(t.id2,t.id1),t.id2="interface"+(this.interfaces.length-1)):(this.addClass(t.id2),this.addInterface(t.id1,t.id2),t.id1="interface"+(this.interfaces.length-1)),t.id1=this.splitClassNameAndType(t.id1).className,t.id2=this.splitClassNameAndType(t.id2).className,t.relationTitle1=L.sanitizeText(t.relationTitle1.trim(),O()),t.relationTitle2=L.sanitizeText(t.relationTitle2.trim(),O()),this.relations.push(t)}addAnnotation(t,e){t=this.splitClassNameAndType(t).className,this.classes.get(t).annotations.push(e)}addMember(t,e){this.addClass(t),t=this.splitClassNameAndType(t).className,t=this.classes.get(t),"string"==typeof e&&((e=e.trim()).startsWith("<<")&&e.endsWith(">>")?t.annotations.push(n_t(e.substring(2,e.length-2))):0this.addMember(e,t)))}addNote(t,e){e={id:"note"+this.notes.length,class:e,text:t},this.notes.push(e)}cleanupLabel(t){return t.startsWith(":")&&(t=t.substring(1)),n_t(t.trim())}setCssClass(t,r){t.split(",").forEach(t=>{let e=t;/\d/.exec(t[0])&&(e=e_t+e),(t=this.classes.get(e))&&(t.cssClasses+=" "+r)})}defineClass(t,n){for(let e of t){let r=this.styleClasses.get(e);void 0===r&&(r={id:e,styles:[],textStyles:[]},this.styleClasses.set(e,r)),n&&n.forEach(t=>{var e;/color/.exec(t)&&(e=t.replace("fill","bgFill"),r.textStyles.push(e)),r.styles.push(t)}),this.classes.forEach(t=>{t.cssClasses.includes(e)&&t.styles.push(...n.flatMap(t=>t.split(",")))})}}setTooltip(t,e){t.split(",").forEach(t=>{void 0!==e&&(this.classes.get(t).tooltip=n_t(e))})}getTooltip(t,e){return(e&&this.namespaces.has(e)?this.namespaces.get(e):this).classes.get(t).tooltip}setLink(t,r,n){let i=O();t.split(",").forEach(t=>{let e=t;/\d/.exec(t[0])&&(e=e_t+e),(t=this.classes.get(e))&&(t.link=tS.formatUrl(r,i),"sandbox"===i.securityLevel?t.linkTarget="_top":t.linkTarget="string"==typeof n?n_t(n):"_blank")}),this.setCssClass(t,"clickable")}setClickEvent(t,e,r){t.split(",").forEach(t=>{this.setClickFunc(t,e,r),this.classes.get(t).haveCallback=!0}),this.setCssClass(t,"clickable")}setClickFunc(t,n,i){if(t=L.sanitizeText(t,O()),"loose"===O().securityLevel&&void 0!==n&&this.classes.has(t)){let e=this.lookUpDomId(t),r=[];if("string"==typeof i){r=i.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let e=0;e{var t=document.querySelector(`[id="${e}"]`);null!==t&&t.addEventListener("click",()=>{tS.runFunc(n,...r)},!1)})}}bindFunctions(e){this.functions.forEach(t=>{t(e)})}getDirection(){return this.direction}setDirection(t){this.direction=t}addNamespace(t){this.namespaces.has(t)||(this.namespaces.set(t,{id:t,classes:new Map,children:{},domId:e_t+t+"-"+this.namespaceCounter}),this.namespaceCounter++)}getNamespace(t){return this.namespaces.get(t)}getNamespaces(){return this.namespaces}addClassesToNamespace(t,e){if(this.namespaces.has(t))for(var r of e)r=this.splitClassNameAndType(r).className,this.classes.get(r).parent=t,this.namespaces.get(t).classes.set(r,this.classes.get(r))}setCssStyle(t,e){var r=this.classes.get(t);if(e&&r)for(var n of e)n.includes(",")?r.styles.push(...n.split(",")):r.styles.push(n)}getArrowMarker(t){let e;switch(t){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}getData(){var t,e,r,n,i,a=[],s=[],o=O();for(t of this.namespaces.keys()){var l=this.namespaces.get(t);l&&(l={id:l.id,label:l.id,isGroup:!0,padding:o.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:o.look},a.push(l))}for(e of this.classes.keys()){var c,h=this.classes.get(e);h&&((c=h).parentId=h.parent,c.look=o.look,a.push(c))}let u=0;for(r of this.notes){u++;var d={id:r.id,label:r.text,isGroup:!1,shape:"note",padding:o.class.padding??6,cssStyles:["text-align: left","white-space: nowrap","fill: "+o.themeVariables.noteBkgColor,"stroke: "+o.themeVariables.noteBorderColor],look:o.look};a.push(d),(d=this.classes.get(r.class)?.id??"")&&(d={id:"edgeNote"+u,start:r.id,end:d,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:o.look},s.push(d))}for(n of this.interfaces){var p={id:n.id,label:n.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:o.look};a.push(p)}u=0;for(i of this.relations){u++;var g={id:nS(i.id1,i.id2,{prefix:"id",counter:u}),start:i.id1,end:i.id2,type:"normal",label:i.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(i.relation.type1),arrowTypeEnd:this.getArrowMarker(i.relation.type2),startLabelRight:"none"===i.relationTitle1?"":i.relationTitle1,endLabelLeft:"none"===i.relationTitle2?"":i.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:i.style||"",pattern:1==i.relation.lineType?"dashed":"solid",look:o.look};s.push(g)}return{nodes:a,edges:s,other:{},config:o,direction:this.getDirection()}}}}),f_t=b(()=>{gct(),a_t=me(t=>`g.classGroup text { + fill: ${t.nodeBorder||t.classText}; + stroke: none; + font-family: ${t.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + +.nodeLabel, .edgeLabel { + color: ${t.classText}; +} +.edgeLabel .label rect { + fill: ${t.mainBkg}; +} +.label text { + fill: ${t.classText}; +} + +.labelBkg { + background: ${t.mainBkg}; +} +.edgeLabel .label span { + background: ${t.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + + +.divider { + stroke: ${t.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; +} + +g.classGroup line { + stroke: ${t.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${t.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${t.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${t.lineColor}; + stroke-width: 1; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +#compositionStart, .composition { + fill: ${t.lineColor} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#compositionEnd, .composition { + fill: ${t.lineColor} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${t.lineColor} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${t.lineColor} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#extensionStart, .extension { + fill: transparent !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#extensionEnd, .extension { + fill: transparent !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#aggregationStart, .aggregation { + fill: transparent !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#aggregationEnd, .aggregation { + fill: transparent !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#lollipopStart, .lollipop { + fill: ${t.mainBkg} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#lollipopEnd, .lollipop { + fill: ${t.mainBkg} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; + line-height: initial; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; +} + ${ict()} +`,"getStyles"),s_t=a_t}),m_t=b(()=>{Tu(),t(),iO(),cct(),hct(),iS(),o_t=me((t,e="TB")=>{if(!t.doc)return e;let r=e;for(var n of t.doc)"dir"===n.stmt&&(r=n.value);return r},"getDir"),l_t=me(function(t,e){return e.db.getClasses()},"getClasses"),c_t=me(async function(t,e,r,n){D.info("REF0:"),D.info("Drawing class diagram (v3)",e);var{securityLevel:i,state:a,layout:s}=O(),o=n.db.getData(),i=WD(e,i);o.type=n.type,o.layoutAlgorithm=Hlt(s),o.nodeSpacing=a?.nodeSpacing||50,o.rankSpacing=a?.rankSpacing||50,o.markers=["aggregation","extension","composition","dependency","lollipop"],o.diagramId=e,await Ylt(o,i),tS.insertTitle(i,"classDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Vlt(i,8,"classDiagram",a?.useMaxWidth??!0)},"draw"),h_t={getClasses:l_t,draw:c_t,getDir:o_t}}),y_t={};KBt(y_t,{diagram:()=>v_t});var v_t,x_t=b(()=>{d_t(),g_t(),f_t(),m_t(),v_t={parser:QSt,get db(){return new i_t},renderer:h_t,styles:s_t,init:me(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}}),b_t={};KBt(b_t,{diagram:()=>w_t});var w_t,k_t,T_t,E_t,C_t,S_t,__t,A_t,L_t,N_t,I_t,R_t,M_t,D_t,O_t,P_t,B_t,$_t,F_t,z_t,G_t,U_t,q_t,j_t,W_t,Y_t,H_t,V_t,X_t,K_t,Z_t,Q_t,J_t,tAt,eAt,rAt,nAt,iAt,aAt,sAt,oAt=b(()=>{d_t(),g_t(),f_t(),m_t(),w_t={parser:QSt,get db(){return new i_t},renderer:h_t,styles:s_t,init:me(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}}),lAt=b(()=>{function t(){this.yy={}}var e=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),r=[1,2],n=[1,3],i=[1,4],a=[2,4],s=[1,9],o=[1,11],l=[1,16],c=[1,17],h=[1,18],u=[1,19],d=[1,33],p=[1,20],g=[1,21],f=[1,22],m=[1,23],y=[1,24],v=[1,26],x=[1,27],b=[1,28],w=[1,29],k=[1,30],T=[1,31],E=[1,32],C=[1,35],S=[1,36],_=[1,37],A=[1,38],L=[1,34],N=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],I=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],R=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],r={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"--\x3e":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,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"--\x3e",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:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 3:return n.setRootDoc(a[o]),a[o];case 4:this.$=[];break;case 5:"nl"!=a[o]&&(a[o-1].push(a[o]),this.$=a[o-1]);break;case 6:case 7:this.$=a[o];break;case 8:this.$="nl";break;case 12:this.$=a[o];break;case 13:(c=a[o-1]).description=n.trimColon(a[o]),this.$=c;break;case 14:this.$={stmt:"relation",state1:a[o-2],state2:a[o]};break;case 15:c=n.trimColon(a[o]),this.$={stmt:"relation",state1:a[o-3],state2:a[o-1],description:c};break;case 19:this.$={stmt:"state",id:a[o-3],type:"default",description:"",doc:a[o-1]};break;case 20:var l,c=a[o],h=a[o-2].trim();a[o].match(":")&&(c=(l=a[o].split(":"))[0],h=[h,l[1]]),this.$={stmt:"state",id:c,type:"default",description:h};break;case 21:this.$={stmt:"state",id:a[o-3],type:"default",description:a[o-5],doc:a[o-1]};break;case 22:this.$={stmt:"state",id:a[o],type:"fork"};break;case 23:this.$={stmt:"state",id:a[o],type:"join"};break;case 24:this.$={stmt:"state",id:a[o],type:"choice"};break;case 25:this.$={stmt:"state",id:n.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:a[o-1].trim(),note:{position:a[o-2].trim(),text:a[o].trim()}};break;case 29:this.$=a[o].trim(),n.setAccTitle(this.$);break;case 30:case 31:this.$=a[o].trim(),n.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:a[o-3],url:a[o-2],tooltip:a[o-1]};break;case 33:this.$={stmt:"click",id:a[o-3],url:a[o-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:a[o-1].trim(),classes:a[o].trim()};break;case 36:this.$={stmt:"style",id:a[o-1].trim(),styleClass:a[o].trim()};break;case 37:this.$={stmt:"applyClass",id:a[o-1].trim(),styleClass:a[o].trim()};break;case 38:n.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:n.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:n.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:n.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:a[o].trim(),type:"default",description:""};break;case 46:case 47:this.$={stmt:"state",id:a[o-2].trim(),classes:[a[o].trim()],type:"default",description:""}}},"anonymous"),table:[{3:1,4:r,5:n,6:i},{1:[3]},{3:5,4:r,5:n,6:i},{3:6,4:r,5:n,6:i},e([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],a,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:s,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:c,19:h,22:u,24:d,25:p,26:g,27:f,28:m,29:y,32:25,33:v,35:x,37:b,38:w,41:k,45:T,48:E,51:C,52:S,53:_,54:A,57:L},e(N,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:l,17:c,19:h,22:u,24:d,25:p,26:g,27:f,28:m,29:y,32:25,33:v,35:x,37:b,38:w,41:k,45:T,48:E,51:C,52:S,53:_,54:A,57:L},e(N,[2,7]),e(N,[2,8]),e(N,[2,9]),e(N,[2,10]),e(N,[2,11]),e(N,[2,12],{14:[1,40],15:[1,41]}),e(N,[2,16]),{18:[1,42]},e(N,[2,18],{20:[1,43]}),{23:[1,44]},e(N,[2,22]),e(N,[2,23]),e(N,[2,24]),e(N,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},e(N,[2,28]),{34:[1,49]},{36:[1,50]},e(N,[2,31]),{13:51,24:d,57:L},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},e(I,[2,44],{58:[1,56]}),e(I,[2,45],{58:[1,57]}),e(N,[2,38]),e(N,[2,39]),e(N,[2,40]),e(N,[2,41]),e(N,[2,6]),e(N,[2,13]),{13:58,24:d,57:L},e(N,[2,17]),e(R,a,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},e(N,[2,29]),e(N,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},e(N,[2,14],{14:[1,71]}),{4:s,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:c,19:h,21:[1,72],22:u,24:d,25:p,26:g,27:f,28:m,29:y,32:25,33:v,35:x,37:b,38:w,41:k,45:T,48:E,51:C,52:S,53:_,54:A,57:L},e(N,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},e(N,[2,34]),e(N,[2,35]),e(N,[2,36]),e(N,[2,37]),e(I,[2,46]),e(I,[2,47]),e(N,[2,15]),e(N,[2,19]),e(R,a,{7:78}),e(N,[2,26]),e(N,[2,27]),{5:[1,79]},{5:[1,80]},{4:s,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:c,19:h,21:[1,81],22:u,24:d,25:p,26:g,27:f,28:m,29:y,32:25,33:v,35:x,37:b,38:w,41:k,45:T,48:E,51:C,52:S,53:_,54:A,57:L},e(N,[2,32]),e(N,[2,33]),e(N,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0>)/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:[12,13],inclusive:!1},struct:{rules:[12,13,25,29,32,38,45,46,47,48,57,58,59,60,74,75,76,77,78],inclusive:!1},FLOATING_NOTE_ID:{rules:[67],inclusive:!1},FLOATING_NOTE:{rules:[64,65,66],inclusive:!1},NOTE_TEXT:{rules:[69,70],inclusive:!1},NOTE_ID:{rules:[68],inclusive:!1},NOTE:{rules:[61,62,63],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[34],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[33],inclusive:!1},CLASS_STYLE:{rules:[31],inclusive:!1},CLASS:{rules:[30],inclusive:!1},CLASSDEFID:{rules:[28],inclusive:!1},CLASSDEF:{rules:[26,27],inclusive:!1},acc_descr_multiline:{rules:[23,24],inclusive:!1},acc_descr:{rules:[21],inclusive:!1},acc_title:{rules:[19],inclusive:!1},SCALE:{rules:[16,17,36,37],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[51],inclusive:!1},STATE_STRING:{rules:[52,53],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[12,13,39,40,41,42,43,44,49,50,54,55,56],inclusive:!1},ID:{rules:[12,13],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,18,20,22,25,29,32,35,38,56,60,71,72,73,74,75,76,77,79,80,81],inclusive:!0}}};r.lexer=n,me(t,"Parser"),(k_t=new((t.prototype=r).Parser=t)).parser=k_t,T_t=k_t}),cAt=b(()=>{C_t=E_t="TB",S_t="dir",A_t="root",L_t="relation",N_t="classDef",I_t="style",R_t="applyClass",M_t="default",O_t="fill:none",P_t="fill: #333",B_t="c",$_t="text",F_t="normal",z_t="rect",G_t="rectWithTitle",U_t="stateStart",q_t="stateEnd",j_t=D_t="divider",W_t="roundedWithTitle",H_t="noteGroup",X_t=(V_t="statediagram")+"-state",Z_t=(K_t="transition")+" note-edge",Q_t=V_t+"-note",J_t=V_t+"-cluster",tAt=V_t+"-cluster-alt",nAt=__t="state",aAt=(iAt="----")+(rAt=Y_t="note"),sAt=""+iAt+(eAt="parent")});function hAt(t="",e=0,r="",n=iAt){return n=null!==r&&0"!==e.id&&""!==e.id&&(e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(t=>{(t=r.get(t))&&(e.cssCompiledStyles=[...e.cssCompiledStyles??[],...t.styles])})),(n=t.find(t=>t.id===e.id))?Object.assign(n,e):t.push(e))}function dAt(t){return t?.classes?.join(" ")??""}function pAt(t){return t?.styles??[]}var gAt,fAt,mAt,yAt,vAt,xAt,bAt,wAt,kAt,TAt,EAt,CAt,SAt,_At,AAt,LAt,NAt,IAt,RAt,MAt,DAt,OAt,PAt,BAt,$At,FAt,zAt,GAt,UAt,qAt,jAt,WAt,YAt,HAt,VAt,XAt,KAt,ZAt=b(()=>{Tu(),t(),Oc(),cAt(),gAt=new Map,fAt=0,me(hAt,"stateDomId"),mAt=me((r,t,n,i,a,s,o,l)=>{D.trace("items",t),t.forEach(t=>{switch(t.stmt){case __t:case M_t:vAt(r,t,n,i,a,s,o,l);break;case L_t:vAt(r,t.state1,n,i,a,s,o,l),vAt(r,t.state2,n,i,a,s,o,l);var e={id:"edge"+fAt,start:t.state1.id,end:t.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:O_t,labelStyle:"",label:L.sanitizeText(t.description??"",O()),arrowheadStyle:P_t,labelpos:B_t,labelType:$_t,thickness:F_t,classes:K_t,look:o};a.push(e),fAt++}})},"setupDoc"),yAt=me((t,e=C_t)=>{let r=e;if(t.doc)for(var n of t.doc)"dir"===n.stmt&&(r=n.value);return r},"getDir"),me(uAt,"insertOrUpdateNode"),me(dAt,"getClassesFromDbInfo"),me(pAt,"getStylesFromDbInfo"),vAt=me((r,n,t,i,a,e,s,o)=>{var l=n.id,c=t.get(l),h=dAt(c),u=pAt(c),d=O();if(D.info("dataFetcher parsedItem",n,c,u),"root"!==l){let t=z_t;if(!0===n.start?t=U_t:!1===n.start&&(t=q_t),n.type!==M_t&&(t=n.type),gAt.get(l)||gAt.set(l,{id:l,shape:t,description:L.sanitizeText(l,d),cssClasses:h+" "+X_t,cssStyles:u}),c=gAt.get(l),n.description&&(Array.isArray(c.description)?(c.shape=G_t,c.description.push(n.description)):c.description?.length&&0{gAt.clear(),fAt=0},"reset")}),QAt=b(()=>{Tu(),t(),iO(),cct(),hct(),iS(),cAt(),bAt=me((t,e=C_t)=>{if(!t.doc)return e;let r=e;for(var n of t.doc)"dir"===n.stmt&&(r=n.value);return r},"getDir"),wAt=me(function(t,e){return e.db.getClasses()},"getClasses"),kAt=me(async function(t,e,r,n){D.info("REF0:"),D.info("Drawing state diagram (v2)",e);var{securityLevel:i,state:a,layout:s}=O();n.db.extract(n.db.getRootDocV2());let o=n.db.getData(),l=WD(e,i);o.type=n.type,o.layoutAlgorithm=s,o.nodeSpacing=a?.nodeSpacing||50,o.rankSpacing=a?.rankSpacing||50,o.markers=["barb"],o.diagramId=e,await Ylt(o,l);try{("function"==typeof n.db.getLinks?n.db.getLinks():new Map).forEach((a,t)=>{let s="string"==typeof t?t:"string"==typeof t?.id?t.id:"";if(s){let t=l.node()?.querySelectorAll("g"),e,r,n,i;t?.forEach(t=>{t.textContent?.trim()===s&&(e=t)}),e?(r=e.parentNode)?(n=document.createElementNS("http://www.w3.org/2000/svg","a"),i=a.url.replace(/^"+|"+$/g,""),n.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",i),n.setAttribute("target","_blank"),a.tooltip&&(i=a.tooltip.replace(/^"+|"+$/g,""),n.setAttribute("title",i)),r.replaceChild(n,e),n.appendChild(e),D.info("🔗 Wrapped node in
tag for:",s,a.url)):D.warn("⚠️ Node has no parent, cannot wrap:",s):D.warn("⚠️ Could not find node matching text:",s)}else D.warn("⚠️ Invalid or missing stateId from key:",JSON.stringify(t))})}catch(t){D.error("❌ Error injecting clickable links:",t)}tS.insertTitle(l,"statediagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Vlt(l,8,V_t,a?.useMaxWidth??!0)},"draw"),TAt={getClasses:wAt,draw:kAt,getDir:bAt}}),JAt=b(()=>{Tu(),t(),iS(),Oc(),ku(),ZAt(),QAt(),cAt(),EAt={START_NODE:"[*]",START_TYPE:"start",END_NODE:"[*]",END_TYPE:"end",COLOR_KEYWORD:"color",FILL_KEYWORD:"fill",BG_FILL:"bgFill",STYLECLASS_SEP:","},CAt=me(()=>new Map,"newClassesList"),SAt=me(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),_At=me(t=>JSON.parse(JSON.stringify(t)),"clone"),AAt=class{constructor(t){this.version=t,this.nodes=[],this.edges=[],this.rootDoc=[],this.classes=CAt(),this.documents={root:SAt()},this.currentDocument=this.documents.root,this.startEndCount=0,this.dividerCnt=0,this.links=new Map,this.getAccTitle=yh,this.setAccTitle=mh,this.getAccDescription=xh,this.setAccDescription=vh,this.setDiagramTitle=bh,this.getDiagramTitle=wh,this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}static{me(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(t){this.clear(!0);for(var e of Array.isArray(t)?t:t.doc)switch(e.stmt){case __t:this.addState(e.id.trim(),e.type,e.doc,e.description,e.note);break;case L_t:this.addRelation(e.state1,e.state2,e.description);break;case N_t:this.addStyleClass(e.id.trim(),e.classes);break;case I_t:this.handleStyleDef(e);break;case R_t:this.setCssClass(e.id.trim(),e.styleClass);break;case"click":this.addLink(e.id,e.url,e.tooltip)}var r,t=this.getStates(),n=O();xAt(),vAt(void 0,this.getRootDocV2(),t,this.nodes,this.edges,!0,n.look,this.classes);for(r of this.nodes)if(Array.isArray(r.label)){if(r.description=r.label.slice(1),r.isGroup&&0t.replace(/;/g,"")?.trim()))}}setRootDoc(t){D.info("Setting root doc",t),this.rootDoc=t,1===this.version?this.extract(t):this.extract(this.getRootDocV2())}docTranslator(r,n,t){if(n.stmt===L_t)this.docTranslator(r,n.state1,!0),this.docTranslator(r,n.state2,!1);else if(n.stmt===__t&&(n.id===EAt.START_NODE?(n.id=r.id+(t?"_start":"_end"),n.start=t):n.id=n.id.trim()),(n.stmt===A_t||n.stmt===__t)&&n.doc){let t=[],e=[];for(var i of n.doc){var a;i.type===D_t?((a=_At(i)).doc=_At(e),t.push(a),e=[]):e.push(i)}0this.docTranslator(n,t,!0))}}getRootDocV2(){return this.docTranslator({id:A_t,stmt:A_t},{id:A_t,stmt:A_t,doc:this.rootDoc},!0),{id:A_t,doc:this.rootDoc}}addState(t,e=M_t,r=void 0,n=void 0,i=void 0,a=void 0,s=void 0,o=void 0){let l=t?.trim();if(this.currentDocument.states.has(l)){if(!(t=this.currentDocument.states.get(l)))throw new Error("State not found: "+l);t.doc||(t.doc=r),t.type||(t.type=e)}else D.info("Adding state ",l,n),this.currentDocument.states.set(l,{stmt:__t,id:l,descriptions:[],type:e,doc:r,note:i,classes:[],styles:[],textStyles:[]});if(n&&(D.info("Setting state description",l,n),(Array.isArray(n)?n:[n]).forEach(t=>this.addDescription(l,t.trim()))),i){if(!(t=this.currentDocument.states.get(l)))throw new Error("State not found: "+l);t.note=i,t.note.text=L.sanitizeText(t.note.text,O())}a&&(D.info("Setting state classes",l,a),(Array.isArray(a)?a:[a]).forEach(t=>this.setCssClass(l,t.trim()))),s&&(D.info("Setting state styles",l,s),(Array.isArray(s)?s:[s]).forEach(t=>this.setStyle(l,t.trim()))),o&&(D.info("Setting state styles",l,s),(Array.isArray(o)?o:[o]).forEach(t=>this.setTextStyle(l,t.trim())))}clear(t){this.nodes=[],this.edges=[],this.documents={root:SAt()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=CAt(),t||(this.links=new Map,fh())}getState(t){return this.currentDocument.states.get(t)}getStates(){return this.currentDocument.states}logDocuments(){D.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(t,e,r){this.links.set(t,{url:e,tooltip:r}),D.warn("Adding link",t,e,r)}getLinks(){return this.links}startIdIfNeeded(t=""){return t===EAt.START_NODE?(this.startEndCount++,""+EAt.START_TYPE+this.startEndCount):t}startTypeIfNeeded(t="",e=M_t){return t===EAt.START_NODE?EAt.START_TYPE:e}endIdIfNeeded(t=""){return t===EAt.END_NODE?(this.startEndCount++,""+EAt.END_TYPE+this.startEndCount):t}endTypeIfNeeded(t="",e=M_t){return t===EAt.END_NODE?EAt.END_TYPE:e}addRelationObjs(t,e,r=""){var n=this.startIdIfNeeded(t.id.trim()),i=this.startTypeIfNeeded(t.id.trim(),t.type),a=this.startIdIfNeeded(e.id.trim()),s=this.startTypeIfNeeded(e.id.trim(),e.type);this.addState(n,i,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),this.addState(a,s,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.currentDocument.relations.push({id1:n,id2:a,relationTitle:L.sanitizeText(r,O())})}addRelation(t,e,r){var n,i;"object"==typeof t&&"object"==typeof e?this.addRelationObjs(t,e,r):"string"==typeof t&&"string"==typeof e&&(n=this.startIdIfNeeded(t.trim()),t=this.startTypeIfNeeded(t),i=this.endIdIfNeeded(e.trim()),e=this.endTypeIfNeeded(e),this.addState(n,t),this.addState(i,e),this.currentDocument.relations.push({id1:n,id2:i,relationTitle:r?L.sanitizeText(r,O()):void 0}))}addDescription(t,e){t=this.currentDocument.states.get(t),e=e.startsWith(":")?e.replace(":","").trim():e,t?.descriptions?.push(L.sanitizeText(e,O()))}cleanupLabel(t){return(t.startsWith(":")?t.slice(2):t).trim()}getDividerId(){return this.dividerCnt++,"divider-id-"+this.dividerCnt}addStyleClass(t,e=""){this.classes.has(t)||this.classes.set(t,{id:t,styles:[],textStyles:[]});let r=this.classes.get(t);e&&r&&e.split(EAt.STYLECLASS_SEP).forEach(t=>{var e=t.replace(/([^;]*);/,"$1").trim();RegExp(EAt.COLOR_KEYWORD).exec(t)&&(t=e.replace(EAt.FILL_KEYWORD,EAt.BG_FILL).replace(EAt.COLOR_KEYWORD,EAt.FILL_KEYWORD),r.textStyles.push(t)),r.styles.push(e)})}getClasses(){return this.classes}setCssClass(t,r){t.split(",").forEach(t=>{let e=this.getState(t);e||(t=t.trim(),this.addState(t),e=this.getState(t)),e?.classes?.push(r)})}setStyle(t,e){this.getState(t)?.styles?.push(e)}setTextStyle(t,e){this.getState(t)?.textStyles?.push(e)}getDirectionStatement(){return this.rootDoc.find(t=>t.stmt===S_t)}getDirection(){return this.getDirectionStatement()?.value??E_t}setDirection(t){var e=this.getDirectionStatement();e?e.value=t:this.rootDoc.unshift({stmt:S_t,value:t})}trimColon(t){return(t.startsWith(":")?t.slice(1):t).trim()}getData(){var t=O();return{nodes:this.nodes,edges:this.edges,other:{},config:t,direction:bAt(this.getRootDocV2())}}getConfig(){return O().state}}}),t9t=b(()=>{LAt=me(t=>` +defs #statediagram-barbEnd { + fill: ${t.transitionColor}; + stroke: ${t.transitionColor}; + } +g.stateGroup text { + fill: ${t.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${t.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${t.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; +} + +g.stateGroup line { + stroke: ${t.lineColor}; + stroke-width: 1; +} + +.transition { + stroke: ${t.transitionColor}; + stroke-width: 1; + fill: none; +} + +.stateGroup .composit { + fill: ${t.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${t.noteBorderColor}; + fill: ${t.noteBkgColor}; + + text { + fill: ${t.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${t.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${t.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel { + background-color: ${t.edgeLabelBackground}; + p { + background-color: ${t.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${t.edgeLabelBackground}; + fill: ${t.edgeLabelBackground}; + } + text-align: center; +} +.edgeLabel .label text { + fill: ${t.transitionLabelColor||t.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${t.transitionLabelColor||t.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${t.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node .fork-join { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node circle.state-end { + fill: ${t.innerEndBackground}; + stroke: ${t.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${t.compositeBackground||t.background}; + // stroke: ${t.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${t.stateBkg||t.mainBkg}; + stroke: ${t.stateBorder||t.nodeBorder}; + stroke-width: 1px; +} +.node polygon { + fill: ${t.mainBkg}; + stroke: ${t.stateBorder||t.nodeBorder};; + stroke-width: 1px; +} +#statediagram-barbEnd { + fill: ${t.lineColor}; +} + +.statediagram-cluster rect { + fill: ${t.compositeTitleBackground}; + stroke: ${t.stateBorder||t.nodeBorder}; + stroke-width: 1px; +} + +.cluster-label, .nodeLabel { + color: ${t.stateLabelColor}; + // line-height: 1; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${t.stateBorder||t.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${t.compositeBackground||t.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${t.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: ${t.altBackground||"#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${t.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${t.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${t.noteTextColor}; +} + +#dependencyStart, #dependencyEnd { + fill: ${t.lineColor}; + stroke: ${t.lineColor}; + stroke-width: 1; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; +} +`,"getStyles"),NAt=LAt}),e9t=b(()=>{i6(),JAt(),iS(),Oc(),Tu(),t(),IAt=me(t=>t.append("circle").attr("class","start-state").attr("r",O().state.sizeUnit).attr("cx",O().state.padding+O().state.sizeUnit).attr("cy",O().state.padding+O().state.sizeUnit),"drawStartState"),RAt=me(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",O().state.textHeight).attr("class","divider").attr("x2",2*O().state.textHeight).attr("y1",0).attr("y2",0),"drawDivider"),MAt=me((t,e)=>{var r=(e=t.append("text").attr("x",2*O().state.padding).attr("y",O().state.textHeight+2*O().state.padding).attr("font-size",O().state.fontSize).attr("class","state-title").text(e.id)).node().getBBox();return t.insert("rect",":first-child").attr("x",O().state.padding).attr("y",O().state.padding).attr("width",r.width+2*O().state.padding).attr("height",r.height+2*O().state.padding).attr("rx",O().state.radius),e},"drawSimpleState"),DAt=me((t,e)=>{let r=me(function(t,e,r){t=t.append("tspan").attr("x",2*O().state.padding).text(e),r||t.attr("dy",O().state.textHeight)},"addTspan"),n=t.append("text").attr("x",2*O().state.padding).attr("y",O().state.textHeight+1.3*O().state.padding).attr("font-size",O().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),i=n.height,a=t.append("text").attr("x",O().state.padding).attr("y",i+.4*O().state.padding+O().state.dividerMargin+O().state.textHeight).attr("class","state-description"),s=!0,o=!0;e.descriptions.forEach(function(t){s||(r(a,t,o),o=!1),s=!1});var e=t.append("line").attr("x1",O().state.padding).attr("y1",O().state.padding+i+O().state.dividerMargin/2).attr("y2",O().state.padding+i+O().state.dividerMargin/2).attr("class","descr-divider"),l=a.node().getBBox(),c=Math.max(l.width,n.width);return e.attr("x2",c+3*O().state.padding),t.insert("rect",":first-child").attr("x",O().state.padding).attr("y",O().state.padding).attr("width",c+2*O().state.padding).attr("height",l.height+i+2*O().state.padding).attr("rx",O().state.radius),t},"drawDescrState"),OAt=me((t,e,r)=>{let n=O().state.padding,i=2*O().state.padding,a=t.node().getBBox(),s=a.width,o=a.x,l=t.append("text").attr("x",0).attr("y",O().state.titleShift).attr("font-size",O().state.fontSize).attr("class","state-title").text(e.id),c=l.node().getBBox().width+i,h=Math.max(c,s);h===s&&(h+=i);let u,d=t.node().getBBox();return e.doc,u=o-n,s(t.append("circle").attr("class","end-state-outer").attr("r",O().state.sizeUnit+O().state.miniPadding).attr("cx",O().state.padding+O().state.sizeUnit+O().state.miniPadding).attr("cy",O().state.padding+O().state.sizeUnit+O().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",O().state.sizeUnit).attr("cx",O().state.padding+O().state.sizeUnit+2).attr("cy",O().state.padding+O().state.sizeUnit+2)),"drawEndState"),BAt=me((t,e)=>{let r=O().state.forkWidth,n=O().state.forkHeight;return e.parentId&&(e=r,r=n,n=e),t.append("rect").style("stroke","black").style("fill","black").attr("width",r).attr("height",n).attr("x",O().state.padding).attr("y",O().state.padding)},"drawForkJoinState"),$At=me((t,e,r,n)=>{let i=0,a=n.append("text"),s=(a.style("text-anchor","start"),a.attr("class","noteText"),t.replace(/\r\n/g,"
")),o=(s=s.replace(/\n/g,"
")).split(L.lineBreakRegex),l=1.25*O().state.noteMargin;for(var c of o){var h;0<(c=c.trim()).length&&((h=a.append("tspan")).text(c),0===l&&(c=h.node().getBBox(),l+=c.height),i+=l,h.attr("x",e+O().state.noteMargin),h.attr("y",r+i+1.25*O().state.noteMargin))}return{textWidth:a.node().getBBox().width,textHeight:i}},"_drawLongText"),FAt=me((t,e)=>{e.attr("class","state-note");var r=e.append("rect").attr("x",0).attr("y",O().state.padding),e=e.append("g"),{textWidth:t,textHeight:e}=$At(t,0,0,e);return r.attr("height",e+2*O().state.noteMargin),r.attr("width",t+2*O().state.noteMargin),r},"drawNote"),zAt=me(function(t,e){var r={id:n=e.id,label:e.id,width:0,height:0},t=t.append("g").attr("id",n).attr("class","stateGroup"),n=("start"===e.type&&IAt(t),"end"===e.type&&PAt(t),"fork"!==e.type&&"join"!==e.type||BAt(t,e),"note"===e.type&&FAt(e.note.text,t),"divider"===e.type&&RAt(t),"default"===e.type&&0===e.descriptions.length&&MAt(t,e),"default"===e.type&&0!Number.isNaN(t.y));let t=h.points,e=r3().x(function(t){return t.x}).y(function(t){return t.y}).curve(v3),r=c.append("path").attr("d",e(t)).attr("id","edge"+GAt).attr("class","transition"),n="";if(O().state.arrowMarkerAbsolute&&(n=gc(!0)),r.attr("marker-end","url("+n+"#"+d(AAt.relationType.DEPENDENCY)+"End)"),void 0!==u.title){let e=c.append("g").attr("class","stateLabel"),{x:r,y:n}=tS.calcLabelPosition(h.points),i=L.getRows(u.title),a=0,s=[],o=0,l=0;for(let t=0;t<=i.length;t++){var p=e.append("text").attr("text-anchor","middle").text(i[t]).attr("x",r).attr("y",n+a),g=p.node().getBBox();o=Math.max(o,g.width),l=Math.min(l,g.x),D.info(g.x,r,n+a),0===a&&(a=p.node().getBBox().height,D.info("Title height",a,n)),s.push(p)}let t=a*i.length;if(1t.attr("y",n+e*a-r)),t=a*i.length}d=e.node().getBBox(),e.insert("rect",":first-child").attr("class","box").attr("x",r-o/2-O().state.padding/2).attr("y",n-t/2-O().state.padding/2-3.5).attr("width",o+O().state.padding).attr("height",t+O().state.padding),D.info(d)}GAt++},"drawEdge")}),r9t=b(()=>{i6(),pK(),tH(),t(),Oc(),e9t(),Tu(),lh(),jAt={},WAt=me(function(){},"setConf"),YAt=me(function(t){t.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")},"insertMarkers"),HAt=me(function(t,e,r,n){qAt=O().state;let i=O().securityLevel,a;"sandbox"===i&&(a=H("#i"+e));var s=H("sandbox"===i?a.nodes()[0].contentDocument.body:"body"),o="sandbox"===i?a.nodes()[0].contentDocument:document,t=(D.debug("Rendering diagram "+t),s.select(`[id='${e}']`)),e=(YAt(t),n.db.getRootDoc()),e=(XAt(e,t,void 0,!1,s,o,n),qAt.padding),o=(s=t.node().getBBox()).width+2*e;Zc(t,n=s.height+2*e,1.75*o,qAt.useMaxWidth),t.attr("viewBox",`${s.x-qAt.padding} ${s.y-qAt.padding} `+o+" "+n)},"draw"),VAt=me(t=>t?t.length*qAt.fontSizeFactor:1,"getLabelWidth"),XAt=me((t,e,r,n,i,a,s)=>{let o=new QY({compound:!0,multigraph:!0}),l,c=!0;for(l=0;l{let e=t.parentElement,r=0,n=0;e&&(e.parentElement&&(r=e.parentElement.getBBox().width),n=parseInt(e.getAttribute("data-x-shift"),10),Number.isNaN(n))&&(n=0),t.setAttribute("x1",0-n+8),t.setAttribute("x2",r-n-8)})):D.debug("No Node "+t+": "+JSON.stringify(o.node(t)))}),y.getBBox(),o.edges().forEach(function(t){void 0!==t&&void 0!==o.edge(t)&&(D.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(o.edge(t))),UAt(e,o.edge(t),o.edge(t).relation))});var d=y.getBBox(),v={id:r||"root",label:r||"root",width:0,height:0};return v.width=d.width+2*qAt.padding,v.height=d.height+2*qAt.padding,D.debug("Doc rendered",v,o),v},"renderDoc"),KAt={setConf:WAt,draw:HAt}}),n9t={};KBt(n9t,{diagram:()=>i9t});var i9t,a9t=b(()=>{lAt(),JAt(),t9t(),r9t(),i9t={parser:T_t,get db(){return new AAt(1)},renderer:KAt,styles:NAt,init:me(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}}),s9t={};KBt(s9t,{diagram:()=>o9t});var o9t,l9t,c9t,h9t,u9t,d9t,p9t,g9t,f9t,m9t,y9t,v9t,x9t,b9t,w9t,k9t,T9t,E9t,C9t,S9t,_9t,A9t,L9t,N9t,I9t,R9t,M9t,D9t,O9t,P9t,B9t,$9t=b(()=>{lAt(),JAt(),t9t(),QAt(),o9t={parser:T_t,get db(){return new AAt(2)},renderer:TAt,styles:NAt,init:me(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}}),F9t=b(()=>{function t(){this.yy={}}var e=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),r=[6,8,10,11,12,14,16,17,18],n=[1,9],i=[1,10],a=[1,11],s=[1,12],o=[1,13],l=[1,14],n={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 1:return a[o-1];case 2:this.$=[];break;case 3:a[o-1].push(a[o]),this.$=a[o-1];break;case 4:case 5:this.$=a[o];break;case 6:case 7:this.$=[];break;case 8:n.setDiagramTitle(a[o].substr(6)),this.$=a[o].substr(6);break;case 9:this.$=a[o].trim(),n.setAccTitle(this.$);break;case 10:case 11:this.$=a[o].trim(),n.setAccDescription(this.$);break;case 12:n.addSection(a[o].substr(8)),this.$=a[o].substr(8);break;case 13:n.addTask(a[o-1],a[o]),this.$="task"}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(r,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:i,14:a,16:s,17:o,18:l},e(r,[2,7],{1:[2,1]}),e(r,[2,3]),{9:15,11:n,12:i,14:a,16:s,17:o,18:l},e(r,[2,5]),e(r,[2,6]),e(r,[2,8]),{13:[1,16]},{15:[1,17]},e(r,[2,11]),e(r,[2,12]),{19:[1,18]},e(r,[2,4]),e(r,[2,9]),e(r,[2,10]),e(r,[2,13])],defaultActions:{},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0{Tu(),ku(),h9t="",u9t=[],d9t=[],p9t=[],g9t=me(function(){u9t.length=0,d9t.length=0,h9t="",p9t.length=0,fh()},"clear"),f9t=me(function(t){h9t=t,u9t.push(t)},"addSection"),m9t=me(function(){return u9t},"getSections"),y9t=me(function(){let t=w9t(),e=0;for(;!t&&e<100;)t=w9t(),e++;return d9t.push(...p9t),d9t},"getTasks"),v9t=me(function(){let e=[];return d9t.forEach(t=>{t.people&&e.push(...t.people)}),[...new Set(e)].sort()},"updateActors"),x9t=me(function(t,e){let r=e.substr(1).split(":"),n=0;e=(1===r.length?(n=Number(r[0]),[]):(n=Number(r[0]),r[1].split(","))).map(t=>t.trim()),e={section:h9t,type:h9t,people:e,task:t,score:n},p9t.push(e)},"addTask"),b9t=me(function(t){t={section:h9t,type:h9t,description:t,task:t,classes:[]},d9t.push(t)},"addTaskOrg"),w9t=me(function(){let t=me(function(t){return p9t[t].processed},"compileTask"),e=!0;for(var[r,n]of p9t.entries())t(r),e=e&&n.processed;return e},"compileTasks"),k9t=me(function(){return v9t()},"getActors"),T9t={getConfig:me(()=>O().journey,"getConfig"),clear:g9t,setDiagramTitle:bh,getDiagramTitle:wh,setAccTitle:mh,getAccTitle:yh,setAccDescription:vh,getAccDescription:xh,addSection:f9t,getSections:m9t,getTasks:y9t,addTask:x9t,addTaskOrg:b9t,getActors:k9t}}),G9t=b(()=>{gct(),E9t=me(t=>`.label { + font-family: ${t.fontFamily}; + color: ${t.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${t.textColor} + } + + .legend { + fill: ${t.textColor}; + font-family: ${t.fontFamily}; + } + + .label text { + fill: #333; + } + .label { + color: ${t.textColor} + } + + .face { + ${t.faceColor?"fill: "+t.faceColor:"fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${t.arrowheadColor}; + } + + .edgePath .path { + stroke: ${t.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${t.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${t.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${t.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${t.fontFamily}; + font-size: 12px; + background: ${t.tertiaryColor}; + border: 1px solid ${t.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${t.fillType0?"fill: "+t.fillType0:""}; + } + .task-type-1, .section-type-1 { + ${t.fillType0?"fill: "+t.fillType1:""}; + } + .task-type-2, .section-type-2 { + ${t.fillType0?"fill: "+t.fillType2:""}; + } + .task-type-3, .section-type-3 { + ${t.fillType0?"fill: "+t.fillType3:""}; + } + .task-type-4, .section-type-4 { + ${t.fillType0?"fill: "+t.fillType4:""}; + } + .task-type-5, .section-type-5 { + ${t.fillType0?"fill: "+t.fillType5:""}; + } + .task-type-6, .section-type-6 { + ${t.fillType0?"fill: "+t.fillType6:""}; + } + .task-type-7, .section-type-7 { + ${t.fillType0?"fill: "+t.fillType7:""}; + } + + .actor-0 { + ${t.actor0?"fill: "+t.actor0:""}; + } + .actor-1 { + ${t.actor1?"fill: "+t.actor1:""}; + } + .actor-2 { + ${t.actor2?"fill: "+t.actor2:""}; + } + .actor-3 { + ${t.actor3?"fill: "+t.actor3:""}; + } + .actor-4 { + ${t.actor4?"fill: "+t.actor4:""}; + } + .actor-5 { + ${t.actor5?"fill: "+t.actor5:""}; + } + ${ict()} +`,"getStyles"),C9t=E9t}),U9t=b(()=>{function e(t,e,r,n,i,a,s,o){g(e.append("text").attr("x",r+i/2).attr("y",n+a/2+5).style("font-color",o).style("text-anchor","middle").text(t),s)}function c(t,e,r,n,i,a,s,o,l){var{taskFontSize:c,taskFontFamily:h}=o,u=t.split(//gi);for(let t=0;t{var e=r.actors[t].color,e={cx:a,cy:r.y,r:7,fill:e,stroke:"#000",title:t,pos:r.actors[t].position};A9t(i,e),a+=10}),O9t(e)(r.task,i,t.x,t.y,t.width,t.height,{class:"task"},e,r.colour)},"drawTask"),D9t=me(function(t,e){Cw(t,e)},"drawBackgroundRect"),me(e,"byText"),me(c,"byTspan"),me(r,"byFo"),me(g,"_setTextAttrs"),O9t=function(t){return"fo"===t.textPlacement?r:"old"===t.textPlacement?e:c},P9t=me(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},"initGraphics"),B9t={drawRect:S9t,drawCircle:A9t,drawSection:I9t,drawText:L9t,drawLabel:N9t,drawTask:M9t,drawBackgroundRect:D9t,initGraphics:P9t}});function q9t(s){let n=O().journey,o=n.maxLabelWidth,l=(Y9t=0,60);Object.keys(W9t).forEach(e=>{var t=W9t[e].color,t={cx:20,cy:l,r:7,fill:t,stroke:"#000",pos:W9t[e].position};B9t.drawCircle(s,t);let i=s.append("text").attr("visibility","hidden").text(e),r=i.node().getBoundingClientRect().width,a=(i.remove(),[]);if(r<=o)a=[e];else{let t=e.split(" "),n="";i=s.append("text").attr("visibility","hidden"),t.forEach(e=>{var t=n?n+" "+e:e;if(i.text(t),i.node().getBoundingClientRect().width>o){if(n&&a.push(n),n=e,i.text(e),i.node().getBoundingClientRect().width>o){let t="";for(var r of e)t+=r,i.text(t+"-"),i.node().getBoundingClientRect().width>o&&(a.push(t.slice(0,-1)+"-"),t=r);n=t}}else n=t}),n&&a.push(n),i.remove()}a.forEach((t,e)=>{e={x:40,y:l+7+20*e,fill:"#666",text:t,textMargin:n.boxTextMargin??5},t=B9t.drawText(s,e).node().getBoundingClientRect().width,Y9tn.leftMargin-t&&(Y9t=t)}),l+=Math.max(20,20*a.length)})}var j9t,W9t,Y9t,H9t,V9t,X9t,K9t,Z9t,Q9t,J9t,tLt,eLt=b(()=>{i6(),U9t(),Tu(),lh(),j9t=me(function(e){Object.keys(e).forEach(function(t){H9t[t]=e[t]})},"setConf"),W9t={},Y9t=0,me(q9t,"drawActorLegend"),H9t=O().journey,V9t=0,X9t=me(function(t,e,r,n){let i=O(),a=i.journey.titleColor,s=i.journey.titleFontSize,o=i.journey.titleFontFamily,l=i.securityLevel,c;"sandbox"===l&&(c=H("#i"+e));var h,u=H("sandbox"===l?c.nodes()[0].contentDocument.body:"body"),u=(K9t.init(),u.select("#"+e)),e=(B9t.initGraphics(u),n.db.getTasks()),d=n.db.getDiagramTitle(),n=n.db.getActors();for(h in W9t)delete W9t[h];let p=0;n.forEach(t=>{W9t[t]={color:H9t.actorColours[p%H9t.actorColours.length],position:p},p++}),q9t(u),V9t=H9t.leftMargin+Y9t,K9t.insert(0,0,V9t,50*Object.keys(W9t).length),J9t(u,e,0);var n=K9t.getBounds(),e=(d&&u.append("text").text(d).attr("x",V9t).attr("font-size",s).attr("font-weight","bold").attr("y",25).attr("fill",a).attr("font-family",o),n.stopy-n.starty+2*H9t.diagramMarginY),g=V9t+n.stopx+2*H9t.diagramMarginX,d=(Zc(u,e,g,H9t.useMaxWidth),u.append("line").attr("x1",V9t).attr("y1",4*H9t.height).attr("x2",g-V9t-4).attr("y2",4*H9t.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),d?70:0);u.attr("viewBox",n.startx+` -25 ${g} `+(e+d)),u.attr("preserveAspectRatio","xMinYMin meet"),u.attr("height",e+d+25)},"draw"),K9t={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:me(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:me(function(t,e,r,n){void 0===t[e]?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:me(function(n,i,a,s){let o=O().journey,l=this,c=0;function t(r){return me(function(t){c++;var e=l.sequenceItems.length-c+1;l.updateVal(t,"starty",i-e*o.boxMargin,Math.min),l.updateVal(t,"stopy",s+e*o.boxMargin,Math.max),l.updateVal(K9t.data,"startx",n-e*o.boxMargin,Math.min),l.updateVal(K9t.data,"stopx",a+e*o.boxMargin,Math.max),"activation"!==r&&(l.updateVal(t,"startx",n-e*o.boxMargin,Math.min),l.updateVal(t,"stopx",a+e*o.boxMargin,Math.max),l.updateVal(K9t.data,"starty",i-e*o.boxMargin,Math.min),l.updateVal(K9t.data,"stopy",s+e*o.boxMargin,Math.max))},"updateItemBounds")}me(t,"updateFn"),this.sequenceItems.forEach(t())},"updateBounds"),insert:me(function(t,e,r,n){var i=Math.min(t,r),t=Math.max(t,r),r=Math.min(e,n),e=Math.max(e,n);this.updateVal(K9t.data,"startx",i,Math.min),this.updateVal(K9t.data,"starty",r,Math.min),this.updateVal(K9t.data,"stopx",t,Math.max),this.updateVal(K9t.data,"stopy",e,Math.max),this.updateBounds(i,r,t,e)},"insert"),bumpVerticalPos:me(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:me(function(){return this.verticalPos},"getVerticalPos"),getBounds:me(function(){return this.data},"getBounds")},Z9t=H9t.sectionFills,Q9t=H9t.sectionColours,J9t=me(function(t,n,e){let i=O().journey,a="",r=2*i.height+i.diagramMarginY,s=e+r,o=0,l="#CCC",c="black",h=0;for(var[u,d]of n.entries()){if(a!==d.section){l=Z9t[o%Z9t.length],h=o%Z9t.length,c=Q9t[o%Q9t.length];let e=0,r=d.section;for(let t=u;t(W9t[e]&&(t[e]=W9t[e]),t),{}),d.x=u*i.taskMargin+u*i.width+V9t,d.y=s,d.width=i.diagramMarginX,d.height=i.diagramMarginY,d.colour=c,d.fill=l,d.num=h,d.actors=p,B9t.drawTask(t,d,i),K9t.insert(d.x,d.y,d.x+d.width+i.taskMargin,450)}},"drawTasks"),tLt={setConf:j9t,draw:X9t}}),rLt={};KBt(rLt,{diagram:()=>nLt});var nLt,iLt,aLt,sLt=b(()=>{F9t(),z9t(),G9t(),eLt(),nLt={parser:c9t,db:T9t,renderer:tLt,styles:C9t,init:me(t=>{tLt.setConf(t.journey),T9t.clear()},"init")}}),oLt=b(()=>{function t(){this.yy={}}var e=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),r=[6,8,10,11,12,14,16,17,20,21],n=[1,9],i=[1,10],a=[1,11],s=[1,12],o=[1,13],l=[1,16],c=[1,17],n={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 1:return a[o-1];case 2:this.$=[];break;case 3:a[o-1].push(a[o]),this.$=a[o-1];break;case 4:case 5:this.$=a[o];break;case 6:case 7:this.$=[];break;case 8:n.getCommonDb().setDiagramTitle(a[o].substr(6)),this.$=a[o].substr(6);break;case 9:this.$=a[o].trim(),n.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=a[o].trim(),n.getCommonDb().setAccDescription(this.$);break;case 12:n.addSection(a[o].substr(8)),this.$=a[o].substr(8);break;case 15:n.addTask(a[o],0,""),this.$=a[o];break;case 16:n.addEvent(a[o].substr(2)),this.$=a[o]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(r,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:i,14:a,16:s,17:o,18:14,19:15,20:l,21:c},e(r,[2,7],{1:[2,1]}),e(r,[2,3]),{9:18,11:n,12:i,14:a,16:s,17:o,18:14,19:15,20:l,21:c},e(r,[2,5]),e(r,[2,6]),e(r,[2,8]),{13:[1,19]},{15:[1,20]},e(r,[2,11]),e(r,[2,12]),e(r,[2,13]),e(r,[2,14]),e(r,[2,15]),e(r,[2,16]),e(r,[2,4]),e(r,[2,9]),e(r,[2,10])],defaultActions:{},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0bLt,addSection:()=>mLt,addTask:()=>xLt,addTaskOrg:()=>wLt,clear:()=>fLt,default:()=>TLt,getCommonDb:()=>gLt,getSections:()=>yLt,getTasks:()=>vLt});var cLt,hLt,uLt,dLt,pLt,gLt,fLt,mLt,yLt,vLt,xLt,bLt,wLt,kLt,TLt,ELt=b(()=>{ku(),cLt="",hLt=0,uLt=[],dLt=[],pLt=[],gLt=me(()=>hh,"getCommonDb"),fLt=me(function(){uLt.length=0,dLt.length=0,cLt="",pLt.length=0,fh()},"clear"),mLt=me(function(t){cLt=t,uLt.push(t)},"addSection"),yLt=me(function(){return uLt},"getSections"),vLt=me(function(){let t=kLt(),e=0;for(;!t&&e<100;)t=kLt(),e++;return dLt.push(...pLt),dLt},"getTasks"),xLt=me(function(t,e,r){t={id:hLt++,section:cLt,type:cLt,task:t,score:e||0,events:r?[r]:[]},pLt.push(t)},"addTask"),bLt=me(function(t){pLt.find(t=>t.id===hLt-1).events.push(t)},"addEvent"),wLt=me(function(t){t={section:cLt,type:cLt,description:t,task:t,classes:[]},dLt.push(t)},"addTaskOrg"),kLt=me(function(){let t=me(function(t){return pLt[t].processed},"compileTask"),e=!0;for(var[r,n]of pLt.entries())t(r),e=e&&n.processed;return e},"compileTasks"),TLt={clear:fLt,getCommonDb:gLt,addSection:mLt,getSections:yLt,getTasks:vLt,addTask:xLt,addTaskOrg:wLt,addEvent:bLt}});function CLt(t,o){t.each(function(){var e,r=H(this),n=r.text().split(/(\s+|
)/).reverse(),i=[],a=r.attr("y"),t=parseFloat(r.attr("dy")),s=r.text(null).append("tspan").attr("x",0).attr("y",a).attr("dy",t+"em");for(let t=0;to||"
"===e)&&(i.pop(),s.text(i.join(" ").trim()),i="
"===e?[""]:[e],s=r.append("tspan").attr("x",0).attr("y",a).attr("dy","1.1em").text(e))})}var SLt,_Lt,ALt,LLt,NLt,ILt,RLt,MLt,DLt,OLt,PLt,BLt,$Lt,FLt,zLt,GLt,ULt,qLt,jLt,WLt,YLt,HLt,VLt,XLt,KLt=b(()=>{function e(t,e,r,n,i,a,s,o){g(e.append("text").attr("x",r+i/2).attr("y",n+a/2+5).style("font-color",o).style("text-anchor","middle").text(t),s)}function c(t,e,r,n,i,a,s,o,l){var{taskFontSize:c,taskFontFamily:h}=o,u=t.split(//gi);for(let t=0;t/gi," "),n=((t=t.append("text")).attr("x",e.x),t.attr("y",e.y),t.attr("class","legend"),t.style("text-anchor",e.anchor),void 0!==e.class&&t.attr("class",e.class),t.append("tspan"));return n.attr("x",e.x+2*e.textMargin),n.text(r),t},"drawText"),NLt=me(function(t,e){function r(t,e,r,n,i){return t+","+e+" "+(t+r)+","+e+" "+(t+r)+","+(e+n-i)+" "+(t+r-1.2*i)+","+(e+n)+" "+t+","+(e+n)}me(r,"genPoints");var n=t.append("polygon");n.attr("points",r(e.x,e.y,50,20,7)),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,LLt(t,e)},"drawLabel"),ILt=me(function(t,e,r){var t=t.append("g"),n=PLt();n.x=e.x,n.y=e.y,n.fill=e.fill,n.width=r.width,n.height=r.height,n.class="journey-section section-type-"+e.num,n.rx=3,n.ry=3,SLt(t,n),BLt(r)(e.text,t,n.x,n.y,n.width,n.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),RLt=-1,MLt=me(function(t,e,r){var n=e.x+r.width/2,t=t.append("g");RLt++,t.append("line").attr("id","task"+RLt).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),_Lt(t,{cx:n,cy:300+30*(5-e.score),score:e.score}),(n=PLt()).x=e.x,n.y=e.y,n.fill=e.fill,n.width=r.width,n.height=r.height,n.class="task task-type-"+e.num,n.rx=3,n.ry=3,SLt(t,n),BLt(r)(e.task,t,n.x,n.y,n.width,n.height,{class:"task"},r,e.colour)},"drawTask"),DLt=me(function(t,e){SLt(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},"drawBackgroundRect"),OLt=me(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),PLt=me(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),me(e,"byText"),me(c,"byTspan"),me(r,"byFo"),me(g,"_setTextAttrs"),BLt=function(t){return"fo"===t.textPlacement?r:"old"===t.textPlacement?e:c},$Lt=me(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},"initGraphics"),me(CLt,"wrap"),FLt=me(function(t,e,r,n){var r=r%12-1,t=t.append("g"),i=(e.section=r,t.attr("class",(e.class?e.class+" ":"")+"timeline-node section-"+r),t.append("g")),a=(t=t.append("g")).append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(CLt,e.width).node().getBBox(),s=n.fontSize?.replace?n.fontSize.replace("px",""):n.fontSize;return e.height=a.height+1.1*s*.5+e.padding,e.height=Math.max(e.height,e.maxHeight),e.width=e.width+2*e.padding,t.attr("transform","translate("+e.width/2+", "+e.padding/2+")"),GLt(i,e,r,n),e},"drawNode"),zLt=me(function(t,e,r){var n=(t=t.append("g")).append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(CLt,e.width).node().getBBox(),r=r.fontSize?.replace?r.fontSize.replace("px",""):r.fontSize;return t.remove(),n.height+1.1*r*.5+e.padding},"getVirtualNodeHeight"),GLt=me(function(t,e,r){t.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("d",`M0 ${e.height-5} v${10-e.height} q0,-5 5,-5 h${e.width-10} q5,0 5,5 v${e.height-5} H0 Z`),t.append("line").attr("class","node-line-"+r).attr("x1",0).attr("y1",e.height).attr("x2",e.width).attr("y2",e.height)},"defaultBkg"),ULt={drawRect:SLt,drawCircle:ALt,drawSection:ILt,drawText:LLt,drawLabel:NLt,drawTask:MLt,drawBackgroundRect:DLt,getTextObj:OLt,getNoteRect:PLt,initGraphics:$Lt,drawNode:FLt,getVirtualNodeHeight:zLt}}),ZLt=b(()=>{i6(),KLt(),t(),Tu(),lh(),qLt=me(function(t,e,r,n){let i=O(),a=i.timeline?.leftMargin??50,s=(D.debug("timeline",n.db),i.securityLevel),o,l=("sandbox"===s&&(o=H("#i"+e)),H("sandbox"===s?o.nodes()[0].contentDocument.body:"body").select("#"+e)),c=(l.append("g"),n.db.getTasks()),h=n.db.getCommonDb().getDiagramTitle();D.debug("task",c),ULt.initGraphics(l);var u,d,e=n.db.getSections();D.debug("sections",e);let p=0,g=0,f,m=50+a,y=50,v=0,x=!0,b=(e.forEach(function(t){t={number:v,descr:t,section:v,width:150,padding:20,maxHeight:p},t=ULt.getVirtualNodeHeight(l,t,i),D.debug("sectionHeight before draw",t),p=Math.max(p,t+20)}),0),w=0;D.debug("tasks.length",c.length);for([u,d]of c.entries()){var k,T={number:u,descr:d,section:d.section,width:150,padding:20,maxHeight:g},T=ULt.getVirtualNodeHeight(l,T,i);D.debug("taskHeight before draw",T),g=Math.max(g,T+20),b=Math.max(b,d.events.length);let t=0;for(k of d.events){var E={descr:k,section:d.section,number:d.section,width:150,padding:20,maxHeight:50};t+=ULt.getVirtualNodeHeight(l,E,i)}0{var t=c.filter(t=>t.section===e),r={number:v,descr:e,section:v,width:200*Math.max(t.length,1)-50,padding:20,maxHeight:p},n=(D.debug("sectionNode",r),l.append("g")),r=ULt.drawNode(n,r,v,i);D.debug("sectionNode output",r),n.attr("transform",`translate(${m}, 50)`),y+=p+50,0{},"setConf"),draw:qLt}}),QLt=b(()=>{jr(),HLt=me(e=>{let r="";for(let t=0;t` + .edge { + stroke-width: 3; + } + ${HLt(t)} + .section-root rect, .section-root path, .section-root circle { + fill: ${t.git0}; + } + .section-root text { + fill: ${t.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .eventWrapper { + filter: brightness(120%); + } +`,"getStyles"),XLt=VLt}),JLt={};KBt(JLt,{diagram:()=>tNt});var tNt,eNt,rNt,nNt=b(()=>{oLt(),ELt(),ZLt(),QLt(),tNt={db:lLt,renderer:YLt,parser:aLt,styles:XLt}}),iNt=b(()=>{function t(){this.yy={}}var e=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),r=[1,4],n=[1,13],i=[1,12],a=[1,15],s=[1,16],o=[1,20],l=[1,19],c=[6,7,8],h=[1,26],u=[1,24],d=[1,25],p=[6,7,11],g=[1,6,13,15,16,19,22],f=[1,33],m=[1,34],y=[1,6,7,11,13,15,16,19,22],r={trace:me(function(){},"trace"),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:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 6:case 7:return n;case 8:n.getLogger().trace("Stop NL ");break;case 9:n.getLogger().trace("Stop EOF ");break;case 11:n.getLogger().trace("Stop NL2 ");break;case 12:n.getLogger().trace("Stop EOF2 ");break;case 15:n.getLogger().info("Node: ",a[o].id),n.addNode(a[o-1].length,a[o].id,a[o].descr,a[o].type);break;case 16:n.getLogger().trace("Icon: ",a[o]),n.decorateNode({icon:a[o]});break;case 17:case 21:n.decorateNode({class:a[o]});break;case 18:n.getLogger().trace("SPACELIST");break;case 19:n.getLogger().trace("Node: ",a[o].id),n.addNode(0,a[o].id,a[o].descr,a[o].type);break;case 20:n.decorateNode({icon:a[o]});break;case 25:n.getLogger().trace("node found ..",a[o-2]),this.$={id:a[o-1],descr:a[o-1],type:n.getType(a[o-2],a[o])};break;case 26:this.$={id:a[o],descr:a[o],type:n.nodeType.DEFAULT};break;case 27:n.getLogger().trace("node found ..",a[o-3]),this.$={id:a[o-3],descr:a[o-1],type:n.getType(a[o-2],a[o])}}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:r},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:r},{6:n,7:[1,10],9:9,12:11,13:i,14:14,15:a,16:s,17:17,18:18,19:o,22:l},e(c,[2,3]),{1:[2,2]},e(c,[2,4]),e(c,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,15:a,16:s,17:17,18:18,19:o,22:l},{6:n,9:22,12:11,13:i,14:14,15:a,16:s,17:17,18:18,19:o,22:l},{6:h,7:u,10:23,11:d},e(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:o,22:l}),e(p,[2,18]),e(p,[2,19]),e(p,[2,20]),e(p,[2,21]),e(p,[2,23]),e(p,[2,24]),e(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:h,7:u,10:32,11:d},{1:[2,7],6:n,12:21,13:i,14:14,15:a,16:s,17:17,18:18,19:o,22:l},e(g,[2,14],{7:f,11:m}),e(y,[2,8]),e(y,[2,9]),e(y,[2,10]),e(p,[2,15]),e(p,[2,16]),e(p,[2,17]),{20:[1,35]},{21:[1,36]},e(g,[2,13],{7:f,11:m}),e(y,[2,11]),e(y,[2,12]),{21:[1,37]},e(p,[2,25]),e(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0{sNt=[];for(let t=0;t<256;++t)sNt.push((t+256).toString(16).slice(1));me(aNt,"unsafeStringify")});function lNt(){if(!cNt){if("u"{hNt=new Uint8Array(16),me(lNt,"rng")}),gNt=b(()=>{uNt=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),dNt={randomUUID:uNt}});function fNt(t,e,r){if(dNt.randomUUID&&!e&&!t)return dNt.randomUUID();var n=(t=t||{}).random??t.rng?.()??lNt();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,e){if((r=r||0)<0||r+16>e.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let t=0;t<16;++t)e[r+t]=n[t];return e}return aNt(n)}var mNt,yNt,vNt,xNt,bNt,wNt,kNt,TNt,ENt=b(()=>{gNt(),pNt(),oNt(),me(fNt,"v4"),mNt=fNt}),CNt=b(()=>{ENt()}),SNt=b(()=>{Tu(),CNt(),Oc(),t(),tn(),rn(),yNt={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},vNt=class{constructor(){this.nodes=[],this.count=0,this.elements={},this.getLogger=this.getLogger.bind(this),this.nodeType=yNt,this.clear(),this.getType=this.getType.bind(this),this.getElementById=this.getElementById.bind(this),this.getParent=this.getParent.bind(this),this.getMindmap=this.getMindmap.bind(this),this.addNode=this.addNode.bind(this),this.decorateNode=this.decorateNode.bind(this)}static{me(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={}}getParent(e){for(let t=this.nodes.length-1;0<=t;t--)if(this.nodes[t].level{switch(t){case yNt.CIRCLE:return"mindmapCircle";case yNt.RECT:return"rect";case yNt.ROUNDED_RECT:return"rounded";case yNt.CLOUD:return"cloud";case yNt.BANG:return"bang";case yNt.HEXAGON:return"hexagon";case yNt.DEFAULT:return"defaultMindmapNode";default:return"rect"}},"getShapeFromType"),n={id:t.id.toString(),domId:"node_"+t.id.toString(),label:t.descr,isGroup:!1,shape:n(t.type),width:t.width,height:t.height??0,padding:t.padding,cssClasses:r,cssStyles:[],look:"default",icon:t.icon,x:t.x,y:t.y,level:t.level,nodeId:t.nodeId,type:t.type,section:t.section};if(e.push(n),t.children)for(var i of t.children)this.flattenNodes(i,e)}generateEdges(e,r){if(e.children)for(var n of e.children){let t="edge";void 0!==n.section&&(t+=" section-edge-"+n.section);var i=e.level+1,i=(t+=" edge-depth-"+i,{id:`edge_${e.id}_`+n.id,start:e.id.toString(),end:n.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:"default",classes:t,depth:e.level,section:n.section});r.push(i),this.generateEdges(n,r)}}getData(){var t=this.getMindmap(),e=O(),r=e;if(void 0===pr().layout&&(r.layout="cose-bilkent"),!t)return{nodes:[],edges:[],config:r};D.debug("getData: mindmapRoot",t,e),this.assignSections(t);var n,i=[],a=(this.flattenNodes(t,e=[]),this.generateEdges(t,i),D.debug(`getData: processed ${e.length} nodes and ${i.length} edges`),new Map);for(n of e)a.set(n.id,{shape:n.shape,width:n.width,height:n.height,padding:n.padding});return{nodes:e,edges:i,config:r,rootNode:t,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(a),type:"mindmap",diagramId:"mindmap-"+mNt()}}getLogger(){return D}}}),_Nt=b(()=>{t(),iO(),cct(),hct(),tn(),xNt=me(async(t,e,r,n)=>{D.debug(`Rendering mindmap diagram +`+t);var i=(t=n.db).getData(),a=WD(e,i.config.securityLevel);i.type=n.type,i.layoutAlgorithm=Hlt(i.config.layout,{fallback:"cose-bilkent"}),i.diagramId=e,t.getMindmap()&&(i.nodes.forEach(t=>{"rounded"===t.shape?(t.radius=15,t.taper=15,t.stroke="none",t.width=0,t.padding=15):"circle"===t.shape?t.padding=10:"rect"===t.shape&&(t.width=0,t.padding=10)}),await Ylt(i,a),Vlt(a,i.config.mindmap?.padding??We.mindmap.padding,"mindmapDiagram",i.config.mindmap?.useMaxWidth??We.mindmap.useMaxWidth))},"draw"),bNt={draw:xNt}}),ANt=b(()=>{jr(),wNt=me(e=>{let r="";for(let t=0;t` + .edge { + stroke-width: 3; + } + ${wNt(t)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${t.git0}; + } + .section-root text { + fill: ${t.gitBranchLabel0}; + } + .section-root span { + color: ${t.gitBranchLabel0}; + } + .section-2 span { + color: ${t.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; + } +`,"getStyles"),TNt=kNt}),LNt={};KBt(LNt,{diagram:()=>NNt});var NNt,INt,RNt,MNt,DNt,ONt,PNt,BNt,$Nt,FNt,zNt,GNt,UNt,qNt,jNt,WNt,YNt,HNt,VNt,XNt,KNt,ZNt,QNt,JNt,tIt,eIt=b(()=>{iNt(),SNt(),_Nt(),ANt(),NNt={get db(){return new vNt},renderer:bNt,parser:rNt,styles:TNt}}),rIt=b(()=>{function t(){this.yy={}}var e=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),r=[1,4],n=[1,13],i=[1,12],a=[1,15],s=[1,16],o=[1,20],l=[1,19],c=[6,7,8],h=[1,26],u=[1,24],d=[1,25],p=[6,7,11],g=[1,31],f=[6,7,11,24],m=[1,6,13,16,17,20,23],y=[1,35],v=[1,36],x=[1,6,7,11,13,16,17,20,23],b=[1,38],r={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},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,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 6:case 7:return n;case 8:n.getLogger().trace("Stop NL ");break;case 9:n.getLogger().trace("Stop EOF ");break;case 11:n.getLogger().trace("Stop NL2 ");break;case 12:n.getLogger().trace("Stop EOF2 ");break;case 15:n.getLogger().info("Node: ",a[o-1].id),n.addNode(a[o-2].length,a[o-1].id,a[o-1].descr,a[o-1].type,a[o]);break;case 16:n.getLogger().info("Node: ",a[o].id),n.addNode(a[o-1].length,a[o].id,a[o].descr,a[o].type);break;case 17:n.getLogger().trace("Icon: ",a[o]),n.decorateNode({icon:a[o]});break;case 18:case 23:n.decorateNode({class:a[o]});break;case 19:n.getLogger().trace("SPACELIST");break;case 20:n.getLogger().trace("Node: ",a[o-1].id),n.addNode(0,a[o-1].id,a[o-1].descr,a[o-1].type,a[o]);break;case 21:n.getLogger().trace("Node: ",a[o].id),n.addNode(0,a[o].id,a[o].descr,a[o].type);break;case 22:n.decorateNode({icon:a[o]});break;case 27:n.getLogger().trace("node found ..",a[o-2]),this.$={id:a[o-1],descr:a[o-1],type:n.getType(a[o-2],a[o])};break;case 28:this.$={id:a[o],descr:a[o],type:0};break;case 29:n.getLogger().trace("node found ..",a[o-3]),this.$={id:a[o-3],descr:a[o-1],type:n.getType(a[o-2],a[o])};break;case 30:this.$=a[o-1]+a[o];break;case 31:this.$=a[o]}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:r},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:r},{6:n,7:[1,10],9:9,12:11,13:i,14:14,16:a,17:s,18:17,19:18,20:o,23:l},e(c,[2,3]),{1:[2,2]},e(c,[2,4]),e(c,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,16:a,17:s,18:17,19:18,20:o,23:l},{6:n,9:22,12:11,13:i,14:14,16:a,17:s,18:17,19:18,20:o,23:l},{6:h,7:u,10:23,11:d},e(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:o,23:l}),e(p,[2,19]),e(p,[2,21],{15:30,24:g}),e(p,[2,22]),e(p,[2,23]),e(f,[2,25]),e(f,[2,26]),e(f,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:u,10:34,11:d},{1:[2,7],6:n,12:21,13:i,14:14,16:a,17:s,18:17,19:18,20:o,23:l},e(m,[2,14],{7:y,11:v}),e(x,[2,8]),e(x,[2,9]),e(x,[2,10]),e(p,[2,16],{15:37,24:g}),e(p,[2,17]),e(p,[2,18]),e(p,[2,20],{24:b}),e(f,[2,31]),{21:[1,39]},{22:[1,40]},e(m,[2,13],{7:y,11:v}),e(x,[2,11]),e(x,[2,12]),e(p,[2,15],{24:b}),e(f,[2,30]),{22:[1,41]},e(f,[2,27]),e(f,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0"),24;case 4:return 24;case 5:this.popState();break;case 6:return t.getLogger().trace("Found comment",e.yytext),6;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;case 10:this.popState();break;case 11:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return t.getLogger().trace("SPACELINE"),6;case 13:return 7;case 14:return 16;case 15:t.getLogger().trace("end icon"),this.popState();break;case 16:return t.getLogger().trace("Exploding node"),this.begin("NODE"),20;case 17:return t.getLogger().trace("Cloud"),this.begin("NODE"),20;case 18:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;case 19:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;case 20:case 21:case 22:case 23:return this.begin("NODE"),20;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 29:this.popState();break;case 30:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 32:this.popState();break;case 33:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 34:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 35:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 36:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 37:case 38:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 39:case 40:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 41:case 42:return t.getLogger().trace("Long description:",e.yytext),21}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\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:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}};r.lexer=c,me(t,"Parser"),(INt=new((t.prototype=r).Parser=t)).parser=INt,RNt=INt}),nIt=b(()=>{Tu(),Oc(),t(),tn(),F9(),MNt=[],DNt=[],ONt=0,PNt={},BNt=me(()=>{MNt=[],DNt=[],ONt=0,PNt={}},"clear"),$Nt=me(t=>{if(0===MNt.length)return null;let e=MNt[0].level,r=null;for(let t=MNt.length-1;0<=t;t--)if(MNt[t].level===e&&(r=r||MNt[t]),MNt[t].levelt.parentId===e.id)){var s={id:i.id,parentId:e.id,label:lc(i.label??"",n),isGroup:!1,ticket:i?.ticket,priority:i?.priority,assigned:i?.assigned,icon:i?.icon,shape:"kanbanItem",level:i.level,rx:5,ry:5,cssStyles:["text-align: left"]};t.push(s)}}return{nodes:t,edges:[],other:{},config:O()}},"getData"),GNt=me((t,e,r,n,i)=>{let a=O(),s=a.mindmap?.padding??We.mindmap.padding;switch(n){case UNt.ROUNDED_RECT:case UNt.RECT:case UNt.HEXAGON:s*=2}if(n={id:lc(e,a)||"kbn"+ONt++,level:t,label:lc(r,a),width:a.mindmap?.maxNodeWidth??We.mindmap.maxNodeWidth,padding:s,isGroup:!1},void 0!==i){if(i=i.includes(` +`)?i+` +`:`{ +`+i+` +}`,(e=$9(i,{schema:B9})).shape&&(e.shape!==e.shape.toLowerCase()||e.shape.includes("_")))throw new Error(`No such shape: ${e.shape}. Shape names should be lowercase.`);e?.shape&&"kanbanItem"===e.shape&&(n.shape=e?.shape),e?.label&&(n.label=e?.label),e?.icon&&(n.icon=e?.icon.toString()),e?.assigned&&(n.assigned=e?.assigned.toString()),e?.ticket&&(n.ticket=e?.ticket.toString()),e?.priority&&(n.priority=e?.priority)}(r=$Nt(t))?n.parentId=r.id||"kbn"+ONt++:DNt.push(n),MNt.push(n)},"addNode"),UNt={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},qNt=me((t,e)=>{switch(D.debug("In get type",t,e),t){case"[":return UNt.RECT;case"(":return")"===e?UNt.ROUNDED_RECT:UNt.CLOUD;case"((":return UNt.CIRCLE;case")":return UNt.CLOUD;case"))":return UNt.BANG;case"{{":return UNt.HEXAGON;default:return UNt.DEFAULT}},"getType"),jNt=me((t,e)=>{PNt[t]=e},"setElementForId"),WNt=me(t=>{var e,r;t&&(e=O(),r=MNt[MNt.length-1],t.icon&&(r.icon=lc(t.icon,e)),t.class)&&(r.cssClasses=lc(t.class,e))},"decorateNode"),YNt=me(t=>{switch(t){case UNt.DEFAULT:return"no-border";case UNt.RECT:return"rect";case UNt.ROUNDED_RECT:return"rounded-rect";case UNt.CIRCLE:return"circle";case UNt.CLOUD:return"cloud";case UNt.BANG:return"bang";case UNt.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),HNt=me(()=>D,"getLogger"),VNt=me(t=>PNt[t],"getElementById"),XNt={clear:BNt,addNode:GNt,getSections:FNt,getData:zNt,nodeType:UNt,getType:qNt,setElementForId:jNt,decorateNode:WNt,type2Str:YNt,getLogger:HNt,getElementById:VNt}}),iIt=b(()=>{Tu(),t(),z7t(),lh(),tn(),sO(),rP(),KNt=me(async(t,e,r,n)=>{D.debug(`Rendering kanban diagram +`+t);var i,a=n.db.getData(),s=O(),o=(s.htmlLabels=!1,(t=M7t(e)).append("g")),l=(o.attr("class","sections"),t.append("g"));l.attr("class","items");let c=a.nodes.filter(t=>t.isGroup),h=0,u=[],d=25;for(i of c){var p=s?.kanban?.sectionWidth||200,p=(h+=1,i.x=p*h+10*(h-1)/2,i.width=p,i.y=0,i.height=3*p,i.rx=5,i.ry=5,i.cssClasses=i.cssClasses+" section-"+h,await tO(o,i));d=Math.max(d,p?.labelBBox?.height),u.push(p)}let g=0;for(let i of c){var f,m=u[g];g+=1;let t=s?.kanban?.sectionWidth||200,e=3*-t/2+d,r=e,n=a.nodes.filter(t=>t.parentId===i.id);for(f of n){if(f.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");f.x=i.x,f.width=t-15;var y=(await KO(l,f,{config:s})).node().getBBox();f.y=r+y.height/2,await tP(f),r=f.y+y.height/2+5}var m=m.cluster.select("rect"),v=Math.max(r-e+30,50)+(d-25);m.attr("height",v)}Qc(void 0,t,s.mindmap?.padding??We.kanban.padding,s.mindmap?.useMaxWidth??We.kanban.useMaxWidth)},"draw"),ZNt={draw:KNt}}),aIt=b(()=>{jr(),gct(),QNt=me(r=>{let e="";for(let t=0;t(r.darkMode?ke:a)(t,e),"adjuster");for(let t=0;t` + .edge { + stroke-width: 3; + } + ${QNt(t)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${t.git0}; + } + .section-root text { + fill: ${t.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .cluster-label, .label { + color: ${t.textColor}; + fill: ${t.textColor}; + } + .kanban-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } + ${ict()} +`,"getStyles"),tIt=JNt}),sIt={};KBt(sIt,{diagram:()=>oIt});var oIt,lIt,cIt,hIt,uIt,dIt,pIt,gIt,fIt,mIt,yIt,vIt,xIt,bIt,wIt,kIt=b(()=>{rIt(),nIt(),iIt(),aIt(),oIt={db:XNt,renderer:ZNt,parser:RNt,styles:tIt}}),TIt=b(()=>{function t(){this.yy={}}var e=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),r=[1,9],n=[1,10],i=[1,5,10,12],i={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 7:var l=n.findOrCreateNode(a[o-4].trim().replaceAll('""','"')),c=n.findOrCreateNode(a[o-2].trim().replaceAll('""','"')),h=parseFloat(a[o].trim());n.addLink(l,c,h);break;case 8:case 9:case 11:this.$=a[o];break;case 10:this.$=a[o-1]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:r,20:n},{1:[2,6],7:11,10:[1,12]},e(n,[2,4],{9:13,5:[1,14]}),{12:[1,15]},e(i,[2,8]),e(i,[2,9]),{19:[1,16]},e(i,[2,11]),{1:[2,1]},{1:[2,5]},e(n,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:r,20:n},{15:18,16:7,17:8,18:r,20:n},{18:[1,19]},e(n,[2,3]),{12:[1,20]},e(i,[2,10]),{15:21,16:7,17:8,18:r,20:n},e([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0{Tu(),Oc(),ku(),hIt=[],uIt=[],dIt=new Map,pIt=me(()=>{hIt=[],uIt=[],dIt=new Map,fh()},"clear"),gIt=class{constructor(t,e,r=0){this.source=t,this.target=e,this.value=r}static{me(this,"SankeyLink")}},fIt=me((t,e,r)=>{hIt.push(new gIt(t,e,r))},"addLink"),mIt=class{constructor(t){this.ID=t}static{me(this,"SankeyNode")}},yIt=me(t=>{t=L.sanitizeText(t,O());let e=dIt.get(t);return void 0===e&&(e=new mIt(t),dIt.set(t,e),uIt.push(e)),e},"findOrCreateNode"),vIt=me(()=>uIt,"getNodes"),xIt=me(()=>hIt,"getLinks"),bIt=me(()=>({nodes:uIt.map(t=>({id:t.ID})),links:hIt.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),wIt={nodesMap:dIt,getConfig:me(()=>O().sankey,"getConfig"),getNodes:vIt,getLinks:xIt,getGraph:bIt,addLink:fIt,findOrCreateNode:yIt,getAccTitle:yh,setAccTitle:mh,getAccDescription:xh,setAccDescription:vh,getDiagramTitle:wh,setDiagramTitle:bh,clear:pIt}});function CIt(e,r){let n;if(void 0===r)for(var t of e)null!=t&&(n{me(CIt,"max")});function _It(e,r){let n;if(void 0===r)for(var t of e)null!=t&&(n>t||void 0===n&&t<=t)&&(n=t);else{let t=-1;for(var i of e)null!=(i=r(i,++t,e))&&(n>i||void 0===n&&i<=i)&&(n=i)}return n}var AIt=b(()=>{me(_It,"min")});function LIt(e,r){let n=0;if(void 0===r)for(var t of e)(t=+t)&&(n+=t);else{let t=-1;for(var i of e)(i=+r(i,++t,e))&&(n+=i)}return n}var NIt=b(()=>{me(LIt,"sum")}),IIt=b(()=>{SIt(),AIt(),NIt()});function RIt(t){return t.target.depth}function MIt(t){return t.depth}function DIt(t,e){return e-1-t.height}function OIt(t,e){return t.sourceLinks.length?t.depth:e-1}function PIt(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?_It(t.sourceLinks,RIt)-1:0}var BIt=b(()=>{IIt(),me(RIt,"targetDepth"),me(MIt,"left"),me(DIt,"right"),me(OIt,"justify"),me(PIt,"center")});function $It(t){return function(){return t}}var FIt=b(()=>{me($It,"constant")});function zIt(t,e){return UIt(t.source,e.source)||t.index-e.index}function GIt(t,e){return UIt(t.target,e.target)||t.index-e.index}function UIt(t,e){return t.y0-e.y0}function qIt(t){return t.value}function jIt(t){return t.index}function WIt(t){return t.nodes}function YIt(t){return t.links}function HIt(t,e){if(t=t.get(e))return t;throw new Error("missing: "+e)}function VIt({nodes:t}){for(var r of t){let t=r.y0,e=t;for(var n of r.sourceLinks)n.y0=t+n.width/2,t+=n.width;for(var i of r.targetLinks)i.y1=e+i.width/2,e+=i.width}}function XIt(){let o=0,l=0,c=1,h=1,u=24,i=8,d,p=jIt,g=OIt,f,m,e=WIt,r=YIt,a=6;function n(){var t={nodes:e.apply(null,arguments),links:r.apply(null,arguments)};return s(t),y(t),v(t),x(t),k(t),VIt(t),t}function s({nodes:r,links:t}){for(var[e,n]of r.entries())n.index=e,n.sourceLinks=[],n.targetLinks=[];var i,a,s=new Map(r.map((t,e)=>[p(t,e,r),t]));for([i,a]of t.entries()){a.index=i;let{source:t,target:e}=a;"object"!=typeof t&&(t=a.source=HIt(s,t)),"object"!=typeof e&&(e=a.target=HIt(s,e)),t.sourceLinks.push(a),e.targetLinks.push(a)}if(null!=m)for(var{sourceLinks:o,targetLinks:l}of r)o.sort(m),l.sort(m)}function y({nodes:t}){for(var e of t)e.value=void 0===e.fixedValue?Math.max(LIt(e.sourceLinks,qIt),LIt(e.targetLinks,qIt)):e.fixedValue}function v({nodes:t}){let e=t.length,r=new Set(t),n=new Set,i=0;for(;r.size;){for(var a of r){a.depth=i;for(var{target:s}of a.sourceLinks)n.add(s)}if(++i>e)throw new Error("circular link");r=n,n=new Set}}function x({nodes:t}){let e=t.length,r=new Set(t),n=new Set,i=0;for(;r.size;){for(var a of r){a.height=i;for(var{source:s}of a.targetLinks)n.add(s)}if(++i>e)throw new Error("circular link");r=n,n=new Set}}function b({nodes:t}){var e,r=CIt(t,t=>t.depth)+1,n=(c-o-u)/(r-1),i=new Array(r);for(e of t){var a=Math.max(0,Math.min(r-1,Math.floor(g.call(null,e,r))));e.layer=a,e.x0=o+a*n,e.x1=e.x0+u,i[a]?i[a].push(e):i[a]=[e]}if(f)for(var s of i)s.sort(f);return i}function w(t){var r,n=_It(t,t=>(h-l-(t.length-1)*d)/LIt(t,qIt));for(r of t){let e=l;for(var i of r){i.y0=e,i.y1=e+i.value*n,e=i.y1+d;for(var a of i.sourceLinks)a.width=a.value*n}e=(h-e+d)/(r.length+1);for(let t=0;tt.length)-1)),w(e);for(let t=0;t>1,n=t[r];_(t,n.y0-d,r-1,e),S(t,n.y1+d,1+r,e),_(t,h,t.length-1,e),S(t,l,0,e)}function S(t,e,r,n){for(;r{IIt(),BIt(),FIt(),me(zIt,"ascendingSourceBreadth"),me(GIt,"ascendingTargetBreadth"),me(UIt,"ascendingBreadth"),me(qIt,"value"),me(jIt,"defaultId"),me(WIt,"defaultNodes"),me(YIt,"defaultLinks"),me(HIt,"find"),me(VIt,"computeLinkBreadths"),me(XIt,"Sankey")});function ZIt(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function QIt(){return new ZIt}var JIt,tRt,eRt,rRt,nRt=b(()=>{JIt=Math.PI,eRt=(tRt=2*JIt)-1e-6,me(ZIt,"Path"),me(QIt,"path"),ZIt.prototype=QIt.prototype={constructor:ZIt,moveTo:me(function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},"moveTo"),closePath:me(function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:me(function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},"lineTo"),quadraticCurveTo:me(function(t,e,r,n){this._+="Q"+ +t+","+ +e+","+(this._x1=+r)+","+(this._y1=+n)},"quadraticCurveTo"),bezierCurveTo:me(function(t,e,r,n,i,a){this._+="C"+ +t+","+ +e+","+ +r+","+ +n+","+(this._x1=+i)+","+(this._y1=+a)},"bezierCurveTo"),arcTo:me(function(t,e,r,n,i){var a,s,o=this._x1,l=this._y1,c=(r=+r)-(t=+t),h=(n=+n)-(e=+e),u=o-t,d=l-e,p=u*u+d*d;if((i=+i)<0)throw new Error("negative radius: "+i);null===this._x1?this._+="M"+(this._x1=t)+","+(this._y1=e):1e-6{nRt()});function aRt(t){return me(function(){return t},"constant")}var sRt=b(()=>{me(aRt,"default")});function oRt(t){return t[0]}function lRt(t){return t[1]}var cRt,hRt=b(()=>{me(oRt,"x"),me(lRt,"y")}),uRt=b(()=>{cRt=Array.prototype.slice});function dRt(t){return t.source}function pRt(t){return t.target}function gRt(i){var a=dRt,s=pRt,o=oRt,l=lRt,c=null;function e(){var t,e=cRt.call(arguments),r=a.apply(this,e),n=s.apply(this,e);if(c=c||(t=rRt()),i(c,+o.apply(this,(e[0]=r,e)),+l.apply(this,e),+o.apply(this,(e[0]=n,e)),+l.apply(this,e)),t)return c=null,t+""||null}return me(e,"link"),e.source=function(t){return arguments.length?(a=t,e):a},e.target=function(t){return arguments.length?(s=t,e):s},e.x=function(t){return arguments.length?(o="function"==typeof t?t:aRt(+t),e):o},e.y=function(t){return arguments.length?(l="function"==typeof t?t:aRt(+t),e):l},e.context=function(t){return arguments.length?(c=t??null,e):c},e}function fRt(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function mRt(){return gRt(fRt)}var yRt=b(()=>{iRt(),uRt(),sRt(),hRt(),me(dRt,"linkSource"),me(pRt,"linkTarget"),me(gRt,"link"),me(fRt,"curveHorizontal"),me(mRt,"linkHorizontal")}),vRt=b(()=>{yRt()});function xRt(t){return[t.source.x1,t.y0]}function bRt(t){return[t.target.x0,t.y1]}function wRt(){return mRt().source(xRt).target(bRt)}var kRt,TRt,ERt,CRt,SRt,_Rt,ARt,LRt=b(()=>{vRt(),me(xRt,"horizontalSource"),me(bRt,"horizontalTarget"),me(wRt,"default")}),NRt=b(()=>{KIt(),BIt(),LRt()}),IRt=b(()=>{kRt=class e{static{me(this,"Uid")}static{this.count=0}static next(t){return new e(t+ ++e.count)}constructor(t){this.id=t,this.href="#"+t}toString(){return"url("+this.href+")"}}}),RRt=b(()=>{Tu(),i6(),NRt(),lh(),IRt(),TRt={left:MIt,right:DIt,center:PIt,justify:OIt},ERt=me(function(t,e,r,n){let{securityLevel:i,sankey:a}=O(),s=Ch.sankey,o,l=("sandbox"===i&&(o=H("#i"+e)),H("sandbox"===i?o.nodes()[0].contentDocument.body:"body")),c="sandbox"===i?l.select(`[id="${e}"]`):H(`[id="${e}"]`),h=a?.width??s.width,u=a?.height??s.width,d=a?.useMaxWidth??s.useMaxWidth,p=a?.nodeAlignment??s.nodeAlignment,g=a?.prefix??s.prefix,f=a?.suffix??s.suffix,m=a?.showValues??s.showValues,y=n.db.getGraph(),v=TRt[p],x=(XIt().nodeId(t=>t.id).nodeWidth(10).nodePadding(10+(m?15:0)).nodeAlign(v).extent([[0,0],[h,u]])(y),yx(y5));c.append("g").attr("class","nodes").selectAll(".node").data(y.nodes).join("g").attr("class","node").attr("id",t=>(t.uid=kRt.next("node-")).id).attr("transform",function(t){return"translate("+t.x0+","+t.y0+")"}).attr("x",t=>t.x0).attr("y",t=>t.y0).append("rect").attr("height",t=>t.y1-t.y0).attr("width",t=>t.x1-t.x0).attr("fill",t=>x(t.id));var e=me(({id:t,value:e})=>m?t+` +`+g+Math.round(100*e)/100+f:t,"getText"),n=(c.append("g").attr("class","node-labels").attr("font-size",14).selectAll("text").data(y.nodes).join("text").attr("x",t=>t.x0(t.y1+t.y0)/2).attr("dy",`${m?"0":"0.35"}em`).attr("text-anchor",t=>t.x0(t.uid=kRt.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",t=>t.source.x1).attr("x2",t=>t.target.x0)).append("stop").attr("offset","0%").attr("stop-color",t=>x(t.source.id)),e.append("stop").attr("offset","100%").attr("stop-color",t=>x(t.target.id)));let w;switch(b){case"gradient":w=me(t=>t.uid,"coloring");break;case"source":w=me(t=>x(t.source.id),"coloring");break;case"target":w=me(t=>x(t.target.id),"coloring");break;default:w=b}n.append("path").attr("d",wRt()).attr("stroke",w).attr("stroke-width",t=>Math.max(1,t.width)),Qc(void 0,c,0,d)},"draw"),CRt={draw:ERt}}),MRt=b(()=>{SRt=me(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` +`).trim(),"prepareTextForParsing")}),DRt=b(()=>{_Rt=me(t=>`.label { + font-family: ${t.fontFamily}; + }`,"getStyles"),ARt=_Rt}),ORt={};KBt(ORt,{diagram:()=>BRt});var PRt,BRt,$Rt,FRt,zRt,GRt,URt,qRt,jRt,WRt,YRt,HRt,VRt=b(()=>{TIt(),EIt(),RRt(),MRt(),DRt(),PRt=cIt.parse.bind(cIt),cIt.parse=t=>PRt(SRt(t)),BRt={styles:ARt,parser:cIt,db:wIt,renderer:CRt}}),XRt=b(()=>{rn(),tn(),iS(),ku(),$Rt=We.packet,FRt=class{constructor(){this.packet=[],this.setAccTitle=mh,this.getAccTitle=yh,this.setDiagramTitle=bh,this.getDiagramTitle=wh,this.getAccDescription=xh,this.setAccDescription=vh}static{me(this,"PacketDB")}getConfig(){var t=SC({...$Rt,...ar().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){0{v6t(),t(),k6t(),XRt(),zRt=me((t,e)=>{x6t(t,e);let r=-1,n=[],i=1,a=e.getConfig().bitsPerRow;for(var{start:s,end:o,bits:l,label:c}of t.blocks){if(void 0!==s&&void 0!==o&&o{if(void 0===t.start)throw new Error("start should have been set during first phase");if(void 0===t.end)throw new Error("end should have been set during first phase");if(t.end{var t=await g6t("packet",t),e=URt.parser?.yy;if(!(e instanceof FRt))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");D.debug(t),zRt(t,e)},"parse")}}),ZRt=b(()=>{z7t(),lh(),qRt=me((t,e,r,n)=>{var i,a,s=(n=n.db).getConfig(),{rowHeight:o,paddingY:l,bitWidth:c,bitsPerRow:h}=s,u=n.getPacket(),n=n.getDiagramTitle(),o=(l=o+l)*(u.length+1)-(n?0:o),c=c*h+2,d=M7t(e);d.attr("viewbox",`0 0 ${c} `+o),Zc(d,o,c,s.useMaxWidth);for([i,a]of u.entries())jRt(d,a,i,s);d.append("text").text(n).attr("x",c/2).attr("y",o-l/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),jRt=me((t,e,r,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:s,bitsPerRow:o,showBits:l})=>{var c,h=t.append("g"),u=r*(n+a)+a;for(c of e){var d,p,g=c.start%o*s+1,f=(c.end-c.start+1)*s-i;h.append("rect").attr("x",g).attr("y",u).attr("width",f).attr("height",n).attr("class","packetBlock"),h.append("text").attr("x",g+f/2).attr("y",u+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(c.label),l&&(d=c.end===c.start,p=u-2,h.append("text").attr("x",g+(d?f/2:0)).attr("y",p).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",d?"middle":"start").text(c.start),d||h.append("text").attr("x",g+f).attr("y",p).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(c.end))}},"drawWord"),WRt={draw:qRt}}),QRt=b(()=>{iS(),YRt={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},HRt=me(({packet:t}={})=>` + .packetByte { + font-size: ${(t=SC(YRt,t)).byteFontSize}; + } + .packetByte.start { + fill: ${t.startByteColor}; + } + .packetByte.end { + fill: ${t.endByteColor}; + } + .packetLabel { + fill: ${t.labelColor}; + font-size: ${t.labelFontSize}; + } + .packetTitle { + fill: ${t.titleColor}; + font-size: ${t.titleFontSize}; + } + .packetBlock { + stroke: ${t.blockStrokeColor}; + stroke-width: ${t.blockStrokeWidth}; + fill: ${t.blockFillColor}; + } + `,"styles")}),JRt={};KBt(JRt,{diagram:()=>tMt});var tMt,eMt,rMt,nMt,iMt,aMt,sMt,oMt,lMt,cMt,hMt,uMt,dMt,pMt,gMt,fMt,mMt,yMt=b(()=>{XRt(),KRt(),ZRt(),QRt(),tMt={parser:URt,get db(){return new FRt},renderer:WRt,styles:HRt}}),vMt=b(()=>{rn(),tn(),iS(),ku(),rMt={axes:[],curves:[],options:eMt={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"}},nMt=structuredClone(rMt),iMt=We.radar,aMt=me(()=>SC({...iMt,...ar().radar}),"getConfig"),sMt=me(()=>nMt.axes,"getAxes"),oMt=me(()=>nMt.curves,"getCurves"),lMt=me(()=>nMt.options,"getOptions"),cMt=me(t=>{nMt.axes=t.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),hMt=me(t=>{nMt.curves=t.map(t=>({name:t.name,label:t.label??t.name,entries:uMt(t.entries)}))},"setCurves"),uMt=me(r=>{if(null==r[0].axis)return r.map(t=>t.value);var t=sMt();if(0===t.length)throw new Error("Axes must be populated before curves for reference entries");return t.map(e=>{var t=r.find(t=>t.axis?.$refText===e.name);if(void 0===t)throw new Error("Missing entry for axis "+e.label);return t.value})},"computeCurveEntries"),dMt=me(t=>{t=t.reduce((t,e)=>(t[e.name]=e,t),{}),nMt.options={showLegend:t.showLegend?.value??eMt.showLegend,ticks:t.ticks?.value??eMt.ticks,max:t.max?.value??eMt.max,min:t.min?.value??eMt.min,graticule:t.graticule?.value??eMt.graticule}},"setOptions"),pMt=me(()=>{fh(),nMt=structuredClone(rMt)},"clear"),gMt={getAxes:sMt,getCurves:oMt,getOptions:lMt,setAxes:cMt,setCurves:hMt,setOptions:dMt,getConfig:aMt,clear:pMt,setAccTitle:mh,getAccTitle:yh,setDiagramTitle:bh,getDiagramTitle:wh,getAccDescription:xh,setAccDescription:vh}}),xMt=b(()=>{v6t(),t(),k6t(),vMt(),fMt=me(t=>{x6t(t,gMt);var{axes:t,curves:e,options:r}=t;gMt.setAxes(t),gMt.setCurves(e),gMt.setOptions(r)},"populate"),mMt={parse:me(async t=>{t=await g6t("radar",t),D.debug(t),fMt(t)},"parse")}});function bMt(r,t,e,n,i,a,s){let o=t.length,l=Math.min(s.width,s.height)/2;e.forEach((t,e)=>{t.entries.length===o&&(t=t.entries.map((t,e)=>(e=2*Math.PI*e/o-Math.PI/2,{x:(t=wMt(t,n,i,l))*Math.cos(e),y:t*Math.sin(e)})),"circle"===a?r.append("path").attr("d",kMt(t,s.curveTension)).attr("class","radarCurve-"+e):"polygon"===a&&r.append("polygon").attr("points",t.map(t=>t.x+","+t.y).join(" ")).attr("class","radarCurve-"+e))})}function wMt(t,e,r,n){return n*(Math.min(Math.max(t,e),r)-e)/(r-e)}function kMt(e,r){let n=e.length,i=`M${e[0].x},`+e[0].y;for(let t=0;t{var r=a.append("g").attr("transform",`translate(${n}, ${i+20*e})`);r.append("rect").attr("width",12).attr("height",12).attr("class","radarLegendBox-"+e),r.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(t.label)})}}var EMt,CMt,SMt,_Mt,AMt,LMt,NMt,IMt,RMt=b(()=>{z7t(),EMt=me((t,e,r,n)=>{var i=(n=n.db).getAxes(),a=n.getCurves(),s=n.getOptions(),o=n.getConfig(),n=n.getDiagramTitle(),e=M7t(e),e=CMt(e,o),l=s.max??Math.max(...a.map(t=>Math.max(...t.entries))),c=s.min,h=Math.min(o.width,o.height)/2;SMt(e,i,h,s.ticks,s.graticule),_Mt(e,i,h,o),bMt(e,i,a,c,l,s.graticule,o),TMt(e,a,s.showLegend,o),e.append("text").attr("class","radarTitle").text(n).attr("x",0).attr("y",-o.height/2-o.marginTop)},"draw"),CMt=me((t,e)=>{var r=e.width+e.marginLeft+e.marginRight,n=e.height+e.marginTop+e.marginBottom,i=e.marginLeft+e.width/2,e=e.marginTop+e.height/2;return t.attr("viewbox",`0 0 ${r} `+n).attr("width",r).attr("height",n),t.append("g").attr("transform",`translate(${i}, ${e})`)},"drawFrame"),SMt=me((i,a,s,o,t)=>{if("circle"===t)for(let t=0;t(e=2*e*Math.PI/n-Math.PI/2,r*Math.cos(e)+","+r*Math.sin(e))).join(" ");i.append("polygon").attr("points",t).attr("class","radarGraticule")}}},"drawGraticule"),_Mt=me((e,r,n,i)=>{var a=r.length;for(let t=0;t{iS(),Xr(),rn(),LMt=me((e,r)=>{let n="";for(let t=0;t{var e=SC(Oe(),ar().themeVariables);return{themeVariables:e,radarOptions:SC(e.radar,t)}},"buildRadarStyleOptions"),IMt=me(({radar:t}={})=>{var{themeVariables:t,radarOptions:e}=NMt(t);return` + .radarTitle { + font-size: ${t.fontSize}; + color: ${t.titleColor}; + dominant-baseline: hanging; + text-anchor: middle; + } + .radarAxisLine { + stroke: ${e.axisColor}; + stroke-width: ${e.axisStrokeWidth}; + } + .radarAxisLabel { + dominant-baseline: middle; + text-anchor: middle; + font-size: ${e.axisLabelFontSize}px; + color: ${e.axisColor}; + } + .radarGraticule { + fill: ${e.graticuleColor}; + fill-opacity: ${e.graticuleOpacity}; + stroke: ${e.graticuleColor}; + stroke-width: ${e.graticuleStrokeWidth}; + } + .radarLegendText { + text-anchor: start; + font-size: ${e.legendFontSize}px; + dominant-baseline: hanging; + } + ${LMt(t,e)} + `},"styles")}),DMt={};KBt(DMt,{diagram:()=>OMt});var OMt,PMt,BMt,$Mt=b(()=>{vMt(),xMt(),RMt(),MMt(),OMt={parser:mMt,db:gMt,renderer:AMt,styles:IMt}}),FMt=b(()=>{function t(){this.yy={}}var e=me(function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},"o"),r=[1,15],n=[1,7],i=[1,13],a=[1,14],s=[1,19],o=[1,16],l=[1,17],c=[1,18],h=[8,30],u=[8,10,21,28,29,30,31,39,43,46],d=[1,23],p=[1,24],g=[8,10,15,16,21,28,29,30,31,39,43,46],f=[8,10,15,16,21,27,28,29,30,31,39,43,46],m=[1,49],h={trace:me(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:me(function(t,e,r,n,i,a,s){var o=a.length-1;switch(i){case 4:n.getLogger().debug("Rule: separator (NL) ");break;case 5:n.getLogger().debug("Rule: separator (Space) ");break;case 6:n.getLogger().debug("Rule: separator (EOF) ");break;case 7:n.getLogger().debug("Rule: hierarchy: ",a[o-1]),n.setHierarchy(a[o-1]);break;case 8:n.getLogger().debug("Stop NL ");break;case 9:n.getLogger().debug("Stop EOF ");break;case 10:n.getLogger().debug("Stop NL2 ");break;case 11:n.getLogger().debug("Stop EOF2 ");break;case 12:n.getLogger().debug("Rule: statement: ",a[o]),"number"==typeof a[o].length?this.$=a[o]:this.$=[a[o]];break;case 13:n.getLogger().debug("Rule: statement #2: ",a[o-1]),this.$=[a[o-1]].concat(a[o]);break;case 14:n.getLogger().debug("Rule: link: ",a[o],t),this.$={edgeTypeStr:a[o],label:""};break;case 15:n.getLogger().debug("Rule: LABEL link: ",a[o-3],a[o-1],a[o]),this.$={edgeTypeStr:a[o],label:a[o-1]};break;case 18:var l=parseInt(a[o]),c=n.generateId();this.$={id:c,type:"space",label:"",width:l,children:[]};break;case 23:n.getLogger().debug("Rule: (nodeStatement link node) ",a[o-2],a[o-1],a[o]," typestr: ",a[o-1].edgeTypeStr),c=n.edgeStrToEdgeData(a[o-1].edgeTypeStr),this.$=[{id:a[o-2].id,label:a[o-2].label,type:a[o-2].type,directions:a[o-2].directions},{id:a[o-2].id+"-"+a[o].id,start:a[o-2].id,end:a[o].id,label:a[o-1].label,type:"edge",directions:a[o].directions,arrowTypeEnd:c,arrowTypeStart:"arrow_open"},{id:a[o].id,label:a[o].label,type:n.typeStr2Type(a[o].typeStr),directions:a[o].directions}];break;case 24:n.getLogger().debug("Rule: nodeStatement (abc88 node size) ",a[o-1],a[o]),this.$={id:a[o-1].id,label:a[o-1].label,type:n.typeStr2Type(a[o-1].typeStr),directions:a[o-1].directions,widthInColumns:parseInt(a[o],10)};break;case 25:n.getLogger().debug("Rule: nodeStatement (node) ",a[o]),this.$={id:a[o].id,label:a[o].label,type:n.typeStr2Type(a[o].typeStr),directions:a[o].directions,widthInColumns:1};break;case 26:n.getLogger().debug("APA123",this||"na"),n.getLogger().debug("COLUMNS: ",a[o]),this.$={type:"column-setting",columns:"auto"===a[o]?-1:parseInt(a[o])};break;case 27:n.getLogger().debug("Rule: id-block statement : ",a[o-2],a[o-1]),n.generateId(),this.$={...a[o-2],type:"composite",children:a[o-1]};break;case 28:n.getLogger().debug("Rule: blockStatement : ",a[o-2],a[o-1],a[o]),l=n.generateId(),this.$={id:l,type:"composite",label:"",children:a[o-1]};break;case 29:n.getLogger().debug("Rule: node (NODE_ID separator): ",a[o]),this.$={id:a[o]};break;case 30:n.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",a[o-1],a[o]),this.$={id:a[o-1],label:a[o].label,typeStr:a[o].typeStr,directions:a[o].directions};break;case 31:n.getLogger().debug("Rule: dirList: ",a[o]),this.$=[a[o]];break;case 32:n.getLogger().debug("Rule: dirList: ",a[o-1],a[o]),this.$=[a[o-1]].concat(a[o]);break;case 33:n.getLogger().debug("Rule: nodeShapeNLabel: ",a[o-2],a[o-1],a[o]),this.$={typeStr:a[o-2]+a[o],label:a[o-1]};break;case 34:n.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",a[o-3],a[o-2]," #3:",a[o-1],a[o]),this.$={typeStr:a[o-3]+a[o],label:a[o-2],directions:a[o-1]};break;case 35:case 36:this.$={type:"classDef",id:a[o-1].trim(),css:a[o].trim()};break;case 37:this.$={type:"applyClass",id:a[o-1].trim(),styleClass:a[o].trim()};break;case 38:this.$={type:"applyStyles",id:a[o-1].trim(),stylesStr:a[o].trim()}}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:r,11:3,13:4,19:5,20:6,21:n,22:8,23:9,24:10,25:11,26:12,28:i,29:a,31:s,39:o,43:l,46:c},{8:[1,20]},e(h,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:r,21:n,28:i,29:a,31:s,39:o,43:l,46:c}),e(u,[2,16],{14:22,15:d,16:p}),e(u,[2,17]),e(u,[2,18]),e(u,[2,19]),e(u,[2,20]),e(u,[2,21]),e(u,[2,22]),e(g,[2,25],{27:[1,25]}),e(u,[2,26]),{19:26,26:12,31:s},{10:r,11:27,13:4,19:5,20:6,21:n,22:8,23:9,24:10,25:11,26:12,28:i,29:a,31:s,39:o,43:l,46:c},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},e(f,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},e(h,[2,13]),{26:35,31:s},{31:[2,14]},{17:[1,36]},e(g,[2,24]),{10:r,11:37,13:4,14:22,15:d,16:p,19:5,20:6,21:n,22:8,23:9,24:10,25:11,26:12,28:i,29:a,31:s,39:o,43:l,46:c},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},e(f,[2,30]),{18:[1,43]},{18:[1,44]},e(g,[2,23]),{18:[1,45]},{30:[1,46]},e(u,[2,28]),e(u,[2,35]),e(u,[2,36]),e(u,[2,37]),e(u,[2,38]),{36:[1,47]},{33:48,34:m},{15:[1,50]},e(u,[2,27]),e(f,[2,33]),{38:[1,51]},{33:52,34:m,38:[2,31]},{31:[2,15]},e(f,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:me(function(t,e){var r;if(!e.recoverable)throw(r=new Error(t)).hash=e,r;this.trace(t)},"parseError"),parse:me(function(t){var e,r=this,n=[0],i=[],a=[null],s=[],o=this.table,l="",c=0,h=0,u=0,d=1,p=s.slice.call(arguments,1),g=Object.create(this.lexer),f={yy:{}};for(e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,e)&&(f.yy[e]=this.yy[e]);g.setInput(t,f.yy),f.yy.lexer=g,f.yy.parser=this,"u"e[0].length)){if(e=r,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:me(function(){return this.next()||this.lex()},"lex"),begin:me(function(t){this.conditionStack.push(t)},"begin"),popState:me(function(){return 0"),"NODE_DEND";case 53:return this.popState(),t.getLogger().debug("Lex: ]"),"NODE_DEND";case 54:return t.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;case 55:return t.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;case 56:return t.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;case 57:return t.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 58:return t.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;case 59:case 60:case 61:return t.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 62:return t.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;case 63:return t.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;case 64:return t.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 65:case 66:case 67:case 68:case 69:case 70:case 71:return this.pushState("NODE"),35;case 72:return t.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;case 73:return this.pushState("BLOCK_ARROW"),t.getLogger().debug("LEX ARR START"),37;case 74:return t.getLogger().debug("Lex: NODE_ID",e.yytext),31;case 75:return t.getLogger().debug("Lex: EOF",e.yytext),8;case 76:case 77:this.pushState("md_string");break;case 78:return"NODE_DESCR";case 79:this.popState();break;case 80:t.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:t.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return t.getLogger().debug("LEX: NODE_DESCR:",e.yytext),"NODE_DESCR";case 83:t.getLogger().debug("LEX POPPING"),this.popState();break;case 84:t.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (right): dir:",e.yytext),"DIR";case 86:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (left):",e.yytext),"DIR";case 87:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (x):",e.yytext),"DIR";case 88:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (y):",e.yytext),"DIR";case 89:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (up):",e.yytext),"DIR";case 90:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (down):",e.yytext),"DIR";case 91:return e.yytext="]>",t.getLogger().debug("Lex (ARROW_DIR end):",e.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";case 92:return t.getLogger().debug("Lex: LINK","#"+e.yytext+"#"),15;case 93:case 94:case 95:return t.getLogger().debug("Lex: LINK",e.yytext),15;case 96:case 97:case 98:return t.getLogger().debug("Lex: START_LINK",e.yytext),this.pushState("LLABEL"),16;case 99:this.pushState("md_string");break;case 100:return t.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";case 101:return this.popState(),t.getLogger().debug("Lex: LINK","#"+e.yytext+"#"),15;case 102:case 103:return this.popState(),t.getLogger().debug("Lex: LINK",e.yytext),15;case 104:return t.getLogger().debug("Lex: COLON",e.yytext),e.yytext=e.yytext.slice(1),27}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}};h.lexer=r,me(t,"Parser"),(PMt=new((t.prototype=h).Parser=t)).parser=PMt,BMt=PMt});function zMt(t){switch(D.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return D.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function GMt(t){return"=="!==(D.debug("typeStr2Type",t),t)?"normal":"thick"}function UMt(t){switch(t.replace(/^[\s-]+|[\s-]+$/g,"")){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}var qMt,jMt,WMt,YMt,HMt,VMt,XMt,KMt,ZMt,QMt,JMt,tDt,eDt,rDt,nDt,iDt,aDt,sDt,oDt,lDt,cDt,hDt,uDt,dDt,pDt,gDt,fDt,mDt,yDt,vDt,xDt,bDt,wDt,kDt,TDt,EDt,CDt,SDt,_Dt,ADt,LDt=b(()=>{yz(),rn(),Tu(),t(),Oc(),ku(),qMt=new Map,jMt=[],WMt=new Map,YMt=O(),HMt=new Map,VMt=me(t=>L.sanitizeText(t,YMt),"sanitizeText"),XMt=me(function(t,e=""){let r=HMt.get(t);r||(r={id:t,styles:[],textStyles:[]},HMt.set(t,r)),e?.split(",").forEach(t=>{var e=t.replace(/([^;]*);/,"$1").trim();RegExp("color").exec(t)&&(t=e.replace("fill","bgFill").replace("color","fill"),r.textStyles.push(t)),r.styles.push(e)})},"addStyleClass"),KMt=me(function(t,e=""){t=qMt.get(t),null!=e&&(t.styles=e.split(","))},"addStyle2Node"),ZMt=me(function(t,r){t.split(",").forEach(function(t){let e=qMt.get(t);void 0===e&&(t=t.trim(),e={id:t,type:"na",children:[]},qMt.set(t,e)),e.classes||(e.classes=[]),e.classes.push(r)})},"setCssClass"),QMt=me((t,e)=>{var r,n=[],i=(t=t.flat()).find(t=>"column-setting"===t?.type)?.columns??-1;for(r of t)if("number"==typeof i&&0i&&D.warn(`Block ${r.id} width ${r.widthInColumns} exceeds configured column width `+i),r.label&&(r.label=VMt(r.label)),"classDef"===r.type)XMt(r.id,r.css);else if("applyClass"===r.type)ZMt(r.id,r?.styleClass??"");else if("applyStyles"===r.type)r?.stylesStr&&KMt(r.id,r?.stylesStr);else if("column-setting"===r.type)e.columns=r.columns??-1;else if("edge"===r.type){var a=(WMt.get(r.id)??0)+1;WMt.set(r.id,a),r.id=a+"-"+r.id,jMt.push(r)}else if(r.label||("composite"===r.type?r.label="":r.label=r.id),void 0===(a=qMt.get(r.id))?qMt.set(r.id,r):("na"!==r.type&&(a.type=r.type),r.label!==r.id&&(a.label=r.label)),r.children&&QMt(r.children,r),"space"===r.type){var s=r.width??1;for(let t=0;t{D.debug("Clear called"),fh(),tDt={id:"root",type:"composite",children:[],columns:-1},qMt=new Map([["root",tDt]]),JMt=[],HMt=new Map,jMt=[],WMt=new Map},"clear"),me(zMt,"typeStr2Type"),me(GMt,"edgeTypeStr2Type"),me(UMt,"edgeStrToEdgeData"),rDt=0,nDt=me(()=>(rDt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+rDt),"generateId"),iDt=me(t=>{tDt.children=t,QMt(t,tDt),JMt=tDt.children},"setHierarchy"),aDt=me(t=>(t=qMt.get(t))?t.columns||(t.children?t.children.length:-1):-1,"getColumns"),sDt=me(()=>[...qMt.values()],"getBlocksFlat"),oDt=me(()=>JMt||[],"getBlocks"),lDt=me(()=>jMt,"getEdges"),cDt=me(t=>qMt.get(t),"getBlock"),hDt=me(t=>{qMt.set(t.id,t)},"setBlock"),dDt=me(()=>D,"getLogger"),uDt=me(function(){return HMt},"getClasses"),dDt={getConfig:me(()=>ar().block,"getConfig"),typeStr2Type:zMt,edgeTypeStr2Type:GMt,edgeStrToEdgeData:UMt,getLogger:dDt,getBlocksFlat:sDt,getBlocks:oDt,getEdges:lDt,setHierarchy:iDt,getBlock:cDt,setBlock:hDt,getColumns:aDt,getClasses:uDt,clear:eDt,generateId:nDt},pDt=dDt}),NDt=b(()=>{jr(),gct(),gDt=me((t,e)=>{var r=(i=ce)(t,"r"),n=i(t,"g"),i=i(t,"b");return oe(r,n,i,e)},"fade"),fDt=me(t=>`.label { + font-family: ${t.fontFamily}; + color: ${t.nodeTextColor||t.textColor}; + } + .cluster-label text { + fill: ${t.titleColor}; + } + .cluster-label span,p { + color: ${t.titleColor}; + } + + + + .label text,span,p { + fill: ${t.nodeTextColor||t.textColor}; + color: ${t.nodeTextColor||t.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${t.mainBkg}; + stroke: ${t.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: ${t.arrowheadColor}; + } + + .edgePath .path { + stroke: ${t.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${t.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${t.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${t.edgeLabelBackground}; + fill: ${t.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${gDt(t.edgeLabelBackground,.5)}; + // background-color: + } + + .node .cluster { + // fill: ${gDt(t.mainBkg,.5)}; + fill: ${gDt(t.clusterBkg,.5)}; + stroke: ${gDt(t.clusterBorder,.2)}; + box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; + stroke-width: 1px; + } + + .cluster text { + fill: ${t.titleColor}; + } + + .cluster span,p { + color: ${t.titleColor}; + } + /* .cluster div { + color: ${t.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${t.fontFamily}; + font-size: 12px; + background: ${t.tertiaryColor}; + border: 1px solid ${t.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; + } + ${ict()} +`,"getStyles"),mDt=fDt}),IDt=b(()=>{t(),yDt=me((e,t,r,n)=>{t.forEach(t=>{_Dt[t](e,r,n)})},"insertMarkers"),vDt=me((t,e,r)=>{D.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),xDt=me((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).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"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).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")},"composition"),bDt=me((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).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"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).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"),wDt=me((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).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"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).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")},"dependency"),kDt=me((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),TDt=me((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",6).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"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).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")},"point"),EDt=me((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).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"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).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")},"circle"),CDt=me((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).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"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).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")},"cross"),SDt=me((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-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")},"barb"),_Dt={extension:vDt,composition:xDt,aggregation:bDt,dependency:wDt,lollipop:kDt,point:TDt,circle:EDt,cross:CDt,barb:SDt},ADt=yDt});function RDt(t,e){if(0===t||!Number.isInteger(t))throw new Error("Columns must be an integer !== 0.");if(e<0||!Number.isInteger(e))throw new Error("Position must be a non-negative integer."+e);return t<0?{px:e,py:0}:1===t?{px:0,py:e}:{px:e%t,py:Math.floor(e/t)}}function MDt(s,o,l=0,c=0){if(D.debug("setBlockSizes abc95 (start)",s.id,s?.size?.x,"block width =",s?.size,"siblingWidth",l),s?.size?.width||(s.size={width:l,height:c,x:0,y:0}),0layoutBlocks) ${i.id} x: ${i?.size?.x} y: ${i?.size?.y} width: `+i?.size?.width);var s=i.columns??-1;if(D.debug("layoutBlocks columns abc95",i.id,"=>",s,i),i.children&&0 x:${o.size.x} y:${o.size.y} ${o.widthInColumns} (width * (child?.w || 1)) / 2 `+c*(o?.widthInColumns??1)/2),r=o.size.x+u,o.size.y=l.size.y-l.size.height/2+d*(h+BDt)+h/2+BDt,D.debug(`abc88 layout blocks (calc) px, pyid:${o.id}startingPosX${r}${BDt}${u}=>x:${o.size.x}y:${o.size.y}${o.widthInColumns}(width * (child?.w || 1)) / 2`+c*(o?.widthInColumns??1)/2)),o.children&&DDt(o,a);let t=o?.widthInColumns??1;0{t(),Tu(),BDt=O()?.block?.padding??8,me(RDt,"calculateBlockPosition"),$Dt=me(t=>{let e=0,r=0;for(var n of t.children){var{width:i,height:a,x:s,y:o}=n.size??{width:0,height:0,x:0,y:0};D.debug("getMaxChildSize abc95 child:",n.id,"width:",i,"height:",a,"x:",s,"y:",o,n.type),"space"!==n.type&&(i>e&&(e=i/(t.widthInColumns??1)),a>r)&&(r=a)}return{width:e,height:r}},"getMaxChildSize"),me(MDt,"setBlockSizes"),me(DDt,"layoutBlocks"),me(ODt,"findBounds"),me(PDt,"layout")});function zDt(t,e){e&&t.attr("style",e)}function GDt(t,e){var r=H(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),n=r.append("xhtml:div"),i=t.label,a=t.isNode?"nodeLabel":"edgeLabel",s=n.append("span");return s.html(lc(i,e)),zDt(s,t.labelStyle),s.attr("class",a),zDt(n,t.labelStyle),n.style("display","inline-block"),n.style("white-space","nowrap"),n.attr("xmlns","http://www.w3.org/1999/xhtml"),r.node()}var UDt,qDt,jDt,WDt,YDt,HDt=b(()=>{i6(),Tu(),Oc(),t(),JL(),iS(),me(zDt,"applyStyle"),me(GDt,"addHtmlLabel"),UDt=me(async(t,e,r,n)=>{let i=t||"";if("object"==typeof i&&(i=i[0]),t=O(),fc(t.flowchart.htmlLabels))return i=i.replace(/\\n|\n/g,"
"),D.debug("vertexText"+i),GDt({isNode:n,label:await ZL(rS(i)),labelStyle:e.replace("fill:","color:")},t);var a,s=document.createElementNS("http://www.w3.org/2000/svg","text");s.setAttribute("style",e.replace("color:","fill:"));for(a of"string"==typeof i?i.split(/\\n|\n|/gi):Array.isArray(i)?i:[]){var o=document.createElementNS("http://www.w3.org/2000/svg","tspan");o.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),o.setAttribute("dy","1em"),o.setAttribute("x","0"),r?o.setAttribute("class","title-row"):o.setAttribute("class","row"),o.textContent=a.trim(),s.appendChild(o)}return s},"createLabel"),qDt=UDt}),VDt=b(()=>{t(),jDt=me((t,e,r,n,i)=>{e.arrowTypeStart&&YDt(t,"start",e.arrowTypeStart,r,n,i),e.arrowTypeEnd&&YDt(t,"end",e.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),WDt={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},YDt=me((t,e,r,n,i,a)=>{var s=WDt[r];s?t.attr("marker-"+e,`url(${n}#${i}_${a}-${s}${"start"===e?"Start":"End"})`):D.warn("Unknown arrow type: "+r)},"addEdgeMarker")});function XDt(t,e){O().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}var KDt,ZDt,QDt,JDt,tOt,eOt,rOt,nOt,iOt,aOt,sOt=b(()=>{t(),HDt(),JL(),i6(),Tu(),iS(),Oc(),gO(),aO(),VDt(),KDt={},ZDt={},QDt=me(async(t,e)=>{var r,n=O(),i=fc(n.flowchart.htmlLabels),n="markdown"===e.labelType?QL(t,e.label,{style:e.labelStyle,useHtmlLabels:i,addSvgBackground:!0},n):await qDt(e.label,e.labelStyle),a=t.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label");s.node().appendChild(n);let o=n.getBBox();i&&(i=n.children[0],r=H(n),o=i.getBoundingClientRect(),r.attr("width",o.width),r.attr("height",o.height)),s.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),KDt[e.id]=a,e.width=o.width,e.height=o.height;let l;return e.startLabelLeft&&(i=await qDt(e.startLabelLeft,e.labelStyle),s=(r=t.insert("g").attr("class","edgeTerminals")).insert("g").attr("class","inner"),l=s.node().appendChild(i),a=i.getBBox(),s.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),ZDt[e.id]||(ZDt[e.id]={}),ZDt[e.id].startLeft=r,XDt(l,e.startLabelLeft)),e.startLabelRight&&(i=await qDt(e.startLabelRight,e.labelStyle),a=(s=t.insert("g").attr("class","edgeTerminals")).insert("g").attr("class","inner"),l=s.node().appendChild(i),a.node().appendChild(i),r=i.getBBox(),a.attr("transform","translate("+-r.width/2+", "+-r.height/2+")"),ZDt[e.id]||(ZDt[e.id]={}),ZDt[e.id].startRight=s,XDt(l,e.startLabelRight)),e.endLabelLeft&&(i=await qDt(e.endLabelLeft,e.labelStyle),r=(a=t.insert("g").attr("class","edgeTerminals")).insert("g").attr("class","inner"),l=r.node().appendChild(i),s=i.getBBox(),r.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),a.node().appendChild(i),ZDt[e.id]||(ZDt[e.id]={}),ZDt[e.id].endLeft=a,XDt(l,e.endLabelLeft)),e.endLabelRight&&(r=await qDt(e.endLabelRight,e.labelStyle),i=(s=t.insert("g").attr("class","edgeTerminals")).insert("g").attr("class","inner"),l=i.node().appendChild(r),a=r.getBBox(),i.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),s.node().appendChild(r),ZDt[e.id]||(ZDt[e.id]={}),ZDt[e.id].endRight=s,XDt(l,e.endLabelRight)),n},"insertEdgeLabel"),me(XDt,"setTerminalWidth"),JDt=me((n,i)=>{D.debug("Moving label abc88 ",n.id,n.label,KDt[n.id],i);var a,s=i.updatedPath||i.originalPath,o=O(),o=YD(o).subGraphTitleTotalMargin;if(n.label){let t=KDt[n.id],e=n.x,r=n.y;s&&(a=tS.calcLabelPosition(s),D.debug("Moving label "+n.label+" from (",e,",",r,") to (",a.x,",",a.y,") abc88"),i.updatedPath)&&(e=a.x,r=a.y),t.attr("transform",`translate(${e}, ${r+o/2})`)}if(n.startLabelLeft){let t=ZDt[n.id].startLeft,e=n.x,r=n.y;s&&(i=tS.calcTerminalLabelPosition(n.arrowTypeStart?10:0,"start_left",s),e=i.x,r=i.y),t.attr("transform",`translate(${e}, ${r})`)}if(n.startLabelRight){let t=ZDt[n.id].startRight,e=n.x,r=n.y;s&&(a=tS.calcTerminalLabelPosition(n.arrowTypeStart?10:0,"start_right",s),e=a.x,r=a.y),t.attr("transform",`translate(${e}, ${r})`)}if(n.endLabelLeft){let t=ZDt[n.id].endLeft,e=n.x,r=n.y;s&&(o=tS.calcTerminalLabelPosition(n.arrowTypeEnd?10:0,"end_left",s),e=o.x,r=o.y),t.attr("transform",`translate(${e}, ${r})`)}if(n.endLabelRight){let t=ZDt[n.id].endRight,e=n.x,r=n.y;s&&(i=tS.calcTerminalLabelPosition(n.arrowTypeEnd?10:0,"end_right",s),e=i.x,r=i.y),t.attr("transform",`translate(${e}, ${r})`)}},"positionEdgeLabel"),tOt=me((t,e)=>{var r=t.x,n=t.y,r=Math.abs(e.x-r),e=Math.abs(e.y-n);return t.width/2<=r||t.height/2<=e},"outsideNode"),eOt=me((t,n,i)=>{D.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(n)} + insidePoint : ${JSON.stringify(i)} + node : x:${t.x} y:${t.y} w:${t.width} h:`+t.height);let a=t.x,e=t.y,r=Math.abs(a-i.x),s=t.width/2,o=i.xMath.abs(a-n.x)*l)return t=i.y{D.debug("abc88 cutPathAtIntersect",t,n);let i=[],a=t[0],s=!1;return t.forEach(t=>{if(tOt(n,t)||s)a=t,s||i.push(t);else{let e=eOt(n,a,t),r=!1;i.forEach(t=>{r=r||t.x===e.x&&t.y===e.y}),i.some(t=>t.x===e.x&&t.y===e.y)||i.push(e),s=!0}}),i},"cutPathAtIntersect"),nOt=me(function(t,e,r,n,i,a,s){let o=r.points,l=(D.debug("abc88 InsertEdge: edge=",r,"e=",e),!1),c=a.node(e.v),h=a.node(e.w),u=(h?.intersect&&c?.intersect&&((o=o.slice(1,r.points.length-1)).unshift(c.intersect(o[0])),o.push(h.intersect(o[o.length-1]))),r.toCluster&&(D.debug("to cluster abc88",n[r.toCluster]),o=rOt(r.points,n[r.toCluster].node),l=!0),r.fromCluster&&(D.debug("from cluster abc88",n[r.fromCluster]),o=rOt(o.reverse(),n[r.fromCluster].node).reverse(),l=!0),o.filter(t=>!Number.isNaN(t.y))),d=v3,{x:p,y:g}=(!r.curve||"graph"!==i&&"flowchart"!==i||(d=r.curve),hO(r)),f=r3().x(p).y(g).curve(d),m;switch(r.thickness){case"normal":m="edge-thickness-normal";break;case"thick":case"invisible":m="edge-thickness-thick";break;default:m=""}switch(r.pattern){case"solid":m+=" edge-pattern-solid";break;case"dotted":m+=" edge-pattern-dotted";break;case"dashed":m+=" edge-pattern-dashed"}let y=t.append("path").attr("d",f(u)).attr("id",r.id).attr("class"," "+m+(r.classes?" "+r.classes:"")).attr("style",r.style),v="";return(O().flowchart.arrowMarkerAbsolute||O().state.arrowMarkerAbsolute)&&(v=gc(!0)),jDt(y,r,v,s,i),a={},l&&(a.updatedPath=o),a.originalPath=r.points,a},"insertEdge")}),oOt=b(()=>{iOt=me(t=>{var e,r=new Set;for(e of t)switch(e){case"x":r.add("right"),r.add("left");break;case"y":r.add("up"),r.add("down");break;default:r.add(e)}return r},"expandAndDeduplicateDirections"),aOt=me((t,e,r)=>{var t=iOt(t),n=e.height+2*r.padding,i=n/2,e=e.width+2*i+r.padding,r=r.padding/2;return t.has("right")&&t.has("left")&&t.has("up")&&t.has("down")?[{x:0,y:0},{x:i,y:0},{x:e/2,y:2*r},{x:e-i,y:0},{x:e,y:0},{x:e,y:-n/3},{x:e+2*r,y:-n/2},{x:e,y:-2*n/3},{x:e,y:-n},{x:e-i,y:-n},{x:e/2,y:-n-2*r},{x:i,y:-n},{x:0,y:-n},{x:0,y:-2*n/3},{x:-2*r,y:-n/2},{x:0,y:-n/3}]:t.has("right")&&t.has("left")&&t.has("up")?[{x:i,y:0},{x:e-i,y:0},{x:e,y:-n/2},{x:e-i,y:-n},{x:i,y:-n},{x:0,y:-n/2}]:t.has("right")&&t.has("left")&&t.has("down")?[{x:0,y:0},{x:i,y:-n},{x:e-i,y:-n},{x:e,y:0}]:t.has("right")&&t.has("up")&&t.has("down")?[{x:0,y:0},{x:e,y:-i},{x:e,y:i-n},{x:0,y:-n}]:t.has("left")&&t.has("up")&&t.has("down")?[{x:e,y:0},{x:0,y:-i},{x:0,y:i-n},{x:e,y:-n}]:t.has("right")&&t.has("left")?[{x:i,y:0},{x:i,y:-r},{x:e-i,y:-r},{x:e-i,y:0},{x:e,y:-n/2},{x:e-i,y:-n},{x:e-i,y:r-n},{x:i,y:r-n},{x:i,y:-n},{x:0,y:-n/2}]:t.has("up")&&t.has("down")?[{x:e/2,y:0},{x:0,y:-r},{x:i,y:-r},{x:i,y:r-n},{x:0,y:r-n},{x:e/2,y:-n},{x:e,y:r-n},{x:e-i,y:r-n},{x:e-i,y:-r},{x:e,y:-r}]:t.has("right")&&t.has("up")?[{x:0,y:0},{x:e,y:-i},{x:0,y:-n}]:t.has("right")&&t.has("down")?[{x:0,y:0},{x:e,y:0},{x:0,y:-n}]:t.has("left")&&t.has("up")?[{x:e,y:0},{x:0,y:-i},{x:e,y:-n}]:t.has("left")&&t.has("down")?[{x:e,y:0},{x:0,y:0},{x:e,y:-n}]:t.has("right")?[{x:i,y:-r},{x:i,y:-r},{x:e-i,y:-r},{x:e-i,y:0},{x:e,y:-n/2},{x:e-i,y:-n},{x:e-i,y:r-n},{x:i,y:r-n},{x:i,y:r-n}]:t.has("left")?[{x:i,y:0},{x:i,y:-r},{x:e-i,y:-r},{x:e-i,y:r-n},{x:i,y:r-n},{x:i,y:-n},{x:0,y:-n/2}]:t.has("up")?[{x:i,y:-r},{x:i,y:r-n},{x:0,y:r-n},{x:e/2,y:-n},{x:e,y:r-n},{x:e-i,y:r-n},{x:e-i,y:-r}]:t.has("down")?[{x:e/2,y:0},{x:0,y:-r},{x:i,y:-r},{x:i,y:r-n},{x:e-i,y:r-n},{x:e-i,y:-r},{x:e,y:-r}]:[{x:0,y:0}]},"getArrowPoints")});function lOt(t,e){return t.intersect(e)}var cOt,hOt=b(()=>{me(lOt,"intersectNode"),cOt=lOt});function uOt(t,e,r,n){var i=t.x,t=t.y,a=i-n.x,s=t-n.y,o=Math.sqrt(e*e*s*s+r*r*a*a),a=Math.abs(e*r*a/o),e=(n.x{me(uOt,"intersectEllipse"),dOt=uOt});function gOt(t,e,r){return dOt(t,e,e,r)}var fOt,mOt=b(()=>{pOt(),me(gOt,"intersectCircle"),fOt=gOt});function yOt(t,e,r,n){var i,a,s,o,l=e.y-t.y,c=t.x-e.x,h=e.x*t.y-t.x*e.y,u=l*r.x+c*r.y+h,d=l*n.x+c*n.y+h;if(!(0!=u&&0!=d&&0{me(yOt,"intersectLine"),me(vOt,"sameSign"),xOt=yOt});function wOt(t,e,n){var r=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach(function(t){s=Math.min(s,t.x),o=Math.min(o,t.y)}):(s=Math.min(s,e.x),o=Math.min(o,e.y));for(var l=r-t.width/2-s,c=i-t.height/2-o,h=0;h{bOt(),me(kOt=wOt,"intersectPolygon")}),_Ot=b(()=>{TOt=me((t,e)=>{var r,n=t.x,i=t.y,a=e.x-n,e=e.y-i,s=t.width/2,t=t.height/2,t=Math.abs(e)*s>Math.abs(a)*t?(e<0&&(t=-t),r=0==e?0:t*a/e,t):(r=s=a<0?-s:s,0==a?0:s*e/a);return{x:n+r,y:i+t}},"intersectRect"),EOt=TOt}),AOt=b(()=>{hOt(),mOt(),pOt(),SOt(),_Ot(),COt={node:cOt,circle:fOt,ellipse:dOt,polygon:kOt,rect:EOt}});function LOt(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var NOt,IOt,ROt,MOt,DOt=b(()=>{HDt(),JL(),Tu(),i6(),Oc(),iS(),NOt=me(async(t,e,r,i)=>{let a=O(),n,s=e.useHtmlLabels||fc(a.flowchart.htmlLabels),o=(n=r||"node default",t.insert("g").attr("class",n).attr("id",e.domId||e.id)),l=o.insert("g").attr("class","label").attr("style",e.labelStyle),c,h=(c=void 0===e.labelText?"":"string"==typeof e.labelText?e.labelText:e.labelText[0],l.node()),u,d=(u="markdown"===e.labelType?QL(l,lc(rS(c),a),{useHtmlLabels:s,width:e.width||a.flowchart.wrappingWidth,classes:"markdown-node-label"},a):h.appendChild(await qDt(lc(rS(c),a),e.labelStyle,!1,i))).getBBox(),p=e.padding/2;if(fc(a.flowchart.htmlLabels)){if(r=u.children[0],t=H(u),i=r.getElementsByTagName("img")){let n=""===c.replace(/]*>/g,"").trim();await Promise.all([...i].map(r=>new Promise(e=>{function t(){var t;r.style.display="flex",r.style.flexDirection="column",n?(t=a.fontSize||window.getComputedStyle(document.body).fontSize,t=5*parseInt(t,10)+"px",r.style.minWidth=t,r.style.maxWidth=t):r.style.width="100%",e(r)}me(t,"setupImage"),setTimeout(()=>{r.complete&&t()}),r.addEventListener("error",t),r.addEventListener("load",t)})))}d=r.getBoundingClientRect(),t.attr("width",d.width),t.attr("height",d.height)}return s?l.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"):l.attr("transform","translate(0, "+-d.height/2+")"),e.centerLabel&&l.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),l.insert("rect",":first-child"),{shapeSvg:o,bbox:d,halfPadding:p,label:l}},"labelHelper"),IOt=me((t,e)=>{e=e.node().getBBox(),t.width=e.width,t.height=e.height},"updateNodeBounds"),me(LOt,"insertPolygonShape")}),OOt=b(()=>{DOt(),t(),Tu(),AOt(),ROt=me(async(t,e)=>{e.useHtmlLabels||O().flowchart.htmlLabels||(e.centerLabel=!0);var{shapeSvg:t,bbox:r,halfPadding:n}=await NOt(t,e,"node "+e.classes,!0),i=(D.info("Classes = ",e.classes),t.insert("rect",":first-child"));return i.attr("rx",e.rx).attr("ry",e.ry).attr("x",-r.width/2-n).attr("y",-r.height/2-n).attr("width",r.width+e.padding).attr("height",r.height+e.padding),IOt(e,i),e.intersect=function(t){return COt.rect(e,t)},t},"note"),MOt=ROt});function POt(t,e,r,n){let i=[],a=me(t=>{i.push(t,0)},"addBorder"),s=me(t=>{i.push(0,t)},"skipBorder");(e.includes("t")?(D.debug("add top border"),a):s)(r),(e.includes("r")?(D.debug("add right border"),a):s)(n),(e.includes("b")?(D.debug("add bottom border"),a):s)(r),(e.includes("l")?(D.debug("add left border"),a):s)(n),t.attr("stroke-dasharray",i.join(" "))}var BOt,$Ot,FOt,zOt,GOt,UOt,qOt,jOt,WOt,YOt,HOt,VOt,XOt,KOt,ZOt,QOt,JOt,tPt,ePt,rPt,nPt,iPt,aPt,sPt,oPt,lPt,cPt,hPt,uPt,dPt=b(()=>{i6(),Tu(),Oc(),t(),oOt(),HDt(),AOt(),OOt(),DOt(),BOt=me(t=>t?" "+t:"","formatClass"),$Ot=me((t,e)=>`${e||"node default"}${BOt(t.classes)} `+BOt(t.class),"getClassesFromNode"),FOt=me(async(t,e)=>{let{shapeSvg:r,bbox:n}=await NOt(t,e,$Ot(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=i+a,o=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];return D.info("Question main (Circle)"),(t=LOt(r,s,s,o)).attr("style",e.style),IOt(e,t),e.intersect=function(t){return D.warn("Intersect called"),COt.polygon(e,o,t)},r},"question"),zOt=me((t,e)=>((t=t.insert("g").attr("class","node default").attr("id",e.domId||e.id)).insert("polygon",":first-child").attr("points",[{x:0,y:14},{x:14,y:0},{x:0,y:-14},{x:-14,y:0}].map(function(t){return t.x+","+t.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(t){return COt.circle(e,14,t)},t),"choice"),GOt=me(async(t,e)=>{let{shapeSvg:r,bbox:n}=await NOt(t,e,$Ot(e,void 0),!0),i=n.height+e.padding,a=i/4,s=n.width+2*a+e.padding,o=[{x:a,y:0},{x:s-a,y:0},{x:s,y:-i/2},{x:s-a,y:-i},{x:a,y:-i},{x:0,y:-i/2}],l=LOt(r,s,i,o);return l.attr("style",e.style),IOt(e,l),e.intersect=function(t){return COt.polygon(e,o,t)},r},"hexagon"),UOt=me(async(t,e)=>{let{shapeSvg:r,bbox:n}=await NOt(t,e,void 0,!0),i=n.height+2*e.padding,a=i/2,s=n.width+2*a+e.padding,o=aOt(e.directions,n,e),l=LOt(r,s,i,o);return l.attr("style",e.style),IOt(e,l),e.intersect=function(t){return COt.polygon(e,o,t)},r},"block_arrow"),qOt=me(async(t,e)=>{let{shapeSvg:r,bbox:n}=await NOt(t,e,$Ot(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-a/2,y:0},{x:i,y:0},{x:i,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return LOt(r,i,a,s).attr("style",e.style),e.width=i+a,e.height=a,e.intersect=function(t){return COt.polygon(e,s,t)},r},"rect_left_inv_arrow"),jOt=me(async(t,e)=>{let{shapeSvg:r,bbox:n}=await NOt(t,e,$Ot(e),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:a/6,y:-a}],o=LOt(r,i,a,s);return o.attr("style",e.style),IOt(e,o),e.intersect=function(t){return COt.polygon(e,s,t)},r},"lean_right"),WOt=me(async(t,e)=>{let{shapeSvg:r,bbox:n}=await NOt(t,e,$Ot(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:2*a/6,y:0},{x:i+a/6,y:0},{x:i-2*a/6,y:-a},{x:-a/6,y:-a}],o=LOt(r,i,a,s);return o.attr("style",e.style),IOt(e,o),e.intersect=function(t){return COt.polygon(e,s,t)},r},"lean_left"),YOt=me(async(t,e)=>{let{shapeSvg:r,bbox:n}=await NOt(t,e,$Ot(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i+2*a/6,y:0},{x:i-a/6,y:-a},{x:a/6,y:-a}],o=LOt(r,i,a,s);return o.attr("style",e.style),IOt(e,o),e.intersect=function(t){return COt.polygon(e,s,t)},r},"trapezoid"),HOt=me(async(t,e)=>{let{shapeSvg:r,bbox:n}=await NOt(t,e,$Ot(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:-2*a/6,y:-a}],o=LOt(r,i,a,s);return o.attr("style",e.style),IOt(e,o),e.intersect=function(t){return COt.polygon(e,s,t)},r},"inv_trapezoid"),VOt=me(async(t,e)=>{let{shapeSvg:r,bbox:n}=await NOt(t,e,$Ot(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i+a/2,y:0},{x:i,y:-a/2},{x:i+a/2,y:-a},{x:0,y:-a}],o=LOt(r,i,a,s);return o.attr("style",e.style),IOt(e,o),e.intersect=function(t){return COt.polygon(e,s,t)},r},"rect_right_inv_arrow"),XOt=me(async(t,i)=>{let{shapeSvg:e,bbox:r}=await NOt(t,i,$Ot(i,void 0),!0),n=r.width+i.padding,a=n/2,s=a/(2.5+n/50),o=r.height+s+i.padding,l="M 0,"+s+" a "+a+","+s+" 0,0,0 "+n+" 0 a "+a+","+s+" 0,0,0 "+-n+" 0 l 0,"+o+" a "+a+","+s+" 0,0,0 "+n+" 0 l 0,"+-o,c=e.attr("label-offset-y",s).insert("path",":first-child").attr("style",i.style).attr("d",l).attr("transform","translate("+-n/2+","+-(o/2+s)+")");return IOt(i,c),i.intersect=function(e){var r=COt.rect(i,e),n=r.x-i.x;if(0!=a&&(Math.abs(n)i.height/2-s)){let t=s*s*(1-n*n/(a*a));0!=t&&(t=Math.sqrt(t)),t=s-t,0{var{shapeSvg:t,bbox:r,halfPadding:n}=await NOt(t,e,"node "+e.classes+" "+e.class,!0),i=t.insert("rect",":first-child"),a=e.positioned?e.width:r.width+e.padding,s=e.positioned?e.height:r.height+e.padding,o=e.positioned?-a/2:-r.width/2-n,r=e.positioned?-s/2:-r.height/2-n;return i.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",o).attr("y",r).attr("width",a).attr("height",s),e.props&&(n=new Set(Object.keys(e.props)),e.props.borders&&(POt(i,e.props.borders,a,s),n.delete("borders")),n.forEach(t=>{D.warn("Unknown node property "+t)})),IOt(e,i),e.intersect=function(t){return COt.rect(e,t)},t},"rect"),ZOt=me(async(t,e)=>{var{shapeSvg:t,bbox:r,halfPadding:n}=await NOt(t,e,"node "+e.classes,!0),i=t.insert("rect",":first-child"),a=e.positioned?e.width:r.width+e.padding,s=e.positioned?e.height:r.height+e.padding,o=e.positioned?-a/2:-r.width/2-n,r=e.positioned?-s/2:-r.height/2-n;return i.attr("class","basic cluster composite label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",o).attr("y",r).attr("width",a).attr("height",s),e.props&&(n=new Set(Object.keys(e.props)),e.props.borders&&(POt(i,e.props.borders,a,s),n.delete("borders")),n.forEach(t=>{D.warn("Unknown node property "+t)})),IOt(e,i),e.intersect=function(t){return COt.rect(e,t)},t},"composite"),QOt=me(async(t,e)=>{var r,t=(await NOt(t,e,"label",!0)).shapeSvg,n=(D.trace("Classes = ",e.class),t.insert("rect",":first-child"));return n.attr("width",0).attr("height",0),t.attr("class","label edgeLabel"),e.props&&(r=new Set(Object.keys(e.props)),e.props.borders&&(POt(n,e.props.borders,0,0),r.delete("borders")),r.forEach(t=>{D.warn("Unknown node property "+t)})),IOt(e,n),e.intersect=function(t){return COt.rect(e,t)},t},"labelRect"),me(POt,"applyNodePropertyBorders"),JOt=me(async(t,e)=>{let r,n=(r=e.classes?"node "+e.classes:"node default",t.insert("g").attr("class",r).attr("id",e.domId||e.id)),i=n.insert("rect",":first-child"),a=n.insert("line"),s=n.insert("g").attr("class","label"),o=e.labelText.flat?e.labelText.flat():e.labelText,l,c=(l="object"==typeof o?o[0]:o,D.info("Label text abc79",l,o,"object"==typeof o),s.node().appendChild(await qDt(l,e.labelStyle,!0,!0))),h={width:0,height:0};fc(O().flowchart.htmlLabels)&&(t=c.children[0],d=H(c),h=t.getBoundingClientRect(),d.attr("width",h.width),d.attr("height",h.height)),D.info("Text 2",o);var u,t=o.slice(1,o.length),d=c.getBBox(),t=s.node().appendChild(await qDt(t.join?t.join("
"):t,e.labelStyle,!0,!0)),p=(fc(O().flowchart.htmlLabels)&&(p=t.children[0],u=H(t),h=p.getBoundingClientRect(),u.attr("width",h.width),u.attr("height",h.height)),e.padding/2);return H(t).attr("transform","translate( "+(h.width>d.width?0:(d.width-h.width)/2)+", "+(d.height+p+5)+")"),H(c).attr("transform","translate( "+(h.width{var{shapeSvg:t,bbox:r}=await NOt(t,e,$Ot(e,void 0),!0),n=r.height+e.padding,r=r.width+n/4+e.padding,r=t.insert("rect",":first-child").attr("style",e.style).attr("rx",n/2).attr("ry",n/2).attr("x",-r/2).attr("y",-n/2).attr("width",r).attr("height",n);return IOt(e,r),e.intersect=function(t){return COt.rect(e,t)},t},"stadium"),ePt=me(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await NOt(t,e,$Ot(e,void 0),!0),a=r.insert("circle",":first-child");return a.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),D.info("Circle main"),IOt(e,a),e.intersect=function(t){return D.info("Circle intersect",e,n.width/2+i,t),COt.circle(e,n.width/2+i,t)},r},"circle"),rPt=me(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await NOt(t,e,$Ot(e,void 0),!0),a=r.insert("g",":first-child"),s=a.insert("circle"),o=a.insert("circle");return a.attr("class",e.class),s.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i+5).attr("width",n.width+e.padding+10).attr("height",n.height+e.padding+10),o.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),D.info("DoubleCircle main"),IOt(e,s),e.intersect=function(t){return D.info("DoubleCircle intersect",e,n.width/2+i+5,t),COt.circle(e,n.width/2+i+5,t)},r},"doublecircle"),nPt=me(async(t,e)=>{let{shapeSvg:r,bbox:n}=await NOt(t,e,$Ot(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i,y:0},{x:i,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],o=LOt(r,i,a,s);return o.attr("style",e.style),IOt(e,o),e.intersect=function(t){return COt.polygon(e,s,t)},r},"subroutine"),iPt=me((t,e)=>{var r=(t=t.insert("g").attr("class","node default").attr("id",e.domId||e.id)).insert("circle",":first-child");return r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),IOt(e,r),e.intersect=function(t){return COt.circle(e,7,t)},t},"start"),aPt=me((t,e,r)=>{let n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=70,a=10;return"LR"===r&&(i=10,a=70),t=n.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join"),IOt(e,t),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return COt.rect(e,t)},n},"forkJoin"),sPt=me((t,e)=>{var r=(t=t.insert("g").attr("class","node default").attr("id",e.domId||e.id)).insert("circle",":first-child"),n=t.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),r.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),IOt(e,n),e.intersect=function(t){return COt.circle(e,7,t)},t},"end"),oPt=me(async(t,s)=>{let e=s.padding/2,r,n=(r=s.classes?"node "+s.classes:"node default",t.insert("g").attr("class",r).attr("id",s.domId||s.id)),i=n.insert("rect",":first-child"),a=n.insert("line"),o=n.insert("line"),l=0,c=4,h=n.insert("g").attr("class","label"),u=0,d=s.classData.annotations?.[0],p=s.classData.annotations[0]?"«"+s.classData.annotations[0]+"»":"",g=h.node().appendChild(await qDt(p,s.labelStyle,!0,!0)),f=g.getBBox(),m=(fc(O().flowchart.htmlLabels)&&(t=g.children[0],y=H(g),f=t.getBoundingClientRect(),y.attr("width",f.width),y.attr("height",f.height)),s.classData.annotations[0]&&(c+=f.height+4,l+=f.width),s.classData.label);var y;void 0!==s.classData.type&&""!==s.classData.type&&(O().flowchart.htmlLabels?m+="<"+s.classData.type+">":m+="<"+s.classData.type+">"),H(t=h.node().appendChild(await qDt(m,s.labelStyle,!0,!0))).attr("class","classTitle");let v=t.getBBox(),x=(fc(O().flowchart.htmlLabels)&&(y=t.children[0],w=H(t),v=y.getBoundingClientRect(),w.attr("width",v.width),w.attr("height",v.height)),c+=v.height+4,v.width>l&&(l=v.width),[]),b=(s.classData.members.forEach(async t=>{let e=t.getDisplayDetails(),r=e.displayText,n=(O().flowchart.htmlLabels&&(r=r.replace(//g,">")),h.node().appendChild(await qDt(r,e.cssStyle||s.labelStyle,!0,!0))),i=n.getBBox(),a;fc(O().flowchart.htmlLabels)&&(t=n.children[0],a=H(n),i=t.getBoundingClientRect(),a.attr("width",i.width),a.attr("height",i.height)),i.width>l&&(l=i.width),c+=i.height+4,x.push(n)}),c+=8,[]);s.classData.methods.forEach(async t=>{let e=t.getDisplayDetails(),r=e.displayText,n=(O().flowchart.htmlLabels&&(r=r.replace(//g,">")),h.node().appendChild(await qDt(r,e.cssStyle||s.labelStyle,!0,!0))),i=n.getBBox(),a;fc(O().flowchart.htmlLabels)&&(t=n.children[0],a=H(n),i=t.getBoundingClientRect(),a.attr("width",i.width),a.attr("height",i.height)),i.width>l&&(l=i.width),c+=i.height+4,b.push(n)}),c+=8,d&&(y=(l-f.width)/2,H(g).attr("transform","translate( "+(-1*l/2+y)+", "+-1*c/2+")"),u=f.height+4);var w=(l-v.width)/2;return H(t).attr("transform","translate( "+(-1*l/2+w)+", "+(-1*c/2+u)+")"),u+=v.height+4,a.attr("class","divider").attr("x1",-l/2-e).attr("x2",l/2+e).attr("y1",-c/2-e+8+u).attr("y2",-c/2-e+8+u),u+=8,x.forEach(t=>{H(t).attr("transform","translate( "+-l/2+", "+(-1*c/2+u+4)+")"),t=t?.getBBox(),u+=(t?.height??0)+4}),u+=8,o.attr("class","divider").attr("x1",-l/2-e).attr("x2",l/2+e).attr("y1",-c/2-e+8+u).attr("y2",-c/2-e+8+u),u+=8,b.forEach(t=>{H(t).attr("transform","translate( "+-l/2+", "+(-1*c/2+u)+")"),t=t?.getBBox(),u+=(t?.height??0)+4}),i.attr("style",s.style).attr("class","outer title-state").attr("x",-l/2-e).attr("y",-c/2-e).attr("width",l+s.padding).attr("height",c+s.padding),IOt(s,i),s.intersect=function(t){return COt.rect(s,t)},n},"class_box"),lPt={rhombus:FOt,composite:ZOt,question:FOt,rect:KOt,labelRect:QOt,rectWithTitle:JOt,choice:zOt,circle:ePt,doublecircle:rPt,stadium:tPt,hexagon:GOt,block_arrow:UOt,rect_left_inv_arrow:qOt,lean_right:jOt,lean_left:WOt,trapezoid:YOt,inv_trapezoid:HOt,rect_right_inv_arrow:VOt,cylinder:XOt,start:iPt,end:sPt,note:MOt,subroutine:nPt,fork:aPt,join:aPt,class_box:oPt},cPt={},hPt=me(async(e,r,n)=>{let i,a;if(r.link){let t;"sandbox"===O().securityLevel?t="_top":r.linkTarget&&(t=r.linkTarget||"_blank"),i=e.insert("svg:a").attr("xlink:href",r.link).attr("target",t),a=await lPt[r.shape](i,r,n)}else a=await lPt[r.shape](e,r,n),i=a;return r.tooltip&&a.attr("title",r.tooltip),r.class&&a.attr("class","node default "+r.class),cPt[r.id]=i,r.haveCallback&&cPt[r.id].attr("class",cPt[r.id].attr("class")+" clickable"),i},"insertNode"),uPt=me(t=>{var e=cPt[t.id],r=(D.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")"),t.diff||0);return t.clusterNode?e.attr("transform","translate("+(t.x+r-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),r},"positionNode")});function pPt(t,e,r=!1){let n=t,i="default",a=(0<(n?.classes?.length||0)&&(i=(n?.classes??[]).join(" ")),i+=" flowchart-label",0),s="",o;switch(n.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",o=0;break;case"square":s="rect";break;case"diamond":s="question";break;case"hexagon":s="hexagon";break;case"block_arrow":s="block_arrow";break;case"odd":s="rect_left_inv_arrow";break;case"lean_right":s="lean_right";break;case"lean_left":s="lean_left";break;case"trapezoid":s="trapezoid";break;case"inv_trapezoid":s="inv_trapezoid";break;case"rect_left_inv_arrow":s="rect_left_inv_arrow";break;case"circle":s="circle";break;case"ellipse":s="ellipse";break;case"stadium":s="stadium";break;case"subroutine":s="subroutine";break;case"cylinder":s="cylinder";break;case"group":s="rect";break;case"doublecircle":s="doublecircle";break;default:s="rect"}var t=wC(n?.styles??[]),l=n.size??{width:0,height:0,x:0,y:0};return{labelStyle:t.labelStyle,shape:s,labelText:n.label,rx:a,ry:a,class:i,style:t.style,id:n.id,directions:n.directions,width:l.width,height:l.height,x:l.x,y:l.y,positioned:r,intersect:void 0,type:n.type,padding:o??ar()?.block?.padding??0}}async function gPt(t,e,r){var n;"group"!==(e=pPt(e,0,!1)).type&&(n=ar(),n=(t=await hPt(t,e,{config:n})).node().getBBox(),(e=r.getBlock(e.id)).size={width:n.width,height:n.height,x:0,y:0,node:t},r.setBlock(e),t.remove())}async function fPt(t,e,r){var n=pPt(e,0,!0);"space"!==r.getBlock(n.id).type&&(r=ar(),await hPt(t,n,{config:r}),e.intersect=n?.intersect,uPt(n))}async function mPt(t,e,r,n){for(var i of e)await n(t,i,r),i.children&&await mPt(t,i.children,r,n)}async function yPt(t,e,r){await mPt(t,e,r,gPt)}async function vPt(t,e,r){await mPt(t,e,r,fPt)}async function xPt(t,e,r,n,i){var a,s,o,l,c=new QY({multigraph:!0,compound:!0});c.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(a of r)a.size&&c.setNode(a.id,{width:a.size.width,height:a.size.height,intersect:a.intersect});for(s of e)s.start&&s.end&&(l=n.getBlock(s.start),o=n.getBlock(s.end),l?.size)&&o?.size&&(l=l.size,o=o.size,l=[{x:l.x,y:l.y},{x:l.x+(o.x-l.x)/2,y:l.y+(o.y-l.y)/2},{x:o.x,y:o.y}],nOt(t,{v:s.start,w:s.end,name:s.id},{...s,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:l,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",c,i),s.label)&&(await QDt(t,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:l,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),JDt({...s,x:l[1].x,y:l[1].y},{originalPath:l}))}var bPt,wPt,kPt,TPt=b(()=>{tH(),rn(),sOt(),dPt(),iS(),me(pPt,"getNodeFromBlock"),me(gPt,"calculateBlockSize"),me(fPt,"insertBlockPositioned"),me(mPt,"performOperations"),me(yPt,"calculateBlockSizes"),me(vPt,"insertBlocks"),me(xPt,"insertEdges")}),EPt=b(()=>{i6(),rn(),IDt(),t(),lh(),FDt(),TPt(),bPt=me(function(t,e){return e.db.getClasses()},"getClasses"),wPt=me(async function(t,e,r,n){let{securityLevel:i,block:a}=ar(),s=n.db,o;"sandbox"===i&&(o=H("#i"+e));var l=H("sandbox"===i?o.nodes()[0].contentDocument.body:"body"),l="sandbox"===i?l.select(`[id="${e}"]`):H(`[id="${e}"]`),n=(ADt(l,["point","circle","cross"],n.type,e),s.getBlocks()),c=s.getBlocksFlat(),h=s.getEdges(),u=l.insert("g").attr("class","block"),d=(await yPt(u,n,s),PDt(s));await vPt(u,n,s),await xPt(u,h,c,s,e),d&&(n=d,u=Math.max(1,Math.round(n.width/n.height*.125)),h=n.height+u+10,c=n.width+10,e=a.useMaxWidth,Zc(l,h,c,!!e),D.debug("Here Bounds",d,n),l.attr("viewBox",`${n.x-5} ${n.y-5} ${n.width+10} `+(n.height+10)))},"draw"),kPt={draw:wPt,getClasses:bPt}}),CPt={};KBt(CPt,{diagram:()=>SPt});var SPt,_Pt,APt,LPt,NPt,IPt,RPt,MPt,DPt,OPt,PPt,BPt,$Pt,FPt,zPt,GPt,UPt,qPt,jPt,WPt,YPt,HPt,VPt,XPt,KPt,ZPt,QPt,JPt,tBt,eBt,rBt,nBt=b(()=>{FMt(),LDt(),NDt(),EPt(),SPt={parser:BMt,db:pDt,renderer:kPt,styles:mDt}}),iBt=b(()=>{_Pt={L:"left",R:"right",T:"top",B:"bottom"},APt={L:me(t=>t+`,${t/2} 0,${t} 0,0`,"L"),R:me(t=>`0,${t/2} ${t},0 ${t},`+t,"R"),T:me(t=>`0,0 ${t},0 ${t/2},`+t,"T"),B:me(t=>t/2+`,0 ${t},${t} 0,`+t,"B")},LPt={L:me((t,e)=>t-e+2,"L"),R:me((t,e)=>t-2,"R"),T:me((t,e)=>t-e+2,"T"),B:me((t,e)=>t-2,"B")},NPt=me(function(t){return RPt(t)?"L"===t?"R":"L":"T"===t?"B":"T"},"getOppositeArchitectureDirection"),IPt=me(function(t){return"L"===t||"R"===t||"T"===t||"B"===t},"isArchitectureDirection"),RPt=me(function(t){return"L"===t||"R"===t},"isArchitectureDirectionX"),MPt=me(function(t){return"T"===t||"B"===t},"isArchitectureDirectionY"),DPt=me(function(t,e){var r=RPt(t)&&MPt(e),t=MPt(t)&&RPt(e);return r||t},"isArchitectureDirectionXY"),OPt=me(function(t){var e=t[0],t=t[1],r=RPt(e)&&MPt(t),e=MPt(e)&&RPt(t);return r||e},"isArchitecturePairXY"),PPt=me(function(t){return"LL"!==t&&"RR"!==t&&"TT"!==t&&"BB"!==t},"isValidArchitectureDirectionPair"),BPt=me(function(t,e){return PPt(t=""+t+e)?t:void 0},"getArchitectureDirectionPair"),$Pt=me(function([t,e],r){var n=r[0],r=r[1];return RPt(n)?MPt(r)?[t+("L"===n?-1:1),e+("T"===r?1:-1)]:[t+("L"===n?-1:1),e]:RPt(r)?[t+("L"===r?1:-1),e+("T"===n?1:-1)]:[t,e+("T"===n?1:-1)]},"shiftPositionByArchitectureDirectionPair"),FPt=me(function(t){return"LT"===t||"TL"===t?[1,1]:"BL"===t||"LB"===t?[1,-1]:"BR"===t||"RB"===t?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),zPt=me(function(t,e){return DPt(t,e)?"bend":RPt(t)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),GPt=me(function(t){return"service"===t.type},"isArchitectureService"),UPt=me(function(t){return"junction"===t.type},"isArchitectureJunction"),qPt=me(t=>t.data(),"edgeData"),jPt=me(t=>t.data(),"nodeData")}),aBt=b(()=>{rn(),tn(),iS(),ku(),iBt(),WPt=We.architecture,YPt=class{constructor(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.elements={},this.setAccTitle=mh,this.getAccTitle=yh,this.setDiagramTitle=bh,this.getDiagramTitle=wh,this.getAccDescription=xh,this.setAccDescription=vh,this.clear()}static{me(this,"ArchitectureDB")}clear(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},fh()}addService({id:t,icon:e,in:r,title:n,iconText:i}){if(void 0!==this.registeredIds[t])throw new Error(`The service id [${t}] is already in use by another `+this.registeredIds[t]);if(void 0!==r){if(t===r)throw new Error(`The service [${t}] cannot be placed within itself`);if(void 0===this.registeredIds[r])throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if("node"===this.registeredIds[r])throw new Error(`The service [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"service",icon:e,iconText:i,title:n,edges:[],in:r}}getServices(){return Object.values(this.nodes).filter(GPt)}addJunction({id:t,in:e}){this.registeredIds[t]="node",this.nodes[t]={id:t,type:"junction",edges:[],in:e}}getJunctions(){return Object.values(this.nodes).filter(UPt)}getNodes(){return Object.values(this.nodes)}getNode(t){return this.nodes[t]??null}addGroup({id:t,icon:e,in:r,title:n}){if(void 0!==this.registeredIds?.[t])throw new Error(`The group id [${t}] is already in use by another `+this.registeredIds[t]);if(void 0!==r){if(t===r)throw new Error(`The group [${t}] cannot be placed within itself`);if(void 0===this.registeredIds?.[r])throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if("node"===this.registeredIds?.[r])throw new Error(`The group [${t}]'s parent is not a group`)}this.registeredIds[t]="group",this.groups[t]={id:t,icon:e,title:n,in:r}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:t,rhsId:e,lhsDir:r,rhsDir:n,lhsInto:i,rhsInto:a,lhsGroup:s,rhsGroup:o,title:l}){if(!IPt(r))throw new Error(`Invalid direction given for left hand side of edge ${t}--${e}. Expected (L,R,T,B) got `+String(r));if(!IPt(n))throw new Error(`Invalid direction given for right hand side of edge ${t}--${e}. Expected (L,R,T,B) got `+String(n));if(void 0===this.nodes[t]&&void 0===this.groups[t])throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(void 0===this.nodes[e]&&void 0===this.groups[e])throw new Error(`The right-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);var c=this.nodes[t].in,h=this.nodes[e].in;if(s&&c&&h&&c==h)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(o&&c&&h&&c==h)throw new Error(`The right-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);this.edges.push({lhsId:t,lhsDir:r,lhsInto:i,lhsGroup:s,rhsId:e,rhsDir:n,rhsInto:a,rhsGroup:o,title:l}),this.nodes[t]&&this.nodes[e]&&(this.nodes[t].edges.push(this.edges[this.edges.length-1]),this.nodes[e].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}getDataStructures(){if(void 0===this.dataStructures){let s={},o=Object.entries(this.nodes).reduce((t,[a,e])=>(t[a]=e.edges.reduce((t,e)=>{var r,n=this.getNode(e.lhsId)?.in,i=this.getNode(e.rhsId)?.in;return n&&i&&n!==i&&"bend"!==(r=zPt(e.lhsDir,e.rhsDir))&&(s[n]??={},s[n][i]=r,s[i]??={},s[i][n]=r),e.lhsId===a?(i=BPt(e.lhsDir,e.rhsDir))&&(t[i]=e.rhsId):(n=BPt(e.rhsDir,e.lhsDir))&&(t[n]=e.lhsId),t},{}),t),{}),r=Object.keys(o)[0],l={[r]:1},c=Object.keys(o).reduce((t,e)=>e===r?t:{...t,[e]:1},{}),t=me(t=>{let i={[t]:[0,0]},a=[t];for(;0{l[e]||(i[e]=$Pt([r,n],t),a.push(e))})}}return i},"BFS"),e=[t(r)];for(;0{v6t(),t(),k6t(),aBt(),HPt=me((t,e)=>{x6t(t,e),t.groups.map(t=>e.addGroup(t)),t.services.map(t=>e.addService({...t,type:"service"})),t.junctions.map(t=>e.addJunction({...t,type:"junction"})),t.edges.map(t=>e.addEdge(t))},"populateDb"),VPt={parser:{yy:void 0},parse:me(async t=>{var t=await g6t("architecture",t),e=(D.debug(t),VPt.parser?.yy);if(!(e instanceof YPt))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");HPt(t,e)},"parse")}}),oBt=b(()=>{XPt=me(t=>` + .edge { + stroke-width: ${t.archEdgeWidth}; + stroke: ${t.archEdgeColor}; + fill: none; + } + + .arrow { + fill: ${t.archEdgeArrowColor}; + } + + .node-bkg { + fill: none; + stroke: ${t.archGroupBorderColor}; + stroke-width: ${t.archGroupBorderWidth}; + stroke-dasharray: 8; + } + .node-icon-text { + display: flex; + align-items: center; + } + + .node-icon-text > div { + color: #fff; + margin: 1px; + height: fit-content; + text-align: center; + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + } +`,"getStyles"),KPt=XPt}),lBt=WBt((r,n)=>{me(function(t,e){"object"==typeof r&&"object"==typeof n?n.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof r?r.layoutBase=e():t.layoutBase=e()},"webpackUniversalModuleDefinition")(r,function(){return r=[function(t,e,r){function n(){}me(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_HALF_SIZE=(n.SIMPLE_NODE_SIZE=40)/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.INITIAL_WORLD_BOUNDARY=(n.WORLD_BOUNDARY=1e6)/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,r){var n,i=r(2),a=r(8),s=r(9);function o(t,e,r){i.call(this,r),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=r,this.bendpoints=[],this.source=t,this.target=e}for(n in me(o,"LEdge"),o.prototype=Object.create(i.prototype),i)o[n]=i[n];o.prototype.getSource=function(){return this.source},o.prototype.getTarget=function(){return this.target},o.prototype.isInterGraph=function(){return this.isInterGraph},o.prototype.getLength=function(){return this.length},o.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},o.prototype.getBendpoints=function(){return this.bendpoints},o.prototype.getLca=function(){return this.lca},o.prototype.getSourceInLca=function(){return this.sourceInLca},o.prototype.getTargetInLca=function(){return this.targetInLca},o.prototype.getOtherEnd=function(t){if(this.source===t)return this.target;if(this.target===t)return this.source;throw"Node is not incident with this edge"},o.prototype.getOtherEndInGraph=function(t,e){for(var r=this.getOtherEnd(t),n=e.getGraphManager().getRoot();;){if(r.getOwner()==e)return r;if(r.getOwner()==n)break;r=r.getOwner().getParent()}return null},o.prototype.updateLength=function(){var t=new Array(4);this.isOverlapingSourceAndTarget=a.getIntersection(this.target.getRect(),this.source.getRect(),t),this.isOverlapingSourceAndTarget||(this.lengthX=t[0]-t[2],this.lengthY=t[1]-t[3],Math.abs(this.lengthX)<1&&(this.lengthX=s.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=s.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},o.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=s.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=s.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=o},function(t,e,r){function n(t){this.vGraphObject=t}me(n,"LGraphObject"),t.exports=n},function(t,e,r){var n,i=r(2),a=r(10),s=r(13),o=r(0),l=r(16),c=r(5);function h(t,e,r,n){i.call(this,n=null==r&&null==n?e:n),null!=t.graphManager&&(t=t.graphManager),this.estimatedSize=a.MIN_VALUE,this.inclusionTreeDepth=a.MAX_VALUE,this.vGraphObject=n,this.edges=[],this.graphManager=t,this.rect=null!=r&&null!=e?new s(e.x,e.y,r.width,r.height):new s}for(n in me(h,"LNode"),h.prototype=Object.create(i.prototype),i)h[n]=i[n];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(t){this.rect.width=t},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(t){this.rect.height=t},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new c(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new c(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(t,e){this.rect.x=t.x,this.rect.y=t.y,this.rect.width=e.width,this.rect.height=e.height},h.prototype.setCenter=function(t,e){this.rect.x=t-this.rect.width/2,this.rect.y=e-this.rect.height/2},h.prototype.setLocation=function(t,e){this.rect.x=t,this.rect.y=e},h.prototype.moveBy=function(t,e){this.rect.x+=t,this.rect.y+=e},h.prototype.getEdgeListToNode=function(e){var r=[],n=this;return n.edges.forEach(function(t){if(t.target==e){if(t.source!=n)throw"Incorrect edge source!";r.push(t)}}),r},h.prototype.getEdgesBetween=function(e){var r=[],n=this;return n.edges.forEach(function(t){if(t.source!=n&&t.target!=n)throw"Incorrect edge source and/or target";t.target!=e&&t.source!=e||r.push(t)}),r},h.prototype.getNeighborsList=function(){var e=new Set,r=this;return r.edges.forEach(function(t){if(t.source==r)e.add(t.target);else{if(t.target!=r)throw"Incorrect incidency!";e.add(t.source)}}),e},h.prototype.withChildren=function(){var e=new Set;if(e.add(this),null!=this.child)for(var t=this.child.getNodes(),r=0;rt?(this.rect.x-=(this.labelWidth-t)/2,this.setWidth(this.labelWidth)):"right"==this.labelPosHorizontal&&this.setWidth(t+this.labelWidth)),this.labelHeight)&&("top"==this.labelPosVertical?(this.rect.y-=this.labelHeight,this.setHeight(e+this.labelHeight)):"center"==this.labelPosVertical&&this.labelHeight>e?(this.rect.y-=(this.labelHeight-e)/2,this.setHeight(this.labelHeight)):"bottom"==this.labelPosVertical&&this.setHeight(e+this.labelHeight))},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==a.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(t){(e=this.rect.x)>o.WORLD_BOUNDARY?e=o.WORLD_BOUNDARY:e<-o.WORLD_BOUNDARY&&(e=-o.WORLD_BOUNDARY),(r=this.rect.y)>o.WORLD_BOUNDARY?r=o.WORLD_BOUNDARY:r<-o.WORLD_BOUNDARY&&(r=-o.WORLD_BOUNDARY);var e=new c(e,r),r=t.inverseTransformPoint(e);this.setLocation(r.x,r.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=h},function(t,e,r){var n,i=r(0);function a(){}for(n in me(a,"FDLayoutConstants"),i)a[n]=i[n];a.MAX_ITERATIONS=2500,a.DEFAULT_EDGE_LENGTH=50,a.DEFAULT_SPRING_STRENGTH=.45,a.DEFAULT_REPULSION_STRENGTH=4500,a.DEFAULT_GRAVITY_STRENGTH=.4,a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,a.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,a.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,a.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,a.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,a.COOLING_ADAPTATION_FACTOR=.33,a.ADAPTATION_LOWER_NODE_LIMIT=1e3,a.ADAPTATION_UPPER_NODE_LIMIT=5e3,a.MAX_NODE_DISPLACEMENT=3*(a.MAX_NODE_DISPLACEMENT_INCREMENTAL=100),a.MIN_REPULSION_DIST=a.DEFAULT_EDGE_LENGTH/10,a.CONVERGENCE_CHECK_PERIOD=100,a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,a.MIN_EDGE_LENGTH=1,a.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=a},function(t,e,r){function n(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}me(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(t){this.x=t},n.prototype.setY=function(t){this.y=t},n.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=n},function(t,e,r){var n,i=r(2),d=r(10),a=r(0),s=r(7),o=r(3),l=r(1),p=r(13),c=r(12),h=r(11);function u(t,e,r){i.call(this,r),this.estimatedSize=d.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof s?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(n in me(u,"LGraph"),u.prototype=Object.create(i.prototype),i)u[n]=i[n];u.prototype.getNodes=function(){return this.nodes},u.prototype.getEdges=function(){return this.edges},u.prototype.getGraphManager=function(){return this.graphManager},u.prototype.getParent=function(){return this.parent},u.prototype.getLeft=function(){return this.left},u.prototype.getRight=function(){return this.right},u.prototype.getTop=function(){return this.top},u.prototype.getBottom=function(){return this.bottom},u.prototype.isConnected=function(){return this.isConnected},u.prototype.add=function(t,e,r){if(null==e&&null==r){var n=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(-1=this.nodes.length&&(r=0,i.forEach(function(t){t.owner==e&&r++}),r==this.nodes.length)&&(this.isConnected=!0)}},t.exports=u},function(t,e,r){var c,h=r(1);function n(t){c=r(6),this.layout=t,this.graphs=[],this.edges=[]}me(n,"LGraphManager"),n.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),t=this.add(t,e);return this.setRootGraph(t),this.rootGraph},n.prototype.add=function(t,e,r,n,i){if(null==r&&null==n&&null==i){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(-1=e.getRight()?r[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(r[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?r[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(r[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom())),Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()))),e=(a=e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()?1:a)*r[0],t=r[1]/a;r[0]p.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*p.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-p.ADAPTATION_LOWER_NODE_LIMIT)/(p.ADAPTATION_UPPER_NODE_LIMIT-p.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-p.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=p.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>p.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(p.COOLING_ADAPTATION_FACTOR,1-(t-p.ADAPTATION_LOWER_NODE_LIMIT)/(p.ADAPTATION_UPPER_NODE_LIMIT-p.ADAPTATION_LOWER_NODE_LIMIT)*(1-p.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=p.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.displacementThresholdPerNode=3*p.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},a.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),r=0;rthis.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement=a.length||o>=a[0].length))for(var l=0;l{for(var e=[];0{for(var e=[];0{for(var e=[];0=this.s[u+1]);){var M=this.s[u];if(this.s[u]=this.s[u+1],this.s[u+1]=M,uMath.abs(e)?(r=e/t,Math.abs(t)*Math.sqrt(1+r*r)):0!=e?(r=t/e,Math.abs(e)*Math.sqrt(1+r*r)):0},t.exports=At},function(t,e,r){var n,i;function a(t,e){for(var r=0;r{me(function(t,e){"object"==typeof r&&"object"==typeof n?n.exports=e(lBt()):"function"==typeof define&&define.amd?define(["layout-base"],e):"object"==typeof r?r.coseBase=e(lBt()):t.coseBase=e(t.layoutBase)},"webpackUniversalModuleDefinition")(r,function(e){return n={45:(t,e,r)=>{var n={};n.layoutBase=r(551),n.CoSEConstants=r(806),n.CoSEEdge=r(767),n.CoSEGraph=r(880),n.CoSEGraphManager=r(578),n.CoSELayout=r(765),n.CoSENode=r(991),n.ConstraintHandler=r(902),t.exports=n},806:(t,e,r)=>{var n,i=r(551).FDLayoutConstants;function a(){}for(n in me(a,"CoSEConstants"),i)a[n]=i[n];a.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,a.DEFAULT_RADIAL_SEPARATION=i.DEFAULT_EDGE_LENGTH,a.DEFAULT_COMPONENT_SEPERATION=60,a.TILE=!0,a.TILING_PADDING_VERTICAL=10,a.TILING_PADDING_HORIZONTAL=10,a.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,a.ENFORCE_CONSTRAINTS=!0,a.APPLY_LAYOUT=!0,a.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,a.TREE_REDUCTION_ON_INCREMENTAL=!0,a.PURE_INCREMENTAL=a.DEFAULT_INCREMENTAL,t.exports=a},767:(t,e,r)=>{var n,i=r(551).FDLayoutEdge;function a(t,e,r){i.call(this,t,e,r)}for(n in me(a,"CoSEEdge"),a.prototype=Object.create(i.prototype),i)a[n]=i[n];t.exports=a},880:(t,e,r)=>{var n,i=r(551).LGraph;function a(t,e,r){i.call(this,t,e,r)}for(n in me(a,"CoSEGraph"),a.prototype=Object.create(i.prototype),i)a[n]=i[n];t.exports=a},578:(t,e,r)=>{var n,i=r(551).LGraphManager;function a(t){i.call(this,t)}for(n in me(a,"CoSEGraphManager"),a.prototype=Object.create(i.prototype),i)a[n]=i[n];t.exports=a},765:(t,e,r)=>{var n,i=r(551).FDLayout,a=r(578),s=r(880),h=r(991),o=r(767),f=r(806),l=r(902),m=r(551).FDLayoutConstants,u=r(551).LayoutConstants,d=r(551).Point,p=r(551).PointD,c=r(551).DimensionD,g=r(551).Layout,y=r(551).Integer,v=r(551).IGeometry,x=r(551).LGraph,b=r(551).Transform,w=r(551).LinkedList;function k(){i.call(this),this.toBeTiled={},this.constraints={}}for(n in me(k,"CoSELayout"),k.prototype=Object.create(i.prototype),i)k[n]=i[n];k.prototype.newGraphManager=function(){var t=new a(this);return this.graphManager=t},k.prototype.newGraph=function(t){return new s(null,this.graphManager,t)},k.prototype.newNode=function(t){return new h(this.graphManager,t)},k.prototype.newEdge=function(t){return new o(null,null,t)},k.prototype.initParameters=function(){i.prototype.initParameters.call(this,arguments),this.isSubLayout||(f.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=f.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=f.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=m.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=m.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=m.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=m.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},k.prototype.initSpringEmbedder=function(){i.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/m.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},k.prototype.layout=function(){return u.DEFAULT_CREATE_BENDS_AS_NEEDED&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},k.prototype.classicLayout=function(){var t,e,r;return this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental?f.TREE_REDUCTION_ON_INCREMENTAL&&(this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation(),e=new Set(this.getAllNodes()),r=this.nodesWithGravity.filter(function(t){return e.has(t)}),this.graphManager.setAllNodesToApplyGravitation(r)):0<(t=this.getFlatForest()).length?this.positionNodesRadially(t):(this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation(),e=new Set(this.getAllNodes()),r=this.nodesWithGravity.filter(function(t){return e.has(t)}),this.graphManager.setAllNodesToApplyGravitation(r),this.positionNodesRandomly()),0=2*t.length/3;n--)e=Math.floor(Math.random()*(n+1)),r=t[n],t[n]=t[e],t[e]=r;return t},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(t){var e,r;t.left?(r=h.has(t.left)?h.get(t.left):t.left,e=h.has(t.right)?h.get(t.right):t.right,s.nodesInRelativeHorizontal.includes(r)||(s.nodesInRelativeHorizontal.push(r),s.nodeToRelativeConstraintMapHorizontal.set(r,[]),s.dummyToNodeForVerticalAlignment.has(r)?s.nodeToTempPositionMapHorizontal.set(r,s.idToNodeMap.get(s.dummyToNodeForVerticalAlignment.get(r)[0]).getCenterX()):s.nodeToTempPositionMapHorizontal.set(r,s.idToNodeMap.get(r).getCenterX())),s.nodesInRelativeHorizontal.includes(e)||(s.nodesInRelativeHorizontal.push(e),s.nodeToRelativeConstraintMapHorizontal.set(e,[]),s.dummyToNodeForVerticalAlignment.has(e)?s.nodeToTempPositionMapHorizontal.set(e,s.idToNodeMap.get(s.dummyToNodeForVerticalAlignment.get(e)[0]).getCenterX()):s.nodeToTempPositionMapHorizontal.set(e,s.idToNodeMap.get(e).getCenterX())),s.nodeToRelativeConstraintMapHorizontal.get(r).push({right:e,gap:t.gap}),s.nodeToRelativeConstraintMapHorizontal.get(e).push({left:r,gap:t.gap})):(e=u.has(t.top)?u.get(t.top):t.top,r=u.has(t.bottom)?u.get(t.bottom):t.bottom,s.nodesInRelativeVertical.includes(e)||(s.nodesInRelativeVertical.push(e),s.nodeToRelativeConstraintMapVertical.set(e,[]),s.dummyToNodeForHorizontalAlignment.has(e)?s.nodeToTempPositionMapVertical.set(e,s.idToNodeMap.get(s.dummyToNodeForHorizontalAlignment.get(e)[0]).getCenterY()):s.nodeToTempPositionMapVertical.set(e,s.idToNodeMap.get(e).getCenterY())),s.nodesInRelativeVertical.includes(r)||(s.nodesInRelativeVertical.push(r),s.nodeToRelativeConstraintMapVertical.set(r,[]),s.dummyToNodeForHorizontalAlignment.has(r)?s.nodeToTempPositionMapVertical.set(r,s.idToNodeMap.get(s.dummyToNodeForHorizontalAlignment.get(r)[0]).getCenterY()):s.nodeToTempPositionMapVertical.set(r,s.idToNodeMap.get(r).getCenterY())),s.nodeToRelativeConstraintMapVertical.get(e).push({bottom:r,gap:t.gap}),s.nodeToRelativeConstraintMapVertical.get(r).push({top:e,gap:t.gap}))})):(a=new Map,o=new Map,this.constraints.relativePlacementConstraint.forEach(function(t){var e,r;t.left?(r=h.has(t.left)?h.get(t.left):t.left,e=h.has(t.right)?h.get(t.right):t.right,a.has(r)?a.get(r).push(e):a.set(r,[e]),a.has(e)?a.get(e).push(r):a.set(e,[r])):(e=u.has(t.top)?u.get(t.top):t.top,r=u.has(t.bottom)?u.get(t.bottom):t.bottom,o.has(e)?o.get(e).push(r):o.set(e,[r]),o.has(r)?o.get(r).push(e):o.set(r,[e]))}),c=(l=me(function(n,i){var a=[],s=[],o=new w,l=new Set,c=0;return n.forEach(function(t,e){if(!l.has(e)){for(a[c]=[],s[c]=!1,o.push(r=e),l.add(r),a[c].push(r);0!=o.length;){var r=o.shift();i.has(r)&&(s[c]=!0),n.get(r).forEach(function(t){l.has(t)||(o.push(t),l.add(t),a[c].push(t))})}c++}}),{components:a,isFixed:s}},"constructComponents"))(a,s.fixedNodesOnHorizontal),this.componentsOnHorizontal=c.components,this.fixedComponentsOnHorizontal=c.isFixed,c=l(o,s.fixedNodesOnVertical),this.componentsOnVertical=c.components,this.fixedComponentsOnVertical=c.isFixed)}},k.prototype.updateDisplacements=function(){var i=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(t){(t=i.idToNodeMap.get(t.nodeId)).displacementX=0,t.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var t=this.constraints.alignmentConstraint.vertical,e=0;en&&(n=Math.floor(s.y)),a=Math.floor(s.x+f.DEFAULT_COMPONENT_SEPERATION)}this.transform(new p(u.WORLD_CENTER_X-s.x/2,u.WORLD_CENTER_Y-s.y/2))},k.radialLayout=function(t,e,r){var n=Math.max(this.maxDiagonalInTree(t),f.DEFAULT_RADIAL_SEPARATION),e=(k.branchRadialLayout(e,null,0,359,0,n),x.calculateBounds(t)),i=new b;i.setDeviceOrgX(e.getMinX()),i.setDeviceOrgY(e.getMinY()),i.setWorldOrgX(r.x),i.setWorldOrgY(r.y);for(var a=0;at?(r.rect.x-=(r.labelWidth-t)/2,r.setWidth(r.labelWidth),r.labelMarginLeft=(r.labelWidth-t)/2):"right"==r.labelPosHorizontal&&r.setWidth(t+r.labelWidth)),r.labelHeight)&&("top"==r.labelPosVertical?(r.rect.y-=r.labelHeight,r.setHeight(e+r.labelHeight),r.labelMarginTop=r.labelHeight):"center"==r.labelPosVertical&&r.labelHeight>e?(r.rect.y-=(r.labelHeight-e)/2,r.setHeight(r.labelHeight),r.labelMarginTop=(r.labelHeight-e)/2):"bottom"==r.labelPosVertical&&r.setHeight(e+r.labelHeight))})},k.prototype.repopulateCompounds=function(){for(var t=this.compoundOrder.length-1;0<=t;t--){var e=this.compoundOrder[t],r=e.id;this.adjustLocations(this.tiledMemberPack[r],e.rect.x,e.rect.y,e.paddingLeft,e.paddingTop,e.labelMarginLeft,e.labelMarginTop)}},k.prototype.repopulateZeroDegreeMembers=function(){var n=this,i=this.tiledZeroDegreePack;Object.keys(i).forEach(function(t){var e=n.idToDummyNode[t],r=e.paddingLeft;n.adjustLocations(i[t],e.rect.x,e.rect.y,r,e.paddingTop,e.labelMarginLeft,e.labelMarginTop)})},k.prototype.getToBeTiled=function(t){var e=t.id;if(null!=this.toBeTiled[e])return this.toBeTiled[e];if(null==(t=t.getChild()))return this.toBeTiled[e]=!1;for(var r=t.getNodes(),n=0;nh&&(h=d.rect.height)}r+=h+t.verticalPadding}},k.prototype.tileCompoundMembers=function(n,i){var a=this;this.tiledMemberPack=[],Object.keys(n).forEach(function(t){var e,r=i[t];a.tiledMemberPack[t]=a.tileNodes(n[t],r.paddingLeft+r.paddingRight),r.rect.width=a.tiledMemberPack[t].width,r.rect.height=a.tiledMemberPack[t].height,r.setCenter(a.tiledMemberPack[t].centerX,a.tiledMemberPack[t].centerY),r.labelMarginLeft=0,r.labelMarginTop=0,f.NODE_DIMENSIONS_INCLUDE_LABELS&&(t=r.rect.width,e=r.rect.height,r.labelWidth&&("left"==r.labelPosHorizontal?(r.rect.x-=r.labelWidth,r.setWidth(t+r.labelWidth),r.labelMarginLeft=r.labelWidth):"center"==r.labelPosHorizontal&&r.labelWidth>t?(r.rect.x-=(r.labelWidth-t)/2,r.setWidth(r.labelWidth),r.labelMarginLeft=(r.labelWidth-t)/2):"right"==r.labelPosHorizontal&&r.setWidth(t+r.labelWidth)),r.labelHeight)&&("top"==r.labelPosVertical?(r.rect.y-=r.labelHeight,r.setHeight(e+r.labelHeight),r.labelMarginTop=r.labelHeight):"center"==r.labelPosVertical&&r.labelHeight>e?(r.rect.y-=(r.labelHeight-e)/2,r.setHeight(r.labelHeight),r.labelMarginTop=(r.labelHeight-e)/2):"bottom"==r.labelPosVertical&&r.setHeight(e+r.labelHeight))})},k.prototype.tileNodes=function(t,e){var r=this.tileNodesByFavoringDim(t,e,!0),t=this.tileNodesByFavoringDim(t,e,!1),e=this.getOrgRatio(r);return this.getOrgRatio(t)l&&(l=t.getWidth())}),s/a),c=o/a,c=Math.pow(n-i,2)+4*(t+i)*(c+n)*a,a=(i-n+Math.sqrt(c))/(2*(t+i));return e?(r=Math.ceil(a))==a&&r++:r=Math.floor(a),((n=r*(t+i)-i)t.rowHeight[r]&&(i=t.rowHeight[r],t.rowHeight[r]=n,i=t.rowHeight[r]-i),t.height+=i,t.rows[r].push(e)},k.prototype.getShortestRowIndex=function(t){for(var e=-1,r=Number.MAX_VALUE,n=0;nr&&(e=n,r=t.rowWidth[n]);return e},k.prototype.canAddHorizontal=function(t,e,r){var n,i,a;return t.idealRowWidth?(i=t.rows.length-1,t.rowWidth[i]+e+t.horizontalPadding<=t.idealRowWidth):(i=this.getShortestRowIndex(t))<0||(a=t.rowWidth[i])+t.horizontalPadding+e<=t.width||(n=0,t.rowHeight[i]a&&e!=r){n.splice(-1,1),t.rows[r].push(i),t.rowWidth[e]=t.rowWidth[e]-a,t.rowWidth[r]=t.rowWidth[r]+a,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,o=0;os&&(s=n[o].height);0{var n,i=r(551).FDLayoutNode,a=r(551).IMath;function s(t,e,r,n){i.call(this,t,e,r,n)}for(n in me(s,"CoSENode"),s.prototype=Object.create(i.prototype),i)s[n]=i[n];s.prototype.calculateDisplacement=function(){var t=this.graphManager.getLayout();null!=this.getChild()&&this.fixedNodeWeight?(this.displacementX+=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*a.sign(this.displacementY)),this.child&&0{function Pt(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);eX&&(X=m[w].length,K=w);X{t.exports=e}},i={},me(r,"__webpack_require__"),r(45);function r(t){var e=i[t];return void 0===e&&(e=i[t]={exports:{}},n[t](e,e.exports,r)),e.exports}var n,i})}),hBt=WBt((r,n)=>{me(function(t,e){"object"==typeof r&&"object"==typeof n?n.exports=e(cBt()):"function"==typeof define&&define.amd?define(["cose-base"],e):"object"==typeof r?r.cytoscapeFcose=e(cBt()):t.cytoscapeFcose=e(t.coseBase)},"webpackUniversalModuleDefinition")(r,function(e){return n={658:t=>{t.exports=null!=Object.assign?Object.assign.bind(Object):function(r){for(var t=arguments.length,e=Array(1{me(C,"sliceIterator");var n=r(140).layoutBase.LinkedList;function C(t,e){var r=[],n=!0,i=!1,a=void 0;try{for(var s,o=t[Symbol.iterator]();!(n=(s=o.next()).done)&&(r.push(s.value),!e||r.length!==e);n=!0);}catch(t){i=!0,a=t}finally{try{!n&&o.return&&o.return()}finally{if(i)throw a}}return r}t.exports=r={getTopMostNodes:function(t){for(var n={},e=0;e{if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return C(t,2);throw new TypeError("Invalid attempt to destructure non-iterable instance")})(h.value),v=y[0],x=y[1],b=e.cy.getElementById(v);b&&(d=b.boundingBox(),p=i.xCoords[x]-d.w/2,g=i.xCoords[x]+d.w/2,f=i.yCoords[x]-d.h/2,m=i.yCoords[x]+d.h/2,p{var v=r(548),o=r(140).CoSELayout,x=r(140).CoSENode,b=r(140).layoutBase.PointD,w=r(140).layoutBase.DimensionD,l=r(140).layoutBase.LayoutConstants,u=r(140).layoutBase.FDLayoutConstants,k=r(140).CoSEConstants,r=me(function(c,t){var e=c.cy,r=(i=c.eles).nodes(),n=i.edges(),d=void 0,p=void 0,g=void 0,f={},h=(c.randomize&&(d=t.nodeIndexes,p=t.xCoords,g=t.yCoords),me(function(t){return"function"==typeof t},"isFn")),m=me(function(t,e){return h(t)?t(e):t},"optFn"),y=v.calcParentsWithoutChildren(e,i),t=me(function t(e,r,n,i){for(var a=r.length,s=0;s{function n(t,e){for(var r=0;r{var G=r(548),U=r(140).layoutBase.Matrix,q=r(140).layoutBase.SVD,r=me(function(t){var i=t.cy,a=t.eles,e=a.nodes(),r=a.nodes(":parent"),s=new Map,m=new Map,o=new Map,y=[],g=[],f=[],h=[],v=[],x=[],u=[],b=[],w=void 0,k=t.piTol,n=t.samplingType,T=t.nodeSeparation,d=void 0,P=me(function(){for(var t=0,e=!1;t{var n=r(212),r=me(function(t){t&&t("layout","fcose",n)},"register");typeof cytoscape<"u"&&r(cytoscape),t.exports=r},140:t=>{t.exports=e}},i={},me(r,"__webpack_require__"),r(579);function r(t){var e=i[t];return void 0===e&&(e=i[t]={exports:{}},n[t](e,e.exports,r)),e.exports}var n,i})}),uBt=b(()=>{Pc(),ZPt=me(t=>`${t}`,"wrapIcon"),QPt={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:ZPt('')},server:{body:ZPt('')},disk:{body:ZPt('')},internet:{body:ZPt('')},cloud:{body:ZPt('')},unknown:Ac,blank:{body:ZPt("")}}}}),dBt=b(()=>{Tu(),JL(),Pc(),Oc(),uBt(),iBt(),JPt=me(async function(w,t,k){let T=k.getConfigField("padding"),e=k.getConfigField("iconSize"),E=e/2,C=e/6,S=C/2;await Promise.all(t.edges().map(async t=>{let{source:e,sourceDir:r,sourceArrow:n,sourceGroup:i,target:a,targetDir:s,targetArrow:o,targetGroup:l,label:c}=qPt(t),{x:h,y:u}=t[0].sourceEndpoint(),{x:d,y:p}=t[0].midpoint(),{x:g,y:f}=t[0].targetEndpoint(),m=T+4;var y,v,x,b;i&&(RPt(r)?h+="L"===r?-m:m:u+="T"===r?-m:m+18),l&&(RPt(s)?g+="L"===s?-m:m:f+="T"===s?-m:m+18),i||"junction"!==k.getNode(e)?.type||(RPt(r)?h+="L"===r?E:-E:u+="T"===r?E:-E),l||"junction"!==k.getNode(a)?.type||(RPt(s)?g+="L"===s?E:-E:f+="T"===s?E:-E),t[0]._private.rscratch&&((t=w.insert("g")).insert("path").attr("d",`M ${h},${u} L ${d},${p} L${g},${f} `).attr("class","edge"),n&&(b=RPt(r)?LPt[r](h,C):h-S,y=MPt(r)?LPt[r](u,C):u-S,t.insert("polygon").attr("points",APt[r](C)).attr("transform",`translate(${b},${y})`).attr("class","arrow")),o&&(b=RPt(s)?LPt[s](g,C):g-S,y=MPt(s)?LPt[s](f,C):f-S,t.insert("polygon").attr("points",APt[s](C)).attr("transform",`translate(${b},${y})`).attr("class","arrow")),c)&&(v=0,v="X"==(x=DPt(r,s)?"XY":RPt(r)?"X":"Y")?Math.abs(h-g):"Y"==x?Math.abs(u-f)/1.5:Math.abs(h-g)/2,b=t.append("g"),await QL(b,c,{useHtmlLabels:!1,width:v,classes:"architecture-service-label"},O()),b.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),"X"==x?b.attr("transform","translate("+d+", "+p+")"):"Y"==x?b.attr("transform","translate("+d+", "+p+") rotate(-90)"):"XY"==x&&(y=BPt(r,s))&&OPt(y)&&(t=b.node().getBoundingClientRect(),[y,v]=FPt(y),b.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*y*v*45})`),x=b.node().getBoundingClientRect(),b.attr("transform",` + translate(${d}, ${p-t.height/2}) + translate(${y*x.width/2}, ${v*x.height/2}) + rotate(${-1*y*v*45}, 0, ${t.height/2}) + `)))}))},"drawEdges"),tBt=me(async function(l,t,e){let c=.75*e.getConfigField("padding"),h=e.getConfigField("fontSize"),u=e.getConfigField("iconSize")/2;await Promise.all(t.nodes().map(async n=>{var i=jPt(n);if("group"===i.type){var{h:n,w:a,x1:s,y1:o}=n.boundingBox();l.append("rect").attr("x",s+u).attr("y",o+u).attr("width",a).attr("height",n).attr("class","node-bkg");let t=l.append("g"),e=s,r=o;i.icon&&((n=t.append("g")).html(`${await Dc(i.icon,{height:c,width:c,fallbackPrefix:QPt.prefix})}`),n.attr("transform","translate("+(e+u+1)+", "+(r+u+1)+")"),e+=c,r+=h/2-1-2),i.label&&(s=t.append("g"),await QL(s,i.label,{useHtmlLabels:!1,width:a,classes:"architecture-service-label"},O()),s.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),s.attr("transform","translate("+(e+u+4)+", "+(r+u+2)+")"))}}))},"drawGroups"),eBt=me(async function(t,e,r){var n,i=O();for(n of r){var a=e.append("g"),s=t.getConfigField("iconSize"),o=(n.title&&(o=a.append("g"),await QL(o,n.title,{useHtmlLabels:!1,width:1.5*s,classes:"architecture-service-label"},i),o.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),o.attr("transform","translate("+s/2+", "+s+")")),a.append("g")),{width:l,height:c}=(n.icon?o.html(`${await Dc(n.icon,{height:s,width:s,fallbackPrefix:QPt.prefix})}`):n.iconText?(o.html(`${await Dc("blank",{height:s,width:s,fallbackPrefix:QPt.prefix})}`),l=o.append("g").append("foreignObject").attr("width",s).attr("height",s).append("div").attr("class","node-icon-text").attr("style",`height: ${s}px;`).append("div").html(lc(n.iconText,i)),c=parseInt(window.getComputedStyle(l.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16,l.attr("style",`-webkit-line-clamp: ${Math.floor((s-2)/c)};`)):o.append("path").attr("class","node-bkg").attr("id","node-"+n.id).attr("d",`M0 ${s} v${-s} q0,-5 5,-5 h${s} q5,0 5,5 v${s} H0 Z`),a.attr("class","architecture-service"),a._groups[0][0].getBBox());n.width=l,n.height=c,t.setElementForId(n.id,a)}return 0},"drawServices"),rBt=me(function(i,a,t){t.forEach(t=>{var e=a.append("g"),r=i.getConfigField("iconSize"),{width:r,height:n}=(e.append("g").append("rect").attr("id","node-"+t.id).attr("fill-opacity","0").attr("width",r).attr("height",r),e.attr("class","architecture-junction"),e._groups[0][0].getBBox());e.width=r,e.height=n,i.setElementForId(t.id,e)})},"drawJunctions")});function pBt(t,e,r){t.forEach(t=>{e.add({group:"nodes",data:{type:"service",id:t.id,icon:t.icon,label:t.title,parent:t.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-service"})})}function gBt(t,e,r){t.forEach(t=>{e.add({group:"nodes",data:{type:"junction",id:t.id,parent:t.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-junction"})})}function fBt(r,t){t.nodes().map(t=>{var e=jPt(t);"group"!==e.type&&(e.x=t.position().x,e.y=t.position().y,r.getElementById(e.id).attr("transform","translate("+(e.x||0)+","+(e.y||0)+")"))})}function mBt(t,e){t.forEach(t=>{e.add({group:"nodes",data:{type:"group",id:t.id,icon:t.icon,label:t.title,parent:t.in},classes:"node-group"})})}function yBt(t,h){t.forEach(t=>{var{lhsId:e,rhsId:r,lhsInto:n,lhsGroup:i,rhsInto:a,lhsDir:s,rhsDir:o,rhsGroup:l,title:c}=t,t=DPt(t.lhsDir,t.rhsDir)?"segments":"straight";h.add({group:"edges",data:{id:e+"-"+r,label:c,source:e,sourceDir:s,sourceArrow:n,sourceGroup:i,sourceEndpoint:"L"===s?"0 50%":"R"===s?"100% 50%":"T"===s?"50% 0":"50% 100%",target:r,targetDir:o,targetArrow:a,targetGroup:l,targetEndpoint:"L"===o?"0 50%":"R"===o?"100% 50%":"T"===o?"50% 0":"50% 100%"},classes:t})})}function vBt(s,t,u){let e=me((t,h)=>Object.entries(t).reduce((r,[n,t])=>{let i=0,a=Object.entries(t);if(1===a.length)r[n]=a[0][1];else for(let e=0;e{let i={},a={};return Object.entries(t).forEach(([t,[e,r]])=>{var n=s.getNode(t)?.in??"default";i[r]??={},i[r][n]??=[],i[r][n].push(t),a[e]??={},a[e][n]??=[],a[e][n].push(t)}),{horiz:Object.values(e(i,"horizontal")).filter(t=>11[[...t,...r],[...e,...n]],[[],[]]);return{horizontal:n,vertical:i}}function xBt(t,l){let c=[],h=me(t=>t[0]+","+t[1],"posToStr"),u=me(t=>t.split(",").map(t=>parseInt(t)),"strToPos");return t.forEach(t=>{let a=Object.fromEntries(Object.entries(t).map(([t,e])=>[h(e),t])),s=[h([0,0])],o={},e={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;0{var e=h([n[0]+e[0],n[1]+e[1]]),r=a[e];r&&!o[e]&&(s.push(e),c.push({[_Pt[t]]:r,[_Pt[NPt(t)]]:i,gap:1.5*l.getConfigField("iconSize")}))})}}}}),c}function bBt(i,a,l,c,h,{spatialMaps:u,groupAlignments:d}){return new Promise(e=>{let t=H("body").append("div").attr("id","cy").attr("style","display:none"),s=Clt({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight",label:"data(label)","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":h.getConfigField("fontSize")+"px"}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:h.getConfigField("padding")+"px"}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}}),r=(t.remove(),mBt(l,s),pBt(i,s,h),gBt(a,s,h),yBt(c,s),vBt(h,u,d)),n=xBt(u,h),o=s.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(t){var[t,e]=t.connectedNodes();return(t=jPt(t).parent)===jPt(e).parent?1.5*h.getConfigField("iconSize"):.5*h.getConfigField("iconSize")},edgeElasticity(t){var[t,e]=t.connectedNodes();return(t=jPt(t).parent)===jPt(e).parent?.45:.001},alignmentConstraint:r,relativePlacementConstraint:n});o.one("layoutstop",()=>{function t(t,e,r,n){var{x:t,y:i}=t,{x:e,y:a}=e,s=(n-i+(t-r)*(i-a)/(t-e))/Math.sqrt(1+Math.pow((i-a)/(t-e),2)),o=Math.sqrt(Math.pow(n-i,2)+Math.pow(r-t,2)-Math.pow(s,2));o/=Math.sqrt(Math.pow(e-t,2)+Math.pow(a-i,2));let l=(e-t)*(n-i)-(a-i)*(r-t);switch(!0){case 0<=l:l=1;break;case l<0:l=-1}let c=(e-t)*(r-t)+(a-i)*(n-i);switch(!0){case 0<=c:c=1;break;case c<0:c=-1}return{distances:Math.abs(s)*l,weights:o*=c}}me(t,"getSegmentWeights"),s.startBatch();for(var e of Object.values(s.edges())){var r,n,i,a;e.data?.()&&({x:i,y:n}=e.source().position(),{x:a,y:r}=e.target().position(),i!==a)&&n!==r&&(i=e.sourceEndpoint(),a=e.targetEndpoint(),n=qPt(e).sourceDir,[r,n]=MPt(n)?[i.x,a.y]:[a.x,i.y],{weights:i,distances:a}=t(i,a,r,n),e.style("segment-distances",a),e.style("segment-weights",i))}s.endBatch(),o.run()}),o.run(),s.ready(t=>{D.info("Ready",t),e(s)})})}var wBt,kBt,TBt=b(()=>{Slt(),wBt=q(hBt(),1),i6(),t(),Pc(),z7t(),lh(),uBt(),iBt(),dBt(),Ic([{name:QPt.prefix,icons:QPt}]),Clt.use(wBt.default),me(pBt,"addServices"),me(gBt,"addJunctions"),me(fBt,"positionNodes"),me(mBt,"addGroups"),me(yBt,"addEdges"),me(vBt,"getAlignments"),me(xBt,"getRelativeConstraints"),me(bBt,"layoutArchitecture"),wBt=me(async(t,e,r,n)=>{var i=(n=n.db).getServices(),a=n.getJunctions(),s=n.getGroups(),o=n.getEdges(),l=n.getDataStructures(),c=(e=M7t(e)).append("g"),h=(c.attr("class","architecture-edges"),(u=e.append("g")).attr("class","architecture-services"),e.append("g")),u=(h.attr("class","architecture-groups"),await eBt(n,u,i),rBt(n,u,a),await bBt(i,a,s,o,n,l));await JPt(c,u,n),await tBt(h,u,n),fBt(n,u),Qc(void 0,e,n.getConfigField("padding"),n.getConfigField("useMaxWidth"))},"draw"),kBt={draw:wBt}}),EBt={};KBt(EBt,{diagram:()=>CBt});var CBt,SBt,_Bt=b(()=>{sBt(),aBt(),oBt(),TBt(),CBt={parser:VPt,get db(){return new YPt},renderer:kBt,styles:KPt}}),ABt=b(()=>{tn(),rn(),iS(),MN(),ku(),SBt=class{constructor(){this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.setAccTitle=mh,this.getAccTitle=yh,this.setDiagramTitle=bh,this.getDiagramTitle=wh,this.getAccDescription=xh,this.setAccDescription=vh}static{me(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){var t=We,e=ar();return SC({...t.treemap,...e.treemap??{}})}addNode(t,e){this.nodes.push(t),this.levels.set(t,e),0===e&&(this.outerNodes.push(t),this.root??=t)}getRoot(){return{name:"",children:this.outerNodes}}addClass(t,e){let r=this.classes.get(t)??{id:t,styles:[],textStyles:[]},n=e.replace(/\\,/g,"§§§").replace(/,/g,";").replace(/§§§/g,",").split(";");n&&n.forEach(t=>{_N(t)&&(r?.textStyles?r.textStyles.push(t):r.textStyles=[t]),r?.styles?r.styles.push(t):r.styles=[t]}),this.classes.set(t,r)}getClasses(){return this.classes}getStylesForClass(t){return this.classes.get(t)?.styles??[]}clear(){fh(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}}});function LBt(t){if(!t.length)return[];let n=[],i=[];return t.forEach(t=>{var e,r={name:t.name,children:"Leaf"===t.type?void 0:[]};for(r.classSelector=t?.classSelector,t?.cssCompiledStyles&&(r.cssCompiledStyles=[t.cssCompiledStyles]),"Leaf"===t.type&&void 0!==t.value&&(r.value=t.value);0=t.level;)i.pop();0===i.length?n.push(r):(e=i[i.length-1].node).children?e.children.push(r):e.children=[r],"Leaf"!==t.type&&i.push({node:r,level:t.level})}),n}var NBt,IBt,RBt,MBt,DBt,OBt,PBt,BBt,$Bt,FBt=b(()=>{me(LBt,"buildHierarchy")}),zBt=b(()=>{v6t(),t(),k6t(),FBt(),ABt(),NBt=me((t,n)=>{x6t(t,n);var e,r,i=[];for(e of t.TreemapRows??[])"ClassDefStatement"===e.$type&&n.addClass(e.className??"",e.styleText??"");for(r of t.TreemapRows??[]){var a,s,o,l=r.item;l&&(o=r.indent?parseInt(r.indent):0,a=IBt(l),s=0<(s=l.classSelector?n.getStylesForClass(l.classSelector):[]).length?s.join(";"):void 0,o={level:o,name:a,type:l.$type,value:l.value,classSelector:l.classSelector,cssCompiledStyles:s},i.push(o))}let c=LBt(i),h=me((t,e)=>{for(var r of t)n.addNode(r,e),r.children&&0t.name?String(t.name):"","getItemName"),RBt={parser:{yy:void 0},parse:me(async t=>{try{var e=await g6t("treemap",t),r=(D.debug("Treemap AST:",e),RBt.parser?.yy);if(!(r instanceof SBt))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");NBt(e,r)}catch(t){throw D.error("Error parsing treemap:",t),t}},"parse")}}),GBt=b(()=>{z7t(),hct(),lh(),i6(),MN(),rn(),t(),MBt=me((t,a,e,s)=>{let r=s.db,o=r.getConfig(),l=o.padding??10,c=r.getDiagramTitle(),h=r.getRoot(),u=ar().themeVariables;if(h){var s=c?30:0,d=M7t(a),p=o.nodeWidth?10*o.nodeWidth:960,g=o.nodeHeight?10*o.nodeHeight:500,f=p,m=g+s;d.attr("viewBox",`0 0 ${f} `+m),Zc(d,m,f,o.useMaxWidth);let r;try{var y=o.valueFormat||",";if("$0,0"===y)r=me(t=>"$"+rv(",")(t),"valueFormat");else if(y.startsWith("$")&&y.includes(",")){let t=/\.\d+/.exec(y),e=t?t[0]:"";r=me(t=>"$"+rv(","+e)(t),"valueFormat")}else if(y.startsWith("$")){let e=y.substring(1);r=me(t=>"$"+rv(e||"")(t),"valueFormat")}else r=rv(y)}catch(t){D.error("Error creating format function:",t),r=rv(",")}let e=yx().range(["transparent",u.cScale0,u.cScale1,u.cScale2,u.cScale3,u.cScale4,u.cScale5,u.cScale6,u.cScale7,u.cScale8,u.cScale9,u.cScale10,u.cScale11]),n=yx().range(["transparent",u.cScalePeer0,u.cScalePeer1,u.cScalePeer2,u.cScalePeer3,u.cScalePeer4,u.cScalePeer5,u.cScalePeer6,u.cScalePeer7,u.cScalePeer8,u.cScalePeer9,u.cScalePeer10,u.cScalePeer11]),i=yx().range([u.cScaleLabel0,u.cScaleLabel1,u.cScaleLabel2,u.cScaleLabel3,u.cScaleLabel4,u.cScaleLabel5,u.cScaleLabel6,u.cScaleLabel7,u.cScaleLabel8,u.cScaleLabel9,u.cScaleLabel10,u.cScaleLabel11]);c&&d.append("text").attr("x",f/2).attr("y",s/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(c),m=d.append("g").attr("transform",`translate(0, ${s})`).attr("class","treemapContainer"),y=Gv(h).sum(t=>t.value??0).sort((t,e)=>(e.value??0)-(t.value??0)),s=(f=hx().size([p,g]).paddingTop(t=>t.children&&0t.children&&0t.children&&0t.children&&0t.children&&0`translate(${t.x0},${t.y0})`)).append("rect").attr("width",t=>t.x1-t.x0).attr("height",25).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",t=>0===t.depth?"display: none;":""),p.append("clipPath").attr("id",(t,e)=>`clip-section-${a}-`+e).append("rect").attr("width",t=>Math.max(0,t.x1-t.x0-12)).attr("height",25),p.append("rect").attr("width",t=>t.x1-t.x0).attr("height",t=>t.y1-t.y0).attr("class",(t,e)=>"treemapSection section"+e).attr("fill",t=>e(t.data.name)).attr("fill-opacity",.6).attr("stroke",t=>n(t.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",t=>0===t.depth?"display: none;":(t=Q({cssCompiledStyles:t.data.cssCompiledStyles})).nodeStyles+";"+t.borderStyles.join(";")),p.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",12.5).attr("dominant-baseline","middle").text(t=>0===t.depth?"":t.data.name).attr("font-weight","bold").attr("style",t=>0===t.depth?"display: none;":"dominant-baseline: middle; font-size: 12px; fill:"+i(t.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"+Q({cssCompiledStyles:t.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")).each(function(t){if(0!==t.depth){var e=H(this),r=t.data.name,n=(e.text(r),t.x1-t.x0),t=!1!==o.showValues&&t.value?n-10-30-10-6:n-6-6,i=Math.max(15,t),a=e.node();if(a.getComputedTextLength()>i){let t=r;for(;0i&&e.text("");break}if(e.text(t+"..."),a.getComputedTextLength()<=i)break}}}}),!1!==o.showValues&&p.append("text").attr("class","treemapSectionValue").attr("x",t=>t.x1-t.x0-10).attr("y",12.5).attr("text-anchor","end").attr("dominant-baseline","middle").text(t=>t.value?r(t.value):"").attr("font-style","italic").attr("style",t=>0===t.depth?"display: none;":"text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+i(t.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"+Q({cssCompiledStyles:t.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")),g=f.leaves(),(y=m.selectAll(".treemapLeafGroup").data(g).enter().append("g").attr("class",(t,e)=>`treemapNode treemapLeafGroup leaf${e}${t.data.classSelector?" "+t.data.classSelector:""}x`).attr("transform",t=>`translate(${t.x0},${t.y0})`)).append("rect").attr("width",t=>t.x1-t.x0).attr("height",t=>t.y1-t.y0).attr("class","treemapLeaf").attr("fill",t=>t.parent?e(t.parent.data.name):e(t.data.name)).attr("style",t=>Q({cssCompiledStyles:t.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",t=>t.parent?e(t.parent.data.name):e(t.data.name)).attr("stroke-width",3),y.append("clipPath").attr("id",(t,e)=>`clip-${a}-`+e).append("rect").attr("width",t=>Math.max(0,t.x1-t.x0-4)).attr("height",t=>Math.max(0,t.y1-t.y0-4)),y.append("text").attr("class","treemapLabel").attr("x",t=>(t.x1-t.x0)/2).attr("y",t=>(t.y1-t.y0)/2).attr("style",t=>"text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+i(t.data.name)+";"+Q({cssCompiledStyles:t.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")).attr("clip-path",(t,e)=>`url(#clip-${a}-${e})`).text(t=>t.data.name).each(function(t){var n=H(this),e=t.x1-t.x0,t=t.y1-t.y0,i=n.node(),a=e-8,s=t-8;if(a<10||s<10)n.style("display","none");else{let t=parseInt(n.style("font-size"),10);for(;i.getComputedTextLength()>a&&8s&&8a||t<8||s(t.x1-t.x0)/2).attr("y",function(t){return(t.y1-t.y0)/2}).attr("style",t=>"text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+i(t.data.name)+";"+Q({cssCompiledStyles:t.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")).attr("clip-path",(t,e)=>`url(#clip-${a}-${e})`).text(t=>t.value?r(t.value):"").each(function(t){var e,r,n=H(this),i=this.parentNode;!i||(i=H(i).select(".treemapLabel")).empty()||"none"===i.style("display")||(i=parseFloat(i.style("font-size")),e=Math.max(6,Math.min(28,Math.round(.6*i))),n.style("font-size",e+"px"),i=(t.y1-t.y0)/2+i/2+2,n.attr("y",i),r=t.x1-t.x0,t=t.y1-t.y0-4,r-=8,n.node().getComputedTextLength()>r)||t{iS(),PBt={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelColor:"black",labelFontSize:"12px",valueFontSize:"10px",valueColor:"black",titleColor:"black",titleFontSize:"14px"},BBt=me(({treemap:t}={})=>` + .treemapNode.section { + stroke: ${(t=SC(PBt,t)).sectionStrokeColor}; + stroke-width: ${t.sectionStrokeWidth}; + fill: ${t.sectionFillColor}; + } + .treemapNode.leaf { + stroke: ${t.leafStrokeColor}; + stroke-width: ${t.leafStrokeWidth}; + fill: ${t.leafFillColor}; + } + .treemapLabel { + fill: ${t.labelColor}; + font-size: ${t.labelFontSize}; + } + .treemapValue { + fill: ${t.valueColor}; + font-size: ${t.valueFontSize}; + } + .treemapTitle { + fill: ${t.titleColor}; + font-size: ${t.titleFontSize}; + } + `,"getStyles"),$Bt=BBt}),qBt={};KBt(qBt,{diagram:()=>jBt});var jBt,WBt,YBt=b(()=>{ABt(),zBt(),GBt(),UBt(),jBt={parser:RBt,get db(){return new SBt},renderer:OBt,styles:$Bt}}),HBt=(KBt(WBt={},{default:()=>szt}),Pc(),nh(),sh(),{id:"c4",detector:me(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),loader:me(async()=>({id:"c4",diagram:(await Promise.resolve().then(()=>(IS(),LS))).diagram}),"loader")}),VBt={id:"flowchart",detector:me((t,e)=>"dagre-wrapper"!==e?.flowchart?.defaultRenderer&&"elk"!==e?.flowchart?.defaultRenderer&&/^\s*graph/.test(t),"detector"),loader:me(async()=>({id:"flowchart",diagram:(await Promise.resolve().then(()=>(wct(),mct))).diagram}),"loader")},XBt="flowchart-v2",b=me((t,e)=>"dagre-d3"!==e?.flowchart?.defaultRenderer&&("elk"===e?.flowchart?.defaultRenderer&&(e.layout="elk"),!(!/^\s*graph/.test(t)||"dagre-wrapper"!==e?.flowchart?.defaultRenderer)||/^\s*flowchart/.test(t)),"detector"),KBt=me(async()=>{var t=(await Promise.resolve().then(()=>(wct(),mct))).diagram;return{id:XBt,diagram:t}},"loader"),ZBt={id:XBt,detector:b,loader:KBt},QBt={id:"er",detector:me(t=>/^\s*erDiagram/.test(t),"detector"),loader:me(async()=>({id:"er",diagram:(await Promise.resolve().then(()=>(Mct(),Ict))).diagram}),"loader")},JBt={id:"gitGraph",detector:me(t=>/^\s*gitGraph/.test(t),"detector"),loader:me(async()=>({id:"gitGraph",diagram:(await Promise.resolve().then(()=>(jkt(),zkt))).diagram}),"loader")},t$t={id:"gantt",detector:me(t=>/^\s*gantt/.test(t),"detector"),loader:me(async()=>({id:"gantt",diagram:(await Promise.resolve().then(()=>(P7t(),S7t))).diagram}),"loader")},e$t={id:"info",detector:me(t=>/^\s*info/.test(t),"detector"),loader:me(async()=>({id:"info",diagram:(await Promise.resolve().then(()=>(l8t(),U7t))).diagram}),"loader")},r$t={id:"pie",detector:me(t=>/^\s*pie/.test(t),"detector"),loader:me(async()=>({id:"pie",diagram:(await Promise.resolve().then(()=>(x8t(),p8t))).diagram}),"loader")},n$t="quadrantChart",b=me(t=>/^\s*quadrantChart/.test(t),"detector"),KBt=me(async()=>{var t=(await Promise.resolve().then(()=>(tEt(),K8t))).diagram;return{id:n$t,diagram:t}},"loader"),i$t={id:n$t,detector:b,loader:KBt},a$t={id:"xychart",detector:me(t=>/^\s*xychart(-beta)?/.test(t),"detector"),loader:me(async()=>({id:"xychart",diagram:(await Promise.resolve().then(()=>(yCt(),hCt))).diagram}),"loader")},s$t="requirement",b=me(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),KBt=me(async()=>{var t=(await Promise.resolve().then(()=>(wSt(),ECt))).diagram;return{id:s$t,diagram:t}},"loader"),o$t={id:s$t,detector:b,loader:KBt},l$t={id:"sequence",detector:me(t=>/^\s*sequenceDiagram/.test(t),"detector"),loader:me(async()=>({id:"sequence",diagram:(await Promise.resolve().then(()=>(u_t(),XSt))).diagram}),"loader")},c$t={id:"class",detector:me((t,e)=>"dagre-wrapper"!==e?.class?.defaultRenderer&&/^\s*classDiagram/.test(t),"detector"),loader:me(async()=>({id:"class",diagram:(await Promise.resolve().then(()=>(x_t(),y_t))).diagram}),"loader")},h$t="classDiagram",b=me((t,e)=>!(!/^\s*classDiagram/.test(t)||"dagre-wrapper"!==e?.class?.defaultRenderer)||/^\s*classDiagram-v2/.test(t),"detector"),KBt=me(async()=>{var t=(await Promise.resolve().then(()=>(oAt(),b_t))).diagram;return{id:h$t,diagram:t}},"loader"),u$t={id:h$t,detector:b,loader:KBt},d$t={id:"state",detector:me((t,e)=>"dagre-wrapper"!==e?.state?.defaultRenderer&&/^\s*stateDiagram/.test(t),"detector"),loader:me(async()=>({id:"state",diagram:(await Promise.resolve().then(()=>(a9t(),n9t))).diagram}),"loader")},p$t="stateDiagram",b=me((t,e)=>!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&"dagre-wrapper"===e?.state?.defaultRenderer),"detector"),KBt=me(async()=>{var t=(await Promise.resolve().then(()=>($9t(),s9t))).diagram;return{id:p$t,diagram:t}},"loader"),g$t={id:p$t,detector:b,loader:KBt},f$t={id:"journey",detector:me(t=>/^\s*journey/.test(t),"detector"),loader:me(async()=>({id:"journey",diagram:(await Promise.resolve().then(()=>(sLt(),rLt))).diagram}),"loader")},m$t=(t(),z7t(),lh(),b={draw:me((t,e,r)=>{D.debug(`rendering svg for syntax error +`);var n=(e=M7t(e)).append("g");e.attr("viewBox","0 0 2412 512"),Zc(e,100,512,!0),n.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"),n.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"),n.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"),n.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"),n.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"),n.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"),n.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"),n.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text("mermaid version "+r)},"draw")}),y$t={db:{},renderer:b,parser:{parse:me(()=>{},"parse")}},v$t="flowchart-elk",KBt=me((t,e={})=>!!(/^\s*flowchart-elk/.test(t)||/^\s*(flowchart|graph)/.test(t)&&"elk"===e?.flowchart?.defaultRenderer)&&(e.layout="elk",!0),"detector"),b=me(async()=>{var t=(await Promise.resolve().then(()=>(wct(),mct))).diagram;return{id:v$t,diagram:t}},"loader"),x$t={id:v$t,detector:KBt,loader:b},b$t={id:"timeline",detector:me(t=>/^\s*timeline/.test(t),"detector"),loader:me(async()=>({id:"timeline",diagram:(await Promise.resolve().then(()=>(nNt(),JLt))).diagram}),"loader")},w$t={id:"mindmap",detector:me(t=>/^\s*mindmap/.test(t),"detector"),loader:me(async()=>({id:"mindmap",diagram:(await Promise.resolve().then(()=>(eIt(),LNt))).diagram}),"loader")},k$t={id:"kanban",detector:me(t=>/^\s*kanban/.test(t),"detector"),loader:me(async()=>({id:"kanban",diagram:(await Promise.resolve().then(()=>(kIt(),sIt))).diagram}),"loader")},T$t={id:"sankey",detector:me(t=>/^\s*sankey(-beta)?/.test(t),"detector"),loader:me(async()=>({id:"sankey",diagram:(await Promise.resolve().then(()=>(VRt(),ORt))).diagram}),"loader")},E$t={id:"packet",detector:me(t=>/^\s*packet(-beta)?/.test(t),"detector"),loader:me(async()=>({id:"packet",diagram:(await Promise.resolve().then(()=>(yMt(),JRt))).diagram}),"loader")},C$t={id:"radar",detector:me(t=>/^\s*radar-beta/.test(t),"detector"),loader:me(async()=>({id:"radar",diagram:(await Promise.resolve().then(()=>($Mt(),DMt))).diagram}),"loader")},S$t={id:"block",detector:me(t=>/^\s*block(-beta)?/.test(t),"detector"),loader:me(async()=>({id:"block",diagram:(await Promise.resolve().then(()=>(nBt(),CPt))).diagram}),"loader")},_$t="architecture",KBt=me(t=>/^\s*architecture/.test(t),"detector"),b=me(async()=>{var t=(await Promise.resolve().then(()=>(_Bt(),EBt))).diagram;return{id:_$t,diagram:t}},"loader"),A$t={id:_$t,detector:KBt,loader:b},L$t=(sh(),Tu(),{id:"treemap",detector:me(t=>/^\s*treemap/.test(t),"detector"),loader:me(async()=>({id:"treemap",diagram:(await Promise.resolve().then(()=>(YBt(),qBt))).diagram}),"loader")}),N$t=!1,I$t=me(()=>{N$t||(N$t=!0,Nh("error",y$t,t=>"error"===t.toLowerCase().trim()),Nh("---",{db:{clear:me(()=>{},"clear")},styles:{},renderer:{draw:me(()=>{},"draw")},parser:{parse:me(()=>{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")},"parse")},init:me(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),jc(x$t,w$t,A$t),jc(HBt,k$t,u$t,c$t,QBt,t$t,e$t,r$t,o$t,l$t,ZBt,VBt,b$t,JBt,g$t,d$t,f$t,i$t,T$t,E$t,a$t,S$t,C$t,L$t))},"addDiagrams"),R$t=(t(),sh(),Tu(),me(async()=>{D.debug("Loading registered diagrams");var t=(await Promise.allSettled(Object.entries(Uc).map(async([t,{detector:e,loader:r}])=>{if(r)try{Ih(t)}catch{try{var{diagram:n,id:i}=await r();Nh(i,n,e)}catch(e){throw D.error(`Failed to load external diagram with key ${t}. Removing from detectors.`),delete Uc[t],e}}}))).filter(t=>"rejected"===t.status);if(0{kFt.forEach(t=>{t()}),kFt=[]},"attachFunctions"),EFt=(t(),me(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments"));function CFt(t){var e,r,n=t.match($c);return n?(r={},(e="object"!=typeof(e=$9(n[1],{schema:B9})??{})||Array.isArray(e)?{}:e).displayMode&&(r.displayMode=e.displayMode.toString()),e.title&&(r.title=e.title.toString()),e.config&&(r.config=e.config),{text:t.slice(n[0].length),metadata:r}):{text:t,metadata:{}}}ih(),F9(),me(CFt,"extractFrontMatter"),iS();var SFt=me(t=>t.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(t,e,r)=>"<"+e+r.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),_Ft=me(t=>{var{text:t,metadata:e}=CFt(t),{displayMode:e,title:r,config:n={}}=e;return e&&(n.gantt||(n.gantt={}),n.gantt.displayMode=e),{title:r,config:n,text:t}},"processFrontmatter"),AFt=me(t=>{var e=tS.detectInit(t)??{},r=tS.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:t})=>"wrap"===t):"wrap"===r?.type&&(e.wrap=!0),{text:OC(t),directive:e}},"processDirectives");function LFt(t){var e=SFt(t),e=_Ft(e),r=AFt(e.text),n=SC(e.config,r.directive);return{code:t=EFt(r.text),title:e.title,config:n}}function NFt(t){return t=(new TextEncoder).encode(t),t=Array.from(t,t=>String.fromCodePoint(t)).join(""),btoa(t)}me(LFt,"preprocessDiagram"),ch(),Qr(),iS(),me(NFt,"toBase64");var IFt=["foreignobject"],RFt=["dominant-baseline"];function MFt(t){return t=LFt(t),lr(),or(t.config??{}),t}async function DFt(t,e){I$t();try{var{code:r,config:n}=MFt(t);return{diagramType:(await jFt(r)).type,config:n}}catch(t){if(e?.suppressErrors)return!1;throw t}}me(MFt,"processAndSetConfigs"),me(DFt,"parse");var OFt=me((t,e,r=[])=>` +.${t} ${e} { ${r.join(" !important; ")} !important; }`,"cssImportantStyles"),PFt=me((e,r=new Map)=>{let n="";if(void 0!==e.themeCSS&&(n+=` +`+e.themeCSS),void 0!==e.fontFamily&&(n+=` +:root { --mermaid-font-family: ${e.fontFamily}}`),void 0!==e.altFontFamily&&(n+=` +:root { --mermaid-alt-font-family: ${e.altFontFamily}}`),r instanceof Map){let t=e.htmlLabels??e.flowchart?.htmlLabels?["> *","span"]:["rect","polygon","ellipse","circle","path"];r.forEach(e=>{bj(e.styles)||t.forEach(t=>{n+=OFt(e.id,t,e.styles)}),bj(e.textStyles)||(n+=OFt(e.id,"tspan",(e?.textStyles||[]).map(t=>t.replace("color","fill"))))})}return n},"createCssStyles"),BFt=me((t,e,r,n)=>(r=PFt(t,r),yFt(dFt(n+`{${rh(e,r,t.themeVariables)}}`),vFt)),"createUserStyles"),$Ft=me((t="",e,r)=>{let n=t;return r||e||(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=(n=rS(n)).replace(/
/g,"
")},"cleanUpSvgCode"),FFt=me((t="",e)=>``,"putIntoIFrame"),zFt=me((t,e,r,n,i)=>{var a=t.append("div"),r=(a.attr("id",r),n&&a.attr("style",n),a.append("svg").attr("id",e).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg"));return i&&r.attr("xmlns:xlink",i),r.append("g"),t},"appendDivSvgG");function GFt(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}me(GFt,"sandboxedIframe");var UFt=me((t,e,r,n)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(n)?.remove()},"removeExistingElements"),KBt=me(async function(t,e,r){I$t();var n=MFt(e),i=(e=n.code,ar());D.debug(i),e.length>(i?.maxTextSize??5e4)&&(e="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa");let a="#"+t,s="i"+t,o="#"+s,l="d"+t,c="#"+l,h=me(()=>{var t=H(d?o:c).node();t&&"remove"in t&&t.remove()},"removeTempElements"),u=H("body"),d="sandbox"===i.securityLevel,p="loose"===i.securityLevel,g=i.fontFamily;void 0!==r?(r&&(r.innerHTML=""),d?(y=GFt(H(r),s),(u=H(y.nodes()[0].contentDocument.body)).node().style.margin=0):u=H(r),zFt(u,t,l,"font-family: "+g,"http://www.w3.org/1999/xlink")):(UFt(document,t,l,s),d?(y=GFt(H("body"),s),(u=H(y.nodes()[0].contentDocument.body)).node().style.margin=0):u=H("body"),zFt(u,t,l));let f,m;try{f=await wFt.fromText(e,{title:n.title})}catch(r){if(i.suppressErrorRendering)throw h(),r;f=await wFt.fromText("error"),m=r}var r=u.select(c).node(),y=f.type,r=(n=r.firstChild).firstChild,v=f.renderer.getClasses?.(e,f),v=BFt(i,y,v,a),x=document.createElement("style");x.innerHTML=v,n.insertBefore(x,r);try{await f.renderer.draw(e,t,L7t.version,f)}catch(r){throw i.suppressErrorRendering?h():m$t.draw(e,t,L7t.version),r}WFt(y,u.select(c+" svg"),f.db.getAccTitle?.(),f.db.getAccDescription?.()),u.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");let b=u.select(c).node().innerHTML;if(D.debug("config.arrowMarkerAbsolute",i.arrowMarkerAbsolute),b=$Ft(b,d,fc(i.arrowMarkerAbsolute)),d?(v=u.select(c+" svg").node(),b=FFt(b,v)):p||(b=si.sanitize(b,{ADD_TAGS:IFt,ADD_ATTR:RFt,HTML_INTEGRATION_POINTS:{foreignobject:!0}})),TFt(),m)throw m;return h(),{diagramType:y,svg:b,bindFunctions:f.db.bindFunctions}},"render");function qFt(t={}){(t=At({},t))?.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables||(t.themeVariables={}),t.themeVariables.fontFamily=t.fontFamily),er(t),t?.theme&&t.theme in ze?t.themeVariables=ze[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=ze.default.getThemeVariables(t.themeVariables)),t="object"==typeof t?tr(t):nr(),It(t.logLevel),I$t()}me(qFt,"initialize");var jFt=me((t,e={})=>(t=LFt(t).code,wFt.fromText(t,e)),"getDiagramFromText");function WFt(t,e,r,n){xFt(e,t),bFt(e,r,n,e.attr("id"))}me(WFt,"addA11yInfo");var YFt=Object.freeze({render:KBt,parse:DFt,getDiagramFromText:jFt,initialize:qFt,getConfig:ar,setConfig:ir,getSiteConfig:nr,updateSiteConfig:rr,reset:me(()=>{lr()},"reset"),globalReset:me(()=>{lr(Ve)},"globalReset"),defaultConfig:Ve}),HFt=(It(ar().logLevel),lr(ar()),cct(),iS(),me((t,e,r)=>{D.warn(t),CC(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},"handleError")),VFt=me(async function(e={querySelector:".mermaid"}){try{await XFt(e)}catch(t){if(CC(t)&&D.error(t.str),azt.parseError&&azt.parseError(t),!e.suppressErrors)throw D.error("Use the suppressErrors option to suppress these errors"),t}},"run"),XFt=me(async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){var n=YFt.getConfig();D.debug(`${t?"":"No "}Callback function found`);let i;if(r)i=r;else{if(!e)throw new Error("Nodes and querySelector are both undefined");i=document.querySelectorAll(e)}D.debug(`Found ${i.length} diagrams`),void 0!==n?.startOnLoad&&(D.debug("Start On Load: "+n?.startOnLoad),YFt.updateSiteConfig({startOnLoad:n?.startOnLoad}));var a,s=new tS.InitIDGenerator(n.deterministicIds,n.deterministicIDSeed),o=[];for(a of Array.from(i))if(D.info("Rendering diagram: "+a.id),!a.getAttribute("data-processed")){a.setAttribute("data-processed","true");var l="mermaid-"+s.next(),c=a.innerHTML,h=(c=Bc(tS.entityDecode(c)).trim().replace(//gi,"
"),tS.detectInit(c));h&&D.debug("Detected early reinit: ",h);try{var{svg:u,bindFunctions:d}=await nzt(l,c,a);a.innerHTML=u,t&&await t(l),d&&d(a)}catch(t){HFt(t,o,azt.parseError)}}if(0{I$t(),jc(...t),!1===e&&await R$t()},"registerExternalDiagrams"),ZFt=me(function(){azt.startOnLoad&&YFt.getConfig().startOnLoad&&azt.run().catch(t=>D.error("Mermaid failed to initialize",t))},"contentLoaded"),QFt=(typeof document<"u"&&window.addEventListener("load",ZFt,!1),me(function(t){azt.parseError=t},"setParseErrorHandler")),JFt=[],tzt=!1,ezt=me(async()=>{if(!tzt){for(tzt=!0;0new Promise((n,i)=>{var t=me(()=>new Promise((e,r)=>{YFt.parse(a,s).then(t=>{e(t),n(t)},t=>{D.error("Error parsing",t),azt.parseError?.(t),r(t),i(t)})}),"performCall");JFt.push(t),ezt().catch(i)}),"parse"),nzt=me((a,s,o)=>new Promise((n,i)=>{var t=me(()=>new Promise((e,r)=>{YFt.render(a,s,o).then(t=>{e(t),n(t)},t=>{D.error("Error parsing",t),azt.parseError?.(t),r(t),i(t)})}),"performCall");JFt.push(t),ezt().catch(i)}),"render"),izt=me(()=>Object.keys(Uc).map(t=>({id:t})),"getRegisteredDiagramsMetadata"),azt={startOnLoad:!0,mermaidAPI:YFt,parse:rzt,render:nzt,init:b,run:VFt,registerExternalDiagrams:KBt,registerLayoutLoaders:Wlt,initialize:KFt,parseError:void 0,contentLoaded:ZFt,setParseErrorHandler:QFt,detectType:qc,registerIconPacks:Ic,getRegisteredDiagramsMetadata:izt},szt=azt,rzt=WBt;return G(R({},"__esModule",{value:!0}),rzt)})(),globalThis.mermaid=globalThis.__esbuild_esm_mermaid_nm.mermaid.default; diff --git a/static/js/searchElasticlunr.js b/static/js/searchElasticlunr.js new file mode 100644 index 0000000..9ad09e1 --- /dev/null +++ b/static/js/searchElasticlunr.js @@ -0,0 +1,3201 @@ +/** + * elasticlunr - http://weixsong.github.io + * Lightweight full-text search engine in Javascript for browser search and offline search. - 0.9.5 + * + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + * MIT Licensed + * @license + */ +(function () { + /*! + * elasticlunr.js + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + */ + + /** + * Convenience function for instantiating a new elasticlunr index and configuring it + * with the default pipeline functions and the passed config function. + * + * When using this convenience function a new index will be created with the + * following functions already in the pipeline: + * + * 1. elasticlunr.trimmer - trim non-word character + * 2. elasticlunr.StopWordFilter - filters out any stop words before they enter the + * index + * 3. elasticlunr.stemmer - stems the tokens before entering the index. + * + * + * Example: + * + * var idx = elasticlunr(function () { + * this.addField('id'); + * this.addField('title'); + * this.addField('body'); + * + * //this.setRef('id'); // default ref is 'id' + * + * this.pipeline.add(function () { + * // some custom pipeline function + * }); + * }); + * + * idx.addDoc({ + * id: 1, + * title: 'Oracle released database 12g', + * body: 'Yestaday, Oracle has released their latest database, named 12g, more robust. this product will increase Oracle profit.' + * }); + * + * idx.addDoc({ + * id: 2, + * title: 'Oracle released annual profit report', + * body: 'Yestaday, Oracle has released their annual profit report of 2015, total profit is 12.5 Billion.' + * }); + * + * # simple search + * idx.search('oracle database'); + * + * # search with query-time boosting + * idx.search('oracle database', {fields: {title: {boost: 2}, body: {boost: 1}}}); + * + * @param {Function} config A function that will be called with the new instance + * of the elasticlunr.Index as both its context and first parameter. It can be used to + * customize the instance of new elasticlunr.Index. + * @namespace + * @module + * @return {elasticlunr.Index} + * + */ + const elasticlunr = function (config) { + const idx = new elasticlunr.Index(); + + idx.pipeline.add( + elasticlunr.trimmer, + elasticlunr.stopWordFilter, + elasticlunr.stemmer + ); + + if (config) config.call(idx, idx); + + return idx; + }; + + elasticlunr.version = '0.9.5'; + + // only used this to make elasticlunr.js compatible with lunr-languages + // this is a trick to define a global alias of elasticlunr + lunr = elasticlunr; + + /*! + * elasticlunr.utils + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + */ + + /** + * A namespace containing utils for the rest of the elasticlunr library + */ + elasticlunr.utils = {}; + + /** + * Print a warning message to the console. + * + * @param {String} message The message to be printed. + * @memberOf Utils + */ + elasticlunr.utils.warn = (function (global) { + return function (message) { + if (global.console && console.warn) { + console.warn(message); + } + }; + })(this); + + /** + * Convert an object to string. + * + * In the case of `null` and `undefined` the function returns + * an empty string, in all other cases the result of calling + * `toString` on the passed object is returned. + * + * @param {object} obj The object to convert to a string. + * @return {String} string representation of the passed object. + * @memberOf Utils + */ + elasticlunr.utils.toString = function (obj) { + if (obj === void 0 || obj === null) { + return ''; + } + + return obj.toString(); + }; + /*! + * elasticlunr.EventEmitter + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + */ + + /** + * elasticlunr.EventEmitter is an event emitter for elasticlunr. + * It manages adding and removing event handlers and triggering events and their handlers. + * + * Each event could has multiple corresponding functions, + * these functions will be called as the sequence that they are added into the event. + * + * @constructor + */ + elasticlunr.EventEmitter = function () { + this.events = {}; + }; + + /** + * Binds a handler function to a specific event(s). + * + * Can bind a single function to many different events in one call. + * + * @param {String} [eventName] The name(s) of events to bind this function to. + * @param {Function} fn The function to call when an event is fired. + * @memberOf EventEmitter + */ + elasticlunr.EventEmitter.prototype.addListener = function () { + const args = Array.prototype.slice.call(arguments); + const fn = args.pop(); + const names = args; + + if (typeof fn !== 'function') + throw new TypeError('last argument must be a function'); + + names.forEach(function (name) { + if (!this.hasHandler(name)) this.events[name] = []; + this.events[name].push(fn); + }, this); + }; + + /** + * Removes a handler function from a specific event. + * + * @param {String} eventName The name of the event to remove this function from. + * @param {Function} fn The function to remove from an event. + * @memberOf EventEmitter + */ + elasticlunr.EventEmitter.prototype.removeListener = function (name, fn) { + if (!this.hasHandler(name)) return; + + const fnIndex = this.events[name].indexOf(fn); + if (fnIndex === -1) return; + + this.events[name].splice(fnIndex, 1); + + if (this.events[name].length === 0) delete this.events[name]; + }; + + /** + * Call all functions that bounded to the given event. + * + * Additional data can be passed to the event handler as arguments to `emit` + * after the event name. + * + * @param {String} eventName The name of the event to emit. + * @memberOf EventEmitter + */ + elasticlunr.EventEmitter.prototype.emit = function (name) { + if (!this.hasHandler(name)) return; + + const args = Array.prototype.slice.call(arguments, 1); + + this.events[name].forEach(function (fn) { + fn.apply(undefined, args); + }, this); + }; + + /** + * Checks whether a handler has ever been stored against an event. + * + * @param {String} eventName The name of the event to check. + * @private + * @memberOf EventEmitter + */ + elasticlunr.EventEmitter.prototype.hasHandler = function (name) { + return name in this.events; + }; + /*! + * elasticlunr.tokenizer + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + */ + + /** + * A function for splitting a string into tokens. + * Currently English is supported as default. + * Uses `elasticlunr.tokenizer.seperator` to split strings, you could change + * the value of this property to set how you want strings are split into tokens. + * IMPORTANT: use elasticlunr.tokenizer.seperator carefully, if you are not familiar with + * text process, then you'd better not change it. + * + * @module + * @param {String} str The string that you want to tokenize. + * @see elasticlunr.tokenizer.seperator + * @return {Array} + */ + elasticlunr.tokenizer = function (str) { + if (!arguments.length || str === null || str === undefined) return []; + if (Array.isArray(str)) { + let arr = str.filter(function (token) { + if (token === null || token === undefined) { + return false; + } + + return true; + }); + + arr = arr.map(function (t) { + return elasticlunr.utils.toString(t).toLowerCase(); + }); + + let out = []; + arr.forEach(function (item) { + const tokens = item.split(elasticlunr.tokenizer.seperator); + out = out.concat(tokens); + }, this); + + return out; + } + + return str + .toString() + .trim() + .toLowerCase() + .split(elasticlunr.tokenizer.seperator); + }; + + /** + * Default string seperator. + */ + elasticlunr.tokenizer.defaultSeperator = /[\s-]+/; + + /** + * The sperator used to split a string into tokens. Override this property to change the behaviour of + * `elasticlunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens. + * + * @static + * @see elasticlunr.tokenizer + */ + elasticlunr.tokenizer.seperator = elasticlunr.tokenizer.defaultSeperator; + + /** + * Set up customized string seperator + * + * @param {Object} sep The customized seperator that you want to use to tokenize a string. + */ + elasticlunr.tokenizer.setSeperator = function (sep) { + if (sep !== null && sep !== undefined && typeof sep === 'object') { + elasticlunr.tokenizer.seperator = sep; + } + }; + + /** + * Reset string seperator + * + */ + elasticlunr.tokenizer.resetSeperator = function () { + elasticlunr.tokenizer.seperator = elasticlunr.tokenizer.defaultSeperator; + }; + + /** + * Get string seperator + * + */ + elasticlunr.tokenizer.getSeperator = function () { + return elasticlunr.tokenizer.seperator; + }; + /*! + * elasticlunr.Pipeline + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + */ + + /** + * elasticlunr.Pipelines maintain an ordered list of functions to be applied to + * both documents tokens and query tokens. + * + * An instance of elasticlunr.Index will contain a pipeline + * with a trimmer, a stop word filter, an English stemmer. Extra + * functions can be added before or after either of these functions or these + * default functions can be removed. + * + * When run the pipeline, it will call each function in turn. + * + * The output of the functions in the pipeline will be passed to the next function + * in the pipeline. To exclude a token from entering the index the function + * should return undefined, the rest of the pipeline will not be called with + * this token. + * + * For serialisation of pipelines to work, all functions used in an instance of + * a pipeline should be registered with elasticlunr.Pipeline. Registered functions can + * then be loaded. If trying to load a serialised pipeline that uses functions + * that are not registered an error will be thrown. + * + * If not planning on serialising the pipeline then registering pipeline functions + * is not necessary. + * + * @constructor + */ + elasticlunr.Pipeline = function () { + this._queue = []; + }; + + elasticlunr.Pipeline.registeredFunctions = {}; + + /** + * Register a function in the pipeline. + * + * Functions that are used in the pipeline should be registered if the pipeline + * needs to be serialised, or a serialised pipeline needs to be loaded. + * + * Registering a function does not add it to a pipeline, functions must still be + * added to instances of the pipeline for them to be used when running a pipeline. + * + * @param {Function} fn The function to register. + * @param {String} label The label to register this function with + * @memberOf Pipeline + */ + elasticlunr.Pipeline.registerFunction = function (fn, label) { + if (label in elasticlunr.Pipeline.registeredFunctions) { + elasticlunr.utils.warn( + 'Overwriting existing registered function: ' + label + ); + } + + fn.label = label; + elasticlunr.Pipeline.registeredFunctions[label] = fn; + }; + + /** + * Get a registered function in the pipeline. + * + * @param {String} label The label of registered function. + * @return {Function} + * @memberOf Pipeline + */ + elasticlunr.Pipeline.getRegisteredFunction = function (label) { + if (label in elasticlunr.Pipeline.registeredFunctions !== true) { + return null; + } + + return elasticlunr.Pipeline.registeredFunctions[label]; + }; + + /** + * Warns if the function is not registered as a Pipeline function. + * + * @param {Function} fn The function to check for. + * @private + * @memberOf Pipeline + */ + elasticlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) { + const isRegistered = fn.label && fn.label in this.registeredFunctions; + + if (!isRegistered) { + elasticlunr.utils.warn( + 'Function is not registered with pipeline. This may cause problems when serialising the index.\n', + fn + ); + } + }; + + /** + * Loads a previously serialised pipeline. + * + * All functions to be loaded must already be registered with elasticlunr.Pipeline. + * If any function from the serialised data has not been registered then an + * error will be thrown. + * + * @param {Object} serialised The serialised pipeline to load. + * @return {elasticlunr.Pipeline} + * @memberOf Pipeline + */ + elasticlunr.Pipeline.load = function (serialised) { + const pipeline = new elasticlunr.Pipeline(); + + serialised.forEach(function (fnName) { + const fn = elasticlunr.Pipeline.getRegisteredFunction(fnName); + + if (fn) { + pipeline.add(fn); + } else { + throw new Error('Cannot load un-registered function: ' + fnName); + } + }); + + return pipeline; + }; + + /** + * Adds new functions to the end of the pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {Function} functions Any number of functions to add to the pipeline. + * @memberOf Pipeline + */ + elasticlunr.Pipeline.prototype.add = function () { + const fns = Array.prototype.slice.call(arguments); + + fns.forEach(function (fn) { + elasticlunr.Pipeline.warnIfFunctionNotRegistered(fn); + this._queue.push(fn); + }, this); + }; + + /** + * Adds a single function after a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * If existingFn is not found, throw an Exception. + * + * @param {Function} existingFn A function that already exists in the pipeline. + * @param {Function} newFn The new function to add to the pipeline. + * @memberOf Pipeline + */ + elasticlunr.Pipeline.prototype.after = function (existingFn, newFn) { + elasticlunr.Pipeline.warnIfFunctionNotRegistered(newFn); + + const pos = this._queue.indexOf(existingFn); + if (pos === -1) { + throw new Error('Cannot find existingFn'); + } + + this._queue.splice(pos + 1, 0, newFn); + }; + + /** + * Adds a single function before a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * If existingFn is not found, throw an Exception. + * + * @param {Function} existingFn A function that already exists in the pipeline. + * @param {Function} newFn The new function to add to the pipeline. + * @memberOf Pipeline + */ + elasticlunr.Pipeline.prototype.before = function (existingFn, newFn) { + elasticlunr.Pipeline.warnIfFunctionNotRegistered(newFn); + + const pos = this._queue.indexOf(existingFn); + if (pos === -1) { + throw new Error('Cannot find existingFn'); + } + + this._queue.splice(pos, 0, newFn); + }; + + /** + * Removes a function from the pipeline. + * + * @param {Function} fn The function to remove from the pipeline. + * @memberOf Pipeline + */ + elasticlunr.Pipeline.prototype.remove = function (fn) { + const pos = this._queue.indexOf(fn); + if (pos === -1) { + return; + } + + this._queue.splice(pos, 1); + }; + + /** + * Runs the current list of functions that registered in the pipeline against the + * input tokens. + * + * @param {Array} tokens The tokens to run through the pipeline. + * @return {Array} + * @memberOf Pipeline + */ + elasticlunr.Pipeline.prototype.run = function (tokens) { + const out = []; + const tokenLength = tokens.length; + const pipelineLength = this._queue.length; + + for (let i = 0; i < tokenLength; i++) { + let token = tokens[i]; + + for (let j = 0; j < pipelineLength; j++) { + token = this._queue[j](token, i, tokens); + if (token === void 0 || token === null) break; + } + + if (token !== void 0 && token !== null) out.push(token); + } + + return out; + }; + + /** + * Resets the pipeline by removing any existing processors. + * + * @memberOf Pipeline + */ + elasticlunr.Pipeline.prototype.reset = function () { + this._queue = []; + }; + + /** + * Get the pipeline if user want to check the pipeline. + * + * @memberOf Pipeline + */ + elasticlunr.Pipeline.prototype.get = function () { + return this._queue; + }; + + /** + * Returns a representation of the pipeline ready for serialisation. + * Only serialize pipeline function's name. Not storing function, so when + * loading the archived JSON index file, corresponding pipeline function is + * added by registered function of elasticlunr.Pipeline.registeredFunctions + * + * Logs a warning if the function has not been registered. + * + * @return {Array} + * @memberOf Pipeline + */ + elasticlunr.Pipeline.prototype.toJSON = function () { + return this._queue.map(function (fn) { + elasticlunr.Pipeline.warnIfFunctionNotRegistered(fn); + return fn.label; + }); + }; + /*! + * elasticlunr.Index + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + */ + + /** + * elasticlunr.Index is object that manages a search index. It contains the indexes + * and stores all the tokens and document lookups. It also provides the main + * user facing API for the library. + * + * @constructor + */ + elasticlunr.Index = function () { + this._fields = []; + this._ref = 'id'; + this.pipeline = new elasticlunr.Pipeline(); + this.documentStore = new elasticlunr.DocumentStore(); + this.index = {}; + this.eventEmitter = new elasticlunr.EventEmitter(); + this._idfCache = {}; + + this.on( + 'add', + 'remove', + 'update', + function () { + this._idfCache = {}; + }.bind(this) + ); + }; + + /** + * Bind a handler to events being emitted by the index. + * + * The handler can be bound to many events at the same time. + * + * @param {String} [eventName] The name(s) of events to bind the function to. + * @param {Function} fn The serialised set to load. + * @memberOf Index + */ + elasticlunr.Index.prototype.on = function () { + const args = Array.prototype.slice.call(arguments); + return this.eventEmitter.addListener.apply(this.eventEmitter, args); + }; + + /** + * Removes a handler from an event being emitted by the index. + * + * @param {String} eventName The name of events to remove the function from. + * @param {Function} fn The serialised set to load. + * @memberOf Index + */ + elasticlunr.Index.prototype.off = function (name, fn) { + return this.eventEmitter.removeListener(name, fn); + }; + + /** + * Loads a previously serialised index. + * + * Issues a warning if the index being imported was serialised + * by a different version of elasticlunr. + * + * @param {Object} serialisedData The serialised set to load. + * @return {elasticlunr.Index} + * @memberOf Index + */ + elasticlunr.Index.load = function (serialisedData) { + if (serialisedData.version !== elasticlunr.version) { + elasticlunr.utils.warn( + 'version mismatch: current ' + + elasticlunr.version + + ' importing ' + + serialisedData.version + ); + } + + const idx = new this(); + + idx._fields = serialisedData.fields; + idx._ref = serialisedData.ref; + idx.documentStore = elasticlunr.DocumentStore.load( + serialisedData.documentStore + ); + idx.pipeline = elasticlunr.Pipeline.load(serialisedData.pipeline); + idx.index = {}; + for (const field in serialisedData.index) { + idx.index[field] = elasticlunr.InvertedIndex.load( + serialisedData.index[field] + ); + } + + return idx; + }; + + /** + * Adds a field to the list of fields that will be searchable within documents in the index. + * + * Remember that inner index is build based on field, which means each field has one inverted index. + * + * Fields should be added before any documents are added to the index, fields + * that are added after documents are added to the index will only apply to new + * documents added to the index. + * + * @param {String} fieldName The name of the field within the document that should be indexed + * @return {elasticlunr.Index} + * @memberOf Index + */ + elasticlunr.Index.prototype.addField = function (fieldName) { + this._fields.push(fieldName); + this.index[fieldName] = new elasticlunr.InvertedIndex(); + return this; + }; + + /** + * Sets the property used to uniquely identify documents added to the index, + * by default this property is 'id'. + * + * This should only be changed before adding documents to the index, changing + * the ref property without resetting the index can lead to unexpected results. + * + * @param {String} refName The property to use to uniquely identify the + * documents in the index. + * @param {Boolean} emitEvent Whether to emit add events, defaults to true + * @return {elasticlunr.Index} + * @memberOf Index + */ + elasticlunr.Index.prototype.setRef = function (refName) { + this._ref = refName; + return this; + }; + + /** + * + * Set if the JSON format original documents are save into elasticlunr.DocumentStore + * + * Defaultly save all the original JSON documents. + * + * @param {Boolean} save Whether to save the original JSON documents. + * @return {elasticlunr.Index} + * @memberOf Index + */ + elasticlunr.Index.prototype.saveDocument = function (save) { + this.documentStore = new elasticlunr.DocumentStore(save); + return this; + }; + + /** + * Add a JSON format document to the index. + * + * This is the way new documents enter the index, this function will run the + * fields from the document through the index's pipeline and then add it to + * the index, it will then show up in search results. + * + * An 'add' event is emitted with the document that has been added and the index + * the document has been added to. This event can be silenced by passing false + * as the second argument to add. + * + * @param {Object} doc The JSON format document to add to the index. + * @param {Boolean} emitEvent Whether or not to emit events, default true. + * @memberOf Index + */ + elasticlunr.Index.prototype.addDoc = function (doc, emitEvent) { + if (!doc) return; + var emitEvent = emitEvent === undefined ? true : emitEvent; + + const docRef = doc[this._ref]; + + this.documentStore.addDoc(docRef, doc); + this._fields.forEach(function (field) { + const fieldTokens = this.pipeline.run(elasticlunr.tokenizer(doc[field])); + this.documentStore.addFieldLength(docRef, field, fieldTokens.length); + + const tokenCount = {}; + fieldTokens.forEach(function (token) { + if (token in tokenCount) tokenCount[token] += 1; + else tokenCount[token] = 1; + }, this); + + for (const token in tokenCount) { + let termFrequency = tokenCount[token]; + termFrequency = Math.sqrt(termFrequency); + this.index[field].addToken(token, { ref: docRef, tf: termFrequency }); + } + }, this); + + if (emitEvent) this.eventEmitter.emit('add', doc, this); + }; + + /** + * Removes a document from the index by doc ref. + * + * To make sure documents no longer show up in search results they can be + * removed from the index using this method. + * + * A 'remove' event is emitted with the document that has been removed and the index + * the document has been removed from. This event can be silenced by passing false + * as the second argument to remove. + * + * If user setting DocumentStore not storing the documents, then remove doc by docRef is not allowed. + * + * @param {String|Integer} docRef The document ref to remove from the index. + * @param {Boolean} emitEvent Whether to emit remove events, defaults to true + * @memberOf Index + */ + elasticlunr.Index.prototype.removeDocByRef = function (docRef, emitEvent) { + if (!docRef) return; + if (this.documentStore.isDocStored() === false) { + return; + } + + if (!this.documentStore.hasDoc(docRef)) return; + const doc = this.documentStore.getDoc(docRef); + this.removeDoc(doc, false); + }; + + /** + * Removes a document from the index. + * This remove operation could work even the original doc is not store in the DocumentStore. + * + * To make sure documents no longer show up in search results they can be + * removed from the index using this method. + * + * A 'remove' event is emitted with the document that has been removed and the index + * the document has been removed from. This event can be silenced by passing false + * as the second argument to remove. + * + * + * @param {Object} doc The document ref to remove from the index. + * @param {Boolean} emitEvent Whether to emit remove events, defaults to true + * @memberOf Index + */ + elasticlunr.Index.prototype.removeDoc = function (doc, emitEvent) { + if (!doc) return; + + var emitEvent = emitEvent === undefined ? true : emitEvent; + + const docRef = doc[this._ref]; + if (!this.documentStore.hasDoc(docRef)) return; + + this.documentStore.removeDoc(docRef); + + this._fields.forEach(function (field) { + const fieldTokens = this.pipeline.run(elasticlunr.tokenizer(doc[field])); + fieldTokens.forEach(function (token) { + this.index[field].removeToken(token, docRef); + }, this); + }, this); + + if (emitEvent) this.eventEmitter.emit('remove', doc, this); + }; + + /** + * Updates a document in the index. + * + * When a document contained within the index gets updated, fields changed, + * added or removed, to make sure it correctly matched against search queries, + * it should be updated in the index. + * + * This method is just a wrapper around `remove` and `add` + * + * An 'update' event is emitted with the document that has been updated and the index. + * This event can be silenced by passing false as the second argument to update. Only + * an update event will be fired, the 'add' and 'remove' events of the underlying calls + * are silenced. + * + * @param {Object} doc The document to update in the index. + * @param {Boolean} emitEvent Whether to emit update events, defaults to true + * @see Index.prototype.remove + * @see Index.prototype.add + * @memberOf Index + */ + elasticlunr.Index.prototype.updateDoc = function (doc, emitEvent) { + var emitEvent = emitEvent === undefined ? true : emitEvent; + + this.removeDocByRef(doc[this._ref], false); + this.addDoc(doc, false); + + if (emitEvent) this.eventEmitter.emit('update', doc, this); + }; + + /** + * Calculates the inverse document frequency for a token within the index of a field. + * + * @param {String} token The token to calculate the idf of. + * @param {String} field The field to compute idf. + * @see Index.prototype.idf + * @private + * @memberOf Index + */ + elasticlunr.Index.prototype.idf = function (term, field) { + const cacheKey = '@' + field + '/' + term; + if (Object.prototype.hasOwnProperty.call(this._idfCache, cacheKey)) + return this._idfCache[cacheKey]; + + const df = this.index[field].getDocFreq(term); + const idf = 1 + Math.log(this.documentStore.length / (df + 1)); + this._idfCache[cacheKey] = idf; + + return idf; + }; + + /** + * get fields of current index instance + * + * @return {Array} + */ + elasticlunr.Index.prototype.getFields = function () { + return this._fields.slice(); + }; + + /** + * Searches the index using the passed query. + * Queries should be a string, multiple words are allowed. + * + * If config is null, will search all fields defaultly, and lead to OR based query. + * If config is specified, will search specified with query time boosting. + * + * All query tokens are passed through the same pipeline that document tokens + * are passed through, so any language processing involved will be run on every + * query term. + * + * Each query term is expanded, so that the term 'he' might be expanded to + * 'hello' and 'help' if those terms were already included in the index. + * + * Matching documents are returned as an array of objects, each object contains + * the matching document ref, as set for this index, and the similarity score + * for this document against the query. + * + * @param {String} query The query to search the index with. + * @param {JSON} userConfig The user query config, JSON format. + * @return {Object} + * @see Index.prototype.idf + * @see Index.prototype.documentVector + * @memberOf Index + */ + elasticlunr.Index.prototype.search = function (query, userConfig) { + if (!query) return []; + if (typeof query === 'string') { + query = { any: query }; + } else { + query = JSON.parse(JSON.stringify(query)); + } + + let configStr = null; + if (userConfig != null) { + configStr = JSON.stringify(userConfig); + } + + const config = new elasticlunr.Configuration(configStr, this.getFields()).get(); + + const queryTokens = {}; + const queryFields = Object.keys(query); + + for (let i = 0; i < queryFields.length; i++) { + const key = queryFields[i]; + + queryTokens[key] = this.pipeline.run(elasticlunr.tokenizer(query[key])); + } + + const queryResults = {}; + + for (const field in config) { + const tokens = queryTokens[field] || queryTokens.any; + if (!tokens) { + continue; + } + + const fieldSearchResults = this.fieldSearch(tokens, field, config); + const fieldBoost = config[field].boost; + + for (var docRef in fieldSearchResults) { + fieldSearchResults[docRef] = fieldSearchResults[docRef] * fieldBoost; + } + + for (var docRef in fieldSearchResults) { + if (docRef in queryResults) { + queryResults[docRef] += fieldSearchResults[docRef]; + } else { + queryResults[docRef] = fieldSearchResults[docRef]; + } + } + } + + const results = []; + let result; + for (var docRef in queryResults) { + result = { ref: docRef, score: queryResults[docRef] }; + if (this.documentStore.hasDoc(docRef)) { + result.doc = this.documentStore.getDoc(docRef); + } + results.push(result); + } + + results.sort(function (a, b) { + return b.score - a.score; + }); + return results; + }; + + /** + * search queryTokens in specified field. + * + * @param {Array} queryTokens The query tokens to query in this field. + * @param {String} field Field to query in. + * @param {elasticlunr.Configuration} config The user query config, JSON format. + * @return {Object} + */ + elasticlunr.Index.prototype.fieldSearch = function ( + queryTokens, + fieldName, + config + ) { + const booleanType = config[fieldName].bool; + const expand = config[fieldName].expand; + const boost = config[fieldName].boost; + let scores = null; + const docTokens = {}; + + // Do nothing if the boost is 0 + if (boost === 0) { + return; + } + + queryTokens.forEach(function (token) { + let tokens = [token]; + if (expand === true) { + tokens = this.index[fieldName].expandToken(token); + } + // Consider every query token in turn. If expanded, each query token + // corresponds to a set of tokens, which is all tokens in the + // index matching the pattern queryToken* . + // For the set of tokens corresponding to a query token, find and score + // all matching documents. Store those scores in queryTokenScores, + // keyed by docRef. + // Then, depending on the value of booleanType, combine the scores + // for this query token with previous scores. If booleanType is OR, + // then merge the scores by summing into the accumulated total, adding + // new document scores are required (effectively a union operator). + // If booleanType is AND, accumulate scores only if the document + // has previously been scored by another query token (an intersection + // operation0. + // Furthermore, since when booleanType is AND, additional + // query tokens can't add new documents to the result set, use the + // current document set to limit the processing of each new query + // token for efficiency (i.e., incremental intersection). + + const queryTokenScores = {}; + tokens.forEach(function (key) { + let docs = this.index[fieldName].getDocs(key); + const idf = this.idf(key, fieldName); + + if (scores && booleanType === 'AND') { + // special case, we can rule out documents that have been + // already been filtered out because they weren't scored + // by previous query token passes. + const filteredDocs = {}; + for (var docRef in scores) { + if (docRef in docs) { + filteredDocs[docRef] = docs[docRef]; + } + } + docs = filteredDocs; + } + // only record appeared token for retrieved documents for the + // original token, not for expaned token. + // beause for doing coordNorm for a retrieved document, coordNorm only care how many + // query token appear in that document. + // so expanded token should not be added into docTokens, if added, this will pollute the + // coordNorm + if (key === token) { + this.fieldSearchStats(docTokens, key, docs); + } + + for (var docRef in docs) { + const tf = this.index[fieldName].getTermFrequency(key, docRef); + const fieldLength = this.documentStore.getFieldLength( + docRef, + fieldName + ); + let fieldLengthNorm = 1; + if (fieldLength !== 0) { + fieldLengthNorm = 1 / Math.sqrt(fieldLength); + } + + let penality = 1; + if (key !== token) { + // currently I'm not sure if this penality is enough, + // need to do verification + penality = + (1 - (key.length - token.length) / key.length) * 0.15; + } + + const score = tf * idf * fieldLengthNorm * penality; + + if (docRef in queryTokenScores) { + queryTokenScores[docRef] += score; + } else { + queryTokenScores[docRef] = score; + } + } + }, this); + + scores = this.mergeScores(scores, queryTokenScores, booleanType); + }, this); + + scores = this.coordNorm(scores, docTokens, queryTokens.length); + return scores; + }; + + /** + * Merge the scores from one set of tokens into an accumulated score table. + * Exact operation depends on the op parameter. If op is 'AND', then only the + * intersection of the two score lists is retained. Otherwise, the union of + * the two score lists is returned. For internal use only. + * + * @param {Object} bool accumulated scores. Should be null on first call. + * @param {String} scores new scores to merge into accumScores. + * @param {Object} op merge operation (should be 'AND' or 'OR'). + * + */ + + elasticlunr.Index.prototype.mergeScores = function (accumScores, scores, op) { + if (!accumScores) { + return scores; + } + if (op === 'AND') { + const intersection = {}; + for (var docRef in scores) { + if (docRef in accumScores) { + intersection[docRef] = accumScores[docRef] + scores[docRef]; + } + } + return intersection; + } else { + for (var docRef in scores) { + if (docRef in accumScores) { + accumScores[docRef] += scores[docRef]; + } else { + accumScores[docRef] = scores[docRef]; + } + } + return accumScores; + } + }; + + /** + * Record the occuring query token of retrieved doc specified by doc field. + * Only for inner user. + * + * @param {Object} docTokens a data structure stores which token appears in the retrieved doc. + * @param {String} token query token + * @param {Object} docs the retrieved documents of the query token + * + */ + elasticlunr.Index.prototype.fieldSearchStats = function (docTokens, token, docs) { + for (const doc in docs) { + if (doc in docTokens) { + docTokens[doc].push(token); + } else { + docTokens[doc] = [token]; + } + } + }; + + /** + * coord norm the score of a doc. + * if a doc contain more query tokens, then the score will larger than the doc + * contains less query tokens. + * + * only for inner use. + * + * @param {Object} results first results + * @param {Object} docs field search results of a token + * @param {Integer} n query token number + * @return {Object} + */ + elasticlunr.Index.prototype.coordNorm = function (scores, docTokens, n) { + for (const doc in scores) { + if (!(doc in docTokens)) continue; + const tokens = docTokens[doc].length; + scores[doc] = (scores[doc] * tokens) / n; + } + + return scores; + }; + + /** + * Returns a representation of the index ready for serialisation. + * + * @return {Object} + * @memberOf Index + */ + elasticlunr.Index.prototype.toJSON = function () { + const indexJson = {}; + this._fields.forEach(function (field) { + indexJson[field] = this.index[field].toJSON(); + }, this); + + return { + version: elasticlunr.version, + fields: this._fields, + ref: this._ref, + documentStore: this.documentStore.toJSON(), + index: indexJson, + pipeline: this.pipeline.toJSON(), + }; + }; + + /** + * Applies a plugin to the current index. + * + * A plugin is a function that is called with the index as its context. + * Plugins can be used to customise or extend the behaviour the index + * in some way. A plugin is just a function, that encapsulated the custom + * behaviour that should be applied to the index. + * + * The plugin function will be called with the index as its argument, additional + * arguments can also be passed when calling use. The function will be called + * with the index as its context. + * + * Example: + * + * var myPlugin = function (idx, arg1, arg2) { + * // `this` is the index to be extended + * // apply any extensions etc here. + * } + * + * var idx = elasticlunr(function () { + * this.use(myPlugin, 'arg1', 'arg2') + * }) + * + * @param {Function} plugin The plugin to apply. + * @memberOf Index + */ + elasticlunr.Index.prototype.use = function (plugin) { + const args = Array.prototype.slice.call(arguments, 1); + args.unshift(this); + plugin.apply(this, args); + }; + /*! + * elasticlunr.DocumentStore + * Copyright (C) 2017 Wei Song + */ + + /** + * elasticlunr.DocumentStore is a simple key-value document store used for storing sets of tokens for + * documents stored in index. + * + * elasticlunr.DocumentStore store original JSON format documents that you could build search snippet by this original JSON document. + * + * user could choose whether original JSON format document should be store, if no configuration then document will be stored defaultly. + * If user care more about the index size, user could select not store JSON documents, then this will has some defects, such as user + * could not use JSON document to generate snippets of search results. + * + * @param {Boolean} save If the original JSON document should be stored. + * @constructor + * @module + */ + elasticlunr.DocumentStore = function (save) { + if (save === null || save === undefined) { + this._save = true; + } else { + this._save = save; + } + + this.docs = {}; + this.docInfo = {}; + this.length = 0; + }; + + /** + * Loads a previously serialised document store + * + * @param {Object} serialisedData The serialised document store to load. + * @return {elasticlunr.DocumentStore} + */ + elasticlunr.DocumentStore.load = function (serialisedData) { + const store = new this(); + + store.length = serialisedData.length; + store.docs = serialisedData.docs; + store.docInfo = serialisedData.docInfo; + store._save = serialisedData.save; + + return store; + }; + + /** + * check if current instance store the original doc + * + * @return {Boolean} + */ + elasticlunr.DocumentStore.prototype.isDocStored = function () { + return this._save; + }; + + /** + * Stores the given doc in the document store against the given id. + * If docRef already exist, then update doc. + * + * Document is store by original JSON format, then you could use original document to generate search snippets. + * + * @param {Integer|String} docRef The key used to store the JSON format doc. + * @param {Object} doc The JSON format doc. + */ + elasticlunr.DocumentStore.prototype.addDoc = function (docRef, doc) { + if (!this.hasDoc(docRef)) this.length++; + + if (this._save === true) { + this.docs[docRef] = clone(doc); + } else { + this.docs[docRef] = null; + } + }; + + /** + * Retrieves the JSON doc from the document store for a given key. + * + * If docRef not found, return null. + * If user set not storing the documents, return null. + * + * @param {Integer|String} docRef The key to lookup and retrieve from the document store. + * @return {Object} + * @memberOf DocumentStore + */ + elasticlunr.DocumentStore.prototype.getDoc = function (docRef) { + if (this.hasDoc(docRef) === false) return null; + return this.docs[docRef]; + }; + + /** + * Checks whether the document store contains a key (docRef). + * + * @param {Integer|String} docRef The id to look up in the document store. + * @return {Boolean} + * @memberOf DocumentStore + */ + elasticlunr.DocumentStore.prototype.hasDoc = function (docRef) { + return docRef in this.docs; + }; + + /** + * Removes the value for a key in the document store. + * + * @param {Integer|String} docRef The id to remove from the document store. + * @memberOf DocumentStore + */ + elasticlunr.DocumentStore.prototype.removeDoc = function (docRef) { + if (!this.hasDoc(docRef)) return; + + delete this.docs[docRef]; + delete this.docInfo[docRef]; + this.length--; + }; + + /** + * Add field length of a document's field tokens from pipeline results. + * The field length of a document is used to do field length normalization even without the original JSON document stored. + * + * @param {Integer|String} docRef document's id or reference + * @param {String} fieldName field name + * @param {Integer} length field length + */ + elasticlunr.DocumentStore.prototype.addFieldLength = function ( + docRef, + fieldName, + length + ) { + if (docRef === null || docRef === undefined) return; + if (this.hasDoc(docRef) == false) return; + + if (!this.docInfo[docRef]) this.docInfo[docRef] = {}; + this.docInfo[docRef][fieldName] = length; + }; + + /** + * Update field length of a document's field tokens from pipeline results. + * The field length of a document is used to do field length normalization even without the original JSON document stored. + * + * @param {Integer|String} docRef document's id or reference + * @param {String} fieldName field name + * @param {Integer} length field length + */ + elasticlunr.DocumentStore.prototype.updateFieldLength = function ( + docRef, + fieldName, + length + ) { + if (docRef === null || docRef === undefined) return; + if (this.hasDoc(docRef) == false) return; + + this.addFieldLength(docRef, fieldName, length); + }; + + /** + * get field length of a document by docRef + * + * @param {Integer|String} docRef document id or reference + * @param {String} fieldName field name + * @return {Integer} field length + */ + elasticlunr.DocumentStore.prototype.getFieldLength = function (docRef, fieldName) { + if (docRef === null || docRef === undefined) return 0; + + if (!(docRef in this.docs)) return 0; + if (!(fieldName in this.docInfo[docRef])) return 0; + return this.docInfo[docRef][fieldName]; + }; + + /** + * Returns a JSON representation of the document store used for serialisation. + * + * @return {Object} JSON format + * @memberOf DocumentStore + */ + elasticlunr.DocumentStore.prototype.toJSON = function () { + return { + docs: this.docs, + docInfo: this.docInfo, + length: this.length, + save: this._save, + }; + }; + + /** + * Cloning object + * + * @param {Object} object in JSON format + * @return {Object} copied object + */ + function clone(obj) { + if (obj === null || typeof obj !== 'object') return obj; + + const copy = obj.constructor(); + + for (const attr in obj) { + if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr]; + } + + return copy; + } + /*! + * elasticlunr.stemmer + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ + + /** + * elasticlunr.stemmer is an english language stemmer, this is a JavaScript + * implementation of the PorterStemmer taken from http://tartarus.org/~martin + * + * @module + * @param {String} str The string to stem + * @return {String} + * @see elasticlunr.Pipeline + */ + elasticlunr.stemmer = (function () { + const step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log', + }; + + const step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '', + }; + + const c = '[^aeiou]'; // consonant + const v = '[aeiouy]'; // vowel + const C = c + '[^aeiouy]*'; // consonant sequence + const V = v + '[aeiou]*'; // vowel sequence + + const mgr0 = '^(' + C + ')?' + V + C; // [C]VC... is m>0 + const meq1 = '^(' + C + ')?' + V + C + '(' + V + ')?$'; // [C]VC[V] is m=1 + const mgr1 = '^(' + C + ')?' + V + C + V + C; // [C]VCVC... is m>1 + const s_v = '^(' + C + ')?' + v; // vowel in stem + + const re_mgr0 = new RegExp(mgr0); + const re_mgr1 = new RegExp(mgr1); + const re_meq1 = new RegExp(meq1); + const re_s_v = new RegExp(s_v); + + const re_1a = /^(.+?)(ss|i)es$/; + const re2_1a = /^(.+?)([^s])s$/; + const re_1b = /^(.+?)eed$/; + const re2_1b = /^(.+?)(ed|ing)$/; + const re_1b_2 = /.$/; + const re2_1b_2 = /(at|bl|iz)$/; + const re3_1b_2 = new RegExp('([^aeiouylsz])\\1$'); + const re4_1b_2 = new RegExp('^' + C + v + '[^aeiouwxy]$'); + + const re_1c = /^(.+?[^aeiou])y$/; + const re_2 = + /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + + const re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + + const re_4 = + /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + const re2_4 = /^(.+?)(s|t)(ion)$/; + + const re_5 = /^(.+?)e$/; + const re_5_1 = /ll$/; + const re3_5 = new RegExp('^' + C + v + '[^aeiouwxy]$'); + + const porterStemmer = function porterStemmer(w) { + let stem, suffix, firstch, re, re2, re3, re4; + + if (w.length < 3) { + return w; + } + + firstch = w.substr(0, 1); + if (firstch == 'y') { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = re_1a; + re2 = re2_1a; + + if (re.test(w)) { + w = w.replace(re, '$1$2'); + } else if (re2.test(w)) { + w = w.replace(re2, '$1$2'); + } + + // Step 1b + re = re_1b; + re2 = re2_1b; + if (re.test(w)) { + var fp = re.exec(w); + re = re_mgr0; + if (re.test(fp[1])) { + re = re_1b_2; + w = w.replace(re, ''); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = re_s_v; + if (re2.test(stem)) { + w = stem; + re2 = re2_1b_2; + re3 = re3_1b_2; + re4 = re4_1b_2; + if (re2.test(w)) { + w = w + 'e'; + } else if (re3.test(w)) { + re = re_1b_2; + w = w.replace(re, ''); + } else if (re4.test(w)) { + w = w + 'e'; + } + } + } + + // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say) + re = re_1c; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem + 'i'; + } + + // Step 2 + re = re_2; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = re_3; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = re_4; + re2 = re2_4; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = re_mgr1; + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = re_5; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + re2 = re_meq1; + re3 = re3_5; + if (re.test(stem) || (re2.test(stem) && !re3.test(stem))) { + w = stem; + } + } + + re = re_5_1; + re2 = re_mgr1; + if (re.test(w) && re2.test(w)) { + re = re_1b_2; + w = w.replace(re, ''); + } + + // and turn initial Y back to y + + if (firstch == 'y') { + w = firstch.toLowerCase() + w.substr(1); + } + + return w; + }; + + return porterStemmer; + })(); + + elasticlunr.Pipeline.registerFunction(elasticlunr.stemmer, 'stemmer'); + /*! + * elasticlunr.stopWordFilter + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + */ + + /** + * elasticlunr.stopWordFilter is an English language stop words filter, any words + * contained in the stop word list will not be passed through the filter. + * + * This is intended to be used in the Pipeline. If the token does not pass the + * filter then undefined will be returned. + * Currently this StopwordFilter using dictionary to do O(1) time complexity stop word filtering. + * + * @module + * @param {String} token The token to pass through the filter + * @return {String} + * @see elasticlunr.Pipeline + */ + elasticlunr.stopWordFilter = function (token) { + if (token && elasticlunr.stopWordFilter.stopWords[token] !== true) { + return token; + } + }; + + /** + * Remove predefined stop words + * if user want to use customized stop words, user could use this function to delete + * all predefined stopwords. + * + * @return {null} + */ + elasticlunr.clearStopWords = function () { + elasticlunr.stopWordFilter.stopWords = {}; + }; + + /** + * Add customized stop words + * user could use this function to add customized stop words + * + * @params {Array} words customized stop words + * @return {null} + */ + elasticlunr.addStopWords = function (words) { + if (words == null || Array.isArray(words) === false) return; + + words.forEach(function (word) { + elasticlunr.stopWordFilter.stopWords[word] = true; + }, this); + }; + + /** + * Reset to default stop words + * user could use this function to restore default stop words + * + * @return {null} + */ + elasticlunr.resetStopWords = function () { + elasticlunr.stopWordFilter.stopWords = elasticlunr.defaultStopWords; + }; + + elasticlunr.defaultStopWords = { + '': true, + a: true, + able: true, + about: true, + across: true, + after: true, + all: true, + almost: true, + also: true, + am: true, + among: true, + an: true, + and: true, + any: true, + are: true, + as: true, + at: true, + be: true, + because: true, + been: true, + but: true, + by: true, + can: true, + cannot: true, + could: true, + dear: true, + did: true, + do: true, + does: true, + either: true, + else: true, + ever: true, + every: true, + for: true, + from: true, + get: true, + got: true, + had: true, + has: true, + have: true, + he: true, + her: true, + hers: true, + him: true, + his: true, + how: true, + however: true, + i: true, + if: true, + in: true, + into: true, + is: true, + it: true, + its: true, + just: true, + least: true, + let: true, + like: true, + likely: true, + may: true, + me: true, + might: true, + most: true, + must: true, + my: true, + neither: true, + no: true, + nor: true, + not: true, + of: true, + off: true, + often: true, + on: true, + only: true, + or: true, + other: true, + our: true, + own: true, + rather: true, + said: true, + say: true, + says: true, + she: true, + should: true, + since: true, + so: true, + some: true, + than: true, + that: true, + the: true, + their: true, + them: true, + then: true, + there: true, + these: true, + they: true, + this: true, + tis: true, + to: true, + too: true, + twas: true, + us: true, + wants: true, + was: true, + we: true, + were: true, + what: true, + when: true, + where: true, + which: true, + while: true, + who: true, + whom: true, + why: true, + will: true, + with: true, + would: true, + yet: true, + you: true, + your: true, + }; + + elasticlunr.stopWordFilter.stopWords = elasticlunr.defaultStopWords; + + elasticlunr.Pipeline.registerFunction(elasticlunr.stopWordFilter, 'stopWordFilter'); + /*! + * elasticlunr.trimmer + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + */ + + /** + * elasticlunr.trimmer is a pipeline function for trimming non word + * characters from the begining and end of tokens before they + * enter the index. + * + * This implementation may not work correctly for non latin + * characters and should either be removed or adapted for use + * with languages with non-latin characters. + * + * @module + * @param {String} token The token to pass through the filter + * @return {String} + * @see elasticlunr.Pipeline + */ + elasticlunr.trimmer = function (token) { + if (token === null || token === undefined) { + throw new Error('token should not be undefined'); + } + + return token.replace(/^\W+/, '').replace(/\W+$/, ''); + }; + + elasticlunr.Pipeline.registerFunction(elasticlunr.trimmer, 'trimmer'); + /*! + * elasticlunr.InvertedIndex + * Copyright (C) 2017 Wei Song + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ + + /** + * elasticlunr.InvertedIndex is used for efficiently storing and + * lookup of documents that contain a given token. + * + * @constructor + */ + elasticlunr.InvertedIndex = function () { + this.root = { docs: {}, df: 0 }; + }; + + /** + * Loads a previously serialised inverted index. + * + * @param {Object} serialisedData The serialised inverted index to load. + * @return {elasticlunr.InvertedIndex} + */ + elasticlunr.InvertedIndex.load = function (serialisedData) { + const idx = new this(); + idx.root = serialisedData.root; + + return idx; + }; + + /** + * Adds a {token: tokenInfo} pair to the inverted index. + * If the token already exist, then update the tokenInfo. + * + * tokenInfo format: { ref: 1, tf: 2} + * tokenInfor should contains the document's ref and the tf(token frequency) of that token in + * the document. + * + * By default this function starts at the root of the current inverted index, however + * it can start at any node of the inverted index if required. + * + * @param {String} token + * @param {Object} tokenInfo format: { ref: 1, tf: 2} + * @param {Object} root An optional node at which to start looking for the + * correct place to enter the doc, by default the root of this elasticlunr.InvertedIndex + * is used. + * @memberOf InvertedIndex + */ + elasticlunr.InvertedIndex.prototype.addToken = function (token, tokenInfo, root) { + var root = root || this.root; + let idx = 0; + + while (idx <= token.length - 1) { + const key = token[idx]; + + if (!(key in root)) root[key] = { docs: {}, df: 0 }; + idx += 1; + root = root[key]; + } + + const docRef = tokenInfo.ref; + if (!root.docs[docRef]) { + // if this doc not exist, then add this doc + root.docs[docRef] = { tf: tokenInfo.tf }; + root.df += 1; + } else { + // if this doc already exist, then update tokenInfo + root.docs[docRef] = { tf: tokenInfo.tf }; + } + }; + + /** + * Checks whether a token is in this elasticlunr.InvertedIndex. + * + * + * @param {String} token The token to be checked + * @return {Boolean} + * @memberOf InvertedIndex + */ + elasticlunr.InvertedIndex.prototype.hasToken = function (token) { + if (!token) return false; + + let node = this.root; + + for (let i = 0; i < token.length; i++) { + if (!node[token[i]]) return false; + node = node[token[i]]; + } + + return true; + }; + + /** + * Retrieve a node from the inverted index for a given token. + * If token not found in this InvertedIndex, return null. + * + * + * @param {String} token The token to get the node for. + * @return {Object} + * @see InvertedIndex.prototype.get + * @memberOf InvertedIndex + */ + elasticlunr.InvertedIndex.prototype.getNode = function (token) { + if (!token) return null; + + let node = this.root; + + for (let i = 0; i < token.length; i++) { + if (!node[token[i]]) return null; + node = node[token[i]]; + } + + return node; + }; + + /** + * Retrieve the documents of a given token. + * If token not found, return {}. + * + * + * @param {String} token The token to get the documents for. + * @return {Object} + * @memberOf InvertedIndex + */ + elasticlunr.InvertedIndex.prototype.getDocs = function (token) { + const node = this.getNode(token); + if (node == null) { + return {}; + } + + return node.docs; + }; + + /** + * Retrieve term frequency of given token in given docRef. + * If token or docRef not found, return 0. + * + * + * @param {String} token The token to get the documents for. + * @param {String|Integer} docRef + * @return {Integer} + * @memberOf InvertedIndex + */ + elasticlunr.InvertedIndex.prototype.getTermFrequency = function (token, docRef) { + const node = this.getNode(token); + + if (node == null) { + return 0; + } + + if (!(docRef in node.docs)) { + return 0; + } + + return node.docs[docRef].tf; + }; + + /** + * Retrieve the document frequency of given token. + * If token not found, return 0. + * + * + * @param {String} token The token to get the documents for. + * @return {Object} + * @memberOf InvertedIndex + */ + elasticlunr.InvertedIndex.prototype.getDocFreq = function (token) { + const node = this.getNode(token); + + if (node == null) { + return 0; + } + + return node.df; + }; + + /** + * Remove the document identified by document's ref from the token in the inverted index. + * + * + * @param {String} token Remove the document from which token. + * @param {String} ref The ref of the document to remove from given token. + * @memberOf InvertedIndex + */ + elasticlunr.InvertedIndex.prototype.removeToken = function (token, ref) { + if (!token) return; + const node = this.getNode(token); + + if (node == null) return; + + if (ref in node.docs) { + delete node.docs[ref]; + node.df -= 1; + } + }; + + /** + * Find all the possible suffixes of given token using tokens currently in the inverted index. + * If token not found, return empty Array. + * + * @param {String} token The token to expand. + * @return {Array} + * @memberOf InvertedIndex + */ + elasticlunr.InvertedIndex.prototype.expandToken = function (token, memo, root) { + if (token == null || token == '') return []; + var memo = memo || []; + + if (root == void 0) { + root = this.getNode(token); + if (root == null) return memo; + } + + if (root.df > 0) memo.push(token); + + for (const key in root) { + if (key === 'docs') continue; + if (key === 'df') continue; + this.expandToken(token + key, memo, root[key]); + } + + return memo; + }; + + /** + * Returns a representation of the inverted index ready for serialisation. + * + * @return {Object} + * @memberOf InvertedIndex + */ + elasticlunr.InvertedIndex.prototype.toJSON = function () { + return { + root: this.root, + }; + }; + + /*! + * elasticlunr.Configuration + * Copyright (C) 2017 Wei Song + */ + + /** + * elasticlunr.Configuration is used to analyze the user search configuration. + * + * By elasticlunr.Configuration user could set query-time boosting, boolean model in each field. + * + * Currently configuration supports: + * 1. query-time boosting, user could set how to boost each field. + * 2. boolean model chosing, user could choose which boolean model to use for each field. + * 3. token expandation, user could set token expand to True to improve Recall. Default is False. + * + * Query time boosting must be configured by field category, "boolean" model could be configured + * by both field category or globally as the following example. Field configuration for "boolean" + * will overwrite global configuration. + * Token expand could be configured both by field category or golbally. Local field configuration will + * overwrite global configuration. + * + * configuration example: + * { + * fields:{ + * title: {boost: 2}, + * body: {boost: 1} + * }, + * bool: "OR" + * } + * + * "bool" field configuation overwrite global configuation example: + * { + * fields:{ + * title: {boost: 2, bool: "AND"}, + * body: {boost: 1} + * }, + * bool: "OR" + * } + * + * "expand" example: + * { + * fields:{ + * title: {boost: 2, bool: "AND"}, + * body: {boost: 1} + * }, + * bool: "OR", + * expand: true + * } + * + * "expand" example for field category: + * { + * fields:{ + * title: {boost: 2, bool: "AND", expand: true}, + * body: {boost: 1} + * }, + * bool: "OR" + * } + * + * setting the boost to 0 ignores the field (this will only search the title): + * { + * fields:{ + * title: {boost: 1}, + * body: {boost: 0} + * } + * } + * + * then, user could search with configuration to do query-time boosting. + * idx.search('oracle database', {fields: {title: {boost: 2}, body: {boost: 1}}}); + * + * + * @constructor + * + * @param {String} config user configuration + * @param {Array} fields fields of index instance + * @module + */ + elasticlunr.Configuration = function (config, fields) { + var config = config || ''; + + if (fields == undefined || fields == null) { + throw new Error('fields should not be null'); + } + + this.config = {}; + + let userConfig; + try { + userConfig = JSON.parse(config); + this.buildUserConfig(userConfig, fields); + } catch (error) { + elasticlunr.utils.warn( + 'user configuration parse failed, will use default configuration' + ); + this.buildDefaultConfig(fields); + } + }; + + /** + * Build default search configuration. + * + * @param {Array} fields fields of index instance + */ + elasticlunr.Configuration.prototype.buildDefaultConfig = function (fields) { + this.reset(); + fields.forEach(function (field) { + this.config[field] = { + boost: 1, + bool: 'OR', + expand: false, + }; + }, this); + }; + + /** + * Build user configuration. + * + * @param {JSON} config User JSON configuratoin + * @param {Array} fields fields of index instance + */ + elasticlunr.Configuration.prototype.buildUserConfig = function (config, fields) { + let global_bool = 'OR'; + let global_expand = false; + + this.reset(); + if ('bool' in config) { + global_bool = config.bool || global_bool; + } + + if ('expand' in config) { + global_expand = config.expand || global_expand; + } + + if ('fields' in config) { + for (const field in config.fields) { + if (fields.indexOf(field) > -1) { + const field_config = config.fields[field]; + let field_expand = global_expand; + if (field_config.expand != undefined) { + field_expand = field_config.expand; + } + + this.config[field] = { + boost: + field_config.boost || field_config.boost === 0 + ? field_config.boost + : 1, + bool: field_config.bool || global_bool, + expand: field_expand, + }; + } else { + elasticlunr.utils.warn( + 'field name in user configuration not found in index instance fields' + ); + } + } + } else { + this.addAllFields2UserConfig(global_bool, global_expand, fields); + } + }; + + /** + * Add all fields to user search configuration. + * + * @param {String} bool Boolean model + * @param {String} expand Expand model + * @param {Array} fields fields of index instance + */ + elasticlunr.Configuration.prototype.addAllFields2UserConfig = function ( + bool, + expand, + fields + ) { + fields.forEach(function (field) { + this.config[field] = { + boost: 1, + bool, + expand, + }; + }, this); + }; + + /** + * get current user configuration + */ + elasticlunr.Configuration.prototype.get = function () { + return this.config; + }; + + /** + * reset user search configuration. + */ + elasticlunr.Configuration.prototype.reset = function () { + this.config = {}; + }; + /** + * sorted_set.js is added only to make elasticlunr.js compatible with lunr-languages. + * if elasticlunr.js support different languages by default, this will make elasticlunr.js + * much bigger that not good for browser usage. + * + */ + + /*! + * lunr.SortedSet + * Copyright (C) 2017 Oliver Nightingale + */ + + /** + * lunr.SortedSets are used to maintain an array of uniq values in a sorted + * order. + * + * @constructor + */ + lunr.SortedSet = function () { + this.length = 0; + this.elements = []; + }; + + /** + * Loads a previously serialised sorted set. + * + * @param {Array} serialisedData The serialised set to load. + * @returns {lunr.SortedSet} + * @memberOf SortedSet + */ + lunr.SortedSet.load = function (serialisedData) { + const set = new this(); + + set.elements = serialisedData; + set.length = serialisedData.length; + + return set; + }; + + /** + * Inserts new items into the set in the correct position to maintain the + * order. + * + * @param {Object} The objects to add to this set. + * @memberOf SortedSet + */ + lunr.SortedSet.prototype.add = function () { + let i, element; + + for (i = 0; i < arguments.length; i++) { + element = arguments[i]; + if (~this.indexOf(element)) continue; + this.elements.splice(this.locationFor(element), 0, element); + } + + this.length = this.elements.length; + }; + + /** + * Converts this sorted set into an array. + * + * @returns {Array} + * @memberOf SortedSet + */ + lunr.SortedSet.prototype.toArray = function () { + return this.elements.slice(); + }; + + /** + * Creates a new array with the results of calling a provided function on every + * element in this sorted set. + * + * Delegates to Array.prototype.map and has the same signature. + * + * @param {Function} fn The function that is called on each element of the + * set. + * @param {Object} ctx An optional object that can be used as the context + * for the function fn. + * @returns {Array} + * @memberOf SortedSet + */ + lunr.SortedSet.prototype.map = function (fn, ctx) { + return this.elements.map(fn, ctx); + }; + + /** + * Executes a provided function once per sorted set element. + * + * Delegates to Array.prototype.forEach and has the same signature. + * + * @param {Function} fn The function that is called on each element of the + * set. + * @param {Object} ctx An optional object that can be used as the context + * @memberOf SortedSet + * for the function fn. + */ + lunr.SortedSet.prototype.forEach = function (fn, ctx) { + return this.elements.forEach(fn, ctx); + }; + + /** + * Returns the index at which a given element can be found in the + * sorted set, or -1 if it is not present. + * + * @param {Object} elem The object to locate in the sorted set. + * @returns {Number} + * @memberOf SortedSet + */ + lunr.SortedSet.prototype.indexOf = function (elem) { + let start = 0; + let end = this.elements.length; + let sectionLength = end - start; + let pivot = start + Math.floor(sectionLength / 2); + let pivotElem = this.elements[pivot]; + + while (sectionLength > 1) { + if (pivotElem === elem) return pivot; + + if (pivotElem < elem) start = pivot; + if (pivotElem > elem) end = pivot; + + sectionLength = end - start; + pivot = start + Math.floor(sectionLength / 2); + pivotElem = this.elements[pivot]; + } + + if (pivotElem === elem) return pivot; + + return -1; + }; + + /** + * Returns the position within the sorted set that an element should be + * inserted at to maintain the current order of the set. + * + * This function assumes that the element to search for does not already exist + * in the sorted set. + * + * @param {Object} elem The elem to find the position for in the set + * @returns {Number} + * @memberOf SortedSet + */ + lunr.SortedSet.prototype.locationFor = function (elem) { + let start = 0; + let end = this.elements.length; + let sectionLength = end - start; + let pivot = start + Math.floor(sectionLength / 2); + let pivotElem = this.elements[pivot]; + + while (sectionLength > 1) { + if (pivotElem < elem) start = pivot; + if (pivotElem > elem) end = pivot; + + sectionLength = end - start; + pivot = start + Math.floor(sectionLength / 2); + pivotElem = this.elements[pivot]; + } + + if (pivotElem > elem) return pivot; + if (pivotElem < elem) return pivot + 1; + }; + + /** + * Creates a new lunr.SortedSet that contains the elements in the intersection + * of this set and the passed set. + * + * @param {lunr.SortedSet} otherSet The set to intersect with this set. + * @returns {lunr.SortedSet} + * @memberOf SortedSet + */ + lunr.SortedSet.prototype.intersect = function (otherSet) { + const intersectSet = new lunr.SortedSet(); + let i = 0; + let j = 0; + const a_len = this.length; + const b_len = otherSet.length; + const a = this.elements; + const b = otherSet.elements; + + while (true) { + if (i > a_len - 1 || j > b_len - 1) break; + + if (a[i] === b[j]) { + intersectSet.add(a[i]); + i++, j++; + continue; + } + + if (a[i] < b[j]) { + i++; + continue; + } + + if (a[i] > b[j]) { + j++; + continue; + } + } + + return intersectSet; + }; + + /** + * Makes a copy of this set + * + * @returns {lunr.SortedSet} + * @memberOf SortedSet + */ + lunr.SortedSet.prototype.clone = function () { + const clone = new lunr.SortedSet(); + + clone.elements = this.toArray(); + clone.length = clone.elements.length; + + return clone; + }; + + /** + * Creates a new lunr.SortedSet that contains the elements in the union + * of this set and the passed set. + * + * @param {lunr.SortedSet} otherSet The set to union with this set. + * @returns {lunr.SortedSet} + * @memberOf SortedSet + */ + lunr.SortedSet.prototype.union = function (otherSet) { + let longSet, shortSet, unionSet; + + if (this.length >= otherSet.length) { + (longSet = this), (shortSet = otherSet); + } else { + (longSet = otherSet), (shortSet = this); + } + + unionSet = longSet.clone(); + + for ( + let i = 0, shortSetElements = shortSet.toArray(); + i < shortSetElements.length; + i++ + ) { + unionSet.add(shortSetElements[i]); + } + + return unionSet; + }; + + /** + * Returns a representation of the sorted set ready for serialisation. + * + * @returns {Array} + * @memberOf SortedSet + */ + lunr.SortedSet.prototype.toJSON = function () { + return this.toArray(); + }; + /** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + (function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory); + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like enviroments that support module.exports, + * like Node. + */ + module.exports = factory(); + } else { + // Browser globals (root is window) + root.elasticlunr = factory(); + } + })(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return elasticlunr; + }); +})(); + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // +// End of elasticlunr code (http://elasticlunr.com/elasticlunr.js) // +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // + +window.onload = function () { + if (!document.body.contains(document.getElementById('searchModal'))) { + return; + } + + const lang = document.documentElement.lang; + const searchInput = document.getElementById('searchInput'); + const searchModal = document.getElementById('searchModal'); + const searchButton = document.getElementById('search-button'); + const clearSearchButton = document.getElementById('clear-search'); + const resultsContainer = document.getElementById('results-container'); + const results = document.getElementById('results'); + // Get all spans holding the translated strings, even if they are only used on one language. + const zeroResultsSpan = document.getElementById('zero_results'); + const oneResultsSpan = document.getElementById('one_results'); + const twoResultsSpan = document.getElementById('two_results'); + const fewResultsSpan = document.getElementById('few_results'); + const manyResultsSpan = document.getElementById('many_results'); + + // Static mapping of keys to spans. + const resultSpans = { + zero_results: zeroResultsSpan, + one_results: oneResultsSpan, + two_results: twoResultsSpan, + few_results: fewResultsSpan, + many_results: manyResultsSpan, + }; + + // Replace $SHORTCUT in search icon title with actual OS-specific shortcut. + function getShortcut() { + const userAgent = window.navigator.userAgent.toLowerCase(); + if (userAgent.includes('mac')) { + return 'Cmd + K'; + } else { + return 'Ctrl + K'; + } + } + + function setAttributes(element, attributeNames) { + const shortcut = getShortcut(); + attributeNames.forEach((attributeName) => { + let attributeValue = element.getAttribute(attributeName); + if (attributeValue) { + attributeValue = attributeValue.replace('$SHORTCUT', shortcut); + element.setAttribute(attributeName, attributeValue); + } + }); + } + setAttributes(searchButton, ['title', 'aria-label']); + + // Make search button keyboard accessible. + searchButton.addEventListener('keydown', function (event) { + if (event.key === 'Enter' || event.key === ' ') { + searchButton.click(); + } + }); + + let lastFocusedElement; + function openSearchModal() { + lastFocusedElement = document.activeElement; + loadSearchIndex(); + searchModal.style.display = 'block'; + searchInput.focus(); + } + + function closeModal() { + searchModal.style.display = 'none'; + clearSearch(); + if (lastFocusedElement && document.body.contains(lastFocusedElement)) { + lastFocusedElement.focus(); + } + } + + function toggleModalVisibility() { + const isModalOpen = searchModal.style.display === 'block'; + if (isModalOpen) { + closeModal(); + } else { + openSearchModal(); + } + } + + // Function to remove 'selected' class from all divs except the one passed. + function clearSelected(exceptDiv = null) { + const divs = results.querySelectorAll('#results > div'); + divs.forEach((div) => { + if (div !== exceptDiv) { + div.setAttribute('aria-selected', 'false'); + } + }); + } + + function updateSelection(div) { + if (div.getAttribute('aria-selected') !== 'true') { + clearSelected(div); + div.setAttribute('aria-selected', 'true'); + } + searchInput.setAttribute('aria-activedescendant', div.id); + } + + function clearSearch() { + searchInput.value = ''; + results.innerHTML = ''; + resultsContainer.style.display = 'none'; + searchInput.removeAttribute('aria-activedescendant'); + clearSearchButton.style.display = 'none'; + } + + // Close modal when clicking/tapping outside. + function handleModalInteraction(event) { + if (event.target === searchModal) { + closeModal(); + } + event.stopPropagation(); // Prevents tapping through the modal. + } + searchModal.addEventListener('click', handleModalInteraction); + searchModal.addEventListener('touchend', handleModalInteraction, { passive: true }); + + // Close modal when pressing escape. + document.addEventListener('keydown', function (event) { + if (event.key === 'Escape') { + closeModal(); + } + }); + + clearSearchButton.addEventListener('click', function () { + clearSearch(); + searchInput.focus(); + }); + clearSearchButton.addEventListener('keydown', function (event) { + if (event.key === 'Enter' || event.key === ' ') { + clearSearch(); + searchInput.focus(); + event.preventDefault(); + } + }); + + // The index loads on mouseover/tap. + // Clicking/tapping the search button opens the modal. + searchButton.addEventListener('mouseover', loadSearchIndex); + searchButton.addEventListener('click', openSearchModal); + searchButton.addEventListener('touchstart', openSearchModal, { passive: true }); + + let searchIndexPromise = null; + function loadSearchIndex() { + if (!searchIndexPromise) { + // Check if the search index is already loaded in the window object + if (window.searchIndex) { + // If the index is pre-loaded, use it directly. + searchIndexPromise = Promise.resolve( + elasticlunr.Index.load(window.searchIndex) + ); + } else { + // If the index is not pre-loaded, fetch it from the JSON file. + const language = document.documentElement + .getAttribute('lang') + .substring(0, 2); + let basePath = document + .querySelector("meta[name='base']") + .getAttribute('content'); + if (basePath.endsWith('/')) { + basePath = basePath.slice(0, -1); + } + + searchIndexPromise = fetch( + basePath + '/search_index.' + language + '.json' + ) + .then((response) => response.json()) + .then((json) => elasticlunr.Index.load(json)); + } + } + } + + function getByteByBinary(binaryCode) { + // Binary system, starts with `0b` in ES6 + // Octal number system, starts with `0` in ES5 and starts with `0o` in ES6 + // Hexadecimal, starts with `0x` in both ES5 and ES6 + var byteLengthDatas = [0, 1, 2, 3, 4]; + var len = byteLengthDatas[Math.ceil(binaryCode.length / 8)]; + return len; + } + + function getByteByHex(hexCode) { + return getByteByBinary(parseInt(hexCode, 16).toString(2)); + } + + function substringByByte(str, maxLength) { + let result = ''; + let flag = false; + let len = 0; + let length = 0; + let length2 = 0; + for (let i = 0; i < str.length; i++) { + const code = str.codePointAt(i).toString(16); + if (code.length > 4) { + i++; + if (i + 1 < str.length) { + flag = str.codePointAt(i + 1).toString(16) === '200d'; + } + } + if (flag) { + len += getByteByHex(code); + if (i == str.length - 1) { + length += len; + if (length <= maxLength) { + result += str.substr(length2, i - length2 + 1); + } else { + break; + } + } + } else { + if (len != 0) { + length += len; + length += getByteByHex(code); + if (length <= maxLength) { + result += str.substr(length2, i - length2 + 1); + length2 = i + 1; + } else { + break; + } + len = 0; + continue; + } + length += getByteByHex(code); + if (length <= maxLength) { + if (code.length <= 4) { + result += str[i]; + } else { + result += str[i - 1] + str[i]; + } + length2 = i + 1; + } else { + break; + } + } + } + return result; + } + + function generateSnippet(text, searchTerms) { + const BASE_SCORE = 2; + const FIRST_WORD_SCORE = 8; + const HIGHLIGHT_SCORE = 40; + const PRE_MATCH_CONTEXT_WORDS = 4; + const SNIPPET_LENGTH = 150; + const WINDOW_SIZE = 30; + + const stemmedTerms = searchTerms.map(function (term) { + return elasticlunr.stemmer(term.toLowerCase()); + }); + + let totalLength = 0; + const tokenScores = []; + const sentences = text.toLowerCase().split('. '); + + for (const sentence of sentences) { + const words = sentence.split(/[\s\n]/); + let isFirstWord = true; + + for (const word of words) { + if (word.length > 0) { + let score = isFirstWord ? FIRST_WORD_SCORE : BASE_SCORE; + for (const stemmedTerm of stemmedTerms) { + if (elasticlunr.stemmer(word).startsWith(stemmedTerm)) { + score = HIGHLIGHT_SCORE; + } + } + tokenScores.push([word, score, totalLength]); + isFirstWord = false; + } + totalLength += word.length + 1; + } + totalLength += 1; + } + + if (tokenScores.length === 0) { + return text.length > SNIPPET_LENGTH + ? text.substring(0, SNIPPET_LENGTH) + '…' + : text; + } + + const scores = []; + let windowScore = 0; + + for (var i = 0; i < Math.min(tokenScores.length, WINDOW_SIZE); i++) { + windowScore += tokenScores[i][1]; + } + scores.push(windowScore); + + // Slide the window and update the score. + for (var i = 1; i <= tokenScores.length - WINDOW_SIZE; i++) { + windowScore -= tokenScores[i - 1][1]; + windowScore += tokenScores[i + WINDOW_SIZE - 1][1]; + scores.push(windowScore); + } + + let maxScoreIndex = 0; + let maxScore = 0; + for (var i = scores.length - 1; i >= 0; i--) { + if (maxScore < scores[i]) { + maxScore = scores[i]; + maxScoreIndex = i; + } + } + + const snippet = []; + // From my testing, the context is more clear if we start a few words back. + let start = adjustStartPos( + text, + tokenScores[maxScoreIndex][2], + PRE_MATCH_CONTEXT_WORDS + ); + + function adjustStartPos(text, matchStartIndex, numWordsBack) { + let spaceCount = 0; + let index = matchStartIndex - 1; + while (index >= 0 && spaceCount < numWordsBack) { + if (text[index] === ' ' && text[index - 1] !== '.') { + spaceCount++; + } else if (text[index] === '.' && text[index + 1] === ' ') { + // Stop if the match is at the start of a sentence. + break; + } + index--; + } + return spaceCount === numWordsBack ? index + 1 : matchStartIndex; + } + const re = /^[\x00-\xff]+$/; // Regular expression for ASCII check. + for ( + var i = maxScoreIndex; + i < maxScoreIndex + WINDOW_SIZE && i < tokenScores.length; + i++ + ) { + const wordData = tokenScores[i]; + if (start < wordData[2]) { + snippet.push(text.substring(start, wordData[2])); + start = wordData[2]; + } + + if (wordData[1] === HIGHLIGHT_SCORE) { + snippet.push(''); + } + const end = wordData[2] + wordData[0].length; + // Handle non-ASCII characters. + if (!re.test(wordData[0]) && wordData[0].length >= 12) { + const strBefore = text.substring(wordData[2], end); + const strAfter = substringByByte(strBefore, 12); + snippet.push(strAfter); + } else { + snippet.push(text.substring(wordData[2], end)); + } + + if (wordData[1] === HIGHLIGHT_SCORE) { + snippet.push(''); + } + start = end; + } + + snippet.push('…'); + const joinedSnippet = snippet.join(''); + let truncatedSnippet = joinedSnippet; + if (joinedSnippet.replace(/<[^>]+>/g, '').length > SNIPPET_LENGTH) { + truncatedSnippet = joinedSnippet.substring(0, SNIPPET_LENGTH) + '…'; + } + + return truncatedSnippet; + } + + // Handle input in the search box. + searchInput.addEventListener( + 'input', + async function () { + const inputValue = this.value; + const searchTerm = inputValue.trim(); + const searchIndex = await searchIndexPromise; + results.innerHTML = ''; + + // Use the raw input so the "clear" button appears even if there's only spaces. + clearSearchButton.style.display = inputValue.length > 0 ? 'block' : 'none'; + resultsContainer.style.display = searchTerm.length > 0 ? 'block' : 'none'; + + // Perform the search and store the results. + const searchResults = searchIndex.search(searchTerm, { + bool: 'OR', + fields: { + title: { boost: 3 }, + body: { boost: 2 }, + description: { boost: 1 }, + path: { boost: 1 }, + }, + }); + + // Update the number of results. + updateResultText(searchResults.length); + + // Display the results. + let resultIdCounter = 0; // Counter to generate unique IDs. + searchResults.forEach(function (result) { + if (result.doc.title || result.doc.path || result.doc.id) { + const resultDiv = document.createElement('div'); + resultDiv.setAttribute('role', 'option'); + resultDiv.id = 'result-' + resultIdCounter++; + resultDiv.innerHTML = '
'; + const linkElement = resultDiv.querySelector('a'); + const titleElement = resultDiv.querySelector('span:first-child'); + const snippetElement = resultDiv.querySelector('span:nth-child(2)'); + + // Determine the text for the title. + titleElement.textContent = + result.doc.title || result.doc.path || result.doc.id; + + // Determine if the body or description is available for the snippet. + let snippetText = result.doc.body + ? generateSnippet(result.doc.body, searchTerm.split(/\s+/)) + : result.doc.description + ? result.doc.description + : ''; + snippetElement.innerHTML = snippetText; + + // Create the hyperlink. + let href = result.ref; + if (result.doc.body) { + // Include text fragment if body is available. + const encodedSearchTerm = encodeURIComponent(searchTerm); + href += `#:~:text=${encodedSearchTerm}`; + } + linkElement.href = href; + + results.appendChild(resultDiv); + } + }); + + searchInput.setAttribute( + 'aria-expanded', + resultIdCounter > 0 ? 'true' : 'false' + ); + + if (results.firstChild) { + updateSelection(results.firstChild); + } + + results.addEventListener('mouseover', function (event) { + if (event.target.closest('div[role="option"]')) { + updateSelection(event.target.closest('div[role="option"]')); + } + }); + + results.addEventListener('click', function(event) { + const clickedElement = event.target.closest('a'); + if (clickedElement) { + const clickedHref = clickedElement.getAttribute('href'); + const currentPageUrl = window.location.href; + + // Normalise URLs by removing the text fragment and trailing slash. + const normalizeUrl = (url) => url.split('#')[0].replace(/\/$/, ''); + + // Check if the clicked link matches the current page. + // If using Ctrl+click or Cmd+click, don't close the modal. + if (normalizeUrl(clickedHref) === normalizeUrl(currentPageUrl) && + !event.ctrlKey && !event.metaKey) { + closeModal(); + } + } + }); + + // Add touch events to the results. + setupTouchEvents(); + }, + true + ); + + function updateResultText(count) { + // Determine the correct pluralization key based on count and language. + const pluralizationKey = getPluralizationKey(count, lang); + + // Hide all result text spans. + Object.values(resultSpans).forEach((span) => { + if (span) span.style.display = 'none'; + }); + + // Show the relevant result text span, replacing $NUMBER with the actual count. + const activeSpan = resultSpans[pluralizationKey]; + if (activeSpan) { + activeSpan.style.display = 'inline'; + activeSpan.textContent = activeSpan.textContent.replace( + '$NUMBER', + count.toString() + ); + } + } + + function getPluralizationKey(count, lang) { + let key = ''; + const slavicLangs = ['uk', 'be', 'bs', 'hr', 'ru', 'sr']; + + // Common cases: zero, one. + if (count === 0) { + key = 'zero_results'; + } else if (count === 1) { + key = 'one_results'; + } else { + // Arabic. + if (lang === 'ar') { + let modulo = count % 100; + if (count === 2) { + key = 'two_results'; + } else if (modulo >= 3 && modulo <= 10) { + key = 'few_results'; + } else { + key = 'many_results'; + } + } else if (slavicLangs.includes(lang)) { + // Slavic languages. + let modulo10 = count % 10; + let modulo100 = count % 100; + if (modulo10 === 1 && modulo100 !== 11) { + key = 'one_results'; + } else if ( + modulo10 >= 2 && + modulo10 <= 4 && + !(modulo100 >= 12 && modulo100 <= 14) + ) { + key = 'few_results'; + } else { + key = 'many_results'; + } + } else { + key = 'many_results'; // Default plural. + } + } + + return key; + } + + function setupTouchEvents() { + const resultDivs = document.querySelectorAll('#results > div'); + resultDivs.forEach((div) => { + // Remove existing listener to avoid duplicates. + div.removeEventListener('touchstart', handleTouchStart); + div.addEventListener('touchstart', handleTouchStart, { passive: true }); + }); + } + + function handleTouchStart() { + updateSelection(this); + } + + // Handle keyboard navigation. + document.addEventListener('keydown', function (event) { + // Add handling for the modal open/close shortcut. + const isMac = navigator.userAgent.toLowerCase().includes('mac'); + const MODAL_SHORTCUT_KEY = 'k'; + const modalShortcutModifier = isMac ? event.metaKey : event.ctrlKey; + + if (event.key === MODAL_SHORTCUT_KEY && modalShortcutModifier) { + event.preventDefault(); + toggleModalVisibility(); + return; + } + + const activeElement = document.activeElement; + if ( + event.key === 'Tab' && + (activeElement === searchInput || activeElement === clearSearchButton) + ) { + event.preventDefault(); + const nextFocusableElement = + activeElement === searchInput ? clearSearchButton : searchInput; + nextFocusableElement.focus(); + return; + } + + function updateResultSelection(newIndex, divsArray) { + updateSelection(divsArray[newIndex]); + divsArray[newIndex].scrollIntoView({ block: 'nearest', inline: 'start' }); + } + + const resultDivs = results.querySelectorAll('#results > div'); + if (resultDivs.length === 0) return; + + const divsArray = Array.from(resultDivs); + let activeDiv = results.querySelector('[aria-selected="true"]'); + let activeDivIndex = divsArray.indexOf(activeDiv); + + if ( + ['ArrowUp', 'ArrowDown', 'Home', 'End', 'PageUp', 'PageDown'].includes( + event.key + ) + ) { + event.preventDefault(); + let newIndex = activeDivIndex; + + switch (event.key) { + case 'ArrowUp': + newIndex = Math.max(activeDivIndex - 1, 0); + break; + case 'ArrowDown': + newIndex = Math.min(activeDivIndex + 1, divsArray.length - 1); + break; + case 'Home': + newIndex = 0; + break; + case 'End': + newIndex = divsArray.length - 1; + break; + case 'PageUp': + newIndex = Math.max(activeDivIndex - 3, 0); + break; + case 'PageDown': + newIndex = Math.min(activeDivIndex + 3, divsArray.length - 1); + break; + } + + if (newIndex !== activeDivIndex) { + updateResultSelection(newIndex, divsArray); + } + } + + if (event.key === 'Enter' && activeDiv) { + event.preventDefault(); + event.stopImmediatePropagation(); + const anchorTag = activeDiv.querySelector('a'); + if (anchorTag) { + window.location.href = anchorTag.getAttribute('href'); + } + closeModal(); // Necessary when linking to the current page. + } + }); +}; diff --git a/static/js/searchElasticlunr.min.js b/static/js/searchElasticlunr.min.js new file mode 100644 index 0000000..291bc7a --- /dev/null +++ b/static/js/searchElasticlunr.min.js @@ -0,0 +1 @@ +!function(){function g(e){var t=new g.Index;return t.pipeline.add(g.trimmer,g.stopWordFilter,g.stemmer),e&&e.call(t,t),t}var t;g.version="0.9.5",(lunr=g).utils={},g.utils.warn=(t=this,function(e){t.console&&console.warn&&console.warn(e)}),g.utils.toString=function(e){return null==e?"":e.toString()},(g.EventEmitter=function(){this.events={}}).prototype.addListener=function(){var e=Array.prototype.slice.call(arguments);const t=e.pop();if("function"!=typeof t)throw new TypeError("last argument must be a function");e.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},g.EventEmitter.prototype.removeListener=function(e,t){this.hasHandler(e)&&-1!==(t=this.events[e].indexOf(t))&&(this.events[e].splice(t,1),0===this.events[e].length)&&delete this.events[e]},g.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){const t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},g.EventEmitter.prototype.hasHandler=function(e){return e in this.events},(g.tokenizer=function(n){if(!arguments.length||null==n)return[];if(Array.isArray(n)){let e=n.filter(function(e){return null!=e}),t=(e=e.map(function(e){return g.utils.toString(e).toLowerCase()}),[]);return e.forEach(function(e){e=e.split(g.tokenizer.seperator),t=t.concat(e)},this),t}return n.toString().trim().toLowerCase().split(g.tokenizer.seperator)}).defaultSeperator=/[\s-]+/,g.tokenizer.seperator=g.tokenizer.defaultSeperator,g.tokenizer.setSeperator=function(e){null!=e&&"object"==typeof e&&(g.tokenizer.seperator=e)},g.tokenizer.resetSeperator=function(){g.tokenizer.seperator=g.tokenizer.defaultSeperator},g.tokenizer.getSeperator=function(){return g.tokenizer.seperator},(g.Pipeline=function(){this._queue=[]}).registeredFunctions={},g.Pipeline.registerFunction=function(e,t){t in g.Pipeline.registeredFunctions&&g.utils.warn("Overwriting existing registered function: "+t),e.label=t,g.Pipeline.registeredFunctions[t]=e},g.Pipeline.getRegisteredFunction=function(e){return e in g.Pipeline.registeredFunctions!=1?null:g.Pipeline.registeredFunctions[e]},g.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||g.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},g.Pipeline.load=function(e){const n=new g.Pipeline;return e.forEach(function(e){var t=g.Pipeline.getRegisteredFunction(e);if(!t)throw new Error("Cannot load un-registered function: "+e);n.add(t)}),n},g.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach(function(e){g.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},g.Pipeline.prototype.after=function(e,t){if(g.Pipeline.warnIfFunctionNotRegistered(t),-1===(e=this._queue.indexOf(e)))throw new Error("Cannot find existingFn");this._queue.splice(e+1,0,t)},g.Pipeline.prototype.before=function(e,t){if(g.Pipeline.warnIfFunctionNotRegistered(t),-1===(e=this._queue.indexOf(e)))throw new Error("Cannot find existingFn");this._queue.splice(e,0,t)},g.Pipeline.prototype.remove=function(e){-1!==(e=this._queue.indexOf(e))&&this._queue.splice(e,1)},g.Pipeline.prototype.run=function(o){var e=[],t=o.length,i=this._queue.length;for(let n=0;ne&&(n=i),o=n-t,i=t+Math.floor(o/2),r=this.elements[i]}return r===e?i:-1},lunr.SortedSet.prototype.locationFor=function(e){let t=0,n=this.elements.length,o=n-t,i=t+Math.floor(o/2),r=this.elements[i];for(;1e&&(n=i),o=n-t,i=t+Math.floor(o/2),r=this.elements[i];return r>e?i:ri-1||o>r-1);)s[n]===l[o]?(t.add(s[n]),n++,o++):s[n]l[o]&&o++;return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){let t,n,o;n=this.length>=e.length?(t=this,e):(t=e,this),o=t.clone();for(let e=0,t=n.toArray();e{let t=n.getAttribute(e);t&&(t=t.replace("$SHORTCUT",v),n.setAttribute(e,t))})}s.addEventListener("keydown",function(e){"Enter"!==e.key&&" "!==e.key||s.click()});let e,r=(f.addEventListener("click",o),f.addEventListener("touchend",o,{passive:!0}),document.addEventListener("keydown",function(e){"Escape"===e.key&&u()}),p.addEventListener("click",function(){t(),h.focus()}),p.addEventListener("keydown",function(e){"Enter"!==e.key&&" "!==e.key||(t(),h.focus(),e.preventDefault())}),s.addEventListener("mouseover",i),s.addEventListener("click",l),s.addEventListener("touchstart",l,{passive:!0}),null);function l(){e=document.activeElement,i(),f.style.display="block",h.focus()}function u(){f.style.display="none",t(),e&&document.body.contains(e)&&e.focus()}function a(e){var t;"true"!==e.getAttribute("aria-selected")&&([t=null]=[e],y.querySelectorAll("#results > div").forEach(e=>{e!==t&&e.setAttribute("aria-selected","false")}),e.setAttribute("aria-selected","true")),h.setAttribute("aria-activedescendant",e.id)}function t(){h.value="",y.innerHTML="",g.style.display="none",h.removeAttribute("aria-activedescendant"),p.style.display="none"}function o(e){e.target===f&&u(),e.stopPropagation()}function i(){if(!r)if(window.searchIndex)r=Promise.resolve(elasticlunr.Index.load(window.searchIndex));else{var t=document.documentElement.getAttribute("lang").substring(0,2);let e=document.querySelector("meta[name='base']").getAttribute("content");e.endsWith("/")&&(e=e.slice(0,-1)),r=fetch(e+"/search_index."+t+".json").then(e=>e.json()).then(e=>elasticlunr.Index.load(e))}}function S(e){return e=parseInt(e,16).toString(2),[0,1,2,3,4][Math.ceil(e.length/8)]}function c(){a(this)}h.addEventListener("input",async function(){var e=this.value;const s=e.trim();var t=await r;y.innerHTML="",p.style.display=0{e&&(e.style.display="none")}),(o=m[o])&&(o.style.display="inline",o.textContent=o.textContent.replace("$NUMBER",t.toString()));let l=0;e.forEach(function(t){if(t.doc.title||t.doc.path||t.doc.id){var n=document.createElement("div"),o=(n.setAttribute("role","option"),n.id="result-"+l++,n.innerHTML="",n.querySelector("a")),i=n.querySelector("span:first-child"),r=n.querySelector("span:nth-child(2)"),i=(i.textContent=t.doc.title||t.doc.path||t.doc.id,t.doc.body?function(e,t){var n=t.map(function(e){return elasticlunr.stemmer(e.toLowerCase())});let o=0;var i=[];for(const m of e.toLowerCase().split(". ")){let t=!0;for(const v of m.split(/[\s\n]/)){if(0"),p[2]+p[0].length);!h.test(p[0])&&12<=p[0].length?(f=function(t){let n="",o=!1,i=0,r=0,s=0;for(let e=0;e"),d=g}c.push("…");var y=t=c.join("");return 150]+>/g,"").length?t.substring(0,150)+"…":y}(t.doc.body,s.split(/\s+/)):t.doc.description||"");r.innerHTML=i;let e=t.ref;t.doc.body&&(r=encodeURIComponent(s),e+="#:~:text="+r),o.href=e,y.appendChild(n)}}),h.setAttribute("aria-expanded",0e.split("#")[0].replace(/\/$/,""))(o)!==n(t)||e.ctrlKey||e.metaKey||u())}),document.querySelectorAll("#results > div").forEach(e=>{e.removeEventListener("touchstart",c),e.addEventListener("touchstart",c,{passive:!0})})},!0),document.addEventListener("keydown",function(t){var e=navigator.userAgent.toLowerCase().includes("mac")?t.metaKey:t.ctrlKey;if("k"===t.key&&e)t.preventDefault(),("block"===f.style.display?u:l)();else if(e=document.activeElement,"Tab"!==t.key||e!==h&&e!==p){if(0!==(r=y.querySelectorAll("#results > div")).length){var n,o,i=Array.from(r),r=y.querySelector('[aria-selected="true"]'),s=i.indexOf(r);if(["ArrowUp","ArrowDown","Home","End","PageUp","PageDown"].includes(t.key)){t.preventDefault();let e=s;switch(t.key){case"ArrowUp":e=Math.max(s-1,0);break;case"ArrowDown":e=Math.min(s+1,i.length-1);break;case"Home":e=0;break;case"End":e=i.length-1;break;case"PageUp":e=Math.max(s-3,0);break;case"PageDown":e=Math.min(s+3,i.length-1)}e!==s&&(a((o=i)[n=e]),o[n].scrollIntoView({block:"nearest",inline:"start"}))}"Enter"===t.key&&r&&(t.preventDefault(),t.stopImmediatePropagation(),(o=r.querySelector("a"))&&(window.location.href=o.getAttribute("href")),u())}}else t.preventDefault(),(e===h?p:h).focus()})}}; diff --git a/static/js/sortTable.js b/static/js/sortTable.js new file mode 100644 index 0000000..16e02e9 --- /dev/null +++ b/static/js/sortTable.js @@ -0,0 +1,119 @@ +// Select the table and table headers. +var table = document.querySelector('#sitemapTable'); +var headers = Array.from(table.querySelectorAll('th')); + +// Create and append the live region for accessibility announcements. +var liveRegion = document.createElement('div'); +liveRegion.setAttribute('aria-live', 'polite'); +liveRegion.setAttribute('aria-atomic', 'true'); +liveRegion.classList.add('visually-hidden'); +document.body.appendChild(liveRegion); + +// Initialise headers with click and keyboard listeners. +initializeHeaders(); +addSortText(); // Add text for screen readers for initial sort direction. +updateSortIndicators(headers[0], 'asc'); // Set initial sort indicators. + +function updateSortIndicators(header, direction) { + removeSortArrows(header); + var arrow = document.createElement('span'); + arrow.classList.add('sort-arrow'); + arrow.textContent = direction === 'asc' ? ' ▲' : ' ▼'; + arrow.setAttribute('aria-hidden', 'true'); + header.appendChild(arrow); +} + +function removeSortArrows(header) { + var arrows = header.querySelectorAll('.sort-arrow'); + arrows.forEach(function (arrow) { + arrow.remove(); + }); +} + +function initializeHeaders() { + headers.forEach(function (header, index) { + header.classList.add('sortable'); + header.setAttribute('tabindex', '0'); + header.sortDirection = 'asc'; // Default sort direction. + var sortAttribute = index === 0 ? 'ascending' : 'none'; + header.setAttribute('aria-sort', sortAttribute); + header.addEventListener('click', function () { + sortTable(index); + }); + header.addEventListener('keydown', function (e) { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + sortTable(index); + } + }); + }); +} + +function announceSort(header, direction) { + var columnTitle = header.querySelector('.columntitle').textContent; + liveRegion.textContent = + 'Column ' + columnTitle + ' is now sorted in ' + direction + ' order'; +} + +function sortTable(index) { + var header = headers[index]; + var direction = header.sortDirection === 'asc' ? 'desc' : 'asc'; + var tbody = table.querySelector('tbody'); + var rows = Array.from(tbody.querySelectorAll('tr')); + sortRows(rows, index, direction); + refreshTableBody(tbody, rows); + updateHeaderAttributes(header, direction); + announceSort(header, direction === 'asc' ? 'ascending' : 'descending'); +} + +function sortRows(rows, index, direction) { + rows.sort(function (rowA, rowB) { + var cellA = rowA.querySelectorAll('td')[index].textContent; + var cellB = rowB.querySelectorAll('td')[index].textContent; + return direction === 'asc' + ? cellA.localeCompare(cellB) + : cellB.localeCompare(cellA); + }); +} + +function refreshTableBody(tbody, rows) { + tbody.innerHTML = ''; // Clear existing rows. + rows.forEach(function (row) { + tbody.appendChild(row); + }); +} + +function updateHeaderAttributes(header, direction) { + headers.forEach(function (otherHeader) { + if (otherHeader !== header) { + otherHeader.setAttribute('aria-sort', 'none'); + removeSortArrows(otherHeader); + } + }); + header.setAttribute('aria-sort', direction === 'asc' ? 'ascending' : 'descending'); + header.sortDirection = direction; + updateSortIndicators(header, direction); + updateAnnounceText(header); +} + +// Update screen reader text for sorting. +function updateAnnounceText(header) { + var span = header.querySelector('.visually-hidden'); + span.textContent = + 'Click to sort in ' + + (header.sortDirection === 'asc' ? 'descending' : 'ascending') + + ' order'; +} + +// Add text for screen readers regarding sort order. +function addSortText() { + headers.forEach(function (header) { + var span = document.createElement('span'); + span.classList.add('visually-hidden'); + span.textContent = 'Click to sort in descending order'; + header.appendChild(span); + }); +} + +headers[0].sortDirection = 'asc'; +headers[0].setAttribute('aria-sort', 'ascending'); diff --git a/static/js/sortTable.min.js b/static/js/sortTable.min.js new file mode 100644 index 0000000..de423a8 --- /dev/null +++ b/static/js/sortTable.min.js @@ -0,0 +1 @@ +var table=document.querySelector("#sitemapTable"),headers=Array.from(table.querySelectorAll("th")),liveRegion=document.createElement("div");function updateSortIndicators(e,t){removeSortArrows(e);var r=document.createElement("span");r.classList.add("sort-arrow"),r.textContent="asc"===t?" ▲":" ▼",r.setAttribute("aria-hidden","true"),e.appendChild(r)}function removeSortArrows(e){e.querySelectorAll(".sort-arrow").forEach(function(e){e.remove()})}function initializeHeaders(){headers.forEach(function(e,t){e.classList.add("sortable"),e.setAttribute("tabindex","0"),e.sortDirection="asc",e.setAttribute("aria-sort",0===t?"ascending":"none"),e.addEventListener("click",function(){sortTable(t)}),e.addEventListener("keydown",function(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),sortTable(t))})})}function announceSort(e,t){e=e.querySelector(".columntitle").textContent;liveRegion.textContent="Column "+e+" is now sorted in "+t+" order"}function sortTable(e){var t=headers[e],r="asc"===t.sortDirection?"desc":"asc",n=table.querySelector("tbody"),o=Array.from(n.querySelectorAll("tr"));sortRows(o,e,r),refreshTableBody(n,o),updateHeaderAttributes(t,r),announceSort(t,"asc"==r?"ascending":"descending")}function sortRows(e,r,n){e.sort(function(e,t){e=e.querySelectorAll("td")[r].textContent,t=t.querySelectorAll("td")[r].textContent;return"asc"===n?e.localeCompare(t):t.localeCompare(e)})}function refreshTableBody(t,e){t.innerHTML="",e.forEach(function(e){t.appendChild(e)})}function updateHeaderAttributes(t,e){headers.forEach(function(e){e!==t&&(e.setAttribute("aria-sort","none"),removeSortArrows(e))}),t.setAttribute("aria-sort","asc"===e?"ascending":"descending"),t.sortDirection=e,updateSortIndicators(t,e),updateAnnounceText(t)}function updateAnnounceText(e){e.querySelector(".visually-hidden").textContent="Click to sort in "+("asc"===e.sortDirection?"descending":"ascending")+" order"}function addSortText(){headers.forEach(function(e){var t=document.createElement("span");t.classList.add("visually-hidden"),t.textContent="Click to sort in descending order",e.appendChild(t)})}liveRegion.setAttribute("aria-live","polite"),liveRegion.setAttribute("aria-atomic","true"),liveRegion.classList.add("visually-hidden"),document.body.appendChild(liveRegion),initializeHeaders(),addSortText(),updateSortIndicators(headers[0],"asc"),headers[0].sortDirection="asc",headers[0].setAttribute("aria-sort","ascending"); diff --git a/static/js/themeSwitcher.js b/static/js/themeSwitcher.js new file mode 100644 index 0000000..c5ddf95 --- /dev/null +++ b/static/js/themeSwitcher.js @@ -0,0 +1,74 @@ +// Get the theme switcher button elements. +const themeSwitcher = document.querySelector('.theme-switcher'); +const themeResetter = document.querySelector('.theme-resetter'); +const defaultTheme = document.documentElement.getAttribute('data-default-theme'); + +function getSystemThemePreference() { + return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; +} + +// Determine the initial theme. +let currentTheme = + localStorage.getItem('theme') || + document.documentElement.getAttribute('data-theme') || + getSystemThemePreference(); + +function setTheme(theme, saveToLocalStorage = false) { + document.documentElement.setAttribute('data-theme', theme); + currentTheme = theme; + themeSwitcher.setAttribute('aria-pressed', theme === 'dark'); + + if (saveToLocalStorage) { + localStorage.setItem('theme', theme); + themeResetter.classList.add('has-custom-theme'); + } else { + localStorage.removeItem('theme'); + themeResetter.classList.remove('has-custom-theme'); + } + + // Dispatch a custom event for comment systems. + window.dispatchEvent(new CustomEvent('themeChanged', { detail: { theme } })); +} + +function resetTheme() { + setTheme(defaultTheme || getSystemThemePreference()); +} + +// Function to switch between dark and light themes. +function switchTheme() { + setTheme(currentTheme === 'dark' ? 'light' : 'dark', true); +} + +// Initialize the theme switcher button. +themeSwitcher.addEventListener('click', switchTheme); +themeResetter.addEventListener('click', resetTheme); + +// Update the theme based on system preference if necessary. +if (!defaultTheme) { + window + .matchMedia('(prefers-color-scheme: dark)') + .addEventListener('change', (e) => { + setTheme(e.matches ? 'dark' : 'light'); + }); +} + +// Set initial ARIA attribute and custom theme class. +themeSwitcher.setAttribute('aria-pressed', currentTheme === 'dark'); +if (localStorage.getItem('theme')) { + themeResetter.classList.add('has-custom-theme'); +} + +// Function to handle keydown event on theme toggler buttons. +function handleThemeTogglerKeydown(event) { + if (event.key === 'Enter' || event.key === ' ') { + event.preventDefault(); + if (event.target === themeSwitcher) { + switchTheme(); + } else if (event.target === themeResetter) { + resetTheme(); + } + } +} + +themeSwitcher.addEventListener('keydown', handleThemeTogglerKeydown); +themeResetter.addEventListener('keydown', handleThemeTogglerKeydown); diff --git a/static/js/themeSwitcher.min.js b/static/js/themeSwitcher.min.js new file mode 100644 index 0000000..e563ad3 --- /dev/null +++ b/static/js/themeSwitcher.min.js @@ -0,0 +1 @@ +const a=document.querySelector(".theme-switcher"),r=document.querySelector(".theme-resetter"),e=document.documentElement.getAttribute("data-default-theme");function t(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}let d=localStorage.getItem("theme")||document.documentElement.getAttribute("data-theme")||t();function n(e,t=!1){document.documentElement.setAttribute("data-theme",e),d=e,a.setAttribute("aria-pressed","dark"===e),t?(localStorage.setItem("theme",e),r.classList.add("has-custom-theme")):(localStorage.removeItem("theme"),r.classList.remove("has-custom-theme")),window.dispatchEvent(new CustomEvent("themeChanged",{detail:{theme:e}}))}function c(){n(e||t())}function m(){n("dark"===d?"light":"dark",!0)}function o(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.target===a?m():e.target===r&&c())}a.addEventListener("click",m),r.addEventListener("click",c),e||window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{n(e.matches?"dark":"light")}),a.setAttribute("aria-pressed","dark"===d),localStorage.getItem("theme")&&r.classList.add("has-custom-theme"),a.addEventListener("keydown",o),r.addEventListener("keydown",o); diff --git a/static/js/utterances.js b/static/js/utterances.js new file mode 100644 index 0000000..ddfa35a --- /dev/null +++ b/static/js/utterances.js @@ -0,0 +1,64 @@ +function setUtterancesTheme(newTheme) { + // Get the frame with class "utterances-frame". + const frame = document.querySelector('.utterances-frame'); + + if (frame) { + // If the iframe exists, send a message to set the theme. + frame.contentWindow.postMessage( + { type: 'set-theme', theme: newTheme }, + 'https://utteranc.es' + ); + } +} + +function initUtterances() { + // Get the comments div. + const commentsDiv = document.querySelector('.comments'); + + // Check if the comments div exists. + if (commentsDiv) { + // Get all necessary attributes for initializing Utterances. + const repo = commentsDiv.getAttribute('data-repo'); + const issueTerm = commentsDiv.getAttribute('data-issue-term'); + const label = commentsDiv.getAttribute('data-label'); + const lightTheme = commentsDiv.getAttribute('data-light-theme'); + const darkTheme = commentsDiv.getAttribute('data-dark-theme'); + const lazyLoading = commentsDiv.getAttribute('data-lazy-loading'); + + // Create a new script element. + const script = document.createElement('script'); + script.src = 'https://utteranc.es/client.js'; + script.async = true; + script.setAttribute('repo', repo); + script.setAttribute('issue-term', issueTerm); + script.setAttribute('label', label); + + // Set the initial theme. + const currentTheme = + document.documentElement.getAttribute('data-theme') || 'light'; + const selectedTheme = currentTheme === 'dark' ? darkTheme : lightTheme; + script.setAttribute('theme', selectedTheme); + + script.setAttribute('crossorigin', 'anonymous'); + + // Enable lazy loading if specified. + if (lazyLoading === 'true') { + script.setAttribute('data-loading', 'lazy'); + } + + // Append the script to the comments div. + commentsDiv.appendChild(script); + + // Listen for themeChanged event to update the theme. + window.addEventListener('themeChanged', (event) => { + // Determine the new theme based on the event detail. + const selectedTheme = + event.detail.theme === 'dark' ? darkTheme : lightTheme; + // Set the new theme. + setUtterancesTheme(selectedTheme); + }); + } +} + +// Initialize Utterances. +initUtterances(); diff --git a/static/js/utterances.min.js b/static/js/utterances.min.js new file mode 100644 index 0000000..992de3b --- /dev/null +++ b/static/js/utterances.min.js @@ -0,0 +1 @@ +function setUtterancesTheme(t){var e=document.querySelector(".utterances-frame");e&&e.contentWindow.postMessage({type:"set-theme",theme:t},"https://utteranc.es")}function initUtterances(){var t=document.querySelector(".comments");if(t){const a=t.getAttribute("data-repo"),r=t.getAttribute("data-issue-term"),n=t.getAttribute("data-label"),i=t.getAttribute("data-light-theme"),s=t.getAttribute("data-dark-theme"),u=t.getAttribute("data-lazy-loading"),d=document.createElement("script");d.src="https://utteranc.es/client.js",d.async=!0,d.setAttribute("repo",a),d.setAttribute("issue-term",r),d.setAttribute("label",n);var e="dark"===(document.documentElement.getAttribute("data-theme")||"light")?s:i;d.setAttribute("theme",e),d.setAttribute("crossorigin","anonymous"),"true"===u&&d.setAttribute("data-loading","lazy"),t.appendChild(d),window.addEventListener("themeChanged",t=>{setUtterancesTheme("dark"===t.detail.theme?s:i)})}}initUtterances(); diff --git a/static/js/webmention.js b/static/js/webmention.js new file mode 100644 index 0000000..261b238 --- /dev/null +++ b/static/js/webmention.js @@ -0,0 +1,412 @@ +/* webmention.js + +Simple thing for embedding webmentions from webmention.io into a page, client-side. + +(c)2018-2022 fluffy (http://beesbuzz.biz) +2025 mmai (https://misc.rhumbs.fr) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Basic usage: + + + + + + + +
+

Sitemap of

+

Number of URLs:

+ + + + + + + + + + + + + + + +
URLLast modification
+ + + + + +
+
+ + + + diff --git a/static/social_icons/LICENSE b/static/social_icons/LICENSE new file mode 100644 index 0000000..76875fb --- /dev/null +++ b/static/social_icons/LICENSE @@ -0,0 +1,5 @@ +Most icons in this directory are downloaded from [FontAwesome](https://fontawesome.com/). They are part of the [free offer](https://fontawesome.com/license/free) and are licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). + +Exceptions: +- nostr, by Andrea Nicolini, aka Bembureda, licensed under [CC0](https://creativecommons.org/publicdomain/zero/1.0/). Source: https://github.com/mbarulli/nostr-logo +- Keybase, licensed under [CC0](https://creativecommons.org/publicdomain/zero/1.0/) by [Simple Icons](https://simpleicons.org/). Source: https://github.com/simple-icons/simple-icons/blob/develop/icons/keybase.svg diff --git a/static/social_icons/apple.svg b/static/social_icons/apple.svg new file mode 100644 index 0000000..d0532d5 --- /dev/null +++ b/static/social_icons/apple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/bitcoin.svg b/static/social_icons/bitcoin.svg new file mode 100644 index 0000000..941d9b0 --- /dev/null +++ b/static/social_icons/bitcoin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/bluesky.svg b/static/social_icons/bluesky.svg new file mode 100644 index 0000000..07bbec0 --- /dev/null +++ b/static/social_icons/bluesky.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/calckey.svg b/static/social_icons/calckey.svg new file mode 100755 index 0000000..70c9ef1 --- /dev/null +++ b/static/social_icons/calckey.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/social_icons/castopod.svg b/static/social_icons/castopod.svg new file mode 100755 index 0000000..709288a --- /dev/null +++ b/static/social_icons/castopod.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/social_icons/codeberg.svg b/static/social_icons/codeberg.svg new file mode 100644 index 0000000..d5fdd1a --- /dev/null +++ b/static/social_icons/codeberg.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/social_icons/debian.svg b/static/social_icons/debian.svg new file mode 100644 index 0000000..cf9d229 --- /dev/null +++ b/static/social_icons/debian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/deviantart.svg b/static/social_icons/deviantart.svg new file mode 100644 index 0000000..7dbd0b6 --- /dev/null +++ b/static/social_icons/deviantart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/diaspora.svg b/static/social_icons/diaspora.svg new file mode 100644 index 0000000..55527b5 --- /dev/null +++ b/static/social_icons/diaspora.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/discord.svg b/static/social_icons/discord.svg new file mode 100644 index 0000000..f0dfeab --- /dev/null +++ b/static/social_icons/discord.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/discourse.svg b/static/social_icons/discourse.svg new file mode 100644 index 0000000..343bea6 --- /dev/null +++ b/static/social_icons/discourse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/email.svg b/static/social_icons/email.svg new file mode 100644 index 0000000..85245e2 --- /dev/null +++ b/static/social_icons/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/ethereum.svg b/static/social_icons/ethereum.svg new file mode 100644 index 0000000..af202de --- /dev/null +++ b/static/social_icons/ethereum.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/etsy.svg b/static/social_icons/etsy.svg new file mode 100644 index 0000000..ebc040a --- /dev/null +++ b/static/social_icons/etsy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/facebook.svg b/static/social_icons/facebook.svg new file mode 100644 index 0000000..0afaf7a --- /dev/null +++ b/static/social_icons/facebook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/forgejo.svg b/static/social_icons/forgejo.svg new file mode 100755 index 0000000..64769ca --- /dev/null +++ b/static/social_icons/forgejo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/social_icons/friendica.svg b/static/social_icons/friendica.svg new file mode 100755 index 0000000..200aa8b --- /dev/null +++ b/static/social_icons/friendica.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/social_icons/funkwhale.svg b/static/social_icons/funkwhale.svg new file mode 100755 index 0000000..a320e0a --- /dev/null +++ b/static/social_icons/funkwhale.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/social_icons/gitea.svg b/static/social_icons/gitea.svg new file mode 100755 index 0000000..3022da4 --- /dev/null +++ b/static/social_icons/gitea.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/social_icons/github.svg b/static/social_icons/github.svg new file mode 100644 index 0000000..e32807a --- /dev/null +++ b/static/social_icons/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/gitlab.svg b/static/social_icons/gitlab.svg new file mode 100644 index 0000000..b577d3f --- /dev/null +++ b/static/social_icons/gitlab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/google-scholar.svg b/static/social_icons/google-scholar.svg new file mode 100644 index 0000000..f271dca --- /dev/null +++ b/static/social_icons/google-scholar.svg @@ -0,0 +1 @@ + diff --git a/static/social_icons/google.svg b/static/social_icons/google.svg new file mode 100644 index 0000000..b3776b0 --- /dev/null +++ b/static/social_icons/google.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/greatape.svg b/static/social_icons/greatape.svg new file mode 100755 index 0000000..3a58d86 --- /dev/null +++ b/static/social_icons/greatape.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/social_icons/hacker-news.svg b/static/social_icons/hacker-news.svg new file mode 100644 index 0000000..23e3980 --- /dev/null +++ b/static/social_icons/hacker-news.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/hubzilla.svg b/static/social_icons/hubzilla.svg new file mode 100755 index 0000000..2d6c740 --- /dev/null +++ b/static/social_icons/hubzilla.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/social_icons/instagram.svg b/static/social_icons/instagram.svg new file mode 100644 index 0000000..89f63c4 --- /dev/null +++ b/static/social_icons/instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/itchio.svg b/static/social_icons/itchio.svg new file mode 100644 index 0000000..4a4ac25 --- /dev/null +++ b/static/social_icons/itchio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/keybase.svg b/static/social_icons/keybase.svg new file mode 100644 index 0000000..f4c2ebb --- /dev/null +++ b/static/social_icons/keybase.svg @@ -0,0 +1 @@ +Keybase \ No newline at end of file diff --git a/static/social_icons/lemmy.svg b/static/social_icons/lemmy.svg new file mode 100755 index 0000000..07eede1 --- /dev/null +++ b/static/social_icons/lemmy.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/social_icons/letterboxd.svg b/static/social_icons/letterboxd.svg new file mode 100644 index 0000000..d3e1925 --- /dev/null +++ b/static/social_icons/letterboxd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/linkedin.svg b/static/social_icons/linkedin.svg new file mode 100644 index 0000000..d54fcf5 --- /dev/null +++ b/static/social_icons/linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/mastodon.svg b/static/social_icons/mastodon.svg new file mode 100644 index 0000000..5e12f81 --- /dev/null +++ b/static/social_icons/mastodon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/matrix.svg b/static/social_icons/matrix.svg new file mode 100644 index 0000000..7618c33 --- /dev/null +++ b/static/social_icons/matrix.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/static/social_icons/misskey.svg b/static/social_icons/misskey.svg new file mode 100755 index 0000000..ab3a381 --- /dev/null +++ b/static/social_icons/misskey.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/social_icons/nostr.svg b/static/social_icons/nostr.svg new file mode 100755 index 0000000..fd103ae --- /dev/null +++ b/static/social_icons/nostr.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + diff --git a/static/social_icons/orcid.svg b/static/social_icons/orcid.svg new file mode 100644 index 0000000..2c3e4bd --- /dev/null +++ b/static/social_icons/orcid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/paypal.svg b/static/social_icons/paypal.svg new file mode 100644 index 0000000..efdc81a --- /dev/null +++ b/static/social_icons/paypal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/peertube.svg b/static/social_icons/peertube.svg new file mode 100755 index 0000000..3986e7f --- /dev/null +++ b/static/social_icons/peertube.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/static/social_icons/pinterest.svg b/static/social_icons/pinterest.svg new file mode 100644 index 0000000..eb977c2 --- /dev/null +++ b/static/social_icons/pinterest.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/pixelfed.svg b/static/social_icons/pixelfed.svg new file mode 100755 index 0000000..87b2154 --- /dev/null +++ b/static/social_icons/pixelfed.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/social_icons/pleroma.svg b/static/social_icons/pleroma.svg new file mode 100755 index 0000000..b2390cc --- /dev/null +++ b/static/social_icons/pleroma.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/static/social_icons/quora.svg b/static/social_icons/quora.svg new file mode 100644 index 0000000..375d302 --- /dev/null +++ b/static/social_icons/quora.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/reddit.svg b/static/social_icons/reddit.svg new file mode 100644 index 0000000..a8a3a96 --- /dev/null +++ b/static/social_icons/reddit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/rss.svg b/static/social_icons/rss.svg new file mode 100644 index 0000000..b862886 --- /dev/null +++ b/static/social_icons/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/signal.svg b/static/social_icons/signal.svg new file mode 100644 index 0000000..c6ee14a --- /dev/null +++ b/static/social_icons/signal.svg @@ -0,0 +1 @@ + diff --git a/static/social_icons/skype.svg b/static/social_icons/skype.svg new file mode 100644 index 0000000..3369aba --- /dev/null +++ b/static/social_icons/skype.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/slack.svg b/static/social_icons/slack.svg new file mode 100644 index 0000000..0dbc26d --- /dev/null +++ b/static/social_icons/slack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/snapchat.svg b/static/social_icons/snapchat.svg new file mode 100644 index 0000000..2cd79dd --- /dev/null +++ b/static/social_icons/snapchat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/soundcloud.svg b/static/social_icons/soundcloud.svg new file mode 100644 index 0000000..4724d74 --- /dev/null +++ b/static/social_icons/soundcloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/spotify.svg b/static/social_icons/spotify.svg new file mode 100644 index 0000000..1d393ba --- /dev/null +++ b/static/social_icons/spotify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/stack-exchange.svg b/static/social_icons/stack-exchange.svg new file mode 100644 index 0000000..0a3177f --- /dev/null +++ b/static/social_icons/stack-exchange.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/stack-overflow.svg b/static/social_icons/stack-overflow.svg new file mode 100644 index 0000000..2ca50c7 --- /dev/null +++ b/static/social_icons/stack-overflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/steam.svg b/static/social_icons/steam.svg new file mode 100644 index 0000000..b61f374 --- /dev/null +++ b/static/social_icons/steam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/telegram.svg b/static/social_icons/telegram.svg new file mode 100644 index 0000000..02f48c0 --- /dev/null +++ b/static/social_icons/telegram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/twitter.svg b/static/social_icons/twitter.svg new file mode 100644 index 0000000..0778f72 --- /dev/null +++ b/static/social_icons/twitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/vimeo.svg b/static/social_icons/vimeo.svg new file mode 100644 index 0000000..d98368e --- /dev/null +++ b/static/social_icons/vimeo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/whatsapp.svg b/static/social_icons/whatsapp.svg new file mode 100644 index 0000000..d259142 --- /dev/null +++ b/static/social_icons/whatsapp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/wordpress.svg b/static/social_icons/wordpress.svg new file mode 100755 index 0000000..807a5ed --- /dev/null +++ b/static/social_icons/wordpress.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/social_icons/writefreely.svg b/static/social_icons/writefreely.svg new file mode 100755 index 0000000..c2bd4fc --- /dev/null +++ b/static/social_icons/writefreely.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/social_icons/x.svg b/static/social_icons/x.svg new file mode 100644 index 0000000..f5feed7 --- /dev/null +++ b/static/social_icons/x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/social_icons/youtube.svg b/static/social_icons/youtube.svg new file mode 100644 index 0000000..287dca2 --- /dev/null +++ b/static/social_icons/youtube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/404.html b/templates/404.html new file mode 100644 index 0000000..4c19dac --- /dev/null +++ b/templates/404.html @@ -0,0 +1,34 @@ +{% extends "page.html" %} + +{% macro display_404_message(language_name) %} + {%- set language_strings = load_data(path="i18n/" ~ language_name ~ '.toml', required=false) -%} + {%- if not language_strings -%} + {%- set language_strings = load_data(path="themes/tabi/i18n/" ~ language_name ~ '.toml', required=false) -%} + {%- endif -%} +

{{ macros_translate::translate(key="page_missing", default="The page you've requested seems to be missing", force_lang=language_name, language_strings=language_strings) }} + {%- if config.languages | length > 0 -%} +  {{ macros_translate::translate(key="translation_missing", default="or hasn't been translated into your language yet", force_lang=language_name, language_strings=language_strings) }}{{ macros_translate::translate(key="full_stop", default=".", force_lang=language_name, language_strings=language_strings) }} + {%- else %}. + {%- endif %}
+ {{ macros_translate::translate(key="check_url", default="Check the URL for errors or", force_lang=language_name, language_strings=language_strings) }} + + {{ macros_translate::translate(key="go_home", default="go back to the homepage", force_lang=language_name, language_strings=language_strings) }}{{ macros_translate::translate(key="full_stop", default=".", force_lang=language_name, language_strings=language_strings) }}

+{% endmacro %} + +{% block main_content %} +
+ {{ macros_page_header::page_header(title="404")}} +
{{ macros_translate::translate(key="not_found") }}
+ + {# 404 message for base language #} + {{ self::display_404_message(language_name=config.default_language, is_multilingual=is_multilingual) }} + + {#- Iterate through each extra language, to display the localised 404 message -#} + {%- for language_name, language in config.languages -%} + {%- if language_name == config.default_language -%} + {%- continue -%} {#- We've already displayed the 404 message for the base language -#} + {%- endif -%} + {{ self::display_404_message(language_name=language_name, is_multilingual=is_multilingual) }} + {%- endfor -%} +
+{% endblock main_content %} diff --git a/templates/anchor-link.html b/templates/anchor-link.html new file mode 100644 index 0000000..254dbe3 --- /dev/null +++ b/templates/anchor-link.html @@ -0,0 +1 @@ + diff --git a/templates/archive.html b/templates/archive.html new file mode 100644 index 0000000..637b414 --- /dev/null +++ b/templates/archive.html @@ -0,0 +1,89 @@ +{% extends "base.html" %} + +{% block main_content %} + +{{ macros_page_header::page_header(title=section.title) }} + +{# Set locale for date #} +{% set date_locale = macros_translate::translate(key="date_locale", default="en_GB", language_strings=language_strings) %} + +{#- Check for language-specific date formats -#} +{%- set language_format = "" -%} +{%- if config.extra.date_formats -%} + {%- for format_config in config.extra.date_formats -%} + {%- if format_config.lang == lang -%} + {%- if format_config.archive -%} + {%- set_global language_format = format_config.archive -%} + {%- endif -%} + {%- endif -%} + {%- endfor -%} +{%- endif -%} + +
+
    + {%- set source_paths = section.extra.section_path | default(value="blog/") -%} + {%- if source_paths is iterable -%} + {%- set paths = source_paths -%} + {%- else -%} + {%- set paths = [source_paths] -%} + {%- endif %} + {%- set all_posts = [] -%} + {%- for path in paths -%} + {%- if lang == config.default_language %} + {%- set section_item = get_section(path=path ~ "_index.md") -%} + {%- else %} + {%- set section_item = get_section(path=path ~ "_index." ~ lang ~ ".md") -%} + {%- endif %} + {%- set_global all_posts = all_posts | concat(with=section_item.pages) -%} + {%- endfor %} + + {# Sort all posts by date #} + {%- set archive_reverse = section.extra.archive_reverse | default(value=false) -%} + {%- set all_posts = all_posts | sort(attribute="date") -%} + {%- if not archive_reverse -%} + {%- set all_posts = all_posts | reverse -%} + {%- endif -%} + + {# Group posts by year. #} + {% set posts_by_year = all_posts | group_by(attribute="year") %} + {% set years = [] %} + {% for year, ignored in posts_by_year %} + {% set_global years = years | concat(with=[year]) %} + {% endfor %} + + {# Iterate over years #} + {% set years = years | sort %} + {%- if not archive_reverse -%} + {%- set years = years | reverse -%} + {%- endif -%} + + {% for year in years %} + {% set posts = posts_by_year[year] %} + {% if posts | length > 0 %} +
  • +

    {{ year }}

    +
      + {% for post in posts %} +
    • +
      + + {%- if language_format -%} + {{ post.date | date(format=language_format, locale=date_locale) }} + {%- elif config.extra.archive_date_format -%} + {{ post.date | date(format=config.extra.archive_date_format, locale=date_locale) }} + {%- else -%} + {{ post.date | date(format="%d %b", locale=date_locale) }} + {%- endif -%} + +
      + {{ post.title | markdown(inline=true) | safe }} +
    • + {% endfor %} +
    +
  • + {% endif %} + {% endfor %} +
+
+ +{% endblock main_content %} diff --git a/templates/atom.xml b/templates/atom.xml new file mode 100644 index 0000000..3e5b55c --- /dev/null +++ b/templates/atom.xml @@ -0,0 +1,110 @@ +{%- import "macros/translate.html" as macros_translate -%} +{%- import "macros/settings.html" as macros_settings -%} +{#- Load the internationalisation data -#} +{%- set language_strings = load_data(path="i18n/" ~ lang ~ '.toml', required=false) -%} +{%- if not language_strings -%} + {%- set language_strings = load_data(path="themes/tabi/i18n/" ~ lang ~ ".toml", required=false) -%} +{%- endif -%} + + + + + {{ config.base_url }} + + {{ config.extra.separator | default(value="•") }} + + + {{- macros_translate::translate(key="about_feeds", default="This is a web feed, also known as an Atom feed. Subscribe by copying the URL from the address bar into your newsreader", language_strings=language_strings) -}} + + + {{- macros_translate::translate(key="visit_the_site", default="Visit website", language_strings=language_strings) -}} + + + {{- macros_translate::translate(key="recent_posts", default="Recent posts", language_strings=language_strings) -}} + + + {{- macros_translate::translate(key="last_updated_on", default="Updated on $DATE", language_strings=language_strings) -}} + + + {{- config.extra.default_theme | default(value="") -}} + + + {{- config.extra.post_listing_date | default(value="date") -}} + + + {%- if term -%} + {{ term.name }} + {%- elif section.title -%} + {{ section.title }} + {%- else -%} + {{ config.title }} + {%- endif -%} + + + + {#- Load extra CSS (skin) if set in config.toml -#} + {%- if config.extra.skin -%} + + {%- endif -%} + + {{ config.title | striptags | safe }} + {%- if term %} - {{ term.name }} + {%- elif section.title %} - {{ section.title }} + {%- endif -%} + + {%- if config.description %} + {{ config.description }} + {%- endif %} + + + Zola + {%- if last_updated -%} + {{ last_updated | date(format="%+") }} + {%- endif -%} + {{ feed_url | safe }} + {%- for page in pages %} + {%- if macros_settings::evaluate_setting_priority(setting="hide_from_feed", page=page, default_global_value=false) == "true" -%} + {%- continue -%} + {%- endif -%} + {#- Skip if hide_from_main_feed is true and this is the main feed -#} + {%- if macros_settings::evaluate_setting_priority(setting="hide_from_main_feed", page=page, default_global_value=false) == "true" + and not section + and not term -%} + {%- continue -%} + {%- endif -%} + + {{ page.title }} + {{ page.date | date(format="%+") }} + {{ page.updated | default(value=page.date) | date(format="%+") }} + + + {%- if page.authors -%} + {{ page.authors[0] }} + {%- elif config.author -%} + {{ config.author }} + {%- else -%} + Unknown + {%- endif -%} + + + + {{ page.permalink | safe }} + {% if config.extra.full_content_in_feed %} + {{ page.content }} + {% endif -%} + {% if page.description -%} + {{ page.description }} + {% elif page.summary -%} + {{ page.summary | striptags | trim_end_matches(pat=".") | safe }}… + {% endif -%} + + {%- endfor %} + diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..56f2a65 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,51 @@ +{% import "macros/feed_utils.html" as feed_utils %} +{% import "macros/format_date.html" as macros_format_date %} +{% import "macros/list_posts.html" as macros_list_posts %} +{% import "macros/page_header.html" as macros_page_header %} +{% import "macros/rel_attributes.html" as macros_rel_attributes %} +{% import "macros/series_page.html" as macros_series_page %} +{% import "macros/settings.html" as macros_settings %} +{% import "macros/table_of_contents.html" as macros_toc %} +{% import "macros/target_attribute.html" as macros_target_attribute %} +{% import "macros/translate.html" as macros_translate %} + +{# Load the internationalisation data for the current language from +the .toml files in the user's '/i18n' folder, falling back to the theme's. +This variable will hold all the text strings for the language #} +{%- set language_strings = load_data(path="i18n/" ~ lang ~ '.toml', required=false) -%} +{%- if not language_strings -%} + {%- set language_strings = load_data(path="themes/tabi/i18n/" ~ lang ~ ".toml", required=false) -%} +{%- endif -%} +{% set rtl_languages = ["ar", "arc", "az", "dv", "ff", "he", "ku", "nqo", "fa", "rhg", "syc", "ur"] %} + +{#- Necessary for the hierarchy macro -#} +{%- if page -%} + {%- set current_page = page -%} +{%- else -%} + {%- set current_page = ""-%} +{%- endif -%} + + + + +{% include "partials/header.html" %} + + + {% include "partials/nav.html" %} +
+ + {# Post page is the default #} + {% block main_content %} + Nothing here?! + {% endblock main_content %} +
+ {% include "partials/footer.html" %} + + {# Users can optionally provide this template to add content to the body element. #} + {% include "tabi/extend_body.html" ignore missing %} + + + diff --git a/templates/cards.html b/templates/cards.html new file mode 100644 index 0000000..451f6b2 --- /dev/null +++ b/templates/cards.html @@ -0,0 +1,32 @@ +{% extends "base.html" %} + +{% block main_content %} + {% if section.extra.section_path -%} + {% set section = get_section(path=section.extra.section_path) %} + {% endif -%} + + {{ macros_page_header::page_header(title=section.title) }} + +
+ {% if section.content -%} +
{{ section.content | safe }}
+ {% endif %} + + {%- if paginator %} + {%- set show_pages = paginator.pages -%} + {% else %} + {%- set show_pages = section.pages -%} + {% endif -%} + + {%- if macros_settings::evaluate_setting_priority(setting="enable_cards_tag_filtering", page=section, default_global_value=true) == "true" -%} + {%- include "partials/filter_card_tags.html" -%} + {%- endif -%} + + + {%- include "partials/cards_pages.html" -%} +
+ + {% if paginator %} + {%- include "partials/paginate.html" -%} + {% endif %} +{% endblock main_content %} diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..d0dfc01 --- /dev/null +++ b/templates/index.html @@ -0,0 +1 @@ +{% extends "section.html" %} diff --git a/templates/info-page.html b/templates/info-page.html new file mode 100644 index 0000000..077b1a1 --- /dev/null +++ b/templates/info-page.html @@ -0,0 +1,21 @@ +{# Template for non-articles (About Me, Privacy…) #} + +{% extends "base.html" %} + +{%- block main_content %} + +{%- set page_or_section = page | default(value=section) -%} + +{{ macros_page_header::page_header(title=page_or_section.title) }} + +
+
+ {# The replace pattern is used to enable arbitrary locations for the Table of Contents #} + {# This is Philipp Oppermann's workaround: https://github.com/getzola/zola/issues/584#issuecomment-474329637 #} + {{ page_or_section.content | replace(from="", to=macros_toc::toc(page=page_or_section, header=false, language_strings=language_strings)) | safe }} +
+
+ +{%- include "partials/extra_features.html" -%} + +{%- endblock main_content %} diff --git a/templates/internal/alias.html b/templates/internal/alias.html new file mode 100644 index 0000000..f56f769 --- /dev/null +++ b/templates/internal/alias.html @@ -0,0 +1,13 @@ + + + + + + + + Redirect + + +

Click here to be redirected.

+ + diff --git a/templates/macros/feed_utils.html b/templates/macros/feed_utils.html new file mode 100644 index 0000000..ff35194 --- /dev/null +++ b/templates/macros/feed_utils.html @@ -0,0 +1,17 @@ +{#- Feed utility macros -#} + +{#- Zola 0.19.0 uses `generate_feeds`. Prior versions use `generate_feed` -#} +{%- macro get_generate_feed() -%} + {{- config.generate_feeds | default(value=config.generate_feed) -}} +{%- endmacro get_generate_feed -%} + +{%- macro get_feed_url() -%} + {{- config.feed_filenames[0] | default(value=(config.feed_filename)) -}} +{%- endmacro get_feed_url -%} + +{#- Check footer feed icon conditions -#} +{%- macro should_show_footer_feed_icon() -%} + {%- set generate_feed = feed_utils::get_generate_feed() == "true" -%} + {%- set feed_url = feed_utils::get_feed_url() -%} + {{- generate_feed and config.extra.feed_icon and feed_url -}} +{%- endmacro should_show_footer_feed_icon -%} diff --git a/templates/macros/format_date.html b/templates/macros/format_date.html new file mode 100644 index 0000000..f747fd1 --- /dev/null +++ b/templates/macros/format_date.html @@ -0,0 +1,59 @@ +{%- macro format_date(date, short, language_strings="") -%} + +{#- Set locale -#} +{%- set date_locale = macros_translate::translate(key="date_locale", default="en_GB", language_strings=language_strings) -%} + +{#- Check for language-specific date formats -#} +{%- set language_format = "" -%} +{%- if config.extra.date_formats -%} + {%- for format_config in config.extra.date_formats -%} + {%- if format_config.lang == lang -%} + {%- if short and format_config.short -%} + {%- set_global language_format = format_config.short -%} + {%- elif not short and format_config.long -%} + {%- set_global language_format = format_config.long -%} + {%- endif -%} + {%- endif -%} + {%- endfor -%} +{%- endif -%} + +{%- if language_format -%} + {{ date | date(format=language_format, locale=date_locale) }} +{%- elif config.extra.short_date_format and short -%} + {{ date | date(format=config.extra.short_date_format, locale=date_locale) }} +{%- elif config.extra.long_date_format and not short -%} + {{ date | date(format=config.extra.long_date_format, locale=date_locale) }} +{%- elif not config.extra.short_date_format and date_locale == "en_GB" -%} + {%- set day = date | date(format='%-d') | int -%} + + {%- if day in [11, 12, 13] -%} + {%- set suffix = "th" -%} + {%- else -%} + {%- set last_digit = day % 10 -%} + {%- if last_digit == 1 -%} + {%- set suffix = "st" -%} + {%- elif last_digit == 2 -%} + {%- set suffix = "nd" -%} + {%- elif last_digit == 3 -%} + {%- set suffix = "rd" -%} + {%- else -%} + {%- set suffix = "th" -%} + {%- endif -%} + {%- endif -%} + + {#- Return the date. -#} + {{ date | date(format="%-d") }}{{ suffix }} + {%- if short == true -%} + {{ date | date(format=" %b %Y") }} + {%- else -%} + {{ date | date(format=" %B %Y") }} + {%- endif -%} +{%- else -%} + {%- if short -%} + {{ date | date(format="%-d %b %Y", locale=date_locale) }} + {%- else -%} + {{ date | date(format="%d %b %Y", locale=date_locale) }} + {%- endif -%} +{%- endif -%} + +{%- endmacro -%} diff --git a/templates/macros/list_posts.html b/templates/macros/list_posts.html new file mode 100644 index 0000000..2076194 --- /dev/null +++ b/templates/macros/list_posts.html @@ -0,0 +1,163 @@ +{# `metadata` can be "dates", "indexes" or both (e.g. "dates indexes" or "indexes dates"). #} +{# If both, the order doesn't matter and indexes will always be displayed before dates. #} +{# It would also work with arrays (e.g. ["dates"] or ["indexes"] or even ["indexes","dates"]). #} +{# Nevertheless, arrays cannot be used as a default value for a macro parameter in Tera (see https://github.com/Keats/tera/issues/710). #} +{# `paginator` is only used to compute indexes metadata and can be let empty otherwise. #} +{% macro list_posts(posts, all_posts="", max=999999, metadata="dates", language_strings="", section_path="", paginator="", pinned_first=false, current_page=1) %} + +{%- set separator = config.extra.separator | default(value="•") -%} + +{# Separate pinned and regular posts from all_posts if available, otherwise from posts #} +{% if pinned_first %} + {% set source_posts = all_posts | default(value=posts) %} + {% set pinned_posts = [] %} + {% set regular_posts = [] %} + {% for post in source_posts %} + {% if post.extra.pinned %} + {% set_global pinned_posts = pinned_posts | concat(with=post) %} + {% else %} + {% set_global regular_posts = regular_posts | concat(with=post) %} + {% endif %} + {% endfor %} + + {# On page 1 or when no pagination, show pinned then regular #} + {% if current_page == 1 %} + {% if paginator %} + {# With pagination: pinned + current page's posts #} + {% set display_posts = pinned_posts | concat(with=posts) %} + {% else %} + {# Without pagination: pinned + regular (no duplicates) #} + {% set display_posts = pinned_posts | concat(with=regular_posts) %} + {% endif %} + {% else %} + {% set display_posts = posts %} + {% endif %} +{% else %} + {% set display_posts = posts %} +{% endif %} + +
+ {# Display posts #} + {% for post in display_posts %} + {% if loop.index <= max %} + {% if loop.index == max or loop.last %} + {% set bottom_divider = false %} + {% else %} + {% set bottom_divider = true %} + {% endif %} + +
+
    + {%- if "indexes" in metadata -%} + {%- set post_index = loop.index -%} + {%- set number_of_posts = posts | length -%} + {# in case we have a pager, the index has been computed for the current page. #} + {%- if paginator -%} + {%- set number_of_posts = paginator.total_pages -%} + {%- set number_of_other_pages = paginator.current_index - 1 -%} + {%- set posts_per_page = paginator.paginate_by -%} + {%- set posts_in_other_pages = number_of_other_pages * posts_per_page -%} + {%- set post_index = posts_in_other_pages + post_index -%} + {%- endif -%} + {%- if macros_settings::evaluate_setting_priority(setting="post_listing_index_reversed", page=section, default_global_value=false) == "true" -%} + {# index starts at 1 instead of 0 #} + {%- set post_index = number_of_posts + 1 - post_index -%} + {%- endif -%} +
  • {{ post_index }}
  • + {%- endif -%} + + {%- if "dates" in metadata -%} + {%- set allowed_post_listing_dates = ["date", "updated", "both"] -%} + {#- Calling the hierarchy macro here causes an error due to the "get parents" part of the macro. -#} + {#- This seems cleaner. -#} + {%- set post_listing_date = section.extra.post_listing_date | default(value=config.extra.post_listing_date) | default(value="date") -%} + {%- if post_listing_date not in allowed_post_listing_dates -%} + {{ throw(message="ERROR: Invalid value for config.extra.post_listing_date. Allowed values are 'date', 'updated', or 'both'.") }} + {%- endif -%} + + {%- set show_date = post.date and post_listing_date == "date" or post.date and post_listing_date == "both" or post.date and post_listing_date == "updated" and not post.updated -%} + {%- set show_updated = post.updated and post_listing_date == "updated" or post.updated and post_listing_date == "both" -%} + + {%- if show_date or show_updated -%} + {%- if show_date -%} +
  • {{- macros_format_date::format_date(date=post.date, short=false, language_strings=language_strings) -}}
  • + {%- endif -%} + {%- if show_date and show_updated -%} +
  • {{- separator -}}
  • + {%- endif -%} + {%- if show_updated -%} + {%- set last_updated_str = macros_translate::translate(key="last_updated_on", default="Updated on $DATE", language_strings=language_strings) -%} + {%- set formatted_date = macros_format_date::format_date(date=post.updated, short=true, language_strings=language_strings) -%} + {%- set updated_str = last_updated_str | replace(from="$DATE", to=formatted_date) -%} +
  • {{ updated_str }}
  • + {%- endif -%} + {%- endif -%} + {%- endif -%} + + {% if post.extra.local_image or post.extra.remote_image %} +
  • + + {% if post.extra.local_image %} + {% set meta = get_image_metadata(path=post.extra.local_image, allow_missing=true) %} + {{ post.extra.local_image }} + {% elif post.extra.remote_image %} + {{ post.extra.remote_image }} + {% endif %} + +
  • + {% endif %} + + {% if post.draft %} +
  • {{ macros_translate::translate(key="draft", default="DRAFT", language_strings=language_strings) }}
  • + {% endif %} +
+
+ +
+
+ {% if pinned_first and post.extra.pinned %} +
+ + {{ macros_translate::translate(key="pinned", default="Pinned", language_strings=language_strings) }} +
+ {% endif %} + +

+ {{ post.title }} +

+ + {% if post.taxonomies.tags %} +
+ {% for tag in post.taxonomies.tags %} + {{ tag }} + {% endfor %} +
+ {% endif %} + +
+ {% if post.description %} +

{{ post.description | markdown(inline=true) | safe }}

+ {% elif post.summary %} +

{{ post.summary | markdown(inline=true) | trim_end_matches(pat=".") | safe }}…

+ {% endif %} +
+ {{ macros_translate::translate(key="read_more", default="Read more", language_strings=language_strings) }}  +
+
+ {% endif %} + {% if not loop.last %} + {% if loop.index == max %} + + {% endif %} + {% endif %} + {% endfor %} +
+{% endmacro %} diff --git a/templates/macros/page_header.html b/templates/macros/page_header.html new file mode 100644 index 0000000..daa8d02 --- /dev/null +++ b/templates/macros/page_header.html @@ -0,0 +1,18 @@ +{% macro page_header(title, show_feed_icon=false) %} + +{% set rel_attributes = macros_rel_attributes::rel_attributes() | trim %} + + +{%- set blank_target = macros_target_attribute::target_attribute(new_tab=config.markdown.external_links_target_blank) -%} + +

+ {{ title -}} + {% if show_feed_icon %} + {%- set feed_url = feed_utils::get_feed_url() -%} + + {% endif %} +

+ +{% endmacro page_header %} diff --git a/templates/macros/rel_attributes.html b/templates/macros/rel_attributes.html new file mode 100644 index 0000000..71672c7 --- /dev/null +++ b/templates/macros/rel_attributes.html @@ -0,0 +1,19 @@ +{% macro rel_attributes() %} + +{%- set rel_attributes = [] -%} +{%- if config.markdown.external_links_target_blank -%} + {%- set rel_attributes = rel_attributes | concat(with="noopener") -%} +{%- endif -%} +{# https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel#nofollow #} +{# This is ignored, as it doesn't make sense to set `nofollow` on projects or social links. #} +{# {%- if config.markdown.external_links_no_follow -%} + {%- set rel_attributes = rel_attributes | concat(with="nofollow") -%} +{%- endif -%} #} +{%- if config.markdown.external_links_no_referrer -%} + {%- set rel_attributes = rel_attributes | concat(with="noreferrer") -%} +{%- endif -%} + +{# Return the array of rel attributes joined by a space #} +{{- rel_attributes | join(sep=" ") -}} + +{% endmacro rel_attributes %} diff --git a/templates/macros/series_page.html b/templates/macros/series_page.html new file mode 100644 index 0000000..d5704a1 --- /dev/null +++ b/templates/macros/series_page.html @@ -0,0 +1,162 @@ +{# +Those macros deal with introduction and navigation for series pages. +Using macros have been prefered over partial inclusion or inline code to make sure series_ordered_pages is forced to be used. +A section's pages natural order is invalid in case of reversed pagination which would lead to invalid series' pages order. +To prevent this, pages are ordered correctly in a separate variable which must be used instead of the series section pages. +#} + +{# +Computes the introduction of a series's page. + +Parameters: + - `page`: The page object being part of the series. + - `series_section`: The series' section the page belongs to. + - `series_ordered_pages`: The series' pages properly ordered (see at the top of this file for an explanation). + - `language_strings`: A dictionary containing the translation strings. +#} +{% macro process_series_template(template_type, page, series_section, series_ordered_pages, language_strings) %} + {%- if "series" in series_section.extra and series_section.extra.series -%} + {# Prepare variables for substitution #} + {%- set series_title = series_section.title -%} + {%- set series_permalink = series_section.permalink -%} + {%- set series_html_link = '' ~ series_section.title ~ '' -%} + {# Build series pages list #} + {%- set series_pages_list = [] -%} + {%- for series_page in series_ordered_pages -%} + {%- if series_page.relative_path == page.relative_path -%} + {%- set series_pages_list_item = '
  • ' ~ series_page.title ~ '
  • ' -%} + {%- else -%} + {%- set series_pages_list_item = '
  • ' ~ series_page.title ~ '
  • ' -%} + {%- endif -%} + {%- set_global series_pages_list = series_pages_list | concat(with=series_pages_list_item) -%} + {%- endfor -%} + {%- set series_pages_list = series_pages_list | join(sep="") -%} + {%- if macros_settings::evaluate_setting_priority(setting="post_listing_index_reversed", page=series_section, default_global_value=false) == "true" -%} + {%- set series_pages_ordered_list = '
      ' ~ series_pages_list ~ '
    ' -%} + {%- else -%} + {%- set series_pages_ordered_list = '
      ' ~ series_pages_list ~ '
    ' -%} + {%- endif -%} + {%- set series_pages_unordered_list = '
      ' ~ series_pages_list ~ '
    ' -%} + + {# Get page position and navigation info #} + {%- set series_pages_number = 0 -%} + {%- set series_page_index = 0 -%} + {%- set first_page = series_ordered_pages | first -%} + {%- set is_found = false -%} + + {%- for series_page in series_ordered_pages -%} + {%- set_global series_pages_number = series_pages_number + 1 -%} + {%- if series_page.relative_path == page.relative_path -%} + {%- set_global series_page_index = series_pages_number -%} + {%- set_global is_found = true -%} + {%- else -%} + {%- if not is_found -%} + {%- set_global prev_page = series_page -%} + {%- elif not next_page is defined -%} + {%- set_global next_page = series_page -%} + {%- endif -%} + {%- endif -%} + {%- endfor -%} + + {# Determine template to use based on available navigation #} + {%- set position = "middle" -%} + {%- if prev_page is defined and not next_page is defined -%} + {%- set_global position = "prev_only" -%} + {%- elif next_page is defined and not prev_page is defined -%} + {%- set_global position = "next_only" -%} + {%- endif -%} + + {# Get template from config #} + {%- set templates_key = "series_" ~ template_type ~ "_templates" -%} + {%- set template = "" -%} + {%- if series_section.extra[templates_key] is defined -%} + {%- if series_section.extra[templates_key][position] is defined -%} + {%- set_global template = series_section.extra[templates_key][position] -%} + {%- elif series_section.extra[templates_key].default is defined -%} + {%- set_global template = series_section.extra[templates_key].default -%} + {%- endif -%} + {%- endif -%} + + {# Prepare navigation variables #} + {%- if prev_page is defined -%} + {%- set prev_title = prev_page.title -%} + {%- set prev_permalink = prev_page.permalink -%} + {%- set prev_html_link = '' ~ prev_page.title ~ '' -%} + {%- set prev_description = prev_page.description | default(value="") -%} + {%- endif -%} + {%- if next_page is defined -%} + {%- set next_title = next_page.title -%} + {%- set next_permalink = next_page.permalink -%} + {%- set next_html_link = '' ~ next_page.title ~ '' -%} + {%- set next_description = next_page.description | default(value="") -%} + {%- endif -%} + + {# Replace standard variables #} + {%- set template = template + | replace(from="$SERIES_TITLE", to=series_title) + | replace(from="$SERIES_PERMALINK", to=series_permalink) + | replace(from="$SERIES_HTML_LINK", to=series_html_link) + | replace(from="$FIRST_TITLE", to=first_page.title) + | replace(from="$FIRST_HTML_LINK", to='' ~ first_page.title ~ '') + | replace(from="$SERIES_PAGES_NUMBER", to=series_pages_number | as_str) + | replace(from="$SERIES_PAGE_INDEX", to=series_page_index | as_str) + | replace(from="$SERIES_PAGES_OLIST", to=series_pages_ordered_list) + | replace(from="$SERIES_PAGES_ULIST", to=series_pages_unordered_list) + -%} + + {# Replace navigation variables if they exist #} + {%- if prev_page is defined -%} + {%- set template = template + | replace(from="$PREV_TITLE", to=prev_title) + | replace(from="$PREV_PERMALINK", to=prev_permalink) + | replace(from="$PREV_HTML_LINK", to=prev_html_link) + | replace(from="$PREV_DESCRIPTION", to=prev_description) + -%} + {%- endif -%} + + {%- if next_page is defined -%} + {%- set template = template + | replace(from="$NEXT_TITLE", to=next_title) + | replace(from="$NEXT_PERMALINK", to=next_permalink) + | replace(from="$NEXT_HTML_LINK", to=next_html_link) + | replace(from="$NEXT_DESCRIPTION", to=next_description) + -%} + {%- endif -%} + + {# Custom placeholders #} + {%- if series_section.extra.series_template_placeholders is defined -%} + {%- set missing_vars = [] -%} + {%- for placeholder in series_section.extra.series_template_placeholders -%} + {%- if placeholder in template -%} + {%- set var_name = placeholder | replace(from="$", to="") | lower -%} + {%- if page.extra.series_template_variables is defined and page.extra.series_template_variables[var_name] is defined -%} + {%- set_global template = template | replace(from=placeholder, to=page.extra.series_template_variables[var_name]) -%} + {%- else -%} + {%- set_global missing_vars = missing_vars | concat(with=var_name) -%} + {%- endif -%} + {%- endif -%} + {%- endfor -%} + {%- if missing_vars | length > 0 -%} + {%- set missing_vars_str = missing_vars | join(sep=", ") -%} + {{ throw(message="ERROR: The following variables are included in this page's series templates (`series_template_placeholders`) but have not been set in the `series_template_variables` of this page: " ~ missing_vars_str) }} + {%- endif -%} + {%- endif -%} + + {# Output the processed template if not empty #} + {%- if template | length > 0 -%} +
    + {{ template | markdown | safe }} +
    + {%- endif -%} + {%- endif -%} +{% endmacro %} + +{# Macro for series introduction #} +{% macro get_introduction(page, series_section, series_ordered_pages, language_strings) %} + {{ macros_series_page::process_series_template(template_type="intro", page=page, series_section=series_section, series_ordered_pages=series_ordered_pages, language_strings=language_strings) }} +{% endmacro %} + +{# Macro for series outro #} +{% macro get_outro(page, series_section, series_ordered_pages, language_strings) %} + {{ macros_series_page::process_series_template(template_type="outro", page=page, series_section=series_section, series_ordered_pages=series_ordered_pages, language_strings=language_strings) }} +{% endmacro %} diff --git a/templates/macros/settings.html b/templates/macros/settings.html new file mode 100644 index 0000000..d237d7a --- /dev/null +++ b/templates/macros/settings.html @@ -0,0 +1,68 @@ +{# +Evaluates the priority of a particular setting across different scopes. + +The priority is as follows: page > section > config. + +Parameters: + - setting: The name of the setting to evaluate. + - page: The page object containing settings. + - default_global_value: The setting's default value. +#} + +{% macro evaluate_setting_priority(setting, page, section="", default_global_value="") %} + +{%- if section -%} + {%- set current_section = section -%} +{%- elif page -%} + {%- set current_section = "" -%} + {#- Retrieve last ancestor to determine current section, if applicable -#} + {%- if page.ancestors | length > 0 -%} + {%- set last_ancestor = page.ancestors | slice(start=-1) -%} + {%- set_global current_section = get_section(path=last_ancestor.0, metadata_only=true) -%} + {%- else -%} + {#- We're likely in a nested page. Try to find the parent page or nearest section. -#} + {%- set components = page.components -%} + {%- for i in range(start=1, end=components | length) -%} + {%- if lang == config.default_language -%} + {%- set potential_path = components | slice(end=components | length - i) | join(sep="/") -%} + {%- set potential_page = potential_path ~ "/index.md" -%} + {%- set potential_section = potential_path ~ "/_index.md" -%} + {%- else -%} + {%- set potential_path = components | slice(start=1, end=components | length - i) | join(sep="/") -%} + {%- set potential_page = potential_path ~ "/index." ~ lang ~ ".md" -%} + {%- set potential_section = potential_path ~ "/_index." ~ lang ~ ".md" -%} + {%- endif -%} + {#- Check for parent page first. -#} + {%- set page_data = load_data(path=potential_page, required=false) -%} + {%- if page_data -%} + {%- set_global current_section = get_page(path=potential_page) -%} + {%- break -%} + {%- endif -%} + {#- No parent page, check for section. -#} + {%- set section_data = load_data(path=potential_section, required=false) -%} + {%- if section_data -%} + {%- set_global current_section = get_section(path=potential_section, metadata_only=true) -%} + {%- break -%} + {%- endif -%} + {%- endfor -%} + {%- endif -%} +{%- endif -%} + +{%- set priority_order = [ + page.extra[setting] | default(value=""), + current_section.extra[setting] | default(value=""), + config.extra[setting] | default(value="") +] -%} + +{%- set output = default_global_value -%} + +{%- for value in priority_order -%} + {%- if value != "" -%} + {%- set_global output = value -%} + {%- break -%} + {%- endif -%} +{%- endfor -%} + +{{- output -}} + +{% endmacro %} diff --git a/templates/macros/table_of_contents.html b/templates/macros/table_of_contents.html new file mode 100644 index 0000000..18a3ab6 --- /dev/null +++ b/templates/macros/table_of_contents.html @@ -0,0 +1,54 @@ +{% macro toc(page, header, language_strings="") %} + +{%- set toc_levels = page.extra.toc_levels | default(value=3) -%} + +{% if page.extra.toc_ignore_pattern %} + {%- set toc_ignore_pattern = page.extra.toc_ignore_pattern -%} +{% endif %} + +
    + {% if header %} +

    {{ macros_translate::translate(key="table_of_contents", default="Table of Contents", language_strings=language_strings) }}

    + {% endif %} + +
      + {% for h1 in page.toc %} + {# Only render headers if there's no ignore pattern, or if the header text doesn't match the pattern. #} + {% if not toc_ignore_pattern or not (h1.title is matching(toc_ignore_pattern)) %} +
    • {{ h1.title }} + {% if h1.children and toc_levels > 1 %} +
        + {% for h2 in h1.children %} + {% if not toc_ignore_pattern or not (h2.title is matching(toc_ignore_pattern)) %} +
      • {{ h2.title }} + {% if h2.children and toc_levels > 2 %} +
          + {% for h3 in h2.children %} + {% if not toc_ignore_pattern or not (h3.title is matching(toc_ignore_pattern)) %} +
        • {{ h3.title }} + {% if h3.children and toc_levels > 3 %} +
            + {% for h4 in h3.children %} + {% if not toc_ignore_pattern or not (h4.title is matching(toc_ignore_pattern)) %} +
          • {{ h4.title }}
          • + {% endif %} + {% endfor %} +
          + {% endif %} +
        • + {% endif %} + {% endfor %} +
        + {% endif %} +
      • + {% endif %} + {% endfor %} +
      + {% endif %} +
    • + {% endif %} + {% endfor %} +
    +
    + +{% endmacro toc %} diff --git a/templates/macros/target_attribute.html b/templates/macros/target_attribute.html new file mode 100644 index 0000000..2da5b9d --- /dev/null +++ b/templates/macros/target_attribute.html @@ -0,0 +1,11 @@ +{% macro target_attribute(new_tab) %} + +{%- set blank_target = "" -%} + +{%- if new_tab -%} + {%- set blank_target = "target=_blank" -%} +{%- endif -%} + +{{ blank_target }} + +{% endmacro target_attribute %} diff --git a/templates/macros/translate.html b/templates/macros/translate.html new file mode 100644 index 0000000..1b138dd --- /dev/null +++ b/templates/macros/translate.html @@ -0,0 +1,72 @@ +{#- Dynamically selects the appropriate translation key based on the provided `number` and `lang` context. +If a `number` is provided, the macro will attempt to pluralize the translation key based on the language's rules. + +Parameters: +- `key`: The base key for the translation string, matching the i18n files. Example: `results` to get `zero_results`, `one_results`, `many_results`, etc. +- `number`: Optional. The numerical value associated with the key. +- `language_strings`: A dictionary containing the translation strings. +- `default`: A default string to use if no translation is found for the key. +- `replace`: Optional. If `true`, the macro will replace the `$NUMBER` placeholder in the translation string with the provided `number`. + +The macro supports special pluralization rules for: +- Arabic (`ar`): Has unique forms for zero, one, two, few, and many. +- Slavic languages: Pluralization depends on the last digit of the number, with exceptions for numbers ending in 11-14. + +NOTE: If the logic for pluralization is modified, it needs to be replicated on the JavaScript search. +Files: static/js/searchElasticlunr.js and its minified version at static/js/searchElasticlunr.min.js +Function name: getPluralizationKey -#} +{% macro translate(key, number=-1, language_strings="", default="", replace=true) %} + {%- set slavic_plural_languages = ["uk", "be", "bs", "hr", "ru", "sr"] -%} + + {%- set key_prefix = "" -%} + {#- `zero_` and `one_` are common cases. We handle "many" (plural) later, after language-specific pluralization -#} + {%- if number == 0 -%} + {%- set key_prefix = "zero_" -%} + {%- elif number == 1 -%} + {%- set key_prefix = "one_" -%} + {%- endif -%} + + {#- Pluralization -#} + {%- if number != -1 and key_prefix == "" -%} + {#- Arabic -#} + {%- if lang == "ar" -%} + {%- set modulo = number % 100 -%} + {%- if number == 2 -%} + {%- set key_prefix = "two_" -%} + {%- elif modulo >= 3 and modulo <= 10 -%} + {%- set key_prefix = "few_" -%} + {%- else -%} + {%- set key_prefix = "many_" -%} + {%- endif -%} + {#- Slavic languages like Russian or Ukrainian -#} + {%- elif lang in slavic_plural_languages -%} + {%- set modulo10 = number % 10 -%} + {%- set modulo100 = number % 100 -%} + {%- if modulo10 == 1 and modulo100 != 11 -%} + {%- set key_prefix = "one_" -%} + {%- elif modulo10 >= 2 and modulo10 <= 4 -%} + {%- if modulo100 >= 12 and modulo100 <= 14 -%} + {%- set key_prefix = "many_" -%} + {%- else -%} + {%- set key_prefix = "few_" -%} + {%- endif -%} + {%- else -%} + {%- set key_prefix = "many_" -%} + {%- endif -%} + {%- else -%} + {#- Default pluralization -#} + {#- Zero and one are already handled -#} + {%- set key_prefix = "many_" -%} + {%- endif -%} + {%- endif -%} + + {#- Translated string -#} + {%- set final_key = key_prefix ~ key -%} + {%- set translated_text = language_strings[final_key] | default(value=default) | safe -%} + + {#- Replace $NUMBER with the number -#} + {%- if replace -%} + {%- set translated_text = translated_text | replace(from="$NUMBER", to=number | as_str) -%} + {%- endif -%} + {{- translated_text -}} +{% endmacro %} diff --git a/templates/page.html b/templates/page.html new file mode 100644 index 0000000..0dff1a7 --- /dev/null +++ b/templates/page.html @@ -0,0 +1,368 @@ +{% extends "base.html" %} + +{% block main_content %} +{%- set separator = config.extra.separator | default(value="•") -%} + +{%- set rel_attributes = macros_rel_attributes::rel_attributes() | trim -%} + +{%- set blank_target = macros_target_attribute::target_attribute(new_tab=config.markdown.external_links_target_blank) -%} + +{# Debugging #} +{#
    +    Page path: {{ page.path }}
    +    Page components: {{ page.components | join(sep=", ") }}
    +    Page ancestors: {{ page.ancestors | join(sep=", ") }}
    +    Current language: {{ lang }}
    +    Default language: {{ config.default_language }}
    +    Current section: {% if current_section %}{{ current_section.path }}{% else %}None{% endif %}
    +    Page extra: {{ page.extra | json_encode() }}
    +    {% if section -%}
    +        {%- set current_section = section -%}
    +    {%- elif page -%}
    +        {%- set current_section = "" -%}
    +        {%- if page.ancestors | length > 0 -%}
    +            {%- set last_ancestor = page.ancestors | slice(start=-1) -%}
    +            {%- set_global current_section = get_section(path=last_ancestor.0, metadata_only=true) -%}
    +        {%- else -%}
    +            {%- set components = page.components -%}
    +            {%- for i in range(start=1, end=components | length) -%}
    +                {%- if lang == config.default_language -%}
    +                    {%- set potential_path = components | slice(end=components | length - i) | join(sep="/") -%}
    +                    {%- set potential_page = potential_path ~ "/index.md" -%}
    +                    {%- set potential_section = potential_path ~ "/_index.md" -%}
    +                {%- else -%}
    +                    {%- set potential_path = components | slice(start=1, end=components | length - i) | join(sep="/") -%}
    +                    {%- set potential_page = potential_path ~ "/index." ~ lang ~ ".md" -%}
    +                    {%- set potential_section = potential_path ~ "/_index." ~ lang ~ ".md" -%}
    +                {%- endif -%}
    +                Checking parent page: {{ potential_page }}
    +                {%- set page_data = load_data(path=potential_page, required=false) -%}
    +                {%- if page_data -%}
    +                    {%- set_global current_section = get_page(path=potential_page) %}
    +    Parent page found: {{ current_section.path }}
    +                    {%- break -%}
    +                {%- endif -%}
    +                Checking section: {{ potential_section }}
    +                {%- set section_data = load_data(path=potential_section, required=false) -%}
    +                {%- if section_data -%}
    +                    {%- set_global current_section = get_section(path=potential_section, metadata_only=true) -%}
    +                    Section found: {{ current_section.path }}
    +                    {%- break -%}
    +                {%- endif -%}
    +            {%- endfor -%}
    +        {%- endif -%}
    +    {%- endif %}
    +Found nearest parent/section: {% if current_section %}{{ current_section.path }}{% else %}None{% endif %}
    +Current section extra: {% if current_section %}{{ current_section.extra | json_encode() }}{% else %}None{% endif %}
    +
    + + {% set settings_to_test = [ + "iine", + "iine_icon", + "enable_cards_tag_filtering", + "footnote_backlinks", + "add_src_to_code_block", + "force_codeblock_ltr", + "copy_button", + "katex", + "quick_navigation_buttons", + "show_reading_time", + "show_date", + "show_author", + "show_remote_changes", + "toc", + "show_previous_next_article_links", + "invert_previous_next_article_links", + "previous_next_article_links_full_width", + "enable_csp", + ] %} + + + + + + + + + + + + + {% for setting in settings_to_test %} + + + + + + + + {% endfor %} + +
    settingpagesectionconfigmacro output
    {{ setting }}{{ page.extra[setting] | default(value="⬛") }}{{ current_section.extra[setting] | default(value="⬛") }}{{ config.extra[setting] | default(value="⬛") }}{{ macros_settings::evaluate_setting_priority(setting=setting, page=page) }}
    + #} + +{# {{ __tera_context }} #} +{# End debugging #} + +
    +
    +

    + {{ page.title | markdown(inline=true) | safe }} +

    + + +
      + {#- Draft indicator -#} + {% if page.draft %} +
    • {{ macros_translate::translate(key="draft", default="DRAFT", language_strings=language_strings) }}
    • + {% endif %} + + {#- Author(s) -#} + {%- if page.authors or config.author and macros_settings::evaluate_setting_priority(setting="show_author", page=page, default_global_value=false) == "true" -%} + {%- if page.authors -%} + {%- set author_list = page.authors -%} + {%- else -%} + {%- set author_list = [config.author] -%} + {%- endif -%} + + {%- if author_list | length == 1 -%} + {%- set author_string = '' ~ author_list.0 ~ '' -%} + {%- else -%} + {%- set last_author = author_list | last -%} + {%- set other_authors = author_list | slice(end=-1) -%} + {%- set author_separator = macros_translate::translate(key="author_separator", default=", ", language_strings=language_strings) -%} + {%- set author_separator = '' ~ author_separator ~ '' -%} + {%- set conjunction = macros_translate::translate(key="author_conjunction", default=" and ", language_strings=language_strings) -%} + {%- set conjunction = '' ~ conjunction ~ '' -%} + {%- set author_string = other_authors | join(sep=author_separator) -%} + {%- set author_string = author_string ~ conjunction ~ last_author -%} + {%- set author_string = '' ~ author_string ~ '' -%} + {%- endif -%} + + {%- set by_author = macros_translate::translate(key="by_author", default="By $AUTHOR", language_strings=language_strings) -%} +
    • {{ by_author | replace(from="$AUTHOR", to=author_string) | safe }}
    • + {%- set previous_visible = true -%} + {%- endif -%} + + {%- if config.extra.hcard and config.extra.hcard.enable and ( not author_list or author_list is containing(config.author)) -%} + {% include "partials/hcard_small.html" %} + {%- endif -%} + + {%- set separator_with_class = ""-%} + + {#- Date -#} + {%- if page.date and macros_settings::evaluate_setting_priority(setting="show_date", page=page, default_global_value=true) == "true" -%} +
    • + {#- Variable to keep track of whether we've shown a section, to avoid separators as the first element -#} + {%- set previous_visible = true -%} + {%- endif -%} + + {#- Reading time -#} + {%- if macros_settings::evaluate_setting_priority(setting="show_reading_time", page=page, default_global_value=true) == "true" -%} +
    • {%- if previous_visible -%}{{ separator_with_class | safe }}{%- endif -%}{{ macros_translate::translate(key="min_read", number=page.reading_time, default="$NUMBER min read", language_strings=language_strings) }}
    • + {%- set previous_visible = true -%} + {%- endif -%} + + {#- Tags -#} + {%- if page.taxonomies and page.taxonomies.tags -%} +
    • {%- if previous_visible -%}{{ separator_with_class | safe }}{%- endif -%}{{- macros_translate::translate(key="tags", default="tags", language_strings=language_strings) | capitalize -}}: 
    • + {%- for tag in page.taxonomies.tags -%} +
    • {{ tag }} + {%- if not loop.last -%} + ,  + {%- endif -%} +
    • + {%- endfor -%} + {%- set previous_visible = true -%} + {%- endif -%} + + {#- Last updated on -#} + {% if page.updated %} + {%- set last_updated_str = macros_translate::translate(key="last_updated_on", default="Updated on $DATE", language_strings=language_strings) -%} + {%- set formatted_date = macros_format_date::format_date(date=page.updated, short=true, language_strings=language_strings) -%} + {%- set updated_str = last_updated_str | replace(from="$DATE", to=formatted_date) -%} + {%- set previous_visible = true -%} +
    + + {#- A page is part of a series if one of the sections above (whether it is transparent or not) has the `extra.series` parameter set to true. -#} + {#- As a series might be a transparent section in order to mix up its articles with those of the section just above or the root, -#} + {#- there is no other way but to compute the potential path of each ancestor section related to the page and look for the first one being a series. -#} + {#- Using the `ancestors` field of a section is not possible because transparent sections are not present in this field. -#} + {%- set series_path_components = [] -%} + {%- set section_paths = [] -%} + {%- for path in page.relative_path | split(pat="/") | slice(end=-1) -%} + {%- set_global series_path_components = series_path_components | concat(with=path) -%} + {%- set section_path = series_path_components | concat(with="_index.md") | join(sep="/") -%} + {%- set_global section_paths = section_paths | concat(with=section_path) -%} + {%- endfor -%} + {#- The series the page is part of is the closest section flagged as a series, if any -#} + {%- for section_path in section_paths | reverse -%} + {%- set section_file_exists = load_data(path=section_path, required=false) -%} + {%- if section_file_exists -%} + {%- set loaded_section = get_section(path=section_path,lang=lang) -%} + {%- if "series" in loaded_section.extra and loaded_section.extra.series -%} + {%- set_global series_section = loaded_section -%} + {%- set_global series_ordered_pages = loaded_section.pages -%} + {%- if loaded_section.paginated | default(value=0) > 0 and loaded_section.paginate_reversed -%} + {%- set_global series_ordered_pages = loaded_section.pages | reverse -%} + {%- endif -%} + {%- break -%} + {%- endif -%} + {%- endif -%} + {%- endfor -%} + + {% if page.extra.tldr %} +
    +
    +
    + + TL;DR + +

    {{ page.extra.tldr | markdown | safe }}

    +
    +
    + {% endif %} + + {#- Optional table of contents below the header -#} + {% if page.toc and macros_settings::evaluate_setting_priority(setting="toc", page=page, default_global_value=false) == "true" %} + {{ macros_toc::toc(page=page, header=true, language_strings=language_strings) }} + {% endif %} + + {#- Optional Summary paragraph for readers -#} + {% if page.description %} + + {%- endif -%} + + +
    + {#- Replace series_intro placeholder -#} + {%- set content_with_intro = page.content -%} + {%- if "" in page.content -%} + {%- set series_intro_html = macros_series_page::get_introduction(page=page, series_section=series_section, series_ordered_pages=series_ordered_pages, language_strings=language_strings) -%} + {%- set content_with_intro = content_with_intro | replace(from="", to=series_intro_html) -%} + {%- elif series_section -%} + {%- set series_intro_html = macros_series_page::get_introduction(page=page, series_section=series_section, series_ordered_pages=series_ordered_pages, language_strings=language_strings) -%} + {%- set content_with_intro = series_intro_html ~ content_with_intro -%} + {%- endif -%} + + {#- Handle series_outro placeholder -#} + {%- set processed_content = content_with_intro -%} + {%- if "" in content_with_intro -%} + {%- set series_outro_html = macros_series_page::get_outro(page=page, series_section=series_section, series_ordered_pages=series_ordered_pages, language_strings=language_strings) -%} + {%- set processed_content = processed_content | replace(from="", to=series_outro_html) -%} + {%- elif series_section -%} + {%- set series_outro_html = macros_series_page::get_outro(page=page, series_section=series_section, series_ordered_pages=series_ordered_pages, language_strings=language_strings) -%} + {#- We want the outro at the end of the article, but before footnote definitions -#} + {%- set footnotes_marker = '
      ' -%} + {%- if footnotes_marker in content_with_intro -%} + {%- set content_sections = processed_content | split(pat=footnotes_marker) -%} + {%- set main_content = content_sections | first -%} + {%- set footnotes_content = content_sections | slice(start=1) | join(sep=footnotes_marker) -%} + {%- set processed_content = main_content ~ series_outro_html ~ footnotes_marker ~ footnotes_content -%} + {%- else -%} + {%- set processed_content = processed_content ~ series_outro_html -%} + {%- endif -%} + {%- endif -%} + + {#- Replace TOC and render final content -#} + {#- The replace pattern is used to enable arbitrary locations for the Table of Contents -#} + {#- This is Philipp Oppermann's workaround: https://github.com/getzola/zola/issues/584#issuecomment-474329637 -#} + {{ processed_content | replace(from="", to=macros_toc::toc(page=page, header=false, language_strings=language_strings)) | safe }} +
    + + {#- iine button -#} + {%- if macros_settings::evaluate_setting_priority(setting="iine", page=page, default_global_value=false) == "true" -%} + {% include "partials/iine_button.html" %} + {%- endif -%} + + {% if macros_settings::evaluate_setting_priority(setting="show_previous_next_article_links", page=page, default_global_value=true) == "true" %} + {%- if page.lower or page.higher -%} + {% set next_label = macros_translate::translate(key="next", default="Next", language_strings=language_strings) %} + {% set prev_label = macros_translate::translate(key="prev", default="Prev", language_strings=language_strings) %} + {% if macros_settings::evaluate_setting_priority(setting="invert_previous_next_article_links", page=page, default_global_value=true) == "true" %} + {% if page.higher %} + {% set left_link = page.higher.permalink %} + {% set left_label = prev_label %} + {% set left_title = page.higher.title %} + {% endif %} + {% if page.lower %} + {% set right_link = page.lower.permalink %} + {% set right_label = next_label %} + {% set right_title = page.lower.title %} + {% endif %} + {% else %} + {% if page.lower %} + {% set left_link = page.lower.permalink %} + {% set left_label = next_label %} + {% set left_title = page.lower.title %} + {% endif %} + {% if page.higher %} + {% set right_link = page.higher.permalink %} + {% set right_label = prev_label %} + {% set right_title = page.higher.title %} + {% endif %} + {% endif %} + {% if macros_settings::evaluate_setting_priority(setting="previous_next_article_links_full_width", page=page, default_global_value=true) == "true" %} + {%- set full_width_class = "full-width" -%} + {% endif %} + + {%- endif -%} + {%- endif -%} + + {#- Comments -#} + {#- Check if comments are enabled, checking that they are not disabled on the specific page -#} + {% set systems = ["giscus", "utterances", "hyvortalk", "isso"] %} + {% set enabled_systems = 0 %} + {% set comment_system = "" %} + + {% for system in systems %} + {% set global_enabled = config.extra[system].enabled_for_all_posts | default(value=false) %} + {% set page_enabled = page.extra[system] | default(value=global_enabled) %} + {% set is_enabled = global_enabled and page_enabled != false or page_enabled == true %} + + {% if is_enabled %} + {% set_global comment_system = system %} + {% set_global enabled_systems = enabled_systems + 1 %} + {% endif %} + {% endfor %} + {#- Ensure only one comment system is enabled -#} + {% if enabled_systems > 1 %} + {{ throw(message="ERROR: Multiple comment systems have been enabled for the same page. Check your config.toml and individual page settings to ensure only one comment system is activated at a time.") }} + {% endif %} + {% if comment_system %} + {% include "partials/comments.html" %} + {% endif %} + + {#- Webmentions -#} + {%- set global_webmentions_enabled = config.extra.webmentions.enable | default(value=false) -%} + {%- set page_webmentions_enabled = page.extra.webmentions | default(value=global_webmentions_enabled) -%} + {%- set webmentions_enabled = global_webmentions_enabled and page_webmentions_enabled != false or page_webmentions_enabled == true -%} + {%- if webmentions_enabled -%} + {%- include "partials/webmentions.html" -%} + {%- endif -%} + +
    +
    + +{%- include "partials/extra_features.html" -%} + +{% endblock main_content %} diff --git a/templates/partials/analytics.html b/templates/partials/analytics.html new file mode 100644 index 0000000..6a5d30e --- /dev/null +++ b/templates/partials/analytics.html @@ -0,0 +1,38 @@ +{% set analytics_service = config.extra.analytics.service %} +{% set analytics_id = config.extra.analytics.id | default(value="") %} +{% set self_hosted_url = config.extra.analytics.self_hosted_url | default(value="") %} + +{% if analytics_service == "goatcounter" %} + {# Prevent non-demo sites from using the demo analytics account #} + {% if self_hosted_url == "https://tabi-stats.osc.garden" and config.base_url == "https://welpo.github.io/tabi" or self_hosted_url != "https://tabi-stats.osc.garden" %} + + {% endif %} + +{% elif analytics_service == "umami" %} + + + {% elif analytics_service == "plausible" %} + + +{% endif %} diff --git a/templates/partials/cards_pages.html b/templates/partials/cards_pages.html new file mode 100644 index 0000000..89bdabc --- /dev/null +++ b/templates/partials/cards_pages.html @@ -0,0 +1,46 @@ +{%- set rel_attributes = macros_rel_attributes::rel_attributes() | trim -%} +{%- set max_projects = max_projects | default(value=999999) -%} +
    + {%- for page in show_pages %} + {# Used only in main page #} + {% if loop.index > max_projects %} + {% break %} + {% endif %} + {# Determine which URL to use, default is page.permalink #} + {%- set blank_target = macros_target_attribute::target_attribute(new_tab=config.markdown.external_links_target_blank and page.extra.link_to) -%} + + {% set target_url = page.extra.link_to | default(value=page.permalink) %} + + + {% if page.extra.local_image %} + {% set meta = get_image_metadata(path=page.extra.local_image, allow_missing=true) %} + {{ page.extra.local_image }} + {% elif page.extra.remote_image %} + {{ page.extra.remote_image }} + {% else %} +
    + {% endif %} + +
    +

    {{ page.title | markdown(inline=true) | safe }}

    +
    + {% if page.description %} + {{ page.description | markdown(inline=true) | safe }} + {% endif %} +
    +
    +
    + {% endfor -%} +
    diff --git a/templates/partials/comments.html b/templates/partials/comments.html new file mode 100644 index 0000000..1129055 --- /dev/null +++ b/templates/partials/comments.html @@ -0,0 +1,95 @@ +{% set automatic_loading = config.extra[comment_system].automatic_loading %} + +
    + +{% elif comment_system == "utterances" %} + data-repo="{{ config.extra.utterances.repo }}" + {% if config.extra.utterances.issue_term == "slug" %} + data-issue-term="{{ page.slug }}" + {% else %} + data-issue-term="{{ config.extra.utterances.issue_term }}" + {% endif %} + data-label="{{ config.extra.utterances.label }}" + data-light-theme="{{ config.extra.utterances.light_theme }}" + data-dark-theme="{{ config.extra.utterances.dark_theme }}" + data-lazy-loading="{{ config.extra.utterances.lazy_loading }}" + > + +{% elif comment_system == "hyvortalk" %} + data-website-id="{{ config.extra.hyvortalk.website_id }}" + {% if config.extra.hyvortalk.page_id_is_slug %} + data-page-id="{{ page.slug }}" + {% else %} + data-page-id="{{ current_url }}" + {% endif %} + {% if config.extra.hyvortalk.lang %} + data-page-language="{{ config.extra.hyvortalk.lang }}" + {% else %} + data-page-language="{{ lang }}" + {% endif %} + data-page-author="{{ config.extra.hyvortalk.page_author }}" + {% if config.extra.hyvortalk.lazy_loading %} + data-loading="lazy" + {% else %} + data-loading="default" + {% endif %} + > + +{% elif comment_system == "isso" %} + data-endpoint-url="{{ config.extra.isso.endpoint_url }}" + {% if config.extra.isso.page_id_is_slug %} + {%- set default_lang_url = current_path | replace(from='/' ~ lang ~ '/', to = '/') -%} + data-isso-id="{{ default_lang_url }}" + data-title="{{ default_lang_url }}" + {% endif %} + {% if config.extra.isso.lang %} + data-page-language="{{ config.extra.isso.lang }}" + {% else %} + data-page-language="{{ lang }}" + {% endif %} + data-max-comments-top="{{ config.extra.isso.max_comments_top }}" + data-max-comments-nested="{{ config.extra.isso.max_comments_nested }}" + data-avatar="{{ config.extra.isso.avatar }}" + data-voting="{{ config.extra.isso.voting }}" + data-page-author-hashes="{{ config.extra.isso.page_author_hashes }}" + data-lazy-loading="{{ config.extra.isso.lazy_loading }}" + > +{% endif %} + +{% if automatic_loading %} + +{% else %} + + +{% endif %} + + +
    diff --git a/templates/partials/content_security_policy.html b/templates/partials/content_security_policy.html new file mode 100644 index 0000000..e8fa062 --- /dev/null +++ b/templates/partials/content_security_policy.html @@ -0,0 +1,119 @@ + diff --git a/templates/partials/copyright.html b/templates/partials/copyright.html new file mode 100644 index 0000000..b9cfc01 --- /dev/null +++ b/templates/partials/copyright.html @@ -0,0 +1,39 @@ +{%- if config.extra.copyright -%} + {% set copyright = config.extra.copyright %} + {# Try to look for a language-specific copyright notice in the new config setup #} + {%- if config.extra.copyright_translations -%} + {%- if lang in config.extra.copyright_translations -%} + {% set copyright = config.extra.copyright_translations[lang] %} + {%- endif -%} + {%- elif config.extra.translate_copyright -%} + {# Old way to translate the copyright through toml files #} + {{ throw(message="ERROR: The 'translate_copyright' feature has been deprecated. Please set 'copyright_translations' in config.toml. See the documentation: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#copyright") }} + {%- endif -%} + + {# Check for missing variables in the notice #} + {% set copyright_placeholders = ["$AUTHOR", "$TITLE"] %} + {% set missing_vars = [] %} + {% for placeholder in copyright_placeholders %} + {% if placeholder in copyright %} + {# Attempt to retrieve the corresponding variable by trimming the $ sign and converting to lowercase #} + {% set var_name = placeholder | replace(from="$", to="") | lower %} + {% if not config[var_name] %} + {# Append the variable name to the list of missing variables #} + {% set_global missing_vars = missing_vars | concat(with=var_name) %} + {% endif %} + {% endif %} + {% endfor %} + + {% if missing_vars | length > 0 %} + {% set missing_vars_str = missing_vars | join(sep=", ") %} + {{ throw(message="ERROR: The following variables are included in `copyright` but have not been set in the config.toml: " ~ missing_vars_str) }} + {% endif %} + + {# At this point, we know that all variables needed defined, so we can safely override the missing ones #} + {% set author = config.author | default(value="") %} + {% set title = config.title | default(value="") %} + + {# Render the copyright notice, replacing the variables #} + {% set current_year = now() | date(format="%Y") %} +

    {{ copyright | replace(from="$AUTHOR", to=author) | replace(from="$TITLE", to=title) | replace(from="$CURRENT_YEAR", to=current_year) | replace(from="$SEPARATOR", to=separator) | markdown | safe }}

    +{%- endif -%} diff --git a/templates/partials/extra_features.html b/templates/partials/extra_features.html new file mode 100644 index 0000000..50c3337 --- /dev/null +++ b/templates/partials/extra_features.html @@ -0,0 +1,88 @@ +{%- set page_or_section = page | default(value=section) -%} + +{# prepare parameters for evaluate_setting_priority macro #} +{%- set page_s = page | default(value="") -%} +{%- set section_s = section | default(value="") -%} + +{# Quick navigation buttons #} +{% if macros_settings::evaluate_setting_priority(setting="quick_navigation_buttons", page=page_s, section=section_s, default_global_value=false) == "true" %} +
    + {# Button to go show a floating Table of Contents #} + {% if page_or_section.toc %} +
    + + + +
    + {{ macros_toc::toc(page=page_or_section, header=false, language_strings=language_strings) }} +
    +
    + {% endif %} + + {# Button to go to the comment/webmentions section #} + {% if comment_system or config.extra.webmentions.enable %} + {%- if comment_system -%} + {#- Comments are shown above webmentions -#} + {%- set comments_id = "comments" -%} + {%- else -%} + {%- set comments_id = "webmentions" -%} + {%- endif -%} + + + + + {% endif %} + + {# Button to go to the top of the page #} + + + +
    +{% endif %} + +{# Add KaTeX functionality #} +{%- if macros_settings::evaluate_setting_priority(setting="katex", page=page_s, section=section_s, default_global_value=false) == "true" -%} + + +{%- endif -%} + +{# Load mermaid.js #} +{%- if macros_settings::evaluate_setting_priority(setting="mermaid", page=page_s, section=section_s, default_global_value=false) == "true" -%} + {%- if config.extra.serve_local_mermaid | default(value=true) -%} + + {%- else -%} + + {%- endif -%} +{%- endif -%} + +{# Add copy button to code blocks #} +{%- if macros_settings::evaluate_setting_priority(setting="copy_button", page=page_s, section=section_s, default_global_value=true) == "true" -%} + {#- Add hidden HTML elements with the translated strings for the button's interactions -#} + + + +{%- endif -%} + +{# JavaScript to make code block names clickable when they are URLs: https://welpo.github.io/tabi/blog/shortcodes/#show-source-or-path #} +{# Note: "add_src_to_code_block" is deprecated in favor of "code_block_name_links". It will be removed in a future release. #} +{# See https://github.com/welpo/tabi/pull/489 #} +{%- if macros_settings::evaluate_setting_priority(setting="code_block_name_links", page=page_s, section=section_s, default_global_value=false) == "true" + or macros_settings::evaluate_setting_priority(setting="add_src_to_code_block", page=page_s, section=section_s, default_global_value=false) == "true" -%} + +{%- endif -%} + +{# Add backlinks to footnotes #} +{%- if macros_settings::evaluate_setting_priority(setting="footnote_backlinks", page=page_s, section=section_s, default_global_value=false) == "true" -%} + +{%- endif -%} + +{# Add iine.js for the like button #} +{%- if macros_settings::evaluate_setting_priority(setting="iine", page=page_s, section=section_s, default_global_value=false) == "true" -%} + +{%- endif -%} diff --git a/templates/partials/filter_card_tags.html b/templates/partials/filter_card_tags.html new file mode 100644 index 0000000..d40ec2d --- /dev/null +++ b/templates/partials/filter_card_tags.html @@ -0,0 +1,35 @@ +{#- Collect all terms. -#} +{#- We don't use `get_taxonomy` so users aren't forced to use 'tags' -#} +{% set all_terms = [] %} +{% for page in show_pages %} + {% if page.taxonomies %} + {% for tax_name, terms in page.taxonomies %} + {% for term in terms %} + {% set_global all_terms = all_terms | concat(with=term) %} + {% endfor %} + {% endfor %} + {% endif %} +{% endfor %} + +{#- Display unique terms -#} +{% set unique_terms = all_terms | unique | sort %} +{%- if unique_terms | length >= 2 -%} + + {#- Load the script -#} + +{% endif %} diff --git a/templates/partials/footer.html b/templates/partials/footer.html new file mode 100644 index 0000000..db4bd85 --- /dev/null +++ b/templates/partials/footer.html @@ -0,0 +1,127 @@ +{%- set separator = config.extra.separator | default(value="•") -%} + +{%- set rel_attributes = macros_rel_attributes::rel_attributes() | trim -%} + +{%- set blank_target = macros_target_attribute::target_attribute(new_tab=config.markdown.external_links_target_blank) -%} + +{#- Feed icon -#} +{%- set feed_url = feed_utils::get_feed_url() -%} +{%- set should_show_feed = feed_utils::should_show_footer_feed_icon() == "true" -%} + +{%- set should_show_footer_icons = should_show_feed or config.extra.socials or config.extra.email -%} + +
    +
    + + + {# Footer menu #} + + +
    + + {% include "partials/copyright.html" %} + + {# Shows "Powered by Zola & tabi" notice #} + {{ macros_translate::translate(key="powered_by", default="Powered by", language_strings=language_strings) }} + Zola + {{ macros_translate::translate(key="and", default="&", language_strings=language_strings) }} + tabi + + {# Shows link to remote repository #} + {%- if config.extra.remote_repository_url and config.extra.show_remote_source | default(value=true) -%} + {{ separator }} + + {{ macros_translate::translate(key="site_source", default="Site source", language_strings=language_strings) }} + + {%- endif -%} + +
    +
    + + {# Load the decoding script if email is encoded #} + {%- if email_needs_decoding -%} + + {%- endif -%} + + {# Modal structure for search #} + {%- if config.build_search_index -%} + {% include "partials/search_modal.html" %} + {%- endif -%} +
    diff --git a/templates/partials/hcard.html b/templates/partials/hcard.html new file mode 100644 index 0000000..6479da6 --- /dev/null +++ b/templates/partials/hcard.html @@ -0,0 +1,75 @@ +{%- set hcard = config.extra.hcard -%} + +{% set full_name = config.author %} +{% if hcard.full_name %} + {% set full_name = hcard.full_name %} +{% endif %} + +{%- set homepage = config.base_url -%} +{% if hcard.homepage %} + {%- set homepage = hcard.homepage -%} +{% endif %} + +{% if hcard.enable %} + +{% endif %} diff --git a/templates/partials/hcard_small.html b/templates/partials/hcard_small.html new file mode 100644 index 0000000..f30add5 --- /dev/null +++ b/templates/partials/hcard_small.html @@ -0,0 +1,26 @@ +{%- set hcard = config.extra.hcard -%} + +{%- set full_name = config.author -%} +{%- if hcard.full_name -%} + {%- set full_name = hcard.full_name -%} +{%- endif -%} + +{%- set homepage = config.base_url -%} +{%- if hcard.homepage -%} + {%- set homepage = hcard.homepage -%} +{%- endif -%} + +{%- set icon_attr = "" -%} +{%- if hcard.avatar -%} + {%- set icon_attr = "author-icon" -%} +{%- endif -%} + + diff --git a/templates/partials/header.html b/templates/partials/header.html new file mode 100644 index 0000000..ada1f23 --- /dev/null +++ b/templates/partials/header.html @@ -0,0 +1,182 @@ + + + + {%- if macros_settings::evaluate_setting_priority(setting="enable_csp", page=page | default(value=""), section=section | default(value=""), default_global_value="true") == "true" -%} + {%- include "partials/content_security_policy.html" -%} + {%- endif -%} + + + + + {# Site title #} + {%- include "partials/title.html" -%} + + {# Favicon #} + {% if config.extra.favicon %} + + {% endif %} + {% if config.extra.favicon_emoji %} + + {% endif %} + + {# Feeds #} + {% if config.generate_feeds | default(value=config.generate_feed) %} + {% if config.feed_filenames %} + {# Zola 0.19 and newer #} + {% for feed in config.feed_filenames %} + {% if feed == "atom.xml" %} + + {% elif feed == "rss.xml" %} + + {% else %} + + {% endif %} + {% endfor %} + {% else %} + {# Older Zola versions #} + {% set feed_url = config.feed_filename | default(value="atom.xml") %} + + {% endif %} + {% endif %} + + {# CSS #} + {# Load subset of glyphs for header. Avoids flashing issue in Firefox #} + {% if config.extra.enable_subset %} + {% if config.extra.custom_subset == true %} + + {% elif lang == 'en' %} + + {% elif lang == 'es' %} + + {% endif %} + {% endif %} + + {# Define array of CSS files to load. main.css is always loaded. #} + {%- set stylesheets = [ "main.css" ] -%} + + {# Load extra CSS files from config.toml #} + {%- if config.extra.stylesheets -%} + {%- set stylesheets = stylesheets | concat(with=config.extra.stylesheets) -%} + {%- endif -%} + + {# Load extra CSS files from page metadata #} + {%- if page.extra.stylesheets -%} + {%- set stylesheets = stylesheets | concat(with=page.extra.stylesheets) -%} + {%- endif -%} + + {# Load extra CSS for custom skin #} + {%- if config.extra.skin -%} + {%- set stylesheets = stylesheets | concat(with='skins/' ~ config.extra.skin ~ '.css') -%} + {%- endif -%} + + {# Load all stylesheets #} + {%- for stylesheet in stylesheets %} + + {%- endfor %} + + + + {%- if config.extra.browser_theme_color and config.extra.browser_theme_color is iterable -%} + {# Handle array values: theme_color[0] for light mode, theme_color[1] for dark mode #} + + + {%- elif config.extra.browser_theme_color -%} + {# Handle single value #} + + {%- endif -%} + + {%- if page.description %} + + + {%- elif section.description %} + + + {%- elif page.summary %} + + + {%- else %} + + + {%- endif %} + + {% if is_404 %} + + {% endif %} + + + + + {# Image for social media sharing #} + {%- include "partials/social_media_images.html" -%} + + {# Add og:locale and hreflang tags for multilingual sites #} + {%- if config.languages | length > 0 and current_url %} + {%- include "partials/multilingual_tags.html" -%} + {%- else -%} + + {%- endif %} + + {# Set canonical URL #} + {%- if current_url -%} + {%- if page.extra.canonical_url or section.extra.canonical_url -%} + {%- set canonical_url = page.extra.canonical_url | default(value=section.extra.canonical_url) -%} + {%- elif config.extra.base_canonical_url -%} + {%- set canonical_url = current_url | replace(from=config.base_url, to=config.extra.base_canonical_url) -%} + {%- endif -%} + {%- endif -%} + + {# Add canonical URL, if set #} + {%- if canonical_url -%} + + + {%- elif current_url -%} + + {%- endif -%} + + + + {%- if config.extra.theme_switcher and config.extra.theme_switcher == true -%} + {# If JavaScript is disabled, hide the button. #} + + + + {%- endif -%} + + {%- if config.extra.analytics.service -%} + {%- include "partials/analytics.html" -%} + {%- endif -%} + + {# Socials #} + {%- if config.extra.fediverse_creator -%} + + {%- endif -%} + + {# Search #} + {%- if config.build_search_index -%} + {%- if config.search.index_format -%} + {%- set search_index_format = config.search.index_format -%} + {%- elif config.extra.index_format -%} + {# Necessary to support Zola 0.17.X, as it doesn't have access to config.search.index_format #} + {# See: https://github.com/getzola/zola/issues/2165 #} + {%- set search_index_format = config.extra.index_format -%} + {%- else -%} + {%- set search_index_format = "elasticlunr_json" -%} + {%- endif -%} + + {%- if search_index_format == "elasticlunr_javascript" -%} + + {%- endif -%} + + {# Main search script #} + + + {# Support correct stemming and stop word filtering in non-English search #} + {%- if lang != "en" -%} + + + {%- endif -%} + {%- endif -%} + + {# Users can optionally provide this template to add content to the head element. #} + {% include "tabi/extend_head.html" ignore missing %} + diff --git a/templates/partials/history_url.html b/templates/partials/history_url.html new file mode 100644 index 0000000..8327ca3 --- /dev/null +++ b/templates/partials/history_url.html @@ -0,0 +1,26 @@ +{%- set relative_path = page.relative_path -%} +{%- set repository_url = config.extra.remote_repository_url | trim_end_matches(pat='/') -%} +{%- set branch = config.extra.remote_repository_branch | default(value="main") -%} +{%- set git_platform = config.extra.remote_repository_git_platform | default(value="auto") -%} + +{# Auto-detect the git platform based on the URL#} +{%- if git_platform == "auto" %} + {%- if repository_url is containing("github.") -%} + {%- set git_platform = "github" -%} + {%- elif repository_url is containing("gitlab.") -%} + {%- set git_platform = "gitlab" -%} + {%- elif repository_url is matching("(gitea\.|codeberg\.)") -%} + {%- set git_platform = "gitea" -%} + {%- endif -%} +{%- endif -%} + +{# Generate the commit history URL based on the git platform #} +{%- if git_platform == "github" -%} + {{ repository_url ~ '/commits/' ~ branch ~ '/content/' }}{{ relative_path | urlencode }} +{%- elif git_platform == "gitlab" -%} + {{ repository_url ~ '/-/commits/' ~ branch ~ '/content/' }}{{ relative_path | urlencode }} +{%- elif git_platform in ["gitea", "codeberg"] -%} + {{ repository_url ~ '/commits/branch/' ~ branch ~ '/content/' }}{{ relative_path | urlencode }} +{%- else -%} + {{ throw(message="ERROR: Unknown, unsupported, or unspecified git platform. If you're using a custom domain, please specify the 'git_platform' in the config. If you think this is a bug, please report it: https://github.com/welpo/tabi/issues/new?assignees=&labels=bug&template=bug_report.md&title=Unsupported%20Git%20Platform%20Detected") }} +{%- endif -%} diff --git a/templates/partials/home_banner.html b/templates/partials/home_banner.html new file mode 100644 index 0000000..353757b --- /dev/null +++ b/templates/partials/home_banner.html @@ -0,0 +1,20 @@ +{%- set header = section.extra.header-%} + diff --git a/templates/partials/iine_button.html b/templates/partials/iine_button.html new file mode 100644 index 0000000..508fd3a --- /dev/null +++ b/templates/partials/iine_button.html @@ -0,0 +1,33 @@ +{% import "macros/settings.html" as macros_settings %} +{%- set button_icon = button_icon | default(value=macros_settings::evaluate_setting_priority(setting="iine_icon", page=page | default(value=""), section=section | default(value=""), default_global_value="heart")) -%} +{%- if config.extra.iine_unified_languages and lang != config.default_language -%} + {%- set unified_slug = page.path | replace(from='/' ~ lang ~ '/', to='/') -%} + {%- set slug = slug | default(value=unified_slug) -%} +{%- else -%} + {%- set slug = slug | default(value=page.path) -%} +{%- endif -%} +{%- if label -%} + {%- set final_label = label -%} +{%- elif language_strings -%} + {%- set final_label = macros_translate::translate(key="like_this_post", default="Like this post", language_strings=language_strings) -%} +{%- else -%} + {%- set final_label = "Like this post" -%} +{%- endif -%} + +{%- if button_icon == "heart" -%} + {%- set icon_display = "♥️" -%} +{%- elif button_icon == "thumbs_up" -%} + {%- set icon_display = "👍" -%} +{%- elif button_icon == "upvote" -%} + {%- set icon_display = "⬆️" -%} +{%- else -%} + {%- set icon_display = button_icon -%} +{%- endif -%} + +
    + + +
    diff --git a/templates/partials/language_switcher.html b/templates/partials/language_switcher.html new file mode 100644 index 0000000..83cf61f --- /dev/null +++ b/templates/partials/language_switcher.html @@ -0,0 +1,38 @@ +
  • + +
  • diff --git a/templates/partials/main_page_posts_list.html b/templates/partials/main_page_posts_list.html new file mode 100644 index 0000000..067e178 --- /dev/null +++ b/templates/partials/main_page_posts_list.html @@ -0,0 +1,61 @@ +{%- if paginator or extra_section -%} +
    +
    + {{ macros_page_header::page_header(title=section.title) }} +
    + + {# Check if both paginate_by and section_path are set #} + {%- set both_settings_set = paginator and extra_section -%} + {%- set paginator_has_no_pages = paginator and paginator.pages | length == 0 -%} + {%- set extra_section_has_pages = extra_section and extra_section.pages | length > 0 -%} + + {# Display warning if both settings are set #} + {%- if both_settings_set and paginator_has_no_pages and extra_section_has_pages -%} +
    +
    +
    + WARNING: Conflicting Configuration +

    + No posts are displayed due to conflicting settings in your _index.md: +

    +
      +
    • paginate_by is set, but there are no posts to paginate in the current section.
    • +
    • section_path is set, and posts are available in that section.
    • +
    +

    + Solution: Remove paginate_by from your _index.md. + To limit the number of displayed posts, use max_posts in the [extra] section instead. +

    +
    +
    + {%- endif -%} + + {# Get all posts for pinning if we're in root section with pagination #} + {%- if paginator and is_root_section -%} + {%- set root_section = get_section(path="_index.md") -%} + {%- set all_posts = root_section.pages -%} + {%- set pages = paginator.pages -%} + {%- elif paginator -%} + {%- set all_posts = paginator.pages -%} + {%- set pages = paginator.pages -%} + {%- else -%} + {%- set all_posts = extra_section.pages -%} + {%- set pages = extra_section.pages -%} + {%- endif -%} + + {% set max_posts = section.extra.max_posts | default(value=999999) %} + {{ macros_list_posts::list_posts( + posts=pages, + all_posts=all_posts, + max=max_posts, + language_strings=language_strings, + section_path=extra_section.path | default(value="blog"), + pinned_first=is_root_section, + current_page=paginator.current_index | default(value=1) + ) }} +
    + + {% if paginator and paginator.pages | length > 0 %} + {%- include "partials/paginate.html" -%} + {% endif %} +{%- endif -%} diff --git a/templates/partials/main_page_projects_list.html b/templates/partials/main_page_projects_list.html new file mode 100644 index 0000000..82f0637 --- /dev/null +++ b/templates/partials/main_page_projects_list.html @@ -0,0 +1,16 @@ +{% if section.extra.projects_path %} + {%- set projects_section = get_section(path=section.extra.projects_path) -%} + {%- if projects_section -%} + + {%- set show_pages = projects_section.pages -%} + {%- set max_projects = section.extra.max_projects | default(value=3) -%} + {%- include "partials/cards_pages.html" -%} + {%- endif -%} + {%- if show_pages | length > max_projects -%} + + {%- endif -%} +{% endif %} diff --git a/templates/partials/multilingual_tags.html b/templates/partials/multilingual_tags.html new file mode 100644 index 0000000..fe81e6e --- /dev/null +++ b/templates/partials/multilingual_tags.html @@ -0,0 +1,29 @@ +{%- if section.translations -%} + {%- set current_translations = section.translations -%} +{%- elif page.translations -%} + {%- set current_translations = page.translations -%} +{%- endif -%} + +{%- if current_translations -%} + + {%- for translation in current_translations -%} + {%- set lcode = translation.lang | default(value = config.default_language) -%} + + {#- Dynamically load the language strings for each language -#} + {%- set other_language_strings = load_data(path="i18n/" ~ lcode ~ ".toml", required=false) -%} + {%- if not other_language_strings -%} + {%- set other_language_strings = load_data(path="themes/tabi/i18n/" ~ lcode ~ ".toml", required=false) -%} + {%- endif -%} + + + {# Construct href for hreflang #} + {%- set href = translation.permalink -%} + {%- if lcode == config.default_language -%} + {%- set href = href | replace(from='/' ~ lang ~ '/', to = '/') -%} + {%- else -%} + {%- set href = href | replace(from='/' ~ lang ~ '/', to='/' ~ lcode ~ '/') -%} + {%- endif -%} + + {%- endfor -%} + +{%- endif -%} diff --git a/templates/partials/nav.html b/templates/partials/nav.html new file mode 100644 index 0000000..de55151 --- /dev/null +++ b/templates/partials/nav.html @@ -0,0 +1,60 @@ +
    + +
    diff --git a/templates/partials/paginate.html b/templates/partials/paginate.html new file mode 100644 index 0000000..6502af7 --- /dev/null +++ b/templates/partials/paginate.html @@ -0,0 +1,27 @@ +{% if paginator and paginator.number_pagers > 1 %} + +{% endif %} diff --git a/templates/partials/search_modal.html b/templates/partials/search_modal.html new file mode 100644 index 0000000..a3702d2 --- /dev/null +++ b/templates/partials/search_modal.html @@ -0,0 +1,31 @@ + diff --git a/templates/partials/social_media_images.html b/templates/partials/social_media_images.html new file mode 100644 index 0000000..d6bbcc7 --- /dev/null +++ b/templates/partials/social_media_images.html @@ -0,0 +1,50 @@ +{%- set social_media_card = macros_settings::evaluate_setting_priority(setting="social_media_card", page=page | default(value=""), section=section | default(value=""), default_global_value="") -%} +{% if social_media_card %} + {# Get base path from page/section #} + {% set base_path = "" %} + {% if section and section.path %} + {% set base_path = section.path | trim_end_matches(pat="/_index.md") %} + {% if base_path and not social_media_card is starting_with("/") %} + {% set base_path = base_path ~ "/" %} + {% endif %} + {% else %} + {% set base_path = page.colocated_path | default(value="") %} + {% endif %} + + {% set current_path = base_path ~ social_media_card | trim_start_matches(pat="/") %} + + {# Try parent path by removing the last directory component #} + {% set parent_path = base_path | split(pat="/") | slice(end=-2) | join(sep="/") %} + {% if parent_path and not social_media_card is starting_with("/") %} + {% set parent_path = parent_path ~ "/" %} + {% endif %} + {% set parent_relative_path = parent_path ~ social_media_card | trim_start_matches(pat="/") %} + + {# Check all possible locations #} + {%- set current_meta = get_image_metadata(path=current_path, allow_missing=true) -%} + {%- set parent_meta = get_image_metadata(path=parent_relative_path, allow_missing=true) -%} + {%- set absolute_meta = get_image_metadata(path=social_media_card, allow_missing=true) -%} + + {% if current_meta %} + {% set final_path = current_path %} + {% set meta = current_meta %} + {% elif parent_meta %} + {% set final_path = parent_relative_path %} + {% set meta = parent_meta %} + {% elif absolute_meta %} + {% set final_path = social_media_card %} + {% set meta = absolute_meta %} + {% else %} + {{ throw(message="Could not find social media card image. Tried: + 1. Current page path: '" ~ current_path ~ "' + 2. Parent page path: '" ~ parent_relative_path ~ "' + 3. Absolute path: '" ~ social_media_card ~ "' + Please ensure the file exists at one of these locations.") }} + {% endif %} + + + + + + +{% endif %} diff --git a/templates/partials/theme_switcher.html b/templates/partials/theme_switcher.html new file mode 100644 index 0000000..2e30f90 --- /dev/null +++ b/templates/partials/theme_switcher.html @@ -0,0 +1,31 @@ +
  • + {#- Create the localised strings for the title and aria-label attributes -#} + {%- set toggle_str = macros_translate::translate(key='toggle_mode', default='Toggle $MODE mode', language_strings=language_strings) -%} + {%- set dark_str = macros_translate::translate(key='dark', default='dark', language_strings=language_strings) -%} + {%- set light_str = macros_translate::translate(key='light', default='light', language_strings=language_strings) -%} + + {%- set combined_mode_str = dark_str ~ "/" ~ light_str -%} + {%- set title_label = toggle_str | replace(from="$MODE", to=combined_mode_str) -%} + {%- set aria_label = toggle_str | replace(from="$MODE", to=dark_str) -%} + +
    +
    + + {%- set reset_str = macros_translate::translate(key='reset_mode', default='Reset mode to default', language_strings=language_strings) -%} + + + +
  • diff --git a/templates/partials/title.html b/templates/partials/title.html new file mode 100644 index 0000000..de77d73 --- /dev/null +++ b/templates/partials/title.html @@ -0,0 +1,40 @@ +{#- Setup -#} +{% if not config.title %} +{{ throw(message="ERROR: No `title` set in `config.toml`. tabi requires a title to function.") }} +{% endif %} +{%- set prefix = config.title | safe -%} +{%- set custom_separator = config.extra.separator | default(value="•") -%} +{%- set separator = " " ~ custom_separator ~ " " -%} + +{#- Get the base path for the current language -#} +{%- if lang != config.default_language %} + {%- set base_path = "/" ~ lang ~ "/" %} +{%- else -%} + {%- set base_path = "/" %} +{%- endif %} + +{%- if current_path and current_path == base_path -%} + {%- set suffix = "" -%} + {%- set separator = "" -%} +{% elif title %} + {%- set suffix = title -%} +{% elif section.title -%} + {%- set suffix = section.title -%} +{% elif page.title %} + {%- set suffix = page.title -%} +{% elif term.name %} + {#- Individual tags -#} + {%- set suffix = term.name -%} +{% elif taxonomy.name %} + {#- List of tags -#} + {%- set suffix = macros_translate::translate(key=taxonomy.name, language_strings=language_strings) | capitalize -%} +{% else %} + {%- set suffix = "404" %} +{%- endif -%} + +{#- Return the final concatenated string -#} +{%- if config.extra.invert_title_order -%} + {{- suffix ~ separator ~ prefix -}} +{%- else -%} + {{- prefix ~ separator ~ suffix -}} +{%- endif -%} diff --git a/templates/partials/webmentions.html b/templates/partials/webmentions.html new file mode 100644 index 0000000..e579a04 --- /dev/null +++ b/templates/partials/webmentions.html @@ -0,0 +1,51 @@ +{# Incorporate webmention.io links and script into the page head. +1. Provide the link to the webmention data in the at webmention.io. +2. Link to the stylesheet for styling webmentions on a page. +3. Add and configure the javascript to fetch and display the webmentions collected at webmention.io. #} + + + +{# Calculate the configured data for the script, if any #} + +{% set script_data = "" %} + +{% if config.extra.webmentions.id %} +{% set script_data = script_data ~ "data-id=" ~ config.extra.webmentions.id %} +{% endif %} + +{% if config.extra.webmentions.page_url %} +{% set script_data = script_data ~ " data-page-url=" ~ config.extra.webmentions.page_url %} +{% endif %} + +{% if config.extra.webmentions.add_urls %} +{% set script_data = script_data ~ "data-add-urls=" ~ config.extra.webmentions.add_urls %} +{% endif %} + +{% if config.extra.webmentions.wordcount %} +{% set script_data = script_data ~ " data-wordcount=" ~ config.extra.webmentions.wordcount %} +{% endif %} + +{% if config.extra.webmentions.max_webmentions %} +{% set script_data = script_data ~ "data-max-webmentions=" ~ config.extra.webmentions.max_webmentions %} +{% endif %} + +{% if config.extra.webmentions.prevent_spoofing %} +{% set script_data = script_data ~ "data-prevent-spoofing=" ~ config.extra.webmentions.prevent_spoofing %} +{% endif %} + +{% if config.extra.webmentions.sort_by %} +{% set script_data = script_data ~ "data-sort-by=" ~ config.extra.webmentions.sort_by %} +{% endif %} + +{% if config.extra.webmentions.sort_dir %} +{% set script_data = script_data ~ "data-sort-dir=" ~ config.extra.webmentions.sort_dir %} +{% endif %} + +{% if config.extra.webmentions.comments_are_reactions %} +{% set script_data = script_data ~ " data-comments-are-reactions=" ~ config.extra.webmentions.comments_are_reactions %} +{% endif %} + + + +
    diff --git a/templates/section.html b/templates/section.html new file mode 100644 index 0000000..3f2af39 --- /dev/null +++ b/templates/section.html @@ -0,0 +1,57 @@ +{% extends "base.html" %} + +{% block main_content %} + +{# We'll only pin posts in the root section. #} +{# Right now both the main page and blog/ use the same `section.html` template. #} +{# To avoid using different templates, we do this. #} +{%- if lang == config.default_language -%} + {%- set expected_root = "/" -%} +{%- else -%} + {%- set expected_root = "/" ~ lang ~ "/" -%} +{%- endif -%} +{%- set is_root_section = current_path == expected_root -%} + +{%- set show_projects_first = section.extra.show_projects_first | default(value=false) -%} +{%- if show_projects_first -%} + {%- set first_section = "projects" -%} +{%- else -%} + {%- set first_section = "posts" -%} +{%- endif -%} + +{%- if section.extra.section_path or paginator and projects_path -%} + {%- set more_than_one_section_shown = true -%} +{%- endif -%} + +
    +{%- if config.extra.hcard %} + {%- include "partials/hcard.html" -%} +{% endif -%} +{%- if section.extra.header %} + {%- include "partials/home_banner.html" -%} +{%- elif section.content -%} +
    + {{ section.content | safe }} +
    +{% endif -%} + +{% if section.extra.section_path -%} + {% set extra_section = get_section(path=section.extra.section_path) %} +{% endif -%} + +{% if section.extra.section_path -%} + {% set path = section.extra.section_path | replace(from="/_index.md", to = "") %} +{% else -%} + {% set path = section.path %} +{% endif -%} + +{%- if show_projects_first -%} + {%- include "partials/main_page_projects_list.html" -%} + {%- include "partials/main_page_posts_list.html" -%} +{%- else -%} + {%- include "partials/main_page_posts_list.html" -%} + {%- include "partials/main_page_projects_list.html" -%} +{%- endif -%} +
    + +{% endblock main_content %} diff --git a/templates/series.html b/templates/series.html new file mode 100644 index 0000000..5a4cc0c --- /dev/null +++ b/templates/series.html @@ -0,0 +1,62 @@ +{% extends "base.html" %} + +{% block main_content %} + +{# Throw an error if the section is not flagged as a series. #} +{# This page would be displayed properly but it would become impossible for the series' child pages to reference their series. #} +{%- if "series" not in section.extra or not section.extra.series -%} + {{ throw(message="Section is not flagged as a series. Set `section.extra.series` to `true` if you want to use `series.html` template.") }} +{%- endif -%} + +
    +{%- if section.extra.header %} + {%- include "partials/home_banner.html" -%} +{% endif -%} + + {%- set show_jump = false -%} + {%- set show_jump_hierarchy = macros_settings::evaluate_setting_priority(setting="show_jump_to_posts", page=section) -%} + {%- if show_jump_hierarchy == "true" -%} + {%- set show_jump = true -%} + {%- elif show_jump_hierarchy != "false" -%} + {#- Default to true if the content is long and var is unset #} + {%- if section.content | length > 2000 -%} + {%- set show_jump = true -%} + {%- endif -%} + {%- endif -%} + + {%- if show_jump -%} + + {%- else -%} + {{ macros_page_header::page_header(title=section.title) }} + {%- endif -%} + +
    + {{ section.content | safe }} +
    + +
    +

    + {{ macros_translate::translate(key="all_posts", default="All posts", language_strings=language_strings) }} +

    + {%- if paginator %} + {%- set pages = paginator.pages -%} + {% else %} + {%- set pages = section.pages -%} + {% endif -%} + + {% set max_posts = section.extra.max_posts | default(value=999999) %} + {{ macros_list_posts::list_posts(posts=pages, max=max_posts, metadata="indexes", language_strings=language_strings, section_path=section.path, paginator=paginator | default(value="")) }} +
    + + {% if paginator %} + {%- include "partials/paginate.html" -%} + {% endif %} + +
    + +{%- include "partials/extra_features.html" -%} + +{% endblock main_content %} diff --git a/templates/shortcodes/add_src_to_code_block.html b/templates/shortcodes/add_src_to_code_block.html new file mode 100644 index 0000000..907e092 --- /dev/null +++ b/templates/shortcodes/add_src_to_code_block.html @@ -0,0 +1 @@ + diff --git a/templates/shortcodes/admonition.html b/templates/shortcodes/admonition.html new file mode 100644 index 0000000..3519527 --- /dev/null +++ b/templates/shortcodes/admonition.html @@ -0,0 +1,12 @@ +{%- set type = type | default(value="info") -%} +{%- set title = title | default(value=type | upper) -%} +{%- set icon = icon | default(value=type) -%} +{%- set text = text | default(value=body) -%} + +
    +
    +
    + {{ title | safe }} + {{ text | markdown | safe }} +
    +
    diff --git a/templates/shortcodes/aside.html b/templates/shortcodes/aside.html new file mode 100644 index 0000000..ca337f9 --- /dev/null +++ b/templates/shortcodes/aside.html @@ -0,0 +1,5 @@ +{%- set text = text | default(value=body) -%} + + diff --git a/templates/shortcodes/dimmable_image.html b/templates/shortcodes/dimmable_image.html new file mode 100644 index 0000000..a72720c --- /dev/null +++ b/templates/shortcodes/dimmable_image.html @@ -0,0 +1,31 @@ +{#- Determine image path based on whether the src is remote or local -#} +{%- if src is starting_with("http") or raw_path -%} + {%- set image_url = src -%} +{%- else -%} + {%- set colocated_path = page.colocated_path | default(value="") -%} + {%- set relative_path = colocated_path ~ src -%} + {%- set meta = get_image_metadata(path=relative_path, allow_missing=true) -%} + + {#- Fallback to absolute path if relative path doesn't work -#} + {%- if not meta -%} + {%- set meta = get_image_metadata(path=src, allow_missing=true) -%} + {%- set image_url = get_url(path=src, cachebust=true) -%} + {%- else -%} + {%- set image_url = get_url(path=relative_path, cachebust=true) -%} + {%- endif -%} +{%- endif -%} + +{%- set lazy_loading = lazy_loading | default(value=true) -%} + +{%- set class_list = "dimmable-image" -%} +{%- if inline -%} + {%- set class_list = class_list ~ " inline" -%} +{%- endif -%} + +{%- if full_width -%} +
    +{%- endif -%} + +{%- if full_width -%} +
    +{%- endif -%} diff --git a/templates/shortcodes/dual_theme_image.html b/templates/shortcodes/dual_theme_image.html new file mode 100644 index 0000000..5eadc09 --- /dev/null +++ b/templates/shortcodes/dual_theme_image.html @@ -0,0 +1,45 @@ +{%- set colocated_path = page.colocated_path | default(value="") -%} +{%- set lazy_loading = lazy_loading | default(value=true) -%} +{%- set inline = inline | default(value=false) -%} + +{%- set light_class_list = "img-light" -%} +{%- set dark_class_list = "img-dark" -%} +{%- if inline -%} + {%- set light_class_list = light_class_list ~ " inline" -%} + {%- set dark_class_list = dark_class_list ~ " inline" -%} +{%- endif -%} + +{# Handling for light mode image #} +{%- if light_src is starting_with("http") or raw_path -%} + {%- set light_image_url = light_src -%} +{%- else -%} + {%- set relative_light_path = colocated_path ~ light_src -%} + {%- set light_meta = get_image_metadata(path=relative_light_path, allow_missing=true) -%} + {%- if not light_meta -%} + {%- set light_image_url = get_url(path=light_src, cachebust=true) -%} + {%- else -%} + {%- set light_image_url = get_url(path=relative_light_path, cachebust=true) -%} + {%- endif -%} +{%- endif -%} + +{# Handling for dark mode image #} +{%- if dark_src is starting_with("http") or raw_path -%} + {%- set dark_image_url = dark_src -%} +{%- else -%} + {%- set relative_dark_path = colocated_path ~ dark_src -%} + {%- set dark_meta = get_image_metadata(path=relative_dark_path, allow_missing=true) -%} + {%- if not dark_meta -%} + {%- set dark_image_url = get_url(path=dark_src, cachebust=true) -%} + {%- else -%} + {%- set dark_image_url = get_url(path=relative_dark_path, cachebust=true) -%} + {%- endif -%} +{%- endif -%} + +{%- if full_width -%} +
    +{%- endif -%} + + +{%- if full_width -%} +
    +{%- endif -%} diff --git a/templates/shortcodes/force_text_direction.html b/templates/shortcodes/force_text_direction.html new file mode 100644 index 0000000..79d9697 --- /dev/null +++ b/templates/shortcodes/force_text_direction.html @@ -0,0 +1,5 @@ +{%- set direction = direction | default(value="ltr") -%} + +
    + {{ body | markdown | safe }} +
    diff --git a/templates/shortcodes/full_width_image.html b/templates/shortcodes/full_width_image.html new file mode 100644 index 0000000..a50bf10 --- /dev/null +++ b/templates/shortcodes/full_width_image.html @@ -0,0 +1,22 @@ +{#- Set paths based on whether the src is remote or local -#} +{%- if src is starting_with("http") or raw_path -%} + {%- set image_url = src -%} +{%- else -%} + {%- set colocated_path = page.colocated_path | default(value="") -%} + {%- set relative_path = colocated_path ~ src -%} + {%- set meta = get_image_metadata(path=relative_path, allow_missing=true) -%} + + {#- Fallback to absolute path if relative path doesn't work -#} + {%- if not meta -%} + {%- set meta = get_image_metadata(path=src, allow_missing=true) -%} + {%- set image_url = get_url(path=src, cachebust=true) -%} + {%- else %} + {%- set image_url = get_url(path=relative_path, cachebust=true) -%} + {%- endif -%} +{%- endif -%} + +{%- set lazy_loading = lazy_loading | default(value=true) -%} + +
    + +
    diff --git a/templates/shortcodes/iine.html b/templates/shortcodes/iine.html new file mode 100644 index 0000000..d37211d --- /dev/null +++ b/templates/shortcodes/iine.html @@ -0,0 +1,5 @@ +{% set button_icon = icon | default(value="heart") %} +{% set label = label | default(value="Like this post") %} +{% set slug = slug | default(value=page.path) %} + +{% include "partials/iine_button.html" %} diff --git a/templates/shortcodes/image_hover.html b/templates/shortcodes/image_hover.html new file mode 100644 index 0000000..443329b --- /dev/null +++ b/templates/shortcodes/image_hover.html @@ -0,0 +1,50 @@ +{%- set colocated_path = page.colocated_path | default(value="") -%} +{%- set lazy_loading = lazy_loading | default(value=true) -%} +{%- set inline = inline | default(value=false) -%} + +{#- Determine the tag for container elements -#} +{#- Necessary for inline images -#} +{%- set tag = "div" -%} +{%- if inline -%} + {%- set tag = "span" -%} +{%- endif -%} + +{%- set img_class_list = "" -%} +{%- if inline -%} + {%- set img_class_list = img_class_list ~ " inline" -%} +{%- endif -%} + +{#- Direct or relative URL handling for default image -#} +{%- if default_src is starting_with("http") or raw_path -%} + {%- set default_image_url = default_src -%} +{%- else -%} + {%- set relative_default_path = colocated_path ~ default_src -%} + {%- set default_meta = get_image_metadata(path=relative_default_path, allow_missing=true) -%} + {%- if not default_meta -%} + {%- set default_image_url = get_url(path=default_src, cachebust=true) -%} + {%- else -%} + {%- set default_image_url = get_url(path=relative_default_path, cachebust=true) -%} + {%- endif -%} +{%- endif -%} + +{#- Direct or relative URL handling for hovered image -#} +{%- if hovered_src is starting_with("http") or raw_path -%} + {%- set hovered_image_url = hovered_src -%} +{%- else -%} + {%- set relative_hovered_path = colocated_path ~ hovered_src -%} + {%- set hovered_meta = get_image_metadata(path=relative_hovered_path, allow_missing=true) -%} + {%- if not hovered_meta -%} + {%- set hovered_image_url = get_url(path=hovered_src, cachebust=true) -%} + {%- else -%} + {%- set hovered_image_url = get_url(path=relative_hovered_path, cachebust=true) -%} + {%- endif -%} +{%- endif -%} + +<{{ tag }} class="image-hover-container{% if full_width %} full-width{% endif %}"> + <{{ tag }} class="image-default"> + {{ default_alt }} + + <{{ tag }} class="image-hovered"> + {{ hovered_alt }} + + diff --git a/templates/shortcodes/image_toggler.html b/templates/shortcodes/image_toggler.html new file mode 100644 index 0000000..991d5f5 --- /dev/null +++ b/templates/shortcodes/image_toggler.html @@ -0,0 +1,57 @@ +{# The `random_id` ensures that each instance of the shortcode has a "unique" id #} +{# allowing individual interactive elements (like toggles) to function correctly. #} +{# This avoids conflicts when multiple instances of the shortcode are used. #} +{%- set random_id = get_random(end=100000) -%} +{%- set colocated_path = page.colocated_path | default(value="") -%} +{%- set lazy_loading = lazy_loading | default(value=true) -%} +{%- set inline = inline | default(value=false) -%} + +{#- Determine the class for the images -#} +{#- Necessary for inline images -#} +{%- set tag = "div" -%} +{%- if inline -%} + {%- set tag = "span" -%} +{%- endif -%} + +{%- set img_class_list = "" -%} +{%- if inline -%} + {%- set img_class_list = img_class_list ~ " inline" -%} +{%- endif -%} + +{# Direct or relative URL handling for default image #} +{%- if default_src is starting_with("http") or raw_path -%} + {%- set default_image_url = default_src -%} +{%- else -%} + {%- set relative_default_path = colocated_path ~ default_src -%} + {%- set default_meta = get_image_metadata(path=relative_default_path, allow_missing=true) -%} + {%- if not default_meta -%} + {%- set default_image_url = get_url(path=default_src, cachebust=true) -%} + {%- else -%} + {%- set default_image_url = get_url(path=relative_default_path, cachebust=true) -%} + {%- endif -%} +{%- endif -%} + +{# Direct or relative URL handling for toggled image #} +{%- if toggled_src is starting_with("http") or raw_path -%} + {%- set toggled_image_url = toggled_src -%} +{%- else -%} + {%- set relative_toggled_path = colocated_path ~ toggled_src -%} + {%- set toggled_meta = get_image_metadata(path=relative_toggled_path, allow_missing=true) -%} + {%- if not toggled_meta -%} + {%- set toggled_image_url = get_url(path=toggled_src, cachebust=true) -%} + {%- else -%} + {%- set toggled_image_url = get_url(path=relative_toggled_path, cachebust=true) -%} + {%- endif -%} +{%- endif -%} + +<{{ tag }} class="image-toggler-container {% if full_width %}full-width{% endif %}"> + + + diff --git a/templates/shortcodes/invertible_image.html b/templates/shortcodes/invertible_image.html new file mode 100644 index 0000000..0e3c920 --- /dev/null +++ b/templates/shortcodes/invertible_image.html @@ -0,0 +1,32 @@ +{#- Determine if src is a remote URL or a local path -#} +{%- if src is starting_with("http") or raw_path -%} + {%- set image_url = src -%} +{%- else -%} + {%- set colocated_path = page.colocated_path | default(value="") -%} + {%- set relative_path = colocated_path ~ src -%} + {%- set meta = get_image_metadata(path=relative_path, allow_missing=true) -%} + + {#- Fallback to absolute path if relative path doesn't work -#} + {%- if not meta -%} + {%- set meta = get_image_metadata(path=src, allow_missing=true) -%} + {%- set image_url = get_url(path=src, cachebust=true) -%} + {%- else %} + {%- set image_url = get_url(path=relative_path, cachebust=true) -%} + {%- endif -%} +{%- endif -%} + +{%- set lazy_loading = lazy_loading | default(value=true) -%} +{%- set inline = inline | default(value=false) -%} + +{%- set class_list = "invertible-image" -%} +{%- if inline -%} + {%- set class_list = class_list ~ " inline" -%} +{%- endif -%} + +{%- if full_width -%} +
    +{%- endif -%} + +{%- if full_width -%} +
    +{%- endif -%} diff --git a/templates/shortcodes/mermaid.html b/templates/shortcodes/mermaid.html new file mode 100644 index 0000000..88bbdc4 --- /dev/null +++ b/templates/shortcodes/mermaid.html @@ -0,0 +1,8 @@ +{% set invertible = invertible | default(value=true) %} +{% set full_width = full_width | default(value=false) %} + +
    +    {{ body | safe }}
    +
    diff --git a/templates/shortcodes/multilingual_quote.html b/templates/shortcodes/multilingual_quote.html new file mode 100644 index 0000000..7ea9849 --- /dev/null +++ b/templates/shortcodes/multilingual_quote.html @@ -0,0 +1,37 @@ +{%- import "macros/translate.html" as macros_translate -%} +{# Load internationalisation data #} +{%- set language_strings = load_data(path="i18n/" ~ lang ~ '.toml', required=false) -%} +{%- if not language_strings -%} + {%- set language_strings = load_data(path="themes/tabi/i18n/" ~ lang ~ ".toml", required=false) -%} +{%- endif -%} + +{%- set open_quote = macros_translate::translate(key="open_quotation_mark", default="“", language_strings=language_strings) -%} +{%- set close_quote = macros_translate::translate(key="close_quotation_mark", default="”", language_strings=language_strings) -%} + +{#- The `random_id` ensures that each instance of the shortcode has a "unique" id -#} +{#- allowing individual interactive elements (like toggles) to function correctly. -#} +{#- This avoids conflicts when multiple instances of the shortcode are used. -#} +{#- More context: https://github.com/welpo/tabi/issues/82 -#} +{%- set random_id = get_random(end=100000) -%} + +
    + +
    +
    +
    +

    {{ open_quote ~ translated ~ close_quote }}

    +

    {% if author %}— {{ author | safe }}{% endif %}

    +
    +
    +
    +
    +

    {{ open_quote ~ original ~ close_quote }}

    +

    {% if author %}— {{ author | safe }}{% endif %}

    +
    +
    +
    +
    diff --git a/templates/shortcodes/references.html b/templates/shortcodes/references.html new file mode 100644 index 0000000..1894479 --- /dev/null +++ b/templates/shortcodes/references.html @@ -0,0 +1,3 @@ +
    + {{ body | markdown | safe }} +
    diff --git a/templates/shortcodes/remote_text.html b/templates/shortcodes/remote_text.html new file mode 100644 index 0000000..70fd33a --- /dev/null +++ b/templates/shortcodes/remote_text.html @@ -0,0 +1,30 @@ +{%- set start = start | default(value=1) -%} +{%- set end = end | default(value=0) -%} + +{#- load_data uses different arguments based on whether it's a remote or local file -#} +{%- if src is starting_with("http") -%} + {%- set response = load_data(url=src, format="plain") -%} +{%- else -%} + {#- Try to load the file from a relative path -#} + {%- set colocated_path = page.colocated_path | default(value="") -%} + {%- set relative_path = colocated_path ~ src -%} + {%- set response = load_data(path=relative_path, format="plain", required=false) -%} + {#- If relative path fails, try absolute path -#} + {%- if not response -%} + {%- set response = load_data(path=src, format="plain") -%} + {%- endif -%} +{%- endif -%} + +{%- set lines = response | trim_end | split(pat="\n") -%} + +{%- if start > 0 -%} + {%- set start = start - 1 -%} +{%- endif -%} + +{%- if end == 0 or end > lines | length -%} + {%- set end = lines | length -%} +{%- endif -%} + +{%- set lines = lines | slice(start=start, end=end) -%} + +{{- lines | join(sep="\n") | safe -}} diff --git a/templates/shortcodes/spoiler.html b/templates/shortcodes/spoiler.html new file mode 100644 index 0000000..ff9e695 --- /dev/null +++ b/templates/shortcodes/spoiler.html @@ -0,0 +1,13 @@ +{# The `random_id` ensures that each instance of the shortcode has a "unique" id #} +{# allowing individual interactive elements (like toggles) to function correctly. #} +{# This avoids conflicts when multiple instances of the shortcode are used. #} +{# More context: https://github.com/welpo/tabi/issues/82 #} +{%- set random_id = get_random(end=100000) -%} +{%- set fixed_blur = fixed_blur | default(value=false) -%} + + diff --git a/templates/shortcodes/toc.html b/templates/shortcodes/toc.html new file mode 100644 index 0000000..8756586 --- /dev/null +++ b/templates/shortcodes/toc.html @@ -0,0 +1,2 @@ +{# Inserts special string to add the Table of Contents anywhere on a post #} + diff --git a/templates/shortcodes/wide_container.html b/templates/shortcodes/wide_container.html new file mode 100644 index 0000000..6268e63 --- /dev/null +++ b/templates/shortcodes/wide_container.html @@ -0,0 +1,3 @@ +
    + {{ body | markdown | safe }} +
    diff --git a/templates/sitemap.xml b/templates/sitemap.xml new file mode 100644 index 0000000..480759f --- /dev/null +++ b/templates/sitemap.xml @@ -0,0 +1,12 @@ + + + + {%- for sitemap_entry in entries %} + + {{ sitemap_entry.permalink | escape_xml | safe }} + {%- if sitemap_entry.updated %} + {{ sitemap_entry.updated }} + {%- endif %} + + {%- endfor %} + diff --git a/templates/tags/list.html b/templates/tags/list.html new file mode 100644 index 0000000..7b5e468 --- /dev/null +++ b/templates/tags/list.html @@ -0,0 +1,40 @@ +{% extends "index.html" %} + +{% block main_content %} + +{%- set title = macros_translate::translate(key="all_tags", default="All tags", language_strings=language_strings) -%} + +{{ macros_page_header::page_header(title=title)}} + +{% set tag_count = terms | length %} +{% if config.extra.tag_sorting == "frequency" %} + {% set terms = terms | sort(attribute="pages") | reverse %} +{% elif config.extra.tag_sorting != "name" %} + {{ throw (message="Invalid tag_sorting option: " ~ config.extra.tag_sorting ~ ". Valid options are 'name' and 'frequency'.") }} +{% endif %} +
    +
      + {%- for term in terms -%} +
    • + {%- set number_of_posts = term.pages | length -%} + {% if config.extra.compact_tags %} + {# Shows the number of posts per tag as a superscript #} + + {{ term.name }} + {{ number_of_posts }} + {% else %} + + {{ term.name }} + + {{- macros_translate::translate(key="posts", number=number_of_posts, default="$NUMBER posts", language_strings=language_strings) -}} + {% endif %} +
    • + {%- endfor -%} +
    +
    + +{% endblock main_content %} diff --git a/templates/tags/single.html b/templates/tags/single.html new file mode 100644 index 0000000..2f25fd2 --- /dev/null +++ b/templates/tags/single.html @@ -0,0 +1,22 @@ +{% extends "index.html" %} + +{% block main_content %} + +{#- Feed icon -#} +{%- set generate_feed = feed_utils::get_generate_feed() == "true" -%} +{%- set feed_url = feed_utils::get_feed_url() -%} +{%- set feed_pre_conditions = generate_feed and feed_url and taxonomy.feed -%} +{%- set show_feed_icon = feed_pre_conditions and term.pages | filter(attribute="date") -%} + +{{ macros_page_header::page_header(title=term.name, show_feed_icon=show_feed_icon) }} + +{% set max = section.extra.max_posts | default(value=999999) %} +{{ macros_list_posts::list_posts(posts=term.pages, max=max, language_strings=language_strings) }} + + + +{% endblock main_content %} diff --git a/templates/taxonomy_list.html b/templates/taxonomy_list.html new file mode 100644 index 0000000..b13e1b9 --- /dev/null +++ b/templates/taxonomy_list.html @@ -0,0 +1,40 @@ +{% extends "index.html" %} + +{% block main_content %} + +{%- set title = macros_translate::translate(key=taxonomy.name, default=taxonomy.name, language_strings=language_strings) -%} + +{{ macros_page_header::page_header(title=title)}} + +{% set tag_count = terms | length %} +{% if config.extra.tag_sorting == "frequency" %} + {% set terms = terms | sort(attribute="pages") | reverse %} +{% elif config.extra.tag_sorting != "name" %} + {{ throw (message="Invalid tag_sorting option: " ~ config.extra.tag_sorting ~ ". Valid options are 'name' and 'frequency'.") }} +{% endif %} +
    +
      + {%- for term in terms -%} +
    • + {%- set number_of_posts = term.pages | length -%} + {% if config.extra.compact_tags %} + {# Shows the number of posts per tag as a superscript #} + + {{ term.name }} + {{ number_of_posts }} + {% else %} + + {{ term.name }} + + {{- macros_translate::translate(key="posts", number=number_of_posts, default="$NUMBER posts", language_strings=language_strings) -}} + {% endif %} +
    • + {%- endfor -%} +
    +
    + +{% endblock main_content %} diff --git a/templates/taxonomy_single.html b/templates/taxonomy_single.html new file mode 100644 index 0000000..ff09a3b --- /dev/null +++ b/templates/taxonomy_single.html @@ -0,0 +1,22 @@ +{% extends "index.html" %} + +{% block main_content %} + +{#- Feed icon -#} +{%- set generate_feed = feed_utils::get_generate_feed() == "true" -%} +{%- set feed_url = feed_utils::get_feed_url() -%} +{%- set feed_pre_conditions = generate_feed and feed_url and taxonomy.feed -%} +{%- set show_feed_icon = feed_pre_conditions and term.pages | filter(attribute="date") | length > 0 -%} + +{{ macros_page_header::page_header(title=term.name, show_feed_icon=show_feed_icon) }} + +{% set max = section.extra.max_posts | default(value=999999) %} +{{ macros_list_posts::list_posts(posts=term.pages, max=max, language_strings=language_strings) }} + + + +{% endblock main_content %} diff --git a/theme.toml b/theme.toml new file mode 100644 index 0000000..fa5c4b7 --- /dev/null +++ b/theme.toml @@ -0,0 +1,465 @@ +name = "tabi" +description = "tabi is an accessible Zola theme with search, multi-language support, optional JavaScript, a perfect Lighthouse score, and comprehensive documentation. Crafted for personal websites and blogs." +license = "MIT" +homepage = "https://github.com/welpo/tabi" + +# The minimum version of Zola required +min_version = "0.17.0" + +# An optional live demo URL +demo = "https://welpo.github.io/tabi" + +# The theme author info: you! +[author] +name = "Óscar Fernández" +homepage = "https://osc.garden" + +# Any variable there can be overridden in the end user `config.toml` +# You don't need to prefix variables by the theme name but as this will +# be merged with user data, some kind of prefix or nesting is preferable +# Use snake_casing to be consistent with the rest of Zola +[extra] +# Check out the documentation (or the comments below) to learn how to customise tabi: +# https://welpo.github.io/tabi/blog/mastering-tabi-settings/ + +# Search index format. +# For Zola 0.17.X users only. +# This MUST MATCH the setting in [search].index_format. +# Example: If [search].index_format is "elasticlunr_javascript", set: +# index_format = "elasticlunr_javascript" here. +# index_format = "" + +# Use sans-serif font everywhere. +# By default, the serif font is only used in articles. +override_serif_with_sans = false + +# Enable JavaScript theme toggler to allow users to switch between dark/light mode. +# If disabled, your site will use the theme specified in the `default_theme` variable. +theme_switcher = true + +# This setting determines the default theme on load ("light" or "dark"). +# To follow the user's OS theme, leave it empty or unset. +default_theme = "" + +# Choose the colourscheme (skin) for the theme. Default is "teal". +# Skin available: blue, lavender, mint, red, sakura, teal, monochrome, lowcontrast_orange, lowcontrast_peach, lowcontrast_pink, indigo_ingot, evangelion +# See them live and learn how to create your own: https://welpo.github.io/tabi/blog/customise-tabi/#skins +# WARNING! "lowcontrast" skins, while aesthetically pleasing, may not provide optimal +# contrast (in light theme) for readability and might not be suitable for all users. +# Furthermore, low contrasting elements will affect your Google Lighthouse rating. +# All other skins have optimal contrast. +skin = "" + +# Set browser theme colour. Can be a single colour or [light, dark]. +# Note: Bright colors may be ignored in dark mode. +# More details: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta/name/theme-color +# browser_theme_color = "#087e96" # Example of single value. +# browser_theme_color = ["#ffffff", "#000000"] # Example of light/dark colours. + +# List additional stylesheets to load site-wide. +# These stylesheets should be located in your site's `static` directory. +# Example: stylesheets = ["extra1.css", "path/extra2.css"] +# You can load a stylesheet for a single post by adding it to the [extra] section of the post's front matter, following this same format. +stylesheets = [] + +# Sets the default canonical URL for all pages. +# Individual pages can override this in the [extra] section using canonical_url. +# Example: "$base_url/blog/post1" will get the canonical URL "https://example.com/blog/post1". +# Note: To ensure accuracy in terms of matching content, consider setting 'canonical_url' individually per page. +# base_canonical_url = "https://example.com" + +# Remote repository for your Zola site. +# Used for `show_remote_changes` and `show_remote_source` (see below). +# Supports GitHub, GitLab, Gitea, and Codeberg. +# remote_repository_url = "https://github.com/welpo/tabi" +# Set this to "auto" to try and auto-detect the platform based on the repository URL. +# Accepted values are "github", "gitlab", "gitea", and "codeberg". +remote_repository_git_platform = "auto" # Defaults to "auto". +# Branch in the repo hosting the Zola site. +remote_repository_branch = "main" # Defaults to "main". +# Show a link to the commit history of updated posts, right next to the last updated date. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +show_remote_changes = true # Defaults to true. +# Show a link to the repository of the site, right next to the "Powered by Zola & tabi" text. +show_remote_source = true # Defaults to true. + +# Add a "copy" button to codeblocks (loads ~700 bytes of JavaScript). +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +copy_button = true + +# Make code block names clickable if they are URLs (loads ~400 bytes of JavaScript). +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +code_block_name_links = false + +# Force left-to-right (LTR) direction for code blocks. +# Set to false to allow code to follow the document's natural direction. +# Can be set at page or section levels. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +force_codeblock_ltr = true + +# Show the author(s) of a page. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +show_author = false + +# Show the reading time of a page. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +show_reading_time = true + +# Show the date of a page below its title. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +show_date = true + +# Determines how dates are displayed in the post listing (e.g. front page or /blog). Options: +# "date" - Show only the original date of the post (default if unset). +# "updated" - Show only the last updated date of the post. If there is no last updated date, it shows the original date. +# "both" - Show both the original date and the last updated date. +post_listing_date = "date" + +# Enable iine like buttons on all posts: https://iine.to/ +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +iine = false +iine_icon = "heart" # See https://iine.to/#customise +# Unify like counts across all language versions of the same page. +# When enabled, likes on /es/blog/hello/ will count towards /blog/hello/ (default language). +iine_unified_languages = true + +# Show "Jump to posts" link next to series' title. +# By default, the link appears automatically when a series description exceeds 2000 characters. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +# show_jump_to_posts = true + +# Determines if indexes should be increasing (false) or decreasing (true) in series' posts list. +# It has only effect if the section uses indexes metadata (which is only the case for series as of now). +# Can be set at section levels, following the hierarchy: section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +post_listing_index_reversed = false # Defaults to false. + +# DEPRECATED! +# Use Zola's built-in `bottom_footnotes = true` in the [markdown] section instead. (Available since v0.19.0) +# Adds backlinks to footnotes (loads ~500 bytes of JavaScripts). +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +footnote_backlinks = false + +# Enable KaTeX for all posts. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +katex = false + +# Enable Mermaid diagrams for all posts. +# Loads ~2.5MB of JavaScript. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +mermaid = false + +# Serve Mermaid JavaScript locally. Version bundled with tabi. +# If set to false, it will load the latest version from JSDelivr. +# Only relevant when `mermaid = true`. +serve_local_mermaid = true + +# Show links to previous and next articles at the bottom of posts. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +show_previous_next_article_links = false + +# Invert order of the links to previous and next articles at the bottom of posts. +# By default, next articles are on the left side of the page and previous articles are on the right side. +# To reverse the order (next articles on the right and previous articles on the left), set it to true. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +invert_previous_next_article_links = false + +# Whether the navigation for previous/next article should match the full width of the site (same as the navigation bar at the top) or the article width. +# To match the navigation bar at the top, set it to true. +previous_next_article_links_full_width = true + +# Quick navigation buttons. +# Adds "go up" and "go to comments" buttons on the bottom right (hidden for mobile). +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +quick_navigation_buttons = false + +# Add a Table of Contents to all posts, right below the title and metadata. +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +# toc = false + +# Date format used when listing posts (main page, /blog section, tag posts list…) +# Default is "6th July 2049" in English and "%d %B %Y" in other languages. +# long_date_format = "%d %B %Y" + +# Date format used for blog posts. +# Default is "6th July 2049" in English and "%-d %B %Y" in other languages. +short_date_format = "" + +# Date format used for the archive page. +# Default is "06 July" in English and "%d %b" in other languages. +# archive_date_format = "" + +# Per-language date format overrides. +# Examples: Spanish uses "3 de febrero de 2024", German uses "3. Februar 2024" +# date_formats = [ +# { lang = "es", long = "%d de %B de %Y", short = "%d %b %Y" }, +# { lang = "de", long = "%d. %B %Y", short = "%d.%m.%Y" }, +# ] + +# Custom separator used in title tag and posts metadata (between date, time to read, and tags). +separator = "•" + +# Use a shorter layout for All tags listing. +# Default: tag_name – n post[s] +# Compact: tag_name^n (superscript number) +compact_tags = false + +# How tags are sorted in a Tags listing based on templates/tags/list.html. +# "name" for alphabetical, "frequency" for descending count of posts. +# Default: "name". +tag_sorting = "name" + +# Show clickable tags above cards.html template (e.g. projects/) to filter the displayed items. +# Loads JS to filter. If JS is disabled, the buttons are links to the tag's page. +# Can be set at the section or config.toml level, following the hierarchy: section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +# Default: true +enable_cards_tag_filtering = true + +# Invert the order of the site title and page title in the browser tab. +# Example: true => "Blog • ~/tabi", false => "~/tabi • Blog" +invert_title_order = false + +# Full path after the base URL required. So if you were to place it in "static" it would be "/favicon.ico" +# favicon = "" + +# Add an emoji here to use it as favicon. +# Compatibility: https://caniuse.com/link-icon-svg +# favicon_emoji = "🌱" + +# Path to the fallback image for social media cards (the preview image shown when sharing a link on WhatsApp, LinkedIn…). +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +# Learn how to create these images in batch and automatically: +# https://osc.garden/blog/automating-social-media-cards-zola/ +# social_media_card = "img/social_cards/index.jpg" + +menu = [ + { name = "blog", url = "blog", trailing_slash = true }, + { name = "archive", url = "archive", trailing_slash = true }, + { name = "tags", url = "tags", trailing_slash = true }, + { name = "projects", url = "projects", trailing_slash = true }, +] + +# The RSS icon will be shown if (1) it's enabled and (2) the following variable is set to true. +# Note for Zola 0.19.X users: when `feed_filenames` has two filenames, only the first one will be linked in the footer. +feed_icon = true + +# Show the full post content in the Atom feed. +# If it's set to false, only the description or summary will be shown. +full_content_in_feed = false + +# Email address for footer's social section. +# Protect against spambots: +# 1. Use base64 for email (convert at https://www.base64encode.org/ or `printf 'your@email.com' | base64`). +# 2. Or, set 'encode_plaintext_email' to true for auto-encoding (only protects on site, not in public repos). +# email = "bWFpbEBleGFtcGxlLmNvbQ==" # base64 encoded version of "mail@example.com" +# Decoding requires ~400 bytes of JavaScript. If JS is disabled, the email won't be displayed. +encode_plaintext_email = true # Setting is ignored if email is already encoded. + +# Social media links for the footer. +# Built-in icons: https://github.com/welpo/tabi/tree/main/static/social_icons +# To use a custom icon, add it to your site's `static/social_icons` directory. +# socials = [ +# { name = "github", url = "https://github.com/welpo/", icon = "github" }, +# { name = "soundcloud", url = "https://soundcloud.com/oskerwyld", icon = "soundcloud" }, +# { name = "instagram", url = "https://instagram.com/oskerwyld", icon = "instagram" }, +# { name = "youtube", url = "https://youtube.com/@oskerwyld", icon = "youtube" }, +# { name = "spotify", url = "https://open.spotify.com/artist/5Hv2bYBhMp1lUHFri06xkE", icon = "spotify" }, +# ] + +# Fediverse profile. +# Adds metadata to feature the author's profile in Mastodon link previews. +# Example: for @username@example.com, use: +# fediverse_creator = { handle = "username", domain = "example.com" } + +# Extra menu to show on the footer, below socials section. +# footer_menu = [ +# {url = "about", name = "about", trailing_slash = true}, +# {url = "privacy", name = "privacy", trailing_slash = true}, +# {url = "sitemap.xml", name = "sitemap", trailing_slash = false}, +# {url = "https://example.com", name = "external link", trailing_slash = true}, +# ] + +# Enable a copyright notice for the footer, shown between socials and the "Powered by" text. +# $TITLE will be replaced by the website's title. +# $CURRENT_YEAR will be replaced by the current year. +# $AUTHOR will be replaced by the `author` variable. +# $SEPARATOR will be replaced by the `separator` variable. +# Markdown is supported (links, emphasis, etc). +# copyright = "$TITLE © $CURRENT_YEAR $AUTHOR $SEPARATOR Unless otherwise noted, the content in this website is available under the [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) license." + +# For multi-language sites, you can set a different copyright for each language. +# The old way of setting `translated_copyright = true` and using i18n files is deprecated. +# If a translation is missing for language, the `copyright` value will be used. +# copyright_translations.es = "$TITLE © $CURRENT_YEAR $AUTHOR $SEPARATOR A menos que se indique lo contrario, el contenido de esta web está disponible bajo la licencia [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)." + +# Custom security headers. What urls should your website be able to connect to? +# You need to specify the CSP and the URLs associated with the directive. +# Useful if you want to load remote content safely (embed YouTube videos, which needs frame-src, for example). +# Default directive is self. +# Default config, allows for https remote images and embedding YouTube and Vimeo content. +# This configuration (along with the right webserver settings) gets an A+ in Mozilla's Observatory: https://observatory.mozilla.org +# Note: to use a Zola built-in syntax highlighting theme, allow unsafe-inline for style-src. +allowed_domains = [ + { directive = "font-src", domains = ["'self'", "data:"] }, + { directive = "img-src", domains = ["'self'", "https://*", "data:"] }, + { directive = "media-src", domains = ["'self'"] }, + { directive = "script-src", domains = ["'self'"] }, + { directive = "style-src", domains = ["'self'"] }, + { directive = "frame-src", domains = ["player.vimeo.com", "https://www.youtube-nocookie.com"] }, +] + +# Enable the CSP directives configured (or default). +# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy +enable_csp = true + +# Font subsetting configuration. +# This feature helps prevent text flashing in Firefox when using custom fonts. +# See: https://welpo.github.io/tabi/blog/custom-font-subset/ +# Enable or disable font subsetting completely, both built-in and custom subsets. +enable_subset = true +# Use a custom subset of characters for the header. +# If true, tabi will load the `static/custom_subset.css` file. +# If false, tabi will use the default language-specific subset (English or Spanish). +custom_subset = true + +[extra.analytics] +# Specify which analytics service you want to use. +# Supported options: ["goatcounter", "umami", "plausible"] +# service = "umami" + +# Unique identifier for tracking. +# For GoatCounter, this is the code you choose during signup. +# For Umami, this is the website ID. +# For Plausible, this is the domain name (e.g. "example.com"). +# Note: Leave this field empty if you're self-hosting GoatCounter. +# id = "yourID" + +# Optional: Specify the URL for self-hosted analytics instances. +# For GoatCounter: Base URL like "https://stats.example.com" +# For Umami: Base URL like "https://umami.example.com" +# For Plausible: Base URL like "https://plausible.example.com" +# Leave this field empty if you're using the service's default hosting. +# self_hosted_url = "" + +# Optional: For Umami, enable this option to respect users' Do Not Track (DNT) settings. The default is true. +do_not_track = true + +# giscus support for comments. https://giscus.app +# Setup instructions: https://welpo.github.io/tabi/blog/comments/#setup +[extra.giscus] +# enabled_for_all_posts = false # Enables giscus on all posts. It can be enabled on individual posts by setting `giscus = true` in the [extra] section of a post's front matter. +# automatic_loading = true # If set to false, a "Load comments" button will be shown. +# repo = "welpo/tabi-comments" +# repo_id = "R_kgDOJ59Urw" # Find this value in https://giscus.app/ +# category = "Announcements" +# category_id = "DIC_kwDOJ59Ur84CX0QG" # Find this value in https://giscus.app/ +# mapping = "slug" # Available: pathname; url; title; slug. "slug" will use the post's filename (slug); this is the only way to share comments between languages. +# strict_title_matching = 1 # 1 to enable, 0 to disable. https://github.com/giscus/giscus/blob/main/ADVANCED-USAGE.md#data-strict +# enable_reactions = 1 # 1 to enable, 0 to disable. +# comment_box_above_comments = false +# light_theme = "noborder_light" +# dark_theme = "noborder_dark" +# lang = "" # Leave blank to match the page's language. +# lazy_loading = true + +# utterances support for comments. https://utteranc.es +# Setup instructions: https://welpo.github.io/tabi/blog/comments/#setup +[extra.utterances] +# enabled_for_all_posts = false # Enables utterances on all posts. It can be enabled on individual posts by setting `utterances = true` in the [extra] section of a post's front matter. +# automatic_loading = true # If set to false, a "Load comments" button will be shown. +# repo = "yourGithubUsername/yourRepo" # https://utteranc.es/#heading-repository +# issue_term = "slug" # Available: pathname; url; title; slug. "slug" will use the post's filename (slug); this is the only way to share comments between languages. https://utteranc.es/#heading-mapping +# label = "💬" # https://utteranc.es/#heading-issue-label +# light_theme = "github-light" # https://utteranc.es/#heading-theme +# dark_theme = "photon-dark" # https://utteranc.es/#heading-theme +# lazy_loading = true + +# Hyvor Talk support for comments. https://talk.hyvor.com +[extra.hyvortalk] +# enabled_for_all_posts = false # Enables hyvortalk on all posts. It can be enabled on individual posts by setting `hyvortalk = true` in the [extra] section of a post's front matter. +# automatic_loading = true # If set to false, a "Load comments" button will be shown. +# website_id = "1234" +# page_id_is_slug = true # If true, it will use the post's filename (slug) as id; this is the only way to share comments between languages. If false, it will use the entire url as id. +# lang = "" # Leave blank to match the page's language. +# page_author = "" # Email (or base64 encoded email) of the author. +# lazy_loading = true + +# Isso support for comments. https://isso-comments.de/ +# You need to self-host the backend first: https://blog.phusion.nl/2018/08/16/isso-simple-self-hosted-commenting-system/ +# More info on some settings: https://isso-comments.de/docs/reference/client-config/ +[extra.isso] +# enabled_for_all_posts = false # Enables Isso on all posts. It can be enabled on individual posts by setting `isso = true` in the [extra] section of a post's front matter. +# automatic_loading = true # If set to false, a "Load comments" button will be shown. +# endpoint_url = "" # Accepts relative paths like "/comments/" or "/isso/", as well as full urls like "https://example.com/comments/". Include the trailing slash. +# page_id_is_slug = true # If true, it will use the relative path for the default language as id; this is the only way to share comments between languages. If false, it will use the entire url as id. +# lang = "" # Leave blank to match the page's language. +# max_comments_top = "inf" # Number of top level comments to show by default. If some comments are not shown, an “X Hidden” link is shown. +# max_comments_nested = "5" # Number of nested comments to show by default. If some comments are not shown, an “X Hidden” link is shown. +# avatar = true +# voting = true +# page_author_hashes = "" # hash (or list of hashes) of the author. +# lazy_loading = true # Loads when the comments are in the viewport (using the Intersection Observer API). + +[extra.webmentions] +# To disable for a specific section or page, set webmentions = false in that page/section's front matter's [extra] section. +enable = false +# Specify the domain registered with webmention.io. +# domain = "" + +# The HTML ID for the object to fill in with the webmention data. +# Defaults to "webmentions" +# id = "webmentions" + +# data configuration for the webmention.min.js script +# The base URL to use for this page. Defaults to window.location +# page_url = + +# Additional URLs to check, separated by |s +# add_urls + +# The maximum number of words to render in reply mentions. +# wordcount = 20 + +# The maximum number of mentions to retrieve. Defaults to 30. +# max_webmentions = 30 + +# By default, Webmentions render using the mf2 'url' element, which plays +# nicely with webmention bridges (such as brid.gy and telegraph) +# but allows certain spoofing attacks. If you would like to prevent +# spoofing, set this to a non-empty string (e.g. "true"). +# prevent_spoofing + +# What to order the responses by; defaults to 'published'. See +# https://github.com/aaronpk/webmention.io#api +# sort_by + +# The order to sort the responses by; defaults to 'up' (i.e. oldest +# first). See https://github.com/aaronpk/webmention.io#api +# sort_dir + +# If set to a non-empty string (e.g. "true"), will display comment-type responses +# (replies/mentions/etc.) as being part of the reactions +# (favorites/bookmarks/etc.) instead of in a separate comment list. +# comments_are_reactions = "true" + +# h-card configuration +# Will identify you on the indieweb (see https://microformats.org/wiki/h-card) +[extra.hcard] +# Enable home page h-card. +enable = true +# Add your email to the card if extra.email is set and not encoded. +# with_mail = true +# Add your social links ('socials' config) to the card. +with_social_links = true +# Homepage url. Defaults to the value of 'base_url'. +# homepage = "https://myhomepage.net" +# avatar = "img/profile.webp" +# Display name, default to the value of 'author'. +# full_name = "John Doe" +# Small bio, as shown on social media profiles. +# biography = "Fond of the indieweb" +# +# You can add any property from https://microformats.org/wiki/h-card#Properties +# Make sure to replace all '-' characters by '_' +# Examples: +# p_nickname = "nickname" +# p_locality = "Bordeaux" +# p_country_name = "France"